From 8a88df5f1cca73092ab0b1c754304df5bb23d256 Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Fri, 13 Mar 2015 09:14:57 -0500 Subject: [PATCH] Start on Oredictionificator! --- .../java/mekanism/client/ClientProxy.java | 6 ++ .../java/mekanism/client/gui/GuiMekanism.java | 1 + .../client/gui/GuiOredictionificator.java | 63 ++++++++++++++++++ src/main/java/mekanism/client/gui/GuiPRC.java | 2 +- .../mekanism/client/gui/GuiPortableTank.java | 2 +- .../render/block/MachineRenderingHandler.java | 2 +- .../tileentity/RenderOredictionificator.java | 45 +++++++++++++ .../java/mekanism/common/CommonProxy.java | 5 ++ .../mekanism/common/block/BlockMachine.java | 8 ++- .../ContainerOredictionificator.java | 14 ++++ .../common/item/ItemConfigurator.java | 4 +- .../tile/TileEntityOredictionificator.java | 17 +++++ .../mekanism/gui/GuiOredictionificator.png | Bin 0 -> 7693 bytes .../resources/assets/mekanism/lang/en_US.lang | 1 + 14 files changed, 162 insertions(+), 8 deletions(-) create mode 100644 src/main/java/mekanism/client/gui/GuiOredictionificator.java create mode 100644 src/main/java/mekanism/client/render/tileentity/RenderOredictionificator.java create mode 100644 src/main/java/mekanism/common/inventory/container/ContainerOredictionificator.java create mode 100644 src/main/java/mekanism/common/tile/TileEntityOredictionificator.java create mode 100644 src/main/resources/assets/mekanism/gui/GuiOredictionificator.png diff --git a/src/main/java/mekanism/client/ClientProxy.java b/src/main/java/mekanism/client/ClientProxy.java index af8f0db44..d2fe6a353 100644 --- a/src/main/java/mekanism/client/ClientProxy.java +++ b/src/main/java/mekanism/client/ClientProxy.java @@ -36,6 +36,7 @@ import mekanism.client.gui.GuiLaserAmplifier; import mekanism.client.gui.GuiLaserTractorBeam; import mekanism.client.gui.GuiMatrixStats; import mekanism.client.gui.GuiMetallurgicInfuser; +import mekanism.client.gui.GuiOredictionificator; import mekanism.client.gui.GuiOsmiumCompressor; import mekanism.client.gui.GuiPRC; import mekanism.client.gui.GuiPasswordEnter; @@ -92,6 +93,7 @@ import mekanism.client.render.tileentity.RenderLaserTractorBeam; import mekanism.client.render.tileentity.RenderLogisticalSorter; import mekanism.client.render.tileentity.RenderMetallurgicInfuser; import mekanism.client.render.tileentity.RenderObsidianTNT; +import mekanism.client.render.tileentity.RenderOredictionificator; import mekanism.client.render.tileentity.RenderPortableTank; import mekanism.client.render.tileentity.RenderPressurizedReactionChamber; import mekanism.client.render.tileentity.RenderRotaryCondensentrator; @@ -156,6 +158,7 @@ import mekanism.common.tile.TileEntityLogisticalSorter; import mekanism.common.tile.TileEntityMetallurgicInfuser; import mekanism.common.tile.TileEntityMultiblock; import mekanism.common.tile.TileEntityObsidianTNT; +import mekanism.common.tile.TileEntityOredictionificator; import mekanism.common.tile.TileEntityOsmiumCompressor; import mekanism.common.tile.TileEntityPRC; import mekanism.common.tile.TileEntityPortableTank; @@ -332,6 +335,7 @@ public class ClientProxy extends CommonProxy GameRegistry.registerTileEntity(TileEntityInductionPort.class, "InductionPort"); GameRegistry.registerTileEntity(TileEntityInductionCell.class, "InductionCell"); GameRegistry.registerTileEntity(TileEntityInductionProvider.class, "InductionProvider"); + ClientRegistry.registerTileEntity(TileEntityOredictionificator.class, "Oredictionificator", new RenderOredictionificator()); } @Override @@ -509,6 +513,8 @@ public class ClientProxy extends CommonProxy return new GuiMatrixStats(player.inventory, (TileEntityInductionCasing)tileEntity); case 51: return new GuiTransporterConfig(player, (ISideConfiguration)tileEntity); + case 52: + return new GuiOredictionificator(player.inventory, (TileEntityOredictionificator)tileEntity); } return null; diff --git a/src/main/java/mekanism/client/gui/GuiMekanism.java b/src/main/java/mekanism/client/gui/GuiMekanism.java index 7504a669b..b60860cd6 100644 --- a/src/main/java/mekanism/client/gui/GuiMekanism.java +++ b/src/main/java/mekanism/client/gui/GuiMekanism.java @@ -26,6 +26,7 @@ public abstract class GuiMekanism extends GuiContainer implements IGuiWrapper private TileEntityContainerBlock tileEntity; + //Try not to use public GuiMekanism(Container container) { super(container); diff --git a/src/main/java/mekanism/client/gui/GuiOredictionificator.java b/src/main/java/mekanism/client/gui/GuiOredictionificator.java new file mode 100644 index 000000000..f93d8d330 --- /dev/null +++ b/src/main/java/mekanism/client/gui/GuiOredictionificator.java @@ -0,0 +1,63 @@ +package mekanism.client.gui; + +import mekanism.client.gui.element.GuiProgress; +import mekanism.client.gui.element.GuiProgress.IProgressInfoHandler; +import mekanism.client.gui.element.GuiProgress.ProgressBar; +import mekanism.common.inventory.container.ContainerOredictionificator; +import mekanism.common.tile.TileEntityOredictionificator; +import mekanism.common.util.MekanismUtils; +import mekanism.common.util.MekanismUtils.ResourceType; +import net.minecraft.entity.player.InventoryPlayer; + +import org.lwjgl.opengl.GL11; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) +public class GuiOredictionificator extends GuiMekanism +{ + public TileEntityOredictionificator tileEntity; + + public GuiOredictionificator(InventoryPlayer inventory, TileEntityOredictionificator tentity) + { + super(tentity, new ContainerOredictionificator(inventory, tentity)); + tileEntity = tentity; + + guiElements.add(new GuiProgress(new IProgressInfoHandler() + { + @Override + public double getProgress() + { + return 1;//tileEntity.isActive ? 1 : 0; + } + }, ProgressBar.LARGE_RIGHT, this, MekanismUtils.getResource(ResourceType.GUI, "GuiOredictionificator.png"), 62, 118)); + } + + @Override + protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) + { + int xAxis = (mouseX - (width - xSize) / 2); + int yAxis = (mouseY - (height - ySize) / 2); + + fontRendererObj.drawString(tileEntity.getInventoryName(), (xSize/2)-(fontRendererObj.getStringWidth(tileEntity.getInventoryName())/2), 6, 0x404040); + fontRendererObj.drawString(MekanismUtils.localize("container.inventory"), 8, (ySize - 96) + 2, 0x404040); + + super.drawGuiContainerForegroundLayer(mouseX, mouseY); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float partialTick, int mouseX, int mouseY) + { + mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiOredictionificator.png")); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + int guiWidth = (width - xSize) / 2; + int guiHeight = (height - ySize) / 2; + drawTexturedModalRect(guiWidth, guiHeight, 0, 0, xSize, ySize); + + int xAxis = mouseX - guiWidth; + int yAxis = mouseY - guiHeight; + + super.drawGuiContainerBackgroundLayer(partialTick, mouseX, mouseY); + } +} diff --git a/src/main/java/mekanism/client/gui/GuiPRC.java b/src/main/java/mekanism/client/gui/GuiPRC.java index 1cb500743..3b21d98c9 100644 --- a/src/main/java/mekanism/client/gui/GuiPRC.java +++ b/src/main/java/mekanism/client/gui/GuiPRC.java @@ -99,7 +99,7 @@ public class GuiPRC extends GuiMekanism int xAxis = (mouseX - (width - xSize) / 2); int yAxis = (mouseY - (height - ySize) / 2); - fontRendererObj.drawString(tileEntity.getInventoryName(), 81, 6, 0x404040); + fontRendererObj.drawString(tileEntity.getInventoryName(), (xSize/2)-(fontRendererObj.getStringWidth(tileEntity.getInventoryName())/2), 6, 0x404040); fontRendererObj.drawString(MekanismUtils.localize("container.inventory"), 8, (ySize - 96) + 2, 0x404040); super.drawGuiContainerForegroundLayer(mouseX, mouseY); diff --git a/src/main/java/mekanism/client/gui/GuiPortableTank.java b/src/main/java/mekanism/client/gui/GuiPortableTank.java index b5f384327..b7434618a 100644 --- a/src/main/java/mekanism/client/gui/GuiPortableTank.java +++ b/src/main/java/mekanism/client/gui/GuiPortableTank.java @@ -42,7 +42,7 @@ public class GuiPortableTank extends GuiMekanism @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { - fontRendererObj.drawString(tileEntity.getInventoryName(), 47, 6, 0x404040); + fontRendererObj.drawString(tileEntity.getInventoryName(), (xSize/2)-(fontRendererObj.getStringWidth(tileEntity.getInventoryName())/2), 6, 0x404040); fontRendererObj.drawString(MekanismUtils.localize("container.inventory"), 8, ySize - 96 + 2, 0x404040); super.drawGuiContainerForegroundLayer(mouseX, mouseY); diff --git a/src/main/java/mekanism/client/render/block/MachineRenderingHandler.java b/src/main/java/mekanism/client/render/block/MachineRenderingHandler.java index d0e3a8025..fdd834059 100644 --- a/src/main/java/mekanism/client/render/block/MachineRenderingHandler.java +++ b/src/main/java/mekanism/client/render/block/MachineRenderingHandler.java @@ -80,7 +80,7 @@ public class MachineRenderingHandler implements ISimpleBlockRenderingHandler Minecraft.getMinecraft().renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "ElectricPump.png")); electricPump.render(0.0560F); } - else if(type == MachineType.METALLURGIC_INFUSER) + else if(type == MachineType.METALLURGIC_INFUSER || type == MachineType.OREDICTIONIFICATOR/*TODO*/) { GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); GL11.glRotatef(270F, 0.0F, -1.0F, 0.0F); diff --git a/src/main/java/mekanism/client/render/tileentity/RenderOredictionificator.java b/src/main/java/mekanism/client/render/tileentity/RenderOredictionificator.java new file mode 100644 index 000000000..8ba3e9569 --- /dev/null +++ b/src/main/java/mekanism/client/render/tileentity/RenderOredictionificator.java @@ -0,0 +1,45 @@ +package mekanism.client.render.tileentity; + +import mekanism.client.model.ModelMetallurgicInfuser; +import mekanism.common.tile.TileEntityOredictionificator; +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 RenderOredictionificator extends TileEntitySpecialRenderer +{ + private ModelMetallurgicInfuser model = new ModelMetallurgicInfuser(); + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float partialTick) + { + renderAModelAt((TileEntityOredictionificator)tileEntity, x, y, z, partialTick); + } + + private void renderAModelAt(TileEntityOredictionificator 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, "MetallurgicInfuser.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(); + } +} diff --git a/src/main/java/mekanism/common/CommonProxy.java b/src/main/java/mekanism/common/CommonProxy.java index 20d6b8499..d4e6dcbfc 100644 --- a/src/main/java/mekanism/common/CommonProxy.java +++ b/src/main/java/mekanism/common/CommonProxy.java @@ -37,6 +37,7 @@ import mekanism.common.inventory.container.ContainerLaserAmplifier; import mekanism.common.inventory.container.ContainerLaserTractorBeam; import mekanism.common.inventory.container.ContainerMetallurgicInfuser; import mekanism.common.inventory.container.ContainerNull; +import mekanism.common.inventory.container.ContainerOredictionificator; import mekanism.common.inventory.container.ContainerPRC; import mekanism.common.inventory.container.ContainerPortableTank; import mekanism.common.inventory.container.ContainerRobitCrafting; @@ -91,6 +92,7 @@ import mekanism.common.tile.TileEntityLogisticalSorter; import mekanism.common.tile.TileEntityMetallurgicInfuser; import mekanism.common.tile.TileEntityMultiblock; import mekanism.common.tile.TileEntityObsidianTNT; +import mekanism.common.tile.TileEntityOredictionificator; import mekanism.common.tile.TileEntityOsmiumCompressor; import mekanism.common.tile.TileEntityPRC; import mekanism.common.tile.TileEntityPortableTank; @@ -173,6 +175,7 @@ public class CommonProxy GameRegistry.registerTileEntity(TileEntityInductionPort.class, "InductionPort"); GameRegistry.registerTileEntity(TileEntityInductionCell.class, "InductionCell"); GameRegistry.registerTileEntity(TileEntityInductionProvider.class, "InductionProvider"); + GameRegistry.registerTileEntity(TileEntityOredictionificator.class, "Oredictionificator"); } public void handleTeleporterUpdate(PortableTeleporterMessage message) {} @@ -501,6 +504,8 @@ public class CommonProxy return new ContainerNull(player, (TileEntityContainerBlock)tileEntity); case 51: return new ContainerNull(player, (TileEntityContainerBlock)tileEntity); + case 52: + return new ContainerOredictionificator(player.inventory, (TileEntityOredictionificator)tileEntity); } return null; diff --git a/src/main/java/mekanism/common/block/BlockMachine.java b/src/main/java/mekanism/common/block/BlockMachine.java index 4a8678f04..ffcaa0e41 100644 --- a/src/main/java/mekanism/common/block/BlockMachine.java +++ b/src/main/java/mekanism/common/block/BlockMachine.java @@ -64,6 +64,7 @@ import mekanism.common.tile.TileEntityLaserAmplifier; import mekanism.common.tile.TileEntityLaserTractorBeam; import mekanism.common.tile.TileEntityLogisticalSorter; import mekanism.common.tile.TileEntityMetallurgicInfuser; +import mekanism.common.tile.TileEntityOredictionificator; import mekanism.common.tile.TileEntityOsmiumCompressor; import mekanism.common.tile.TileEntityPRC; import mekanism.common.tile.TileEntityPortableTank; @@ -1057,9 +1058,9 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IPer return false; case PORTABLE_TANK: return side == ForgeDirection.UP || side == ForgeDirection.DOWN; + default: + return true; } - - return true; } public static enum MachineBlock @@ -1120,7 +1121,8 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IPer LASER_TRACTOR_BEAM(MachineBlock.MACHINE_BLOCK_2, 15, "LaserTractorBeam", 45, TileEntityLaserTractorBeam.class, false, true, false), ENTANGLED_BLOCK(MachineBlock.MACHINE_BLOCK_3, 0, "EntangledBlock", 46, TileEntityEntangledBlock.class, true, false, false), SOLAR_NEUTRON_ACTIVATOR(MachineBlock.MACHINE_BLOCK_3, 1, "SolarNeutronActivator", 47, TileEntitySolarNeutronActivator.class, false, true, false), - AMBIENT_ACCUMULATOR(MachineBlock.MACHINE_BLOCK_3, 2, "AmbientAccumulator", 48, TileEntityAmbientAccumulator.class, true, false, false); + AMBIENT_ACCUMULATOR(MachineBlock.MACHINE_BLOCK_3, 2, "AmbientAccumulator", 48, TileEntityAmbientAccumulator.class, true, false, false), + OREDICTIONIFICATOR(MachineBlock.MACHINE_BLOCK_3, 3, "Oredictionificator", 52, TileEntityOredictionificator.class, false, true, false); public MachineBlock typeBlock; public int meta; diff --git a/src/main/java/mekanism/common/inventory/container/ContainerOredictionificator.java b/src/main/java/mekanism/common/inventory/container/ContainerOredictionificator.java new file mode 100644 index 000000000..9a2fc12a8 --- /dev/null +++ b/src/main/java/mekanism/common/inventory/container/ContainerOredictionificator.java @@ -0,0 +1,14 @@ +package mekanism.common.inventory.container; + +import mekanism.common.tile.TileEntityOredictionificator; +import net.minecraft.entity.player.InventoryPlayer; + +public class ContainerOredictionificator extends ContainerNull//TODO +{ + private TileEntityOredictionificator tileEntity; + + public ContainerOredictionificator(InventoryPlayer inventory, TileEntityOredictionificator tentity) + { + + } +} diff --git a/src/main/java/mekanism/common/item/ItemConfigurator.java b/src/main/java/mekanism/common/item/ItemConfigurator.java index a8a1f03f4..4633b8c19 100644 --- a/src/main/java/mekanism/common/item/ItemConfigurator.java +++ b/src/main/java/mekanism/common/item/ItemConfigurator.java @@ -325,9 +325,9 @@ public class ItemConfigurator extends ItemEnergized implements IMekWrench, ITool return TransmissionType.GAS; case CONFIGURATE_ENERGY: return TransmissionType.ENERGY; + default: + return null; } - - return null; } } } diff --git a/src/main/java/mekanism/common/tile/TileEntityOredictionificator.java b/src/main/java/mekanism/common/tile/TileEntityOredictionificator.java new file mode 100644 index 000000000..fe1cd8f6b --- /dev/null +++ b/src/main/java/mekanism/common/tile/TileEntityOredictionificator.java @@ -0,0 +1,17 @@ +package mekanism.common.tile; + +import mekanism.common.block.BlockMachine.MachineType; + +public class TileEntityOredictionificator extends TileEntityContainerBlock +{ + public TileEntityOredictionificator() + { + super(MachineType.OREDICTIONIFICATOR.name); + } + + @Override + public void onUpdate() + { + + } +} diff --git a/src/main/resources/assets/mekanism/gui/GuiOredictionificator.png b/src/main/resources/assets/mekanism/gui/GuiOredictionificator.png new file mode 100644 index 0000000000000000000000000000000000000000..01a8eaa67fb1ad0f1767d2437b4f7dd95f381592 GIT binary patch literal 7693 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