diff --git a/common/mekanism/client/gui/GuiChemicalCrystalizer.java b/common/mekanism/client/gui/GuiChemicalCrystalizer.java index 2b49e54ae..d2f3920a8 100644 --- a/common/mekanism/client/gui/GuiChemicalCrystalizer.java +++ b/common/mekanism/client/gui/GuiChemicalCrystalizer.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.List; import mekanism.api.Coord4D; -import mekanism.api.EnumColor; import mekanism.api.ListUtils; import mekanism.api.gas.Gas; import mekanism.api.gas.GasStack; @@ -24,7 +23,6 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.oredict.OreDictionary; -import org.apache.commons.lang3.text.WordUtils; import org.lwjgl.opengl.GL11; import cpw.mods.fml.relauncher.Side; @@ -52,6 +50,7 @@ public class GuiChemicalCrystalizer extends GuiMekanism guiElements.add(new GuiRedstoneControl(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalCrystalizer.png"))); guiElements.add(new GuiPowerBar(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalCrystalizer.png"), 160, 23)); + guiElements.add(new GuiConfigurationTab(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalCrystalizer.png"))); guiElements.add(new GuiEnergyInfo(new IInfoHandler() { @Override public List getInfo() diff --git a/common/mekanism/client/render/MekanismRenderer.java b/common/mekanism/client/render/MekanismRenderer.java index 5460d0ec6..c49dd12e3 100644 --- a/common/mekanism/client/render/MekanismRenderer.java +++ b/common/mekanism/client/render/MekanismRenderer.java @@ -7,6 +7,7 @@ import mekanism.api.EnumColor; import mekanism.api.gas.Gas; import mekanism.api.gas.GasRegistry; import mekanism.api.gas.OreGas; +import mekanism.client.render.tileentity.RenderConfigurableMachine; import mekanism.common.ISpecialBounds; import mekanism.common.ObfuscatedNames; import mekanism.common.util.MekanismUtils; @@ -50,6 +51,8 @@ public class MekanismRenderer private static float lightmapLastY; private static boolean optifineBreak = false; + public static RenderConfigurableMachine machineRenderer = new RenderConfigurableMachine(); + public static void init() { MinecraftForge.EVENT_BUS.register(new MekanismRenderer()); diff --git a/common/mekanism/client/render/tileentity/RenderChemicalCrystalizer.java b/common/mekanism/client/render/tileentity/RenderChemicalCrystalizer.java index a4e693800..3cdfb4601 100644 --- a/common/mekanism/client/render/tileentity/RenderChemicalCrystalizer.java +++ b/common/mekanism/client/render/tileentity/RenderChemicalCrystalizer.java @@ -1,6 +1,7 @@ package mekanism.client.render.tileentity; import mekanism.client.model.ModelChemicalCrystalizer; +import mekanism.client.render.MekanismRenderer; import mekanism.common.tile.TileEntityChemicalCrystalizer; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; @@ -24,7 +25,7 @@ public class RenderChemicalCrystalizer extends TileEntitySpecialRenderer } private void renderAModelAt(TileEntityChemicalCrystalizer 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, "ChemicalCrystalizer.png")); @@ -50,5 +51,7 @@ public class RenderChemicalCrystalizer extends TileEntitySpecialRenderer GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); model.renderWithRotation(0.0625F, tileEntity.spin); GL11.glPopMatrix(); + + MekanismRenderer.machineRenderer.renderAModelAt(tileEntity, x, y, z, partialTick); } } diff --git a/common/mekanism/client/render/tileentity/RenderConfigurableMachine.java b/common/mekanism/client/render/tileentity/RenderConfigurableMachine.java index c3ae01cba..5325fdfb3 100644 --- a/common/mekanism/client/render/tileentity/RenderConfigurableMachine.java +++ b/common/mekanism/client/render/tileentity/RenderConfigurableMachine.java @@ -2,18 +2,17 @@ package mekanism.client.render.tileentity; import java.util.HashMap; -import mekanism.api.EnumColor; import mekanism.api.Coord4D; +import mekanism.api.EnumColor; import mekanism.client.render.MekanismRenderer; import mekanism.client.render.MekanismRenderer.DisplayInteger; import mekanism.client.render.MekanismRenderer.Model3D; import mekanism.common.IInvConfiguration; import mekanism.common.item.ItemConfigurator; import mekanism.common.util.MekanismUtils; -import mekanism.common.util.MekanismUtils.ResourceType; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.GLAllocation; +import net.minecraft.client.renderer.tileentity.TileEntityRenderer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -36,6 +35,11 @@ public class RenderConfigurableMachine extends TileEntitySpecialRenderer private HashMap> cachedOverlays = new HashMap>(); + public RenderConfigurableMachine() + { + tileEntityRenderer = TileEntityRenderer.instance; + } + @Override public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float partialTick) { @@ -44,6 +48,8 @@ public class RenderConfigurableMachine extends TileEntitySpecialRenderer public void renderAModelAt(IInvConfiguration configurable, double x, double y, double z, float partialTick) { + GL11.glPushMatrix(); + TileEntity tileEntity = (TileEntity)configurable; EntityPlayer player = mc.thePlayer; World world = mc.thePlayer.worldObj; @@ -75,6 +81,8 @@ public class RenderConfigurableMachine extends TileEntitySpecialRenderer pop(); } } + + GL11.glPopMatrix(); } private void pop() diff --git a/common/mekanism/client/render/tileentity/RenderMetallurgicInfuser.java b/common/mekanism/client/render/tileentity/RenderMetallurgicInfuser.java index ac16d8148..b6aa50d4e 100644 --- a/common/mekanism/client/render/tileentity/RenderMetallurgicInfuser.java +++ b/common/mekanism/client/render/tileentity/RenderMetallurgicInfuser.java @@ -1,6 +1,7 @@ package mekanism.client.render.tileentity; import mekanism.client.model.ModelMetallurgicInfuser; +import mekanism.client.render.MekanismRenderer; import mekanism.common.tile.TileEntityMetallurgicInfuser; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; @@ -24,7 +25,7 @@ public class RenderMetallurgicInfuser extends TileEntitySpecialRenderer } private void renderAModelAt(TileEntityMetallurgicInfuser 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); @@ -41,5 +42,7 @@ public class RenderMetallurgicInfuser extends TileEntitySpecialRenderer 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/common/mekanism/common/tile/TileEntityChemicalCrystalizer.java b/common/mekanism/common/tile/TileEntityChemicalCrystalizer.java index 3ecc5793e..2d645ebdd 100644 --- a/common/mekanism/common/tile/TileEntityChemicalCrystalizer.java +++ b/common/mekanism/common/tile/TileEntityChemicalCrystalizer.java @@ -3,6 +3,7 @@ package mekanism.common.tile; import java.util.ArrayList; import mekanism.api.Coord4D; +import mekanism.api.EnumColor; import mekanism.api.gas.Gas; import mekanism.api.gas.GasRegistry; import mekanism.api.gas.GasStack; @@ -13,37 +14,40 @@ import mekanism.api.gas.IGasItem; import mekanism.api.gas.ITubeConnection; import mekanism.client.sound.IHasSound; import mekanism.common.IActiveState; +import mekanism.common.IEjector; +import mekanism.common.IInvConfiguration; import mekanism.common.IRedstoneControl; import mekanism.common.Mekanism; import mekanism.common.PacketHandler; import mekanism.common.PacketHandler.Transmission; +import mekanism.common.SideData; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.network.PacketTileEntity; import mekanism.common.recipe.RecipeHandler; +import mekanism.common.tile.component.TileComponentEjector; import mekanism.common.util.ChargeUtils; import mekanism.common.util.InventoryUtils; import mekanism.common.util.MekanismUtils; -import mekanism.common.util.PipeUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; -import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidTankInfo; import com.google.common.io.ByteArrayDataInput; -public class TileEntityChemicalCrystalizer extends TileEntityElectricBlock implements IActiveState, IGasHandler, ITubeConnection, IRedstoneControl, IHasSound -{ - public GasTank inputTank = new GasTank(MAX_GAS); - +public class TileEntityChemicalCrystalizer extends TileEntityElectricBlock implements IActiveState, IGasHandler, ITubeConnection, IRedstoneControl, IHasSound, IInvConfiguration +{ public static final int MAX_GAS = 10000; public static final int MAX_FLUID = 10000; + public byte[] sideConfig = new byte[] {0, 3, 0, 0, 1, 2}; + + public ArrayList sideOutputs = new ArrayList(); + + public GasTank inputTank = new GasTank(MAX_GAS); + public static int WATER_USAGE = 5; public int updateDelay; @@ -69,10 +73,19 @@ public class TileEntityChemicalCrystalizer extends TileEntityElectricBlock imple /** This machine's current RedstoneControl type. */ public RedstoneControl controlType = RedstoneControl.DISABLED; + public TileComponentEjector ejectorComponent; + public TileEntityChemicalCrystalizer() { super("ChemicalCrystalizer", MachineType.CHEMICAL_CRYSTALIZER.baseEnergy); + + sideOutputs.add(new SideData(EnumColor.GREY, InventoryUtils.EMPTY)); + sideOutputs.add(new SideData(EnumColor.PURPLE, new int[] {0})); + sideOutputs.add(new SideData(EnumColor.DARK_BLUE, new int[] {1})); + sideOutputs.add(new SideData(EnumColor.DARK_GREEN, new int[] {2})); + inventory = new ItemStack[3]; + ejectorComponent = new TileComponentEjector(this, sideOutputs.get(1)); } @Override @@ -433,4 +446,28 @@ public class TileEntityChemicalCrystalizer extends TileEntityElectricBlock imple { return 1; } + + @Override + public ArrayList getSideData() + { + return sideOutputs; + } + + @Override + public byte[] getConfiguration() + { + return sideConfig; + } + + @Override + public int getOrientation() + { + return facing; + } + + @Override + public IEjector getEjector() + { + return ejectorComponent; + } } diff --git a/resources/assets/mekanism/gui/GuiChemicalCrystalizer.png b/resources/assets/mekanism/gui/GuiChemicalCrystalizer.png index b518b6c41..7d04f546a 100644 Binary files a/resources/assets/mekanism/gui/GuiChemicalCrystalizer.png and b/resources/assets/mekanism/gui/GuiChemicalCrystalizer.png differ diff --git a/resources/assets/mekanism/gui/nei/GuiChemicalCrystalizer.png b/resources/assets/mekanism/gui/nei/GuiChemicalCrystalizer.png index caf83c974..8340ad259 100644 Binary files a/resources/assets/mekanism/gui/nei/GuiChemicalCrystalizer.png and b/resources/assets/mekanism/gui/nei/GuiChemicalCrystalizer.png differ