From 0528f1aace270996f1b7e0484266db13849453b3 Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Tue, 17 Jun 2014 01:52:59 +0200 Subject: [PATCH] Fix NEI offset for PRC, gave PRC a model, added specific sides for machines --- .../java/mekanism/client/ClientProxy.java | 4 +- src/main/java/mekanism/client/gui/GuiPRC.java | 1 + .../ModelPressurizedReactionChamber.java | 178 ++++++++++++++++++ .../mekanism/client/nei/PRCRecipeHandler.java | 15 +- .../render/block/MachineRenderingHandler.java | 10 + .../RenderPressurizedReactionChamber.java | 48 +++++ .../mekanism/common/block/BlockMachine.java | 24 +-- .../mekanism/common/tile/TileEntityPRC.java | 65 +++++-- .../tile/TileEntitySeismicVibrator.java | 10 +- .../render/PressurizedReactionChamber.png | Bin 0 -> 3747 bytes .../blocks/PressurizedReactionChamber.png | Bin 2095 -> 0 bytes 11 files changed, 309 insertions(+), 46 deletions(-) create mode 100644 src/main/java/mekanism/client/model/ModelPressurizedReactionChamber.java create mode 100644 src/main/java/mekanism/client/render/tileentity/RenderPressurizedReactionChamber.java create mode 100755 src/main/resources/assets/mekanism/render/PressurizedReactionChamber.png delete mode 100644 src/main/resources/assets/mekanism/textures/blocks/PressurizedReactionChamber.png diff --git a/src/main/java/mekanism/client/ClientProxy.java b/src/main/java/mekanism/client/ClientProxy.java index a1d4b6520..e20ccb58e 100644 --- a/src/main/java/mekanism/client/ClientProxy.java +++ b/src/main/java/mekanism/client/ClientProxy.java @@ -71,6 +71,7 @@ import mekanism.client.render.tileentity.RenderGasTank; import mekanism.client.render.tileentity.RenderLogisticalSorter; import mekanism.client.render.tileentity.RenderMetallurgicInfuser; import mekanism.client.render.tileentity.RenderObsidianTNT; +import mekanism.client.render.tileentity.RenderPressurizedReactionChamber; import mekanism.client.render.tileentity.RenderRotaryCondensentrator; import mekanism.client.render.tileentity.RenderSalinationController; import mekanism.client.render.tileentity.RenderSeismicVibrator; @@ -78,7 +79,6 @@ import mekanism.client.render.tileentity.RenderTeleporter; import mekanism.client.sound.Sound; import mekanism.client.sound.SoundHandler; import mekanism.common.CommonProxy; -import mekanism.common.EnergyDisplay.EnergyType; import mekanism.common.IElectricChest; import mekanism.common.IInvConfiguration; import mekanism.common.Mekanism; @@ -293,7 +293,7 @@ public class ClientProxy extends CommonProxy ClientRegistry.registerTileEntity(TileEntityChemicalWasher.class, "ChemicalWasher", new RenderChemicalWasher()); ClientRegistry.registerTileEntity(TileEntityChemicalCrystallizer.class, "ChemicalCrystallizer", new RenderChemicalCrystallizer()); ClientRegistry.registerTileEntity(TileEntitySeismicVibrator.class, "SeismicVibrator", new RenderSeismicVibrator()); - ClientRegistry.registerTileEntity(TileEntityPRC.class, "PressurizedReactionChamber", new RenderConfigurableMachine()); + ClientRegistry.registerTileEntity(TileEntityPRC.class, "PressurizedReactionChamber", new RenderPressurizedReactionChamber()); } @Override diff --git a/src/main/java/mekanism/client/gui/GuiPRC.java b/src/main/java/mekanism/client/gui/GuiPRC.java index 066882683..ef9832ac5 100644 --- a/src/main/java/mekanism/client/gui/GuiPRC.java +++ b/src/main/java/mekanism/client/gui/GuiPRC.java @@ -30,6 +30,7 @@ public class GuiPRC extends GuiMekanism tileEntity = tentity; guiElements.add(new GuiRedstoneControl(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiPRC.png"))); + guiElements.add(new GuiConfigurationTab(this, tileEntity, tileEntity.guiLocation)); guiElements.add(new GuiFluidGauge(new IFluidInfoHandler() { @Override public FluidTank getTank() diff --git a/src/main/java/mekanism/client/model/ModelPressurizedReactionChamber.java b/src/main/java/mekanism/client/model/ModelPressurizedReactionChamber.java new file mode 100644 index 000000000..7e9c8ad59 --- /dev/null +++ b/src/main/java/mekanism/client/model/ModelPressurizedReactionChamber.java @@ -0,0 +1,178 @@ +package mekanism.client.model; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; + +public class ModelPressurizedReactionChamber extends ModelBase +{ + ModelRenderer Base; + ModelRenderer GasRight; + ModelRenderer GasLeft; + ModelRenderer GasConnector; + ModelRenderer FluidBack; + ModelRenderer CoreBase; + ModelRenderer Core; + ModelRenderer PoleRF; + ModelRenderer PoleFL; + ModelRenderer PoleLB; + ModelRenderer PoleBR; + ModelRenderer PoleR; + ModelRenderer PoleL; + ModelRenderer FrontPanel; + ModelRenderer TubeThing; + ModelRenderer CenterCore; + ModelRenderer BackConnector; + ModelRenderer BackCore; + ModelRenderer TopPanel; + + public ModelPressurizedReactionChamber() + { + textureWidth = 128; + textureHeight = 128; + + Base = new ModelRenderer(this, 0, 0); + Base.addBox(0F, 0F, 0F, 16, 1, 16); + Base.setRotationPoint(-8F, 23F, -8F); + Base.setTextureSize(128, 128); + Base.mirror = true; + setRotation(Base, 0F, 0F, 0F); + GasRight = new ModelRenderer(this, 64, 12); + GasRight.addBox(0F, 0F, 0F, 1, 6, 6); + GasRight.setRotationPoint(-8F, 13F, -3F); + GasRight.setTextureSize(128, 128); + GasRight.mirror = true; + setRotation(GasRight, 0F, 0F, 0F); + GasLeft = new ModelRenderer(this, 64, 12); + GasLeft.addBox(0F, 0F, 0F, 1, 6, 6); + GasLeft.setRotationPoint(7F, 13F, -3F); + GasLeft.setTextureSize(128, 128); + GasLeft.mirror = true; + setRotation(GasLeft, 0F, 0F, 0F); + GasConnector = new ModelRenderer(this, 22, 38); + GasConnector.addBox(0F, 0F, 0F, 14, 2, 2); + GasConnector.setRotationPoint(-7F, 15F, -1F); + GasConnector.setTextureSize(128, 128); + GasConnector.mirror = true; + setRotation(GasConnector, 0F, 0F, 0F); + FluidBack = new ModelRenderer(this, 50, 24); + FluidBack.addBox(0F, 0F, 0F, 8, 8, 1); + FluidBack.setRotationPoint(-4F, 12F, 7F); + FluidBack.setTextureSize(128, 128); + FluidBack.mirror = true; + setRotation(FluidBack, 0F, 0F, 0F); + CoreBase = new ModelRenderer(this, 64, 0); + CoreBase.addBox(0F, 0F, 0F, 10, 1, 11); + CoreBase.setRotationPoint(-5F, 22F, -6F); + CoreBase.setTextureSize(128, 128); + CoreBase.mirror = true; + setRotation(CoreBase, 0F, 0F, 0F); + Core = new ModelRenderer(this, 0, 17); + Core.addBox(0F, 0F, 0F, 12, 8, 13); + Core.setRotationPoint(-6F, 14F, -7F); + Core.setTextureSize(128, 128); + Core.mirror = true; + setRotation(Core, 0F, 0F, 0F); + PoleRF = new ModelRenderer(this, 38, 42); + PoleRF.addBox(0F, 0F, 0F, 1, 6, 1); + PoleRF.setRotationPoint(-6F, 8F, -7F); + PoleRF.setTextureSize(128, 128); + PoleRF.mirror = true; + setRotation(PoleRF, 0F, 0F, 0F); + PoleFL = new ModelRenderer(this, 38, 42); + PoleFL.addBox(0F, 0F, 0F, 1, 6, 1); + PoleFL.setRotationPoint(5F, 8F, -7F); + PoleFL.setTextureSize(128, 128); + PoleFL.mirror = true; + setRotation(PoleFL, 0F, 0F, 0F); + PoleLB = new ModelRenderer(this, 38, 42); + PoleLB.addBox(0F, 0F, 0F, 1, 6, 1); + PoleLB.setRotationPoint(5F, 8F, 5F); + PoleLB.setTextureSize(128, 128); + PoleLB.mirror = true; + setRotation(PoleLB, 0F, 0F, 0F); + PoleBR = new ModelRenderer(this, 38, 42); + PoleBR.addBox(0F, -2F, 0F, 1, 6, 1); + PoleBR.setRotationPoint(-6F, 10F, 5F); + PoleBR.setTextureSize(128, 128); + PoleBR.mirror = true; + setRotation(PoleBR, 0F, 0F, 0F); + PoleR = new ModelRenderer(this, 0, 57); + PoleR.addBox(0F, 0F, 0F, 1, 1, 11); + PoleR.setRotationPoint(-6F, 8F, -6F); + PoleR.setTextureSize(128, 128); + PoleR.mirror = true; + setRotation(PoleR, 0F, 0F, 0F); + PoleL = new ModelRenderer(this, 0, 57); + PoleL.addBox(0F, 0F, 0F, 1, 1, 11); + PoleL.setRotationPoint(5F, 8F, -6F); + PoleL.setTextureSize(128, 128); + PoleL.mirror = true; + setRotation(PoleL, 0F, 0F, 0F); + FrontPanel = new ModelRenderer(this, 0, 38); + FrontPanel.addBox(0F, 0F, 0F, 10, 12, 1); + FrontPanel.setRotationPoint(-5F, 9F, -8F); + FrontPanel.setTextureSize(128, 128); + FrontPanel.mirror = true; + setRotation(FrontPanel, 0F, 0F, 0F); + TubeThing = new ModelRenderer(this, 22, 42); + TubeThing.addBox(0F, 0F, 0F, 2, 2, 6); + TubeThing.setRotationPoint(-1F, 12F, -7F); + TubeThing.setTextureSize(128, 128); + TubeThing.mirror = true; + setRotation(TubeThing, 0F, 0F, 0F); + CenterCore = new ModelRenderer(this, 84, 12); + CenterCore.addBox(0F, 0F, 0F, 4, 1, 4); + CenterCore.setRotationPoint(-2F, 13F, -3F); + CenterCore.setTextureSize(128, 128); + CenterCore.mirror = true; + setRotation(CenterCore, 0F, 0F, 0F); + BackConnector = new ModelRenderer(this, 78, 12); + BackConnector.addBox(0F, 0F, 0F, 2, 5, 1); + BackConnector.setRotationPoint(-1F, 13F, 6F); + BackConnector.setTextureSize(128, 128); + BackConnector.mirror = true; + setRotation(BackConnector, 0F, 0F, 0F); + BackCore = new ModelRenderer(this, 0, 51); + BackCore.addBox(0F, 0F, 0F, 2, 1, 5); + BackCore.setRotationPoint(-1F, 13F, 1F); + BackCore.setTextureSize(128, 128); + BackCore.mirror = true; + setRotation(BackCore, 0F, 0F, 0F); + TopPanel = new ModelRenderer(this, 0, 69); + TopPanel.addBox(0F, 0F, 0F, 10, 1, 13); + TopPanel.setRotationPoint(-5F, 8F, -7F); + TopPanel.setTextureSize(128, 128); + TopPanel.mirror = true; + setRotation(TopPanel, 0F, 0F, 0F); + } + + public void render(float size) + { + Base.render(size); + GasRight.render(size); + GasLeft.render(size); + GasConnector.render(size); + FluidBack.render(size); + CoreBase.render(size); + Core.render(size); + PoleRF.render(size); + PoleFL.render(size); + PoleLB.render(size); + PoleBR.render(size); + PoleR.render(size); + PoleL.render(size); + FrontPanel.render(size); + TubeThing.render(size); + CenterCore.render(size); + BackConnector.render(size); + BackCore.render(size); + TopPanel.render(size); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } +} diff --git a/src/main/java/mekanism/client/nei/PRCRecipeHandler.java b/src/main/java/mekanism/client/nei/PRCRecipeHandler.java index b2580d55f..eee82f2cc 100644 --- a/src/main/java/mekanism/client/nei/PRCRecipeHandler.java +++ b/src/main/java/mekanism/client/nei/PRCRecipeHandler.java @@ -258,9 +258,10 @@ public class PRCRecipeHandler extends BaseRecipeHandler public List handleTooltip(GuiRecipe gui, List currenttip, int recipe) { Point point = GuiDraw.getMousePosition(); + Point offset = gui.getRecipePosition(recipe); - int xAxis = point.x-(Integer)MekanismUtils.getPrivateValue(gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiLeft); - int yAxis = point.y-(Integer)MekanismUtils.getPrivateValue(gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiTop); + int xAxis = point.x-(Integer)MekanismUtils.getPrivateValue(gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiLeft)-offset.x; + int yAxis = point.y-(Integer)MekanismUtils.getPrivateValue(gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiTop)-offset.y; if(xAxis >= 6 && xAxis <= 22 && yAxis >= 11+13 && yAxis <= 69+13) { @@ -282,9 +283,10 @@ public class PRCRecipeHandler extends BaseRecipeHandler public boolean keyTyped(GuiRecipe gui, char keyChar, int keyCode, int recipe) { Point point = GuiDraw.getMousePosition(); + Point offset = gui.getRecipePosition(recipe); - int xAxis = point.x-(Integer)MekanismUtils.getPrivateValue(gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiLeft); - int yAxis = point.y-(Integer)MekanismUtils.getPrivateValue(gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiTop); + int xAxis = point.x-(Integer)MekanismUtils.getPrivateValue(gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiLeft)-offset.x; + int yAxis = point.y-(Integer)MekanismUtils.getPrivateValue(gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiTop)-offset.y; GasStack gas = null; FluidStack fluid = null; @@ -344,9 +346,10 @@ public class PRCRecipeHandler extends BaseRecipeHandler public boolean mouseClicked(GuiRecipe gui, int button, int recipe) { Point point = GuiDraw.getMousePosition(); + Point offset = gui.getRecipePosition(recipe); - int xAxis = point.x - (Integer)MekanismUtils.getPrivateValue(gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiLeft); - int yAxis = point.y - (Integer)MekanismUtils.getPrivateValue(gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiTop); + int xAxis = point.x - (Integer)MekanismUtils.getPrivateValue(gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiLeft)-offset.x; + int yAxis = point.y - (Integer)MekanismUtils.getPrivateValue(gui, GuiContainer.class, ObfuscatedNames.GuiContainer_guiTop)-offset.y; GasStack gas = null; FluidStack fluid = null; diff --git a/src/main/java/mekanism/client/render/block/MachineRenderingHandler.java b/src/main/java/mekanism/client/render/block/MachineRenderingHandler.java index b6a67d581..239dee376 100644 --- a/src/main/java/mekanism/client/render/block/MachineRenderingHandler.java +++ b/src/main/java/mekanism/client/render/block/MachineRenderingHandler.java @@ -12,6 +12,7 @@ import mekanism.client.model.ModelElectricPump; import mekanism.client.model.ModelElectrolyticSeparator; import mekanism.client.model.ModelLogisticalSorter; import mekanism.client.model.ModelMetallurgicInfuser; +import mekanism.client.model.ModelPressurizedReactionChamber; import mekanism.client.model.ModelRotaryCondensentrator; import mekanism.client.model.ModelSeismicVibrator; import mekanism.client.render.MekanismRenderer; @@ -45,6 +46,7 @@ public class MachineRenderingHandler implements ISimpleBlockRenderingHandler public ModelChemicalWasher chemicalWasher = new ModelChemicalWasher(); public ModelChemicalCrystallizer chemicalCrystallizer = new ModelChemicalCrystallizer(); public ModelSeismicVibrator seismicVibrator = new ModelSeismicVibrator(); + public ModelPressurizedReactionChamber pressurizedReactionChamber = new ModelPressurizedReactionChamber(); @Override public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) @@ -163,6 +165,14 @@ public class MachineRenderingHandler implements ISimpleBlockRenderingHandler Minecraft.getMinecraft().renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "SeismicVibrator.png")); seismicVibrator.render(0.0625F); } + else if(type == MachineType.PRESSURIZED_REACTION_CHAMBER) + { + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(270F, 0.0F, -1.0F, 0.0F); + GL11.glTranslatef(0.0F, -1.06F, 0.05F); + Minecraft.getMinecraft().renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "PressurizedReactionChamber.png")); + pressurizedReactionChamber.render(0.0625F); + } else { MekanismRenderer.renderItem(renderer, metadata, block); } diff --git a/src/main/java/mekanism/client/render/tileentity/RenderPressurizedReactionChamber.java b/src/main/java/mekanism/client/render/tileentity/RenderPressurizedReactionChamber.java new file mode 100644 index 000000000..ba955e013 --- /dev/null +++ b/src/main/java/mekanism/client/render/tileentity/RenderPressurizedReactionChamber.java @@ -0,0 +1,48 @@ +package mekanism.client.render.tileentity; + +import mekanism.client.model.ModelPressurizedReactionChamber; +import mekanism.client.render.MekanismRenderer; +import mekanism.common.tile.TileEntityPRC; +import mekanism.common.util.MekanismUtils; +import mekanism.common.util.MekanismUtils.ResourceType; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; + +import org.lwjgl.opengl.GL11; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) +public class RenderPressurizedReactionChamber extends TileEntitySpecialRenderer +{ + private ModelPressurizedReactionChamber model = new ModelPressurizedReactionChamber(); + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float partialTick) + { + renderAModelAt((TileEntityPRC)tileEntity, x, y, z, partialTick); + } + + private void renderAModelAt(TileEntityPRC tileEntity, double x, double y, double z, float partialTick) + { + GL11.glPushMatrix(); + GL11.glTranslatef((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F); + + bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "PressurizedReactionChamber.png")); + + switch(tileEntity.facing) + { + case 2: GL11.glRotatef(0, 0.0F, 1.0F, 0.0F); break; + case 3: GL11.glRotatef(180, 0.0F, 1.0F, 0.0F); break; + case 4: GL11.glRotatef(90, 0.0F, 1.0F, 0.0F); break; + case 5: GL11.glRotatef(270, 0.0F, 1.0F, 0.0F); break; + } + + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + model.render(0.0625F); + GL11.glPopMatrix(); + + MekanismRenderer.machineRenderer.renderAModelAt(tileEntity, x, y, z, partialTick); + } +} \ No newline at end of file diff --git a/src/main/java/mekanism/common/block/BlockMachine.java b/src/main/java/mekanism/common/block/BlockMachine.java index c915efb9b..97089f5f3 100644 --- a/src/main/java/mekanism/common/block/BlockMachine.java +++ b/src/main/java/mekanism/common/block/BlockMachine.java @@ -178,8 +178,6 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IPer icons[5][2] = register.registerIcon("mekanism:SteelCasing"); icons[9][0] = register.registerIcon("mekanism:SteelBlock"); icons[9][1] = register.registerIcon("mekanism:SeismicVibrator"); - icons[10][0] = register.registerIcon("mekanism:SteelCasing"); - icons[10][1] = register.registerIcon("mekanism:PressurizedReactionChamber"); } } @@ -455,16 +453,6 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IPer return icons[meta][0]; } } - else if(meta == 10) - { - if(side == 3) - { - return icons[meta][1]; - } - else { - return icons[meta][0]; - } - } } return null; @@ -608,16 +596,6 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IPer return icons[metadata][0]; } } - else if(metadata == 10) - { - if(side == tileEntity.facing) - { - return icons[metadata][1]; - } - else { - return icons[metadata][0]; - } - } } return null; @@ -1153,7 +1131,7 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IPer CHEMICAL_WASHER(Mekanism.MachineBlock2, 7, "ChemicalWasher", 36, 20000, TileEntityChemicalWasher.class, true, false), CHEMICAL_CRYSTALLIZER(Mekanism.MachineBlock2, 8, "ChemicalCrystallizer", 37, 20000, TileEntityChemicalCrystallizer.class, true, false), SEISMIC_VIBRATOR(Mekanism.MachineBlock2, 9, "SeismicVibrator", 39, 20000, TileEntitySeismicVibrator.class, true, false), - PRESSURIZED_REACTION_CHAMBER(Mekanism.MachineBlock2, 10, "PressurizedReactionChamber", 40, 20000, TileEntityPRC.class, false, false); + PRESSURIZED_REACTION_CHAMBER(Mekanism.MachineBlock2, 10, "PressurizedReactionChamber", 40, 20000, TileEntityPRC.class, true, false); public Block typeBlock; public int meta; diff --git a/src/main/java/mekanism/common/tile/TileEntityPRC.java b/src/main/java/mekanism/common/tile/TileEntityPRC.java index a2ccfd08f..9b3e3fc3e 100644 --- a/src/main/java/mekanism/common/tile/TileEntityPRC.java +++ b/src/main/java/mekanism/common/tile/TileEntityPRC.java @@ -25,6 +25,7 @@ import mekanism.common.tile.component.TileComponentUpgrade; import mekanism.common.util.ChargeUtils; import mekanism.common.util.InventoryUtils; import mekanism.common.util.MekanismUtils; +import mekanism.common.util.PipeUtils; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -112,13 +113,13 @@ public class TileEntityPRC extends TileEntityBasicMachine implements IFluidHandl { GasStack toSend = new GasStack(outputGasTank.getGas().getGas(), Math.min(outputGasTank.getStored(), 16)); - TileEntity tileEntity = Coord4D.get(this).getFromSide(MekanismUtils.getLeft(facing)).getTileEntity(worldObj); + TileEntity tileEntity = Coord4D.get(this).getFromSide(MekanismUtils.getRight(facing)).getTileEntity(worldObj); if(tileEntity instanceof IGasHandler) { - if(((IGasHandler)tileEntity).canReceiveGas(MekanismUtils.getLeft(facing).getOpposite(), outputGasTank.getGas().getGas())) + if(((IGasHandler)tileEntity).canReceiveGas(MekanismUtils.getLeft(facing), outputGasTank.getGas().getGas())) { - outputGasTank.draw(((IGasHandler)tileEntity).receiveGas(MekanismUtils.getLeft(facing).getOpposite(), toSend), true); + outputGasTank.draw(((IGasHandler)tileEntity).receiveGas(MekanismUtils.getLeft(facing), toSend), true); } } } @@ -341,70 +342,106 @@ public class TileEntityPRC extends TileEntityBasicMachine implements IFluidHandl @Override public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { - return inputFluidTank.fill(resource, doFill); + if(from == ForgeDirection.getOrientation(facing).getOpposite()) + { + return inputFluidTank.fill(resource, doFill); + } + + return 0; } @Override public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) { - if(inputFluidTank.getFluid() != null && inputFluidTank.getFluid().isFluidEqual(resource)) + if(from == ForgeDirection.getOrientation(facing).getOpposite() && inputFluidTank.getFluid() != null && inputFluidTank.getFluid().isFluidEqual(resource)) { return inputFluidTank.drain(resource.amount, doDrain); } + return null; } @Override public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) { - return inputFluidTank.drain(maxDrain, doDrain); + if(from == ForgeDirection.getOrientation(facing).getOpposite()) + { + return inputFluidTank.drain(maxDrain, doDrain); + } + + return null; } @Override public boolean canFill(ForgeDirection from, Fluid fluid) { - return inputFluidTank.getFluid() == null || inputFluidTank.getFluid().getFluid() == fluid; + if(from == ForgeDirection.getOrientation(facing).getOpposite()) + { + return inputFluidTank.getFluid() == null || inputFluidTank.getFluid().getFluid() == fluid; + } + + return false; } @Override public boolean canDrain(ForgeDirection from, Fluid fluid) { - return inputFluidTank.getFluid() != null && inputFluidTank.getFluid().getFluid() == fluid; + if(from == ForgeDirection.getOrientation(facing).getOpposite()) + { + return inputFluidTank.getFluid() != null && inputFluidTank.getFluid().getFluid() == fluid; + } + + return false; } @Override public FluidTankInfo[] getTankInfo(ForgeDirection from) { - return new FluidTankInfo[] {new FluidTankInfo(inputFluidTank)}; + if(from == ForgeDirection.getOrientation(facing).getOpposite()) + { + return new FluidTankInfo[] {new FluidTankInfo(inputFluidTank)}; + } + + return PipeUtils.EMPTY; } @Override public int receiveGas(ForgeDirection side, GasStack stack) { - return inputGasTank.receive(stack, true); + if(side == MekanismUtils.getLeft(facing)) + { + return inputGasTank.receive(stack, true); + } + + return 0; } @Override public GasStack drawGas(ForgeDirection side, int amount) { - return outputGasTank.draw(amount, true); + if(side == MekanismUtils.getRight(facing)) + { + return outputGasTank.draw(amount, true); + } + + return null; } @Override public boolean canReceiveGas(ForgeDirection side, Gas type) { - return inputGasTank.getGas() == null || inputGasTank.getGas().getGas() == type; + return side == MekanismUtils.getLeft(facing) && (inputGasTank.getGas() == null || inputGasTank.getGas().getGas() == type); } @Override public boolean canDrawGas(ForgeDirection side, Gas type) { - return outputGasTank.getGas() != null && outputGasTank.getGas().getGas() == type; + return side == MekanismUtils.getRight(facing) && outputGasTank.getGas() != null && outputGasTank.getGas().getGas() == type; } @Override public boolean canTubeConnect(ForgeDirection side) { - return true; + return side == MekanismUtils.getLeft(facing) || side == MekanismUtils.getRight(facing); } } diff --git a/src/main/java/mekanism/common/tile/TileEntitySeismicVibrator.java b/src/main/java/mekanism/common/tile/TileEntitySeismicVibrator.java index 3c5f73942..6fb13fd9f 100644 --- a/src/main/java/mekanism/common/tile/TileEntitySeismicVibrator.java +++ b/src/main/java/mekanism/common/tile/TileEntitySeismicVibrator.java @@ -3,6 +3,7 @@ package mekanism.common.tile; import io.netty.buffer.ByteBuf; import java.util.ArrayList; +import java.util.EnumSet; import mekanism.api.Coord4D; import mekanism.common.IActiveState; @@ -14,6 +15,7 @@ import mekanism.common.util.ChargeUtils; import mekanism.common.util.MekanismUtils; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.common.util.ForgeDirection; public class TileEntitySeismicVibrator extends TileEntityElectricBlock implements IActiveState, IRedstoneControl { @@ -160,7 +162,7 @@ public class TileEntitySeismicVibrator extends TileEntityElectricBlock implement @Override public boolean renderUpdate() { - return true; + return false; } @Override @@ -180,6 +182,12 @@ public class TileEntitySeismicVibrator extends TileEntityElectricBlock implement { return controlType; } + + @Override + protected EnumSet getConsumingSides() + { + return EnumSet.of(ForgeDirection.UP); + } @Override public void setControlType(RedstoneControl type) diff --git a/src/main/resources/assets/mekanism/render/PressurizedReactionChamber.png b/src/main/resources/assets/mekanism/render/PressurizedReactionChamber.png new file mode 100755 index 0000000000000000000000000000000000000000..bb09dc60e84e47ede7eccd6f93bb5f6eb8c0dc19 GIT binary patch literal 3747 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mekanism/textures/blocks/PressurizedReactionChamber.png b/src/main/resources/assets/mekanism/textures/blocks/PressurizedReactionChamber.png deleted file mode 100644 index 248aff1db25a442d0623576e7590f00651636e27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2095 zcmV+~2+;S5P)DT21i>&=6z3e`9A<{9qN@0+LPTg63w%`pkYgmq$l~Y(UsdHj19D7=D(XEU z1j2Z{Oycy(*W^w~X65`XV>W=|z)XpNNd^Q(NtVivMcBT1lheZ^R29o-1LgIh|Br>pFJc@Giz#jkz|y@7+~v;`8WPw1#dEE97kb{#QxGkWhiv?~#)i6XIB7y?s)MLpI=UACex%R>f?A^ZyD%}3j52;l)8ozfK)IW`-p2>IqVD_wz4!|4;9;d;cLXy?hH)nD6Zp>KZe{4NAzVC`;S6 z#f5+lY_C^V=$ZwJ@{`wp%KDXcP~pj=$N0*#zOhCBlj$07 zzx^(wwJG8~hx-QrY_4x0B7FG4Us=DpNf?cJ{O~c)-Pj?hTWa1?S|(9qDk>s`sxE9- z$Kv>e7$YfV;ymHR148Xb0F1^X$j0IBQ)Douvr$zwLCem@D-#|*c*Mc}0cM$Yv7m3; zqN0=tRSjhH%;f|@y<@bxO6*#4GLmHK5P0piA7g5yzUOB@f1PGF!+B2-#Ztru3Eq13 z7N!O{v%bE@Xf(n(M>gZi))v#P&EmL&cc^oC5h16(7z^OMBZO5{z>gg3o9nb)Vm@DR zWn-OYHUl6Gj8^YxX2+N)>Xf$aSe>py2B*SkG@_X=h%u65B?4b&r<#lyj1kCK&ZHFS`<|w4nV$tFllq>NQt=ll zBotNrk|1U@^Ev8$(Wg3gwzsKj&%B)zo0fJyCq*z(=8Iz%r>7;+lu!+Lh1~V@P0PmC z27OnY4`4i<68nz6Y0pWSGn#YB4k-oYj3^l}=LqA9_ul;@)5#S?gm>S02N7j`YlExX z+tl@hy}ezkD)9FY{>EgqLX45SpWOw4P}eAmXgT|w^D>s@jCanVE-Z%DJ4V%i)rb$ zf}k!892i_Fr%cMJoD&T7yyEougrlQFl4T$>o6YIFZs0^q*Ok)To}RF>wpQR3aOwzE zg&!=J3;jY)nVfo@_vl3(tLUKh35K!z=plXV8I8tV-+2xVp+E>YAHXtB9hLVWO6of{ zuUW`^WUGULYg zUs?XKYZ^|Eju=m;%K+lsB}mCdN+yz{h+1$7lz+1Vk+NEHI&E>Q>@j&e4eVJQ{ZokOzF^^+JHZTDm0vo^>_yX7-7JD!(JX)EsvAs>o z2{*)O7YlNX2(s*weRDw;s>QKZX4h~Fk2*)niRMBt=LU~hw%BLah2c|QqC>*_Lh{AQ zjEiXZZCiZ6Ik%KyNkIAa(*xf4`YC3)ctT9yfVn;I)GsBFFKov9KuQT!S9UCvPN-ak z$SDmZ93+82&Y3$zz@yHWVluQ(0O>;Di%8_*2+r~Q?_={Xm?FVel>@$F)cWn;9uikT6+Gu@Xe znEIX=BjN*ZWO)rc<>(t%GeJsnDy1BUx@P;v&j0;# zy7Ymk!|u*+;8L