From 2dc6a35d1653b3f9d5fb62609bbf8d008eb6c14b Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Tue, 31 Dec 2013 16:38:40 -0500 Subject: [PATCH] Fix a GUI bug, fixed gas tanks not loading properly, fix a few culling issues with Chemical Oxidizer, made gas render visually in Chemical Oxidizer --- common/mekanism/api/gas/GasTank.java | 2 +- .../client/gui/GuiChemicalOxidizer.java | 2 +- .../client/model/ModelChemicalOxidizer.java | 6 +- .../tileentity/RenderChemicalOxidizer.java | 147 +++++++++++++++++- common/mekanism/common/item/ItemDust.java | 4 +- .../tileentity/TileEntityChemicalInfuser.java | 1 - .../mekanism/render/ChemicalOxidizer.png | Bin 2262 -> 2279 bytes 7 files changed, 154 insertions(+), 8 deletions(-) diff --git a/common/mekanism/api/gas/GasTank.java b/common/mekanism/api/gas/GasTank.java index 4ce0623cc..d4f2e27ec 100644 --- a/common/mekanism/api/gas/GasTank.java +++ b/common/mekanism/api/gas/GasTank.java @@ -191,7 +191,7 @@ public class GasTank { if(nbtTags.hasKey("stored")) { - stored = GasStack.readFromNBT(nbtTags); + stored = GasStack.readFromNBT(nbtTags.getCompoundTag("stored")); } maxGas = nbtTags.getInteger("maxGas"); diff --git a/common/mekanism/client/gui/GuiChemicalOxidizer.java b/common/mekanism/client/gui/GuiChemicalOxidizer.java index 1e9927ad0..23c810ac1 100644 --- a/common/mekanism/client/gui/GuiChemicalOxidizer.java +++ b/common/mekanism/client/gui/GuiChemicalOxidizer.java @@ -122,7 +122,7 @@ public class GuiChemicalOxidizer extends GuiMekanism } } - mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiOxidationChamber.png")); + mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiChemicalOxidizer.png")); drawTexturedModalRect(guiWidth + xPos, guiHeight + yPos, 176, 4, 16, 59); } } diff --git a/common/mekanism/client/model/ModelChemicalOxidizer.java b/common/mekanism/client/model/ModelChemicalOxidizer.java index dcaa4a497..9754aae29 100644 --- a/common/mekanism/client/model/ModelChemicalOxidizer.java +++ b/common/mekanism/client/model/ModelChemicalOxidizer.java @@ -176,10 +176,12 @@ public class ModelChemicalOxidizer extends ModelBase GasConnection.render(size); Machine.render(size); Post.render(size); - + } + + public void renderGlass(float size) + { GL11.glPushMatrix(); MekanismRenderer.blendOn(); - GL11.glEnable(GL11.GL_CULL_FACE); GL11.glColor4f(1, 1, 1, 0.2F); GlassN.render(size); diff --git a/common/mekanism/client/render/tileentity/RenderChemicalOxidizer.java b/common/mekanism/client/render/tileentity/RenderChemicalOxidizer.java index 96d0a2c10..466bb8df7 100644 --- a/common/mekanism/client/render/tileentity/RenderChemicalOxidizer.java +++ b/common/mekanism/client/render/tileentity/RenderChemicalOxidizer.java @@ -1,11 +1,20 @@ package mekanism.client.render.tileentity; +import java.util.HashMap; +import java.util.Map; + +import mekanism.api.gas.Gas; import mekanism.client.model.ModelChemicalOxidizer; +import mekanism.client.render.MekanismRenderer; +import mekanism.client.render.MekanismRenderer.DisplayInteger; +import mekanism.client.render.MekanismRenderer.Model3D; import mekanism.common.tileentity.TileEntityChemicalOxidizer; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; +import net.minecraft.block.Block; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.ForgeDirection; import org.lwjgl.opengl.GL11; @@ -13,6 +22,10 @@ public class RenderChemicalOxidizer extends TileEntitySpecialRenderer { private ModelChemicalOxidizer model = new ModelChemicalOxidizer(); + private static final double offset = 0.001; + + private Map> cachedGasses = new HashMap>(); + @Override public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float partialTick) { @@ -20,6 +33,29 @@ public class RenderChemicalOxidizer extends TileEntitySpecialRenderer } private void renderAModelAt(TileEntityChemicalOxidizer tileEntity, double x, double y, double z, float partialTick) + { + render(false, x, y, z, tileEntity); + + if(tileEntity.gasTank.getGas() != null) + { + push(); + + GL11.glTranslatef((float)x, (float)y, (float)z); + GL11.glColor4f(1.0F, 1.0F, 1.0F, (float)tileEntity.gasTank.getStored()/tileEntity.gasTank.getMaxGas()); + bindTexture(MekanismRenderer.getBlocksTexture()); + getListAndRender(ForgeDirection.getOrientation(tileEntity.facing), tileEntity.gasTank.getGas().getGas()).render(); + GL11.glColor4f(1, 1, 1, 1); + + pop(); + } + + render(true, x, y, z, tileEntity); + } + + /* + * 0: casing, 1: glass + */ + private void render(boolean glass, double x, double y, double z, TileEntityChemicalOxidizer tileEntity) { GL11.glPushMatrix(); GL11.glTranslatef((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F); @@ -35,7 +71,116 @@ public class RenderChemicalOxidizer extends TileEntitySpecialRenderer } GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - model.render(0.0625F); + + if(!glass) + { + model.render(0.0625F); + } + else { + model.renderGlass(0.0625F); + } + GL11.glPopMatrix(); } + + @SuppressWarnings("incomplete-switch") + private DisplayInteger getListAndRender(ForgeDirection side, Gas gas) + { + if(gas == null || gas.getIcon() == null) + { + return null; + } + + if(cachedGasses.containsKey(side) && cachedGasses.get(side).containsKey(gas)) + { + return cachedGasses.get(side).get(gas); + } + + Model3D toReturn = new Model3D(); + toReturn.baseBlock = Block.waterStill; + toReturn.setTexture(gas.getIcon()); + + DisplayInteger display = DisplayInteger.createAndStart(); + + if(cachedGasses.containsKey(side)) + { + cachedGasses.get(side).put(gas, display); + } + else { + HashMap map = new HashMap(); + map.put(gas, display); + cachedGasses.put(side, map); + } + + switch(side) + { + case NORTH: + { + toReturn.minX = 0.125 + offset; + toReturn.minY = 0.0625 + offset; + toReturn.minZ = 0.3125 + offset; + + toReturn.maxX = 0.5 - offset; + toReturn.maxY = 0.9375 - offset; + toReturn.maxZ = 0.6875 - offset; + break; + } + case SOUTH: + { + toReturn.minX = 0.5 + offset; + toReturn.minY = 0.0625 + offset; + toReturn.minZ = 0.3125 + offset; + + toReturn.maxX = 0.875 - offset; + toReturn.maxY = 0.9375 - offset; + toReturn.maxZ = 0.6875 - offset; + break; + } + case WEST: + { + toReturn.minX = 0.3125 + offset; + toReturn.minY = 0.0625 + offset; + toReturn.minZ = 0.5 + offset; + + toReturn.maxX = 0.6875 - offset; + toReturn.maxY = 0.9375 - offset; + toReturn.maxZ = 0.875 - offset; + break; + } + case EAST: + { + toReturn.minX = 0.3125 + offset; + toReturn.minY = 0.0625 + offset; + toReturn.minZ = 0.125 + offset; + + toReturn.maxX = 0.6875 - offset; + toReturn.maxY = 0.9375 - offset; + toReturn.maxZ = 0.5 - offset; + break; + } + } + + MekanismRenderer.renderObject(toReturn); + display.endList(); + + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + return display; + } + + private void pop() + { + GL11.glPopAttrib(); + GL11.glPopMatrix(); + } + + private void push() + { + GL11.glPushMatrix(); + GL11.glPushAttrib(GL11.GL_ENABLE_BIT); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + } } diff --git a/common/mekanism/common/item/ItemDust.java b/common/mekanism/common/item/ItemDust.java index b9f7fd394..42ae33292 100644 --- a/common/mekanism/common/item/ItemDust.java +++ b/common/mekanism/common/item/ItemDust.java @@ -27,7 +27,7 @@ public class ItemDust extends ItemMekanism @Override public void registerIcons(IconRegister register) { - for(int i = 0; i <= 9; i++) + for(int i = 0; i <= 10; i++) { icons[i] = register.registerIcon("mekanism:" + en_USNames[i] + "Dust"); } @@ -42,7 +42,7 @@ public class ItemDust extends ItemMekanism @Override public void getSubItems(int id, CreativeTabs tabs, List itemList) { - for(int counter = 0; counter <= 9; ++counter) + for(int counter = 0; counter <= 10; ++counter) { itemList.add(new ItemStack(this, 1, counter)); } diff --git a/common/mekanism/common/tileentity/TileEntityChemicalInfuser.java b/common/mekanism/common/tileentity/TileEntityChemicalInfuser.java index 002faa122..d33c3be9a 100644 --- a/common/mekanism/common/tileentity/TileEntityChemicalInfuser.java +++ b/common/mekanism/common/tileentity/TileEntityChemicalInfuser.java @@ -278,7 +278,6 @@ public class TileEntityChemicalInfuser extends TileEntityElectricBlock implement nbtTags.setBoolean("isActive", isActive); nbtTags.setInteger("controlType", controlType.ordinal()); - System.out.println("reading"); nbtTags.setCompoundTag("leftTank", leftTank.write(new NBTTagCompound())); nbtTags.setCompoundTag("rightTank", rightTank.write(new NBTTagCompound())); nbtTags.setCompoundTag("centerTank", centerTank.write(new NBTTagCompound())); diff --git a/resources/assets/mekanism/render/ChemicalOxidizer.png b/resources/assets/mekanism/render/ChemicalOxidizer.png index 2dc62072325516572d681a6f64ce2d7cdc5f57d9..95172c1dba343a315df5335527afe30fefac5d11 100644 GIT binary patch delta 2137 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