From 5829d5e4cff9db944f25b21dfd62d10edac0121a Mon Sep 17 00:00:00 2001 From: Vaern Date: Mon, 3 Jan 2022 19:37:14 -0800 Subject: [PATCH] aa --- .../hbm/inventory/gui/GUIReactorControl.java | 46 +++- .../machine/TileEntityReactorControl.java | 230 +++--------------- 2 files changed, 76 insertions(+), 200 deletions(-) diff --git a/src/main/java/com/hbm/inventory/gui/GUIReactorControl.java b/src/main/java/com/hbm/inventory/gui/GUIReactorControl.java index 158104899..fb2687b68 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIReactorControl.java +++ b/src/main/java/com/hbm/inventory/gui/GUIReactorControl.java @@ -1,5 +1,10 @@ package com.hbm.inventory.gui; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.math.NumberUtils; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; @@ -69,8 +74,8 @@ public class GUIReactorControl extends GuiInfoContainer { this.fields[0].setText(String.valueOf((int)control.levelUpper)); this.fields[1].setText(String.valueOf((int)control.levelLower)); - this.fields[2].setText(String.valueOf((int)control.heatUpper)); - this.fields[3].setText(String.valueOf((int)control.heatLower)); + this.fields[2].setText(String.valueOf((int)control.heatUpper / 50)); + this.fields[3].setText(String.valueOf((int)control.heatLower / 50)); } @@ -98,11 +103,12 @@ public class GUIReactorControl extends GuiInfoContainer { for(int k = 0; k < 4; k++) { double clamp = k < 2 ? 100 : 1000; + int mod = k < 2 ? 1 : 50; if(NumberUtils.isDigits(fields[k].getText())) { int j = (int)MathHelper.clamp_double(Double.parseDouble(fields[k].getText()), 0, clamp); fields[k].setText(j + ""); - vals[k] = j; + vals[k] = j * mod; } else { fields[k].setText("0"); } @@ -128,13 +134,11 @@ public class GUIReactorControl extends GuiInfoContainer { } @Override - protected void drawGuiContainerForegroundLayer( int i, int j) { + protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.control.hasCustomInventoryName() ? this.control.getInventoryName() : I18n.format(this.control.getInventoryName()); this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); - - } @Override @@ -143,11 +147,37 @@ public class GUIReactorControl extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - for(int i = 0; i < 4; i++) - this.fields[i].drawTextBox(); + GL11.glPopMatrix(); + Tessellator tess = Tessellator.instance; + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glLineWidth(3F); + tess.startDrawing(3); + tess.setColorOpaque_I(0x08FF00); + + double render[] = new double[39]; + + for(int i = 0; i < render.length; i++) { + render[i] = control.getTargetLevel(control.function, 0 + i * 50000 / 28); + } + + for(int i = 0; i < render.length; i++) { + tess.addVertex(guiLeft + 128 + i, guiTop + 39 + render[i], this.zLevel); + } + + //fuck i will figure this out later + /*for(int i = 0; i < render.length; i++) { + tess.addVertex(guiLeft + 128 + i, guiTop + 39 + control.getGraphPoint(control.function, 0 + i * 50, 28), this.zLevel); + }*/ + + tess.draw(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPushMatrix(); for(byte i = 0; i < 3; i++) displays[i].drawNumber(control.getDisplayData()[i]); + + for(int i = 0; i < 4; i++) + this.fields[i].drawTextBox(); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java index 6ac1f8d42..5a6567002 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java @@ -89,6 +89,9 @@ public class TileEntityReactorControl extends TileEntityMachineBase implements I public TileEntityReactorResearch reactor; public boolean isLinked; + + public int flux; + public double level; public int heat; public double levelLower; @@ -106,7 +109,6 @@ public class TileEntityReactorControl extends TileEntityMachineBase implements I isLinked = establishLink(); if(isLinked) { - this.heat = reactor.heat; double fauxLevel = 0; @@ -120,32 +122,22 @@ public class TileEntityReactorControl extends TileEntityMachineBase implements I fauxLevel = this.levelUpper; } else { - - switch(this.function) { - case LINEAR: - fauxLevel = (this.heat - this.heatLower) * ((this.levelUpper - this.levelLower) / (this.heatUpper - this.heatLower)) + this.levelLower; - break; - case QUAD: - fauxLevel = Math.pow((this.heat - this.heatLower) / (this.heatUpper - this.heatLower), 2) * (this.levelUpper - this.levelLower) + this.levelLower; - break; - case LOG: - fauxLevel = Math.pow((this.heat - this.heatUpper) / (this.heatLower - this.heatUpper), 2) * (this.levelLower - this.levelUpper) + this.levelUpper; - break; - default: - break; - } + fauxLevel = getTargetLevel(this.function, this.heat); } double level = MathHelper.clamp_double((fauxLevel * 0.01D), 0D, 1D); - NBTTagCompound control = new NBTTagCompound(); - control.setDouble("level", level); - - PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(control, reactor.xCoord, reactor.yCoord, reactor.zCoord)); + if(level != this.level) { + NBTTagCompound control = new NBTTagCompound(); + control.setDouble("level", level); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(control, reactor.xCoord, reactor.yCoord, reactor.zCoord)); + } } NBTTagCompound data = new NBTTagCompound(); data.setInteger("heat", heat); + data.setDouble("level", level); + data.setInteger("flux", flux); data.setBoolean("isLinked", isLinked); data.setDouble("levelLower", levelLower); data.setDouble("levelUpper", levelUpper); @@ -158,6 +150,8 @@ public class TileEntityReactorControl extends TileEntityMachineBase implements I public void networkUnpack(NBTTagCompound data) { this.heat = data.getInteger("heat"); + this.level = data.getDouble("level"); + this.flux = data.getInteger("flux"); isLinked = data.getBoolean("isLinked"); levelLower = data.getDouble("levelLower"); levelUpper = data.getDouble("levelUpper"); @@ -185,6 +179,10 @@ public class TileEntityReactorControl extends TileEntityMachineBase implements I if(tile instanceof TileEntityReactorResearch) { reactor = (TileEntityReactorResearch) tile; + this.flux = reactor.totalFlux; + this.level = reactor.level; + this.heat = reactor.heat; + return true; } } @@ -194,11 +192,29 @@ public class TileEntityReactorControl extends TileEntityMachineBase implements I return false; } + public double getTargetLevel(RodFunction function, int heat) { + double fauxLevel = 0; + + switch(function) { + case LINEAR: + fauxLevel = (heat - this.heatLower) * ((this.levelUpper - this.levelLower) / (this.heatUpper - this.heatLower)) + this.levelLower; + return fauxLevel; + case LOG: + fauxLevel = Math.pow((heat - this.heatUpper) / (this.heatLower - this.heatUpper), 2) * (this.levelLower - this.levelUpper) + this.levelUpper; + return fauxLevel; + case QUAD: + fauxLevel = Math.pow((heat - this.heatLower) / (this.heatUpper - this.heatLower), 2) * (this.levelUpper - this.levelLower) + this.levelLower; + return fauxLevel; + default: + return 0.0D; + } + } + public int[] getDisplayData() { - if(reactor != null) { + if(this.isLinked) { int[] data = new int[3]; - data[0] = (int) reactor.level * 100; - data[1] = reactor.totalFlux; + data[0] = (int) (this.level * 100); + data[1] = this.flux; data[2] = (int) Math.round((this.heat) * 0.00002 * 980 + 20); return data; } else { @@ -231,174 +247,4 @@ public class TileEntityReactorControl extends TileEntityMachineBase implements I QUAD, LOG } - - /*public int hullHeat; - public int coreHeat; - public int fuel; - public int water; - public int cool; - public int steam; - public int maxWater; - public int maxCool; - public int maxSteam; - public int compression; - public int rods; - public int maxRods; - public boolean isOn; - public boolean auto; - public boolean isLinkd; - public boolean redstoned; - private int lastRods = 100;*/ - - /*@Override - public void updateEntity() { - - if(!worldObj.isRemote) - { - if(slots[0] != null && slots[0].getItem() == ModItems.reactor_sensor && - slots[0].stackTagCompound != null) - { - int xCoord = slots[0].stackTagCompound.getInteger("x"); - int yCoord = slots[0].stackTagCompound.getInteger("y"); - int zCoord = slots[0].stackTagCompound.getInteger("z"); - - Block b = worldObj.getBlock(xCoord, yCoord, zCoord); - - if(b == ModBlocks.machine_reactor_small || b == ModBlocks.reactor_computer) { - linkX = xCoord; - linkY = yCoord; - linkZ = zCoord; - } else if(b == ModBlocks.dummy_block_reactor_small || b == ModBlocks.dummy_port_reactor_small) { - linkX = ((TileEntityDummy)worldObj.getTileEntity(xCoord, yCoord, zCoord)).targetX; - linkY = ((TileEntityDummy)worldObj.getTileEntity(xCoord, yCoord, zCoord)).targetY; - linkZ = ((TileEntityDummy)worldObj.getTileEntity(xCoord, yCoord, zCoord)).targetZ; - } else { - linkY = -1; - } - } else { - linkY = -1; - } - - if(linkY >= 0 && worldObj.getTileEntity(linkX, linkY, linkZ) instanceof TileEntityMachineReactorSmall) { - TileEntityMachineReactorSmall reactor = (TileEntityMachineReactorSmall)worldObj.getTileEntity(linkX, linkY, linkZ); - - hullHeat = reactor.hullHeat; - coreHeat = reactor.coreHeat; - fuel = reactor.getFuelPercent(); - water = reactor.tanks[0].getFill(); - cool = reactor.tanks[1].getFill(); - steam = reactor.tanks[2].getFill(); - maxWater = reactor.tanks[0].getMaxFill(); - maxCool = reactor.tanks[1].getMaxFill(); - maxSteam = reactor.tanks[2].getMaxFill(); - rods = reactor.rods; - maxRods = reactor.rodsMax; - isOn = !reactor.retracting; - isLinked = true; - - switch(reactor.tanks[2].getTankType()) { - case HOTSTEAM: - compression = 1; break; - case SUPERHOTSTEAM: - compression = 2; break; - default: - compression = 0; break; - } - - if(!redstoned) { - if(worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)) { - redstoned = true; - reactor.retracting = !reactor.retracting; - } - } else { - if(!worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)) { - redstoned = false; - } - } - - if(auto && (water < 100 || cool < 100 || coreHeat > (50000 * 0.95)) && fuel > 0) { - reactor.retracting = true; - } - - } else if(linkY >= 0 && worldObj.getTileEntity(linkX, linkY, linkZ) instanceof TileEntityMachineReactorLarge && ((TileEntityMachineReactorLarge)worldObj.getTileEntity(linkX, linkY, linkZ)).checkBody()) { - TileEntityMachineReactorLarge reactor = (TileEntityMachineReactorLarge)worldObj.getTileEntity(linkX, linkY, linkZ); - - hullHeat = reactor.hullHeat; - coreHeat = reactor.coreHeat; - fuel = reactor.fuel * 100 / Math.max(1, reactor.maxFuel); - water = reactor.tanks[0].getFill(); - cool = reactor.tanks[1].getFill(); - steam = reactor.tanks[2].getFill(); - maxWater = reactor.tanks[0].getMaxFill(); - maxCool = reactor.tanks[1].getMaxFill(); - maxSteam = reactor.tanks[2].getMaxFill(); - rods = reactor.rods; - maxRods = reactor.rodsMax; - isOn = reactor.rods > 0; - isLinked = true; - - switch(reactor.tanks[2].getTankType()) { - case HOTSTEAM: - compression = 1; break; - case SUPERHOTSTEAM: - compression = 2; break; - default: - compression = 0; break; - } - - if(rods != 0) - lastRods = rods; - - if(!redstoned) { - if(worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)) { - redstoned = true; - - if(rods == 0) - rods = lastRods; - else - rods = 0; - } - } else { - if(!worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)) { - redstoned = false; - } - } - - if(auto && (water < 100 || cool < 100 || coreHeat > (50000 * 0.95)) && fuel > 0) { - reactor.rods = 0; - } - - } else { - hullHeat = 0; - coreHeat = 0; - fuel = 0; - water = 0; - cool = 0; - steam = 0; - maxWater = 0; - maxCool = 0; - maxSteam = 0; - rods = 0; - maxRods = 0; - isOn = false; - compression = 0; - isLinked = false; - } - - if(worldObj.getBlock(xCoord, yCoord, zCoord + 1) instanceof BlockRedstoneComparator) { - worldObj.scheduleBlockUpdate(xCoord, yCoord, zCoord + 1, worldObj.getBlock(xCoord, yCoord, zCoord + 1), 1); - } - if(worldObj.getBlock(xCoord, yCoord, zCoord - 1) instanceof BlockRedstoneComparator) { - worldObj.scheduleBlockUpdate(xCoord, yCoord, zCoord - 1, worldObj.getBlock(xCoord, yCoord, zCoord - 1), 1); - } - if(worldObj.getBlock(xCoord + 1, yCoord, zCoord) instanceof BlockRedstoneComparator) { - worldObj.scheduleBlockUpdate(xCoord + 1, yCoord, zCoord, worldObj.getBlock(xCoord + 1, yCoord, zCoord), 1); - } - if(worldObj.getBlock(xCoord - 1, yCoord, zCoord) instanceof BlockRedstoneComparator) { - worldObj.scheduleBlockUpdate(xCoord - 1, yCoord, zCoord, worldObj.getBlock(xCoord - 1, yCoord, zCoord), 1); - } - - PacketDispatcher.wrapper.sendToAllAround(new TEControlPacket(xCoord, yCoord, zCoord, hullHeat, coreHeat, fuel, water, cool, steam, maxWater, maxCool, maxSteam, compression, rods, maxRods, isOn, auto, isLinked), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 30)); - } - }*/ }