From 9cb7a893c93456b3aeb47f02c383c7b7e643f4e0 Mon Sep 17 00:00:00 2001 From: Aidan Brady Date: Tue, 14 May 2013 11:34:26 -0400 Subject: [PATCH] v5.5.5 Release *Added Easter Egg in Dynamic Tank. *Refactored liquid/energy rendering management. *Animation for when Dynamic Tank is created. *Enhanced Dynamic Tank calculation. --- bin/minecraft/mods/mekanism/sound/cj/CJ_1.ogg | Bin 0 -> 14154 bytes bin/minecraft/mods/mekanism/sound/cj/CJ_2.ogg | Bin 0 -> 26483 bytes bin/minecraft/mods/mekanism/sound/cj/CJ_3.ogg | Bin 0 -> 33940 bytes src/minecraft/mekanism/api/EnumGas.java | 10 +- .../mekanism/client/ClientProxy.java | 20 ++++ .../mekanism/client/ItemRenderingHandler.java | 4 +- .../client/RenderPressurizedTube.java | 2 +- .../mekanism/client/RenderTickHandler.java | 76 +++++++++++++++ .../mekanism/client/RenderUniversalCable.java | 8 +- src/minecraft/mekanism/client/Sound.java | 3 + .../mekanism/client/SoundHandler.java | 21 +++++ .../mekanism/client/ThreadTankSparkle.java | 87 ++++++++++++++++++ .../mekanism/common/CommonProxy.java | 8 +- src/minecraft/mekanism/common/Mekanism.java | 26 +----- .../mekanism/common/MekanismUtils.java | 9 ++ .../mekanism/common/PacketHandler.java | 1 + .../mekanism/common/TankUpdateProtocol.java | 22 +++-- .../common/TileEntityDynamicTank.java | 7 ++ .../client/BlockRenderingHandler.java | 2 +- .../client/GeneratorsClientProxy.java | 2 +- .../generators/common/BlockGenerator.java | 2 +- .../mekanism/nei/NEIMekanismConfig.java | 3 - 22 files changed, 263 insertions(+), 50 deletions(-) create mode 100644 bin/minecraft/mods/mekanism/sound/cj/CJ_1.ogg create mode 100644 bin/minecraft/mods/mekanism/sound/cj/CJ_2.ogg create mode 100644 bin/minecraft/mods/mekanism/sound/cj/CJ_3.ogg create mode 100644 src/minecraft/mekanism/client/RenderTickHandler.java create mode 100644 src/minecraft/mekanism/client/ThreadTankSparkle.java diff --git a/bin/minecraft/mods/mekanism/sound/cj/CJ_1.ogg b/bin/minecraft/mods/mekanism/sound/cj/CJ_1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e701da1479be8aa1c53da96b46ef258fc2c14df5 GIT binary patch literal 14154 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

`J8d@Fdim6>zBhJr$kh7?yE%F1&8*tva~(;Q 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 literal 0 HcmV?d00001 diff --git a/bin/minecraft/mods/mekanism/sound/cj/CJ_3.ogg b/bin/minecraft/mods/mekanism/sound/cj/CJ_3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d1bf5a96440a4ca093ff241ab522e69f29522da6 GIT binary patch literal 33940 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 type, Object... tickData) + { + + } + + @Override + public void tickEnd(EnumSet type, Object... tickData) + { + Minecraft mc = FMLClientHandler.instance().getClient(); + + if(mc.currentScreen == null && mc.thePlayer != null && mc.theWorld != null && !MekanismUtils.isObfuscated()) + { + EntityPlayer player = mc.thePlayer; + World world = mc.theWorld; + + FontRenderer font = mc.fontRenderer; + + MovingObjectPosition pos = player.rayTrace(40.0D, 1.0F); + + if(pos != null) + { + int x = MathHelper.floor_double(pos.blockX); + int y = MathHelper.floor_double(pos.blockY); + int z = MathHelper.floor_double(pos.blockZ); + + Object3D obj = new Object3D(x, y, z); + + String tileDisplay = "no"; + + if(obj.getTileEntity(world) != null) + { + if(obj.getTileEntity(world).getClass() != null) + { + tileDisplay = obj.getTileEntity(world).getClass().getSimpleName(); + } + } + + font.drawStringWithShadow("Block ID: " + obj.getBlockId(world), 1, 1, 0x404040); + font.drawStringWithShadow("Metadata: " + obj.getMetadata(world), 1, 10, 0x404040); + font.drawStringWithShadow("TileEntity: " + tileDisplay, 1, 19, 0x404040); + } + } + } + + @Override + public EnumSet ticks() + { + return EnumSet.of(TickType.RENDER); + } + + @Override + public String getLabel() + { + return "MekanismRender"; + } +} diff --git a/src/minecraft/mekanism/client/RenderUniversalCable.java b/src/minecraft/mekanism/client/RenderUniversalCable.java index ad54c13cb..dcfc80b1b 100644 --- a/src/minecraft/mekanism/client/RenderUniversalCable.java +++ b/src/minecraft/mekanism/client/RenderUniversalCable.java @@ -11,13 +11,13 @@ import net.minecraft.block.Block; import net.minecraft.client.renderer.GLAllocation; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Icon; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; -import net.minecraftforge.liquids.LiquidContainerRegistry; -import net.minecraftforge.liquids.LiquidStack; import org.lwjgl.opengl.GL11; +import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -28,6 +28,8 @@ public class RenderUniversalCable extends TileEntitySpecialRenderer private HashMap cachedLiquids = new HashMap(); + private Icon renderIcon = FMLClientHandler.instance().getClient().renderEngine.textureMapItems.registerIcon("mekanism:LiquidEnergy"); + private static final int stages = 40; private static final double offset = 0.015; @@ -126,7 +128,7 @@ public class RenderUniversalCable extends TileEntitySpecialRenderer Model3D toReturn = new Model3D(); toReturn.baseBlock = Block.waterStill; - toReturn.texture = Mekanism.LiquidEnergy.getIconFromDamage(0); + toReturn.texture = renderIcon; int[] displays = new int[stages]; diff --git a/src/minecraft/mekanism/client/Sound.java b/src/minecraft/mekanism/client/Sound.java index 2ac5fa38e..f9c0ff8c4 100644 --- a/src/minecraft/mekanism/client/Sound.java +++ b/src/minecraft/mekanism/client/Sound.java @@ -47,6 +47,7 @@ public class Sound tileEntity = tileentity; URL url = getClass().getClassLoader().getResource("mods/mekanism/sound/" + sound); + if(url == null) { System.out.println("[Mekanism] Invalid sound file: " + sound); @@ -80,6 +81,7 @@ public class Sound updateVolume(FMLClientHandler.instance().getClient().thePlayer); Mekanism.audioHandler.soundSystem.play(identifier); } + isPlaying = true; } } @@ -101,6 +103,7 @@ public class Sound updateVolume(FMLClientHandler.instance().getClient().thePlayer); Mekanism.audioHandler.soundSystem.stop(identifier); } + isPlaying = false; } } diff --git a/src/minecraft/mekanism/client/SoundHandler.java b/src/minecraft/mekanism/client/SoundHandler.java index 86ee29bfb..3ac887d89 100644 --- a/src/minecraft/mekanism/client/SoundHandler.java +++ b/src/minecraft/mekanism/client/SoundHandler.java @@ -1,11 +1,13 @@ package mekanism.client; +import java.net.URL; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Random; +import mekanism.api.Object3D; import mekanism.common.IActiveState; import mekanism.common.Mekanism; import net.minecraft.tileentity.TileEntity; @@ -190,6 +192,25 @@ public class SoundHandler } } + /** + * Plays a sound in a specific location. + * @param soundPath - sound path to play + * @param world - world to play in + * @param object - location to play + */ + public void quickPlay(String soundPath, World world, Object3D object) + { + URL url = getClass().getClassLoader().getResource("mods/mekanism/sound/" + soundPath); + + if(url == null) + { + System.out.println("[Mekanism] Invalid sound file: " + soundPath); + } + + String s = soundSystem.quickPlay(false, url, soundPath, false, object.xCoord, object.yCoord, object.zCoord, 0, 16F); + soundSystem.setVolume(s, masterVolume); + } + @ForgeSubscribe public void onChunkUnload(ChunkEvent.Unload event) { diff --git a/src/minecraft/mekanism/client/ThreadTankSparkle.java b/src/minecraft/mekanism/client/ThreadTankSparkle.java new file mode 100644 index 000000000..29e1d62c6 --- /dev/null +++ b/src/minecraft/mekanism/client/ThreadTankSparkle.java @@ -0,0 +1,87 @@ +package mekanism.client; + +import java.util.HashSet; +import java.util.Random; +import java.util.Set; + +import mekanism.api.Object3D; +import mekanism.common.Mekanism; +import mekanism.common.TileEntityDynamicTank; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; + +public class ThreadTankSparkle extends Thread +{ + public TileEntityDynamicTank pointer; + + public Random random = new Random(); + + public Set iteratedNodes = new HashSet(); + + public ThreadTankSparkle(TileEntityDynamicTank tileEntity) + { + pointer = tileEntity; + } + + @Override + public void run() + { + if(Mekanism.dynamicTankEasterEgg) + { + Mekanism.audioHandler.quickPlay("cj/CJ_" + (random.nextInt(3)+1) + ".ogg", pointer.worldObj, Object3D.get(pointer)); + } + + loop(pointer); + } + + public void loop(TileEntityDynamicTank tileEntity) + { + World world = pointer.worldObj; + + for(int i = 0; i < 6; i++) + { + if(world.getBlockId(tileEntity.xCoord, tileEntity.yCoord-1, tileEntity.zCoord) == 0) + { + world.spawnParticle("reddust", tileEntity.xCoord + random.nextDouble(), tileEntity.yCoord + -.01, tileEntity.zCoord + random.nextDouble(), 0, 0, 0); + } + + if(world.getBlockId(tileEntity.xCoord, tileEntity.yCoord+1, tileEntity.zCoord) == 0) + { + world.spawnParticle("reddust", tileEntity.xCoord + random.nextDouble(), tileEntity.yCoord + 1.01, tileEntity.zCoord + random.nextDouble(), 0, 0, 0); + } + + if(world.getBlockId(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord-1) == 0) + { + world.spawnParticle("reddust", tileEntity.xCoord + random.nextDouble(), tileEntity.yCoord + random.nextDouble(), tileEntity.zCoord + -.01, 0, 0, 0); + } + + if(world.getBlockId(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord+1) == 0) + { + world.spawnParticle("reddust", tileEntity.xCoord + random.nextDouble(), tileEntity.yCoord + random.nextDouble(), tileEntity.zCoord + 1.01, 0, 0, 0); + } + + if(world.getBlockId(tileEntity.xCoord-1, tileEntity.yCoord, tileEntity.zCoord) == 0) + { + world.spawnParticle("reddust", tileEntity.xCoord + -.01, tileEntity.yCoord + random.nextDouble(), tileEntity.zCoord + random.nextDouble(), 0, 0, 0); + } + + if(world.getBlockId(tileEntity.xCoord+1, tileEntity.yCoord, tileEntity.zCoord) == 0) + { + world.spawnParticle("reddust", tileEntity.xCoord + 1.01, tileEntity.yCoord + random.nextDouble(), tileEntity.zCoord + random.nextDouble(), 0, 0, 0); + } + } + + iteratedNodes.add(tileEntity); + + for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) + { + TileEntity tile = Object3D.get(tileEntity).getFromSide(side).getTileEntity(pointer.worldObj); + + if(tile instanceof TileEntityDynamicTank && !iteratedNodes.contains(tile)) + { + loop((TileEntityDynamicTank)tile); + } + } + } +} diff --git a/src/minecraft/mekanism/common/CommonProxy.java b/src/minecraft/mekanism/common/CommonProxy.java index e3636f6c8..94b6428dd 100644 --- a/src/minecraft/mekanism/common/CommonProxy.java +++ b/src/minecraft/mekanism/common/CommonProxy.java @@ -91,7 +91,8 @@ public class CommonProxy Mekanism.disableBCBronzeCrafting = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "DisableBCBronzeCrafting", false).getBoolean(true); Mekanism.updateNotifications = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "UpdateNotifications", true).getBoolean(true); Mekanism.controlCircuitOreDict = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "ControlCircuitOreDict", true).getBoolean(true); - Mekanism.logPackets = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "LogPackets", false).getBoolean(false); + Mekanism.logPackets = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "LogPackets", false).getBoolean(true); + Mekanism.dynamicTankEasterEgg = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "DynamicTankEasterEgg", false).getBoolean(true); Mekanism.obsidianTNTDelay = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "ObsidianTNTDelay", 100).getInt(); Mekanism.obsidianTNTBlastRadius = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "ObsidianTNTBlastRadius", 12).getInt(); Mekanism.FROM_IC2 = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "JoulesToEU", 10).getDouble(10); @@ -128,6 +129,11 @@ public class CommonProxy return false; } + /** + * Does the Dynamic Tank creation animation, starting from the rendering block. + */ + public void doTankAnimation(TileEntityDynamicTank tileEntity) {} + /** * Get the actual interface for a GUI. Client-only. * @param ID - gui ID diff --git a/src/minecraft/mekanism/common/Mekanism.java b/src/minecraft/mekanism/common/Mekanism.java index 1311e09f0..8cc5db54b 100644 --- a/src/minecraft/mekanism/common/Mekanism.java +++ b/src/minecraft/mekanism/common/Mekanism.java @@ -139,9 +139,6 @@ public class Mekanism public static Item PortableTeleporter; public static Item TeleportationCore; public static Item Configurator; - public static Item LiquidEnergy; - public static Item LiquidHydrogen; - public static Item LiquidOxygen; //Blocks public static Block BasicBlock; @@ -168,6 +165,7 @@ public class Mekanism public static boolean enableSounds = true; public static boolean controlCircuitOreDict = true; public static boolean logPackets = false; + public static boolean dynamicTankEasterEgg = false; public static int obsidianTNTBlastRadius = 12; public static int obsidianTNTDelay = 100; public static double TO_IC2; @@ -453,9 +451,6 @@ public class Mekanism LanguageRegistry.addName(PortableTeleporter, "Portable Teleporter"); LanguageRegistry.addName(TeleportationCore, "Teleportation Core"); LanguageRegistry.addName(Configurator, "Configurator"); - LanguageRegistry.addName(LiquidEnergy, "Liquid Energy"); - LanguageRegistry.addName(LiquidHydrogen, "Liquid Hydrogen"); - LanguageRegistry.addName(LiquidOxygen, "Liquid Oxygen"); //Localization for BasicBlock LanguageRegistry.instance().addStringLocalization("tile.BasicBlock.OsmiumBlock.name", "Osmium Block"); @@ -560,7 +555,7 @@ public class Mekanism EnergyTablet = (ItemEnergized) new ItemEnergized(configuration.getItem("EnergyTablet", 11206).getInt(), 1000000, 120).setUnlocalizedName("EnergyTablet"); SpeedUpgrade = new ItemMachineUpgrade(configuration.getItem("SpeedUpgrade", 11207).getInt(), 0, 150).setUnlocalizedName("SpeedUpgrade"); EnergyUpgrade = new ItemMachineUpgrade(configuration.getItem("EnergyUpgrade", 11208).getInt(), 1000, 0).setUnlocalizedName("EnergyUpgrade"); - LiquidEnergy = new ItemMekanism(configuration.getItem("LiquidEnergy", 11209).getInt()).setUnlocalizedName("LiquidEnergy").setCreativeTab(null); + //Free ID...again :( AtomicDisassembler = (ItemAtomicDisassembler) new ItemAtomicDisassembler(configuration.getItem("AtomicDisassembler", 11210).getInt()).setUnlocalizedName("AtomicDisassembler"); AtomicCore = new ItemMekanism(configuration.getItem("AtomicCore", 11211).getInt()).setUnlocalizedName("AtomicCore"); EnrichedAlloy = new ItemMekanism(configuration.getItem("EnrichedAlloy", 11212).getInt()).setUnlocalizedName("EnrichedAlloy"); @@ -573,8 +568,6 @@ public class Mekanism Clump = new ItemClump(configuration.getItem("Clump", 11219).getInt()-256); DirtyDust = new ItemDirtyDust(configuration.getItem("DirtyDust", 11220).getInt()-256); Configurator = new ItemConfigurator(configuration.getItem("Configurator", 11221).getInt()).setUnlocalizedName("Configurator"); - LiquidHydrogen = new ItemMekanism(configuration.getItem("LiquidHydrogen", 11222).getInt()).setUnlocalizedName("LiquidHydrogen").setCreativeTab(null); - LiquidOxygen = new ItemMekanism(configuration.getItem("LiquidOxygen", 11223).getInt()).setUnlocalizedName("LiquidOxygen").setCreativeTab(null); configuration.save(); //Registrations @@ -591,7 +584,6 @@ public class Mekanism GameRegistry.registerItem(EnergyTablet, "EnergyTablet"); GameRegistry.registerItem(SpeedUpgrade, "SpeedUpgrade"); GameRegistry.registerItem(EnergyUpgrade, "EnergyUpgrade"); - GameRegistry.registerItem(LiquidEnergy, "LiquidEnergy"); GameRegistry.registerItem(AtomicDisassembler, "AtomicDisassembler"); GameRegistry.registerItem(AtomicCore, "AtomicCore"); GameRegistry.registerItem(EnrichedAlloy, "EnrichedAlloy"); @@ -604,8 +596,6 @@ public class Mekanism GameRegistry.registerItem(Clump, "Clump"); GameRegistry.registerItem(DirtyDust, "DirtyDust"); GameRegistry.registerItem(Configurator, "Configurator"); - GameRegistry.registerItem(LiquidHydrogen, "LiquidHydrogen"); - GameRegistry.registerItem(LiquidOxygen, "LiquidOxygen"); } /** @@ -1036,18 +1026,6 @@ public class Mekanism addIntegratedItems(); - if(!EnumGas.HYDROGEN.hasTexture()) - { - EnumGas.HYDROGEN.gasItem = LiquidHydrogen; - EnumGas.HYDROGEN.texturePath = "/mods/mekanism/textures/items/LiquidHydrogen.png"; - } - - if(!EnumGas.OXYGEN.hasTexture()) - { - EnumGas.OXYGEN.gasItem = LiquidOxygen; - EnumGas.OXYGEN.texturePath = "/mods/mekanism/textures/items/LiquidOxygen.png"; - } - System.out.println("[Mekanism] Hooking complete."); proxy.loadSoundHandler(); diff --git a/src/minecraft/mekanism/common/MekanismUtils.java b/src/minecraft/mekanism/common/MekanismUtils.java index 24a8344c1..b8fe87732 100644 --- a/src/minecraft/mekanism/common/MekanismUtils.java +++ b/src/minecraft/mekanism/common/MekanismUtils.java @@ -783,6 +783,15 @@ public final class MekanismUtils } } + /** + * Whether or not this mod is in an obfuscated environment. + * @return if the mod is in an obfuscated environment + */ + public static boolean isObfuscated() + { + return !World.class.getSimpleName().equals("World"); + } + /** * Grabs a unique inventory ID for a dynamic tank. * @return unique inventory ID diff --git a/src/minecraft/mekanism/common/PacketHandler.java b/src/minecraft/mekanism/common/PacketHandler.java index e91511376..646d1630d 100644 --- a/src/minecraft/mekanism/common/PacketHandler.java +++ b/src/minecraft/mekanism/common/PacketHandler.java @@ -317,6 +317,7 @@ public class PacketHandler implements IPacketHandler int id = dataStream.readInt(); int windowId = dataStream.readInt(); boolean isBlock = dataStream.readBoolean(); + int x = 0; int y = 0; int z = 0; diff --git a/src/minecraft/mekanism/common/TankUpdateProtocol.java b/src/minecraft/mekanism/common/TankUpdateProtocol.java index aca8f2633..b5d9fbafd 100644 --- a/src/minecraft/mekanism/common/TankUpdateProtocol.java +++ b/src/minecraft/mekanism/common/TankUpdateProtocol.java @@ -25,9 +25,6 @@ public class TankUpdateProtocol /** The original block the calculation is getting run from. */ public TileEntity pointer; - /** If the pointer is not a part of any actual dynamic tank. */ - public boolean pointerNotPartOf; - public TankUpdateProtocol(TileEntity tileEntity) { pointer = tileEntity; @@ -204,9 +201,6 @@ public class TankUpdateProtocol structureFound = structure; return; } - else { - pointerNotPartOf = true; - } } } @@ -368,6 +362,19 @@ public class TankUpdateProtocol if(structureFound != null) { + for(TileEntityDynamicTank tileEntity : iteratedNodes) + { + if(!structureFound.locations.contains(Object3D.get(tileEntity))) + { + for(TileEntity tile : iteratedNodes) + { + ((TileEntityDynamicTank)tileEntity).structure = null; + } + + return; + } + } + int idFound = -1; for(Object3D obj : structureFound.locations) @@ -407,8 +414,7 @@ public class TankUpdateProtocol tileEntity.inventory = cache.inventory; } } - else if(!pointerNotPartOf) - { + else { for(TileEntity tileEntity : iteratedNodes) { ((TileEntityDynamicTank)tileEntity).structure = null; diff --git a/src/minecraft/mekanism/common/TileEntityDynamicTank.java b/src/minecraft/mekanism/common/TileEntityDynamicTank.java index c83a7d868..c0687b37c 100644 --- a/src/minecraft/mekanism/common/TileEntityDynamicTank.java +++ b/src/minecraft/mekanism/common/TileEntityDynamicTank.java @@ -93,8 +93,15 @@ public class TileEntityDynamicTank extends TileEntityContainerBlock valveViewing.put(data, valveViewing.get(data)-1); } } + + if(!prevStructure) + { + Mekanism.proxy.doTankAnimation(this); + } } + prevStructure = clientHasStructure; + if(!clientHasStructure || !isRendering) { for(ValveData data : valveViewing.keySet()) diff --git a/src/minecraft/mekanism/generators/client/BlockRenderingHandler.java b/src/minecraft/mekanism/generators/client/BlockRenderingHandler.java index 761769d46..ea47620b2 100644 --- a/src/minecraft/mekanism/generators/client/BlockRenderingHandler.java +++ b/src/minecraft/mekanism/generators/client/BlockRenderingHandler.java @@ -114,7 +114,7 @@ public class BlockRenderingHandler implements ISimpleBlockRenderingHandler @Override public int getRenderId() { - return GeneratorsClientProxy.RENDER_ID; + return GeneratorsClientProxy.GENERATOR_RENDER_ID; } /** diff --git a/src/minecraft/mekanism/generators/client/GeneratorsClientProxy.java b/src/minecraft/mekanism/generators/client/GeneratorsClientProxy.java index 5d3cbc21b..ee76ca20a 100644 --- a/src/minecraft/mekanism/generators/client/GeneratorsClientProxy.java +++ b/src/minecraft/mekanism/generators/client/GeneratorsClientProxy.java @@ -20,7 +20,7 @@ import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class GeneratorsClientProxy extends GeneratorsCommonProxy { - public static int RENDER_ID = RenderingRegistry.getNextAvailableRenderId(); + public static int GENERATOR_RENDER_ID = RenderingRegistry.getNextAvailableRenderId(); @Override public void registerSpecialTileEntities() diff --git a/src/minecraft/mekanism/generators/common/BlockGenerator.java b/src/minecraft/mekanism/generators/common/BlockGenerator.java index 70768a232..19ad49f86 100644 --- a/src/minecraft/mekanism/generators/common/BlockGenerator.java +++ b/src/minecraft/mekanism/generators/common/BlockGenerator.java @@ -475,7 +475,7 @@ public class BlockGenerator extends BlockContainer @SideOnly(Side.CLIENT) public int getRenderType() { - return GeneratorsClientProxy.RENDER_ID; + return GeneratorsClientProxy.GENERATOR_RENDER_ID; } /*This method is not used, metadata manipulation is required to create a Tile Entity.*/ diff --git a/src/minecraft/mekanism/nei/NEIMekanismConfig.java b/src/minecraft/mekanism/nei/NEIMekanismConfig.java index 1aae614dc..402834740 100644 --- a/src/minecraft/mekanism/nei/NEIMekanismConfig.java +++ b/src/minecraft/mekanism/nei/NEIMekanismConfig.java @@ -38,9 +38,6 @@ public class NEIMekanismConfig implements IConfigureNEI API.setGuiOffset(GuiMetallurgicInfuser.class, 5, 15); API.hideItem(Mekanism.boundingBlockID); - API.hideItem(Mekanism.LiquidEnergy.itemID); - API.hideItem(Mekanism.LiquidHydrogen.itemID); - API.hideItem(Mekanism.LiquidOxygen.itemID); } @Override