From 9c7831d07bea02a6cc44ea2526d6daba54aca98d Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Fri, 27 Feb 2015 00:28:46 -0500 Subject: [PATCH] Work on reactor interface a tad, work on Solar Neutron Activator --- .../client/gui/GuiSolarNeutronActivator.java | 2 +- .../mekanism/common/recipe/RecipeHandler.java | 13 +++ .../tile/TileEntityChemicalCrystallizer.java | 2 + .../tile/TileEntityChemicalInfuser.java | 2 + .../tile/TileEntityChemicalOxidizer.java | 2 + .../common/tile/TileEntityChemicalWasher.java | 2 + .../tile/TileEntityRotaryCondensentrator.java | 2 + .../tile/TileEntitySolarNeutronActivator.java | 84 +++++++++++++++++++ .../client/gui/GuiReactorController.java | 4 +- .../generators/client/gui/GuiReactorFuel.java | 13 +-- .../client/gui/GuiReactorStats.java | 6 +- .../generators/common/FusionReactor.java | 2 + .../resources/assets/mekanism/lang/en_US.lang | 9 ++ 13 files changed, 131 insertions(+), 12 deletions(-) diff --git a/src/main/java/mekanism/client/gui/GuiSolarNeutronActivator.java b/src/main/java/mekanism/client/gui/GuiSolarNeutronActivator.java index ae55a14aa..5eb2ec98c 100644 --- a/src/main/java/mekanism/client/gui/GuiSolarNeutronActivator.java +++ b/src/main/java/mekanism/client/gui/GuiSolarNeutronActivator.java @@ -28,7 +28,6 @@ public class GuiSolarNeutronActivator extends GuiMekanism tileEntity = tentity; guiElements.add(new GuiRedstoneControl(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiBlank.png"))); - guiElements.add(new GuiUpgradeTab(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiBlank.png"))); guiElements.add(new GuiSlot(SlotType.NORMAL, this, MekanismUtils.getResource(ResourceType.GUI, "GuiBlank.png"), 4, 24).with(SlotOverlay.PLUS)); guiElements.add(new GuiSlot(SlotType.NORMAL, this, MekanismUtils.getResource(ResourceType.GUI, "GuiBlank.png"), 4, 55).with(SlotOverlay.MINUS)); @@ -64,6 +63,7 @@ public class GuiSolarNeutronActivator extends GuiMekanism int yAxis = (mouseY - (height - ySize) / 2); fontRendererObj.drawString(tileEntity.getInventoryName(), 26, 4, 0x404040); + fontRendererObj.drawString(MekanismUtils.localize("container.inventory"), 8, (ySize - 96) + 4, 0x404040); super.drawGuiContainerForegroundLayer(mouseX, mouseY); } diff --git a/src/main/java/mekanism/common/recipe/RecipeHandler.java b/src/main/java/mekanism/common/recipe/RecipeHandler.java index a2d4b9051..7c29e25a4 100644 --- a/src/main/java/mekanism/common/recipe/RecipeHandler.java +++ b/src/main/java/mekanism/common/recipe/RecipeHandler.java @@ -429,6 +429,19 @@ public final class RecipeHandler return null; } + + public static SolarNeutronRecipe getSolarNeutronRecipe(GasInput input) + { + if(input.isValid()) + { + HashMap recipes = Recipe.SOLAR_NEUTRON_ACTIVATOR.get(); + + SolarNeutronRecipe recipe = recipes.get(input); + return recipe == null ? null : recipe.copy(); + } + + return null; + } public static PressurizedRecipe getPRCRecipe(PressurizedInput input) { diff --git a/src/main/java/mekanism/common/tile/TileEntityChemicalCrystallizer.java b/src/main/java/mekanism/common/tile/TileEntityChemicalCrystallizer.java index f05ab4bfd..f4764651e 100644 --- a/src/main/java/mekanism/common/tile/TileEntityChemicalCrystallizer.java +++ b/src/main/java/mekanism/common/tile/TileEntityChemicalCrystallizer.java @@ -99,6 +99,8 @@ public class TileEntityChemicalCrystallizer extends TileEntityNoisyElectricBlock @Override public void onUpdate() { + super.onUpdate(); + if(worldObj.isRemote && updateDelay > 0) { updateDelay--; diff --git a/src/main/java/mekanism/common/tile/TileEntityChemicalInfuser.java b/src/main/java/mekanism/common/tile/TileEntityChemicalInfuser.java index 0a823b39f..479f99109 100644 --- a/src/main/java/mekanism/common/tile/TileEntityChemicalInfuser.java +++ b/src/main/java/mekanism/common/tile/TileEntityChemicalInfuser.java @@ -75,6 +75,8 @@ public class TileEntityChemicalInfuser extends TileEntityNoisyElectricBlock impl @Override public void onUpdate() { + super.onUpdate(); + if(worldObj.isRemote && updateDelay > 0) { updateDelay--; diff --git a/src/main/java/mekanism/common/tile/TileEntityChemicalOxidizer.java b/src/main/java/mekanism/common/tile/TileEntityChemicalOxidizer.java index 7a82a5cf8..177c1714b 100644 --- a/src/main/java/mekanism/common/tile/TileEntityChemicalOxidizer.java +++ b/src/main/java/mekanism/common/tile/TileEntityChemicalOxidizer.java @@ -75,6 +75,8 @@ public class TileEntityChemicalOxidizer extends TileEntityNoisyElectricBlock imp @Override public void onUpdate() { + super.onUpdate(); + if(worldObj.isRemote && updateDelay > 0) { updateDelay--; diff --git a/src/main/java/mekanism/common/tile/TileEntityChemicalWasher.java b/src/main/java/mekanism/common/tile/TileEntityChemicalWasher.java index 26cc2e0b7..d70162e1a 100644 --- a/src/main/java/mekanism/common/tile/TileEntityChemicalWasher.java +++ b/src/main/java/mekanism/common/tile/TileEntityChemicalWasher.java @@ -88,6 +88,8 @@ public class TileEntityChemicalWasher extends TileEntityNoisyElectricBlock imple @Override public void onUpdate() { + super.onUpdate(); + if(worldObj.isRemote && updateDelay > 0) { updateDelay--; diff --git a/src/main/java/mekanism/common/tile/TileEntityRotaryCondensentrator.java b/src/main/java/mekanism/common/tile/TileEntityRotaryCondensentrator.java index 65f786f6c..3b37dffbd 100644 --- a/src/main/java/mekanism/common/tile/TileEntityRotaryCondensentrator.java +++ b/src/main/java/mekanism/common/tile/TileEntityRotaryCondensentrator.java @@ -81,6 +81,8 @@ public class TileEntityRotaryCondensentrator extends TileEntityElectricBlock imp @Override public void onUpdate() { + super.onUpdate(); + if(worldObj.isRemote) { if(updateDelay > 0) diff --git a/src/main/java/mekanism/common/tile/TileEntitySolarNeutronActivator.java b/src/main/java/mekanism/common/tile/TileEntitySolarNeutronActivator.java index 8d78e35ed..3b8ca057f 100644 --- a/src/main/java/mekanism/common/tile/TileEntitySolarNeutronActivator.java +++ b/src/main/java/mekanism/common/tile/TileEntitySolarNeutronActivator.java @@ -19,9 +19,13 @@ import mekanism.common.base.IDropperHandler; import mekanism.common.base.IRedstoneControl; import mekanism.common.base.ISustainedData; import mekanism.common.network.PacketTileEntity.TileEntityMessage; +import mekanism.common.recipe.RecipeHandler; +import mekanism.common.recipe.inputs.GasInput; +import mekanism.common.recipe.machines.SolarNeutronRecipe; import mekanism.common.util.MekanismUtils; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; public class TileEntitySolarNeutronActivator extends TileEntityContainerBlock implements IRedstoneControl, IBoundingBlock, IGasHandler, ITubeConnection, IActiveState, ISustainedData, IDropperHandler @@ -39,6 +43,8 @@ public class TileEntitySolarNeutronActivator extends TileEntityContainerBlock im public int gasOutput = 256; + public SolarNeutronRecipe cachedRecipe; + /** This machine's current RedstoneControl type. */ public RedstoneControl controlType = RedstoneControl.DISABLED; @@ -51,7 +57,85 @@ public class TileEntitySolarNeutronActivator extends TileEntityContainerBlock im @Override public void onUpdate() { + if(worldObj.isRemote && updateDelay > 0) + { + updateDelay--; + + if(updateDelay == 0 && clientActive != isActive) + { + isActive = clientActive; + MekanismUtils.updateBlock(worldObj, xCoord, yCoord, zCoord); + } + } + if(!worldObj.isRemote) + { + SolarNeutronRecipe recipe = getRecipe(); + + if(updateDelay > 0) + { + updateDelay--; + + if(updateDelay == 0 && clientActive != isActive) + { + Mekanism.packetHandler.sendToReceivers(new TileEntityMessage(Coord4D.get(this), getNetworkedData(new ArrayList())), new Range4D(Coord4D.get(this))); + } + } + + //Buckets + + if(canOperate(recipe) && MekanismUtils.canFunction(this)) + { + setActive(true); + + operate(recipe); + } + else { + setActive(false); + } + + if(outputTank.getGas() != null) + { + GasStack toSend = new GasStack(outputTank.getGas().getGas(), Math.min(outputTank.getStored(), gasOutput)); + + TileEntity tileEntity = Coord4D.get(this).getFromSide(ForgeDirection.getOrientation(facing)).getTileEntity(worldObj); + + if(tileEntity instanceof IGasHandler) + { + if(((IGasHandler)tileEntity).canReceiveGas(ForgeDirection.getOrientation(facing).getOpposite(), outputTank.getGas().getGas())) + { + outputTank.draw(((IGasHandler)tileEntity).receiveGas(ForgeDirection.getOrientation(facing).getOpposite(), toSend, true), true); + } + } + } + } + } + + public SolarNeutronRecipe getRecipe() + { + GasInput input = getInput(); + + if(cachedRecipe == null || !input.testEquality(cachedRecipe.getInput())) + { + cachedRecipe = RecipeHandler.getSolarNeutronRecipe(getInput()); + } + + return cachedRecipe; + } + + public GasInput getInput() + { + return new GasInput(inputTank.getGas()); + } + + public boolean canOperate(SolarNeutronRecipe recipe) + { + return recipe != null && recipe.canOperate(inputTank, outputTank); + } + + public void operate(SolarNeutronRecipe recipe) + { + recipe.operate(inputTank, outputTank); } @Override diff --git a/src/main/java/mekanism/generators/client/gui/GuiReactorController.java b/src/main/java/mekanism/generators/client/gui/GuiReactorController.java index a6bf9bac5..36e556e70 100644 --- a/src/main/java/mekanism/generators/client/gui/GuiReactorController.java +++ b/src/main/java/mekanism/generators/client/gui/GuiReactorController.java @@ -57,10 +57,10 @@ public class GuiReactorController extends GuiMekanism if(tileEntity.getActive()) { - fontRendererObj.drawString(MekanismUtils.localize("container.reactor.formed"), 8, 16, 0x404040); + fontRendererObj.drawString(MekanismUtils.localize("gui.formed"), 8, 16, 0x404040); } else { - fontRendererObj.drawString(MekanismUtils.localize("container.reactor.notFormed"), 8, 16, 0x404040); + fontRendererObj.drawString(MekanismUtils.localize("gui.incomplete"), 8, 16, 0x404040); } } diff --git a/src/main/java/mekanism/generators/client/gui/GuiReactorFuel.java b/src/main/java/mekanism/generators/client/gui/GuiReactorFuel.java index b544b4dfb..99410ce10 100644 --- a/src/main/java/mekanism/generators/client/gui/GuiReactorFuel.java +++ b/src/main/java/mekanism/generators/client/gui/GuiReactorFuel.java @@ -24,15 +24,15 @@ import mekanism.common.util.MekanismUtils.ResourceType; import mekanism.generators.common.MekanismGenerators; import mekanism.generators.common.network.PacketGeneratorsGui.GeneratorsGuiMessage; import mekanism.generators.common.tile.reactor.TileEntityReactorController; - import net.minecraft.client.gui.GuiTextField; import net.minecraft.entity.player.InventoryPlayer; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + @SideOnly(Side.CLIENT) public class GuiReactorFuel extends GuiMekanism { @@ -104,7 +104,9 @@ public class GuiReactorFuel extends GuiMekanism super.drawGuiContainerForegroundLayer(mouseX, mouseY); fontRendererObj.drawString(tileEntity.getInventoryName(), 46, 6, 0x404040); - fontRendererObj.drawString(MekanismUtils.localize("gui.injectionRate") + ": " + (tileEntity.getReactor() == null ? "None" : tileEntity.getReactor().getInjectionRate()), 55, 35, 0x404040); + String str = MekanismUtils.localize("gui.reactor.injectionRate") + ": " + (tileEntity.getReactor() == null ? "None" : tileEntity.getReactor().getInjectionRate()); + fontRendererObj.drawString(str, (xSize / 2) - (fontRendererObj.getStringWidth(str) / 2), 35, 0x404040); + fontRendererObj.drawString("Edit Rate" + ":", 50, 117, 0x404040); } @Override @@ -157,7 +159,6 @@ public class GuiReactorFuel extends GuiMekanism SoundHandler.playSound("gui.button.press"); MekanismGenerators.packetHandler.sendToServer(new GeneratorsGuiMessage(Coord4D.get(tileEntity), 10)); } - } } @@ -209,7 +210,7 @@ public class GuiReactorFuel extends GuiMekanism String prevRad = injectionRateField != null ? injectionRateField.getText() : ""; - injectionRateField = new GuiTextField(fontRendererObj, guiWidth + 75, guiHeight + 115, 26, 11); + injectionRateField = new GuiTextField(fontRendererObj, guiWidth + 98, guiHeight + 115, 26, 11); injectionRateField.setMaxStringLength(2); injectionRateField.setText(prevRad); } diff --git a/src/main/java/mekanism/generators/client/gui/GuiReactorStats.java b/src/main/java/mekanism/generators/client/gui/GuiReactorStats.java index a53768290..fb17e8a74 100644 --- a/src/main/java/mekanism/generators/client/gui/GuiReactorStats.java +++ b/src/main/java/mekanism/generators/client/gui/GuiReactorStats.java @@ -52,9 +52,8 @@ public class GuiReactorStats extends GuiMekanism @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { - super.drawGuiContainerForegroundLayer(mouseX, mouseY); - fontRendererObj.drawString(tileEntity.getInventoryName(), 46, 6, 0x404040); + if(tileEntity.isFormed()) { fontRendererObj.drawString(EnumColor.DARK_GREEN + MekanismUtils.localize("gui.passive"), 6, 26, 0x404040); @@ -72,6 +71,8 @@ public class GuiReactorStats extends GuiMekanism fontRendererObj.drawString(MekanismUtils.localize("gui.passiveGeneration") + ": " + MekanismUtils.getEnergyDisplay(tileEntity.getReactor().getPassiveGeneration(true, false))+"/t", 16, 142, 0x404040); fontRendererObj.drawString(MekanismUtils.localize("gui.steamProduction") + ": " + nf.format(tileEntity.getReactor().getSteamPerTick(false)) + "mB/t", 16, 152, 0x404040); } + + super.drawGuiContainerForegroundLayer(mouseX, mouseY); } @Override @@ -112,6 +113,5 @@ public class GuiReactorStats extends GuiMekanism SoundHandler.playSound("gui.button.press"); MekanismGenerators.packetHandler.sendToServer(new GeneratorsGuiMessage(Coord4D.get(tileEntity), 10)); } - } }} diff --git a/src/main/java/mekanism/generators/common/FusionReactor.java b/src/main/java/mekanism/generators/common/FusionReactor.java index 40cbda53e..c25da6825 100644 --- a/src/main/java/mekanism/generators/common/FusionReactor.java +++ b/src/main/java/mekanism/generators/common/FusionReactor.java @@ -119,6 +119,7 @@ public class FusionReactor implements IFusionReactor injectFuel(); int fuelBurned = burnFuel(); neutronFlux(fuelBurned); + if(fuelBurned == 0) { burning = false; @@ -229,6 +230,7 @@ public class FusionReactor implements IFusionReactor { source.simulateHeat(); } + applyTemperatureChange(); } diff --git a/src/main/resources/assets/mekanism/lang/en_US.lang b/src/main/resources/assets/mekanism/lang/en_US.lang index 0842053cf..300d9eb57 100644 --- a/src/main/resources/assets/mekanism/lang/en_US.lang +++ b/src/main/resources/assets/mekanism/lang/en_US.lang @@ -251,6 +251,7 @@ gas.brine=Gaseous Brine gas.deuterium=Deuterium gas.tritium=Tritium gas.lithium=Lithium +gas.fusionFuelDT=D-T Fuel gas.iron=Iron Slurry gas.gold=Gold Slurry @@ -287,6 +288,8 @@ fluid.ethene=Liquid Ethylene fluid.sodium=Liquid Sodium fluid.heavyWater=Heavy Water fluid.lithium=Liquid Lithium +fluid.deuterium=Liquid Deuterium +fluid.tritium=Liquid Tritium //OreGas names oregas.iron=Iron Ore @@ -385,6 +388,12 @@ gui.min=Min gui.max=Max gui.delay=Delay gui.noDelay=No Delay +gui.fuel=Fuel +gui.heat=Heat +gui.formed=Formed +gui.incomplete=Incomplete + +gui.reactor.injectionRate=Injection Rate gui.upgrades=Upgrades gui.upgrades.supported=Supported