From 711e6279a20554c725f35484be91b835ee608346 Mon Sep 17 00:00:00 2001 From: Aidan Brady Date: Fri, 2 Nov 2012 22:27:30 -0400 Subject: [PATCH] v5 Beta #2 *Removed all hawk-related stuff. *Updated textures. *Added animation when using lightning rod. *Merged all ingots into a single ID. *Merged all dusts into a single ID. *Updated MachineryManager to function correctly. *Various bugfixes. --- bin/minecraft/textures/items.png | Bin 17702 -> 24135 bytes bin/minecraft/textures/terrain.png | Bin 27051 -> 17020 bytes .../hawk/api/EndiumTeleporterCoords.java | 105 ------- src/common/hawk/api/ProcessingRecipes.java | 201 ------------- src/common/hawk/api/TeleportationHelper.java | 106 ------- .../uberkat/obsidian/common/BlockMachine.java | 145 +++------- .../uberkat/obsidian/common/BlockMulti.java | 25 -- .../net/uberkat/obsidian/common/BlockOre.java | 4 - .../uberkat/obsidian/common/CommonProxy.java | 11 - .../obsidian/common/ItemBlockBase.java | 46 --- .../obsidian/common/ItemBlockMachine.java | 8 - .../obsidian/common/ItemBlockMulti.java | 13 - .../uberkat/obsidian/common/ItemBlockOre.java | 4 - .../net/uberkat/obsidian/common/ItemDust.java | 12 +- .../uberkat/obsidian/common/ItemIngot.java | 7 +- .../obsidian/common/ObsidianIngots.java | 65 +++-- .../obsidian/common/PacketHandler.java | 79 ------ .../obsidian/common/RecipeHandler.java | 1 - .../common/TileEntityBasicMachine.java | 15 + .../hawk/common/ContainerTeleporter.java | 32 --- .../obsidian/hawk/common/ContainerWasher.java | 122 -------- .../obsidian/hawk/common/HawkCore.java | 134 --------- .../obsidian/hawk/common/HawksMachinery.java | 70 ----- .../common/TileEntityDamagableMachine.java | 52 ---- .../common/TileEntityEndiumChunkloader.java | 50 ---- .../hawk/common/TileEntityTeleporter.java | 72 ----- .../hawk/common/TileEntityWasher.java | 266 ------------------ .../uberkat/obsidian/client/ClientProxy.java | 10 - .../obsidian/hawk/client/GuiTeleporter.java | 38 --- .../obsidian/hawk/client/GuiWasher.java | 60 ---- 30 files changed, 89 insertions(+), 1664 deletions(-) delete mode 100644 src/common/hawk/api/EndiumTeleporterCoords.java delete mode 100644 src/common/hawk/api/ProcessingRecipes.java delete mode 100644 src/common/hawk/api/TeleportationHelper.java delete mode 100644 src/common/net/uberkat/obsidian/common/ItemBlockBase.java delete mode 100644 src/common/net/uberkat/obsidian/hawk/common/ContainerTeleporter.java delete mode 100644 src/common/net/uberkat/obsidian/hawk/common/ContainerWasher.java delete mode 100644 src/common/net/uberkat/obsidian/hawk/common/HawkCore.java delete mode 100644 src/common/net/uberkat/obsidian/hawk/common/HawksMachinery.java delete mode 100644 src/common/net/uberkat/obsidian/hawk/common/TileEntityDamagableMachine.java delete mode 100644 src/common/net/uberkat/obsidian/hawk/common/TileEntityEndiumChunkloader.java delete mode 100644 src/common/net/uberkat/obsidian/hawk/common/TileEntityTeleporter.java delete mode 100644 src/common/net/uberkat/obsidian/hawk/common/TileEntityWasher.java delete mode 100644 src/minecraft/net/uberkat/obsidian/hawk/client/GuiTeleporter.java delete mode 100644 src/minecraft/net/uberkat/obsidian/hawk/client/GuiWasher.java diff --git a/bin/minecraft/textures/items.png b/bin/minecraft/textures/items.png index cebe140bdd08c658dcbe28948a467be058c25821..9c0143d0edb299f43b69e033a64480668cc0ba94 100644 GIT binary patch literal 24135 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 RcB8=0Zo+=ohd=yu{@U$ literal 17702 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 ZP{_50Mgw?i95{oaj@lf_J>+%s{{VEW;C282 diff --git a/bin/minecraft/textures/terrain.png b/bin/minecraft/textures/terrain.png index 2e24f5829c0644bec7ec402760bfff3ff754880b..59444cb0eb4a57b72065de37544b6959ef00d8a1 100755 GIT binary patch literal 17020 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 Gzx^MWG)`{- literal 27051 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 y|86P#s|tC4Ncz99wEKsoZw{~gtBU coordsList; - private static TeleportationHelper INSTANCE; - - public TeleportationHelper() - { - INSTANCE = this; - } - - public boolean registerCoords(EndiumTeleporterCoords coords) - { - for (EndiumTeleporterCoords otherCoords : this.coordsList) - { - if (otherCoords.isEqual(coords.symA(), coords.symB(), coords.symC())) - { - return false; - } - else - { - continue; - } - - } - - this.coordsList.add(coords); - return true; - } - - public boolean removeCoords(EndiumTeleporterCoords coords) - { - return this.coordsList.remove(coords); - } - - public EndiumTeleporterCoords getCoordsFromSymbols(int sym1, int sym2, int sym3) - { - for (EndiumTeleporterCoords coords : this.coordsList) - { - if (coords.isEqual(sym1, sym2, sym3)) - { - return coords; - } - - } - - return null; - } - - public void teleportEntity(Entity entity, EndiumTeleporterCoords coords) - { - if (new Random().nextInt(100) > 10) - { - entity.travelToTheEnd(entity.dimension); - return; - } - - if (!entity.worldObj.isRemote) - { - if (coords.dimension() != entity.dimension) - { - ServerConfigurationManager manager = MinecraftServer.getServer().getConfigurationManager(); - - if (entity instanceof EntityPlayerMP) - { - manager.transferPlayerToDimension(((EntityPlayerMP)entity), coords.dimension()); - - } - else - { - manager.func_82448_a(entity, coords.dimension(), DimensionManager.getWorld(entity.dimension), DimensionManager.getWorld(coords.dimension())); - - } - - } - - entity.setPosition(coords.x() - 0.5, coords.y(), coords.z() - 0.5); - - } - - } - - public static TeleportationHelper instance() - { - return INSTANCE; - } - -} diff --git a/src/common/net/uberkat/obsidian/common/BlockMachine.java b/src/common/net/uberkat/obsidian/common/BlockMachine.java index 87c5e26d5..84a5b8d87 100644 --- a/src/common/net/uberkat/obsidian/common/BlockMachine.java +++ b/src/common/net/uberkat/obsidian/common/BlockMachine.java @@ -7,9 +7,6 @@ import cpw.mods.fml.common.Side; import cpw.mods.fml.common.asm.SideOnly; import net.minecraft.src.*; import net.minecraftforge.common.ForgeDirection; -import net.uberkat.obsidian.hawk.common.TileEntityDamagableMachine; -import net.uberkat.obsidian.hawk.common.TileEntityTeleporter; -import net.uberkat.obsidian.hawk.common.TileEntityWasher; /** * Block class for handling multiple machine block IDs. @@ -18,8 +15,6 @@ import net.uberkat.obsidian.hawk.common.TileEntityWasher; * 2: Combiner * 3: Crusher * 4: Theoretical Elementizer - * 5: Washer - * 6: Teleporter * @author AidanBrady * */ @@ -59,41 +54,36 @@ public class BlockMachine extends BlockContainer @SideOnly(Side.CLIENT) public void randomDisplayTick(World world, int x, int y, int z, Random random) { - int meta = world.getBlockMetadata(x, y, z); - - if(meta != 5 && meta != 6) - { - TileEntityBasicMachine tileEntity = (TileEntityBasicMachine)world.getBlockTileEntity(x, y, z); - if (isActive(world, x, y, z)) - { - float xRandom = (float)x + 0.5F; - float yRandom = (float)y + 0.0F + random.nextFloat() * 6.0F / 16.0F; - float zRandom = (float)z + 0.5F; - float iRandom = 0.52F; - float jRandom = random.nextFloat() * 0.6F - 0.3F; - - if (tileEntity.facing == 4) - { - world.spawnParticle("smoke", (double)(xRandom - iRandom), (double)yRandom, (double)(zRandom + jRandom), 0.0D, 0.0D, 0.0D); - world.spawnParticle("reddust", (double)(xRandom - iRandom), (double)yRandom, (double)(zRandom + jRandom), 0.0D, 0.0D, 0.0D); - } - else if (tileEntity.facing == 5) - { - world.spawnParticle("smoke", (double)(xRandom + iRandom), (double)yRandom, (double)(zRandom + jRandom), 0.0D, 0.0D, 0.0D); - world.spawnParticle("reddust", (double)(xRandom + iRandom), (double)yRandom, (double)(zRandom + jRandom), 0.0D, 0.0D, 0.0D); - } - else if (tileEntity.facing == 2) - { - world.spawnParticle("smoke", (double)(xRandom + jRandom), (double)yRandom, (double)(zRandom - iRandom), 0.0D, 0.0D, 0.0D); - world.spawnParticle("reddust", (double)(xRandom + jRandom), (double)yRandom, (double)(zRandom - iRandom), 0.0D, 0.0D, 0.0D); - } - else if (tileEntity.facing == 3) - { - world.spawnParticle("smoke", (double)(xRandom + jRandom), (double)yRandom, (double)(zRandom + iRandom), 0.0D, 0.0D, 0.0D); - world.spawnParticle("reddust", (double)(xRandom + jRandom), (double)yRandom, (double)(zRandom + iRandom), 0.0D, 0.0D, 0.0D); - } - } - } + TileEntityBasicMachine tileEntity = (TileEntityBasicMachine)world.getBlockTileEntity(x, y, z); + if (isActive(world, x, y, z)) + { + float xRandom = (float)x + 0.5F; + float yRandom = (float)y + 0.0F + random.nextFloat() * 6.0F / 16.0F; + float zRandom = (float)z + 0.5F; + float iRandom = 0.52F; + float jRandom = random.nextFloat() * 0.6F - 0.3F; + + if (tileEntity.facing == 4) + { + world.spawnParticle("smoke", (double)(xRandom - iRandom), (double)yRandom, (double)(zRandom + jRandom), 0.0D, 0.0D, 0.0D); + world.spawnParticle("reddust", (double)(xRandom - iRandom), (double)yRandom, (double)(zRandom + jRandom), 0.0D, 0.0D, 0.0D); + } + else if (tileEntity.facing == 5) + { + world.spawnParticle("smoke", (double)(xRandom + iRandom), (double)yRandom, (double)(zRandom + jRandom), 0.0D, 0.0D, 0.0D); + world.spawnParticle("reddust", (double)(xRandom + iRandom), (double)yRandom, (double)(zRandom + jRandom), 0.0D, 0.0D, 0.0D); + } + else if (tileEntity.facing == 2) + { + world.spawnParticle("smoke", (double)(xRandom + jRandom), (double)yRandom, (double)(zRandom - iRandom), 0.0D, 0.0D, 0.0D); + world.spawnParticle("reddust", (double)(xRandom + jRandom), (double)yRandom, (double)(zRandom - iRandom), 0.0D, 0.0D, 0.0D); + } + else if (tileEntity.facing == 3) + { + world.spawnParticle("smoke", (double)(xRandom + jRandom), (double)yRandom, (double)(zRandom + iRandom), 0.0D, 0.0D, 0.0D); + world.spawnParticle("reddust", (double)(xRandom + jRandom), (double)yRandom, (double)(zRandom + iRandom), 0.0D, 0.0D, 0.0D); + } + } } public int getBlockTextureFromSideAndMetadata(int side, int meta) @@ -152,34 +142,6 @@ public class BlockMachine extends BlockContainer return 19; } } - else if(meta == 5) - { - if(side == 1) - { - return 29; - } - else if(side == 3) - { - return 30; - } - else { - return 31; - } - } - else if(meta == 6) - { - if(side == 0) - { - return 34; - } - else if(side == 1) - { - return 32; - } - else { - return 33; - } - } else { return 0; } @@ -252,34 +214,6 @@ public class BlockMachine extends BlockContainer } } } - else if(metadata == 5) - { - if(side == 1) - { - return 29; - } - else if(side == tileEntity.facing) - { - return 30; - } - else { - return 31; - } - } - else if(metadata == 6) - { - if(side == 0) - { - return 34; - } - else if(side == 1) - { - return 32; - } - else { - return 33; - } - } else { return 0; } @@ -298,8 +232,6 @@ public class BlockMachine extends BlockContainer list.add(new ItemStack(i, 1, 2)); list.add(new ItemStack(i, 1, 3)); list.add(new ItemStack(i, 1, 4)); - list.add(new ItemStack(i, 1, 5)); - list.add(new ItemStack(i, 1, 6)); } /** @@ -371,10 +303,9 @@ public class BlockMachine extends BlockContainer { if(world.isRemote) { - return false; + return true; } - //If the block isn't a washer else { TileEntityBasicMachine tileEntity = (TileEntityBasicMachine)world.getBlockTileEntity(x, y, z); int metadata = world.getBlockMetadata(x, y, z); @@ -391,12 +322,10 @@ public class BlockMachine extends BlockContainer else if(metadata == 3) id = 6; else if(metadata == 4) id = 7; else if(metadata == 5) id = 10; - else if(metadata == 6) id = 11; entityplayer.openGui(ObsidianIngots.instance, id, world, x, y, z); return true; } - return false; } return true; } @@ -429,14 +358,6 @@ public class BlockMachine extends BlockContainer { return new TileEntityTheoreticalElementizer(); } - else if(metadata == MachineType.WASHER.index) - { - return new TileEntityWasher(); - } - else if(metadata == MachineType.TELEPORTER.index) - { - return new TileEntityTeleporter(); - } else { return null; } @@ -454,9 +375,7 @@ public class BlockMachine extends BlockContainer PLATINUM_COMPRESSOR(1), COMBINER(2), CRUSHER(3), - THEORETICAL_ELEMENTIZER(4), - WASHER(5), - TELEPORTER(6); + THEORETICAL_ELEMENTIZER(4); private int index; diff --git a/src/common/net/uberkat/obsidian/common/BlockMulti.java b/src/common/net/uberkat/obsidian/common/BlockMulti.java index 13b872029..d57c683ad 100644 --- a/src/common/net/uberkat/obsidian/common/BlockMulti.java +++ b/src/common/net/uberkat/obsidian/common/BlockMulti.java @@ -8,7 +8,6 @@ import cpw.mods.fml.common.asm.SideOnly; import net.minecraft.src.*; import net.minecraftforge.common.ForgeChunkManager; -import net.uberkat.obsidian.hawk.common.TileEntityEndiumChunkloader; /** * Block class for handling multiple metal block IDs. @@ -17,14 +16,11 @@ import net.uberkat.obsidian.hawk.common.TileEntityEndiumChunkloader; * 2: Refined Obsidian * 3: Coal Block * 4: Refined Glowstone - * 5: Endium Chunkloader * @author AidanBrady * */ public class BlockMulti extends Block { - public TileEntityEndiumChunkloader tileChunkloader; - public BlockMulti(int i) { super(i, Material.iron); @@ -65,7 +61,6 @@ public class BlockMulti extends Block list.add(new ItemStack(i, 1, 2)); list.add(new ItemStack(i, 1, 3)); list.add(new ItemStack(i, 1, 4)); - list.add(new ItemStack(i, 1, 5)); } public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityplayer, int i1, float f1, float f2, float f3) @@ -97,21 +92,6 @@ public class BlockMulti extends Block } return 0; } - - public boolean hasTileEntity(int metadata) - { - return metadata == 5; - } - - public TileEntity createTileEntity(World world, int metadata) - { - if(metadata == 5) - { - tileChunkloader = new TileEntityEndiumChunkloader(); - return tileChunkloader; - } - return null; - } public void randomDisplayTick(World world, int x, int y, int z, Random random) { @@ -171,11 +151,6 @@ public class BlockMulti extends Block world.updateAllLightTypes(x, y, z); } - public void onBlockHarvested(World par1World, int par2, int par3, int par4, int par5, EntityPlayer par6EntityPlayer) - { - ForgeChunkManager.releaseTicket(tileChunkloader.heldChunk); - } - public String getTextureFile() { return "/textures/terrain.png"; diff --git a/src/common/net/uberkat/obsidian/common/BlockOre.java b/src/common/net/uberkat/obsidian/common/BlockOre.java index 04657db7d..e17b3ae24 100644 --- a/src/common/net/uberkat/obsidian/common/BlockOre.java +++ b/src/common/net/uberkat/obsidian/common/BlockOre.java @@ -9,7 +9,6 @@ import net.minecraft.src.*; /** * Block class for handling multiple ore block IDs. * 0: Platinum Ore - * 1: Endium Ore * @author AidanBrady * */ @@ -35,8 +34,6 @@ public class BlockOre extends Block { case 0: return 3; - case 1: - return 28; } return 0; } @@ -50,7 +47,6 @@ public class BlockOre extends Block public void getSubBlocks(int i, CreativeTabs creativetabs, List list) { list.add(new ItemStack(i, 1, 0)); - list.add(new ItemStack(i, 1, 1)); } public String getTextureFile() diff --git a/src/common/net/uberkat/obsidian/common/CommonProxy.java b/src/common/net/uberkat/obsidian/common/CommonProxy.java index 7e6fe04e4..227e9998c 100644 --- a/src/common/net/uberkat/obsidian/common/CommonProxy.java +++ b/src/common/net/uberkat/obsidian/common/CommonProxy.java @@ -11,12 +11,6 @@ import net.minecraft.src.Container; import net.minecraft.src.EntityPlayer; import net.minecraft.src.World; import net.minecraftforge.common.Configuration; -import net.uberkat.obsidian.hawk.client.GuiTeleporter; -import net.uberkat.obsidian.hawk.client.GuiWasher; -import net.uberkat.obsidian.hawk.common.ContainerTeleporter; -import net.uberkat.obsidian.hawk.common.ContainerWasher; -import net.uberkat.obsidian.hawk.common.TileEntityTeleporter; -import net.uberkat.obsidian.hawk.common.TileEntityWasher; import cpw.mods.fml.common.network.IGuiHandler; /** @@ -127,11 +121,6 @@ public class CommonProxy case 9: TileEntityGenerator tileentity6 = (TileEntityGenerator)world.getBlockTileEntity(x, y, z); return new ContainerGenerator(player.inventory, tileentity6); - case 10: - TileEntityWasher tileentity7 = (TileEntityWasher)world.getBlockTileEntity(x, y, z); - return new ContainerWasher(player.inventory, tileentity7); - case 11: - return new ContainerTeleporter(player.inventory); } return null; } diff --git a/src/common/net/uberkat/obsidian/common/ItemBlockBase.java b/src/common/net/uberkat/obsidian/common/ItemBlockBase.java deleted file mode 100644 index cc91b10a1..000000000 --- a/src/common/net/uberkat/obsidian/common/ItemBlockBase.java +++ /dev/null @@ -1,46 +0,0 @@ -package net.uberkat.obsidian.common; - -import net.minecraft.src.*; - -public class ItemBlockBase extends ItemBlock -{ - public ItemBlockBase(int i, Block block) - { - super(i); - setMaxDamage(0); - setHasSubtypes(true); - } - - @Override - public String getItemNameIS(ItemStack itemstack) - { - String name = ""; - switch(itemstack.getItemDamage()) - { - case 0: - name = "baseObsidian"; - break; - case 1: - name = "baseRedstone"; - break; - case 2: - name = "basePlatinum"; - break; - case 3: - name = "basePlatinumOre"; - break; - case 4: - name = "baseCoal"; - break; - case 5: - name = "baseGlowstone"; - break; - } - return name; - } - - public int getMetadata(int i) - { - return i; - } -} diff --git a/src/common/net/uberkat/obsidian/common/ItemBlockMachine.java b/src/common/net/uberkat/obsidian/common/ItemBlockMachine.java index a67debd0e..3bbf0d51b 100644 --- a/src/common/net/uberkat/obsidian/common/ItemBlockMachine.java +++ b/src/common/net/uberkat/obsidian/common/ItemBlockMachine.java @@ -11,8 +11,6 @@ import net.minecraft.src.ItemStack; * 2: Combiner * 3: Crusher * 4: Theoretical Elementizer - * 5: Washer - * 6: Teleporter * @author AidanBrady * */ @@ -57,12 +55,6 @@ public class ItemBlockMachine extends ItemBlock case 4: name = "TheoreticalElementizer"; break; - case 5: - name = "Washer"; - break; - case 6: - name = "Teleporter"; - break; default: name = "Unknown"; break; diff --git a/src/common/net/uberkat/obsidian/common/ItemBlockMulti.java b/src/common/net/uberkat/obsidian/common/ItemBlockMulti.java index 51622af47..5114331f6 100644 --- a/src/common/net/uberkat/obsidian/common/ItemBlockMulti.java +++ b/src/common/net/uberkat/obsidian/common/ItemBlockMulti.java @@ -9,7 +9,6 @@ import net.minecraft.src.*; * 2: Refined Obsidian * 3: Coal Block * 4: Refined Glowstone - * 5: Endium Chunkloader * @author AidanBrady * */ @@ -34,15 +33,6 @@ public class ItemBlockMulti extends ItemBlock return metaBlock.getBlockTextureFromSideAndMetadata(2, i); } - public EnumRarity getRarity(ItemStack item) - { - if(item.getItemDamage() == 5) - { - return EnumRarity.rare; - } - return EnumRarity.common; - } - public String getItemNameIS(ItemStack itemstack) { String name = ""; @@ -63,9 +53,6 @@ public class ItemBlockMulti extends ItemBlock case 4: name = "RefinedGlowstone"; break; - case 5: - name = "EndiumChunkloader"; - break; default: name = "Unknown"; break; diff --git a/src/common/net/uberkat/obsidian/common/ItemBlockOre.java b/src/common/net/uberkat/obsidian/common/ItemBlockOre.java index 1a9be0606..91ee9313d 100644 --- a/src/common/net/uberkat/obsidian/common/ItemBlockOre.java +++ b/src/common/net/uberkat/obsidian/common/ItemBlockOre.java @@ -5,7 +5,6 @@ import net.minecraft.src.*; /** * Item class for handling multiple ore block IDs. * 0: Platinum Ore - * 1: Endium Ore * @author AidanBrady * */ @@ -38,9 +37,6 @@ public class ItemBlockOre extends ItemBlock case 0: name = "PlatinumOre"; break; - case 1: - name = "EndiumOre"; - break; default: name = "Unknown"; break; diff --git a/src/common/net/uberkat/obsidian/common/ItemDust.java b/src/common/net/uberkat/obsidian/common/ItemDust.java index 3cc1abd04..bf67ae603 100644 --- a/src/common/net/uberkat/obsidian/common/ItemDust.java +++ b/src/common/net/uberkat/obsidian/common/ItemDust.java @@ -9,8 +9,7 @@ import net.minecraft.src.*; public class ItemDust extends ItemObsidian { public static String[] en_USNames = {"Iron", "Gold", "Platinum", - "Obsidian", "Diamond", "Glass", - "Emerald", "Star", "Endium"}; + "Obsidian"}; public ItemDust(int id) { @@ -27,18 +26,13 @@ public class ItemDust extends ItemObsidian case 1: return 250; case 2: return 242; case 3: return 241; - case 4: return 249; - case 5: return 251; - case 6: return 252; - case 7: return 253; - case 8: return 254; default: return 0; } } public void getSubItems(int id, CreativeTabs tabs, List itemList) { - for (int counter = 0; counter <= 8; ++counter) + for (int counter = 0; counter <= 3; ++counter) { itemList.add(new ItemStack(this, 1, counter)); } @@ -46,6 +40,6 @@ public class ItemDust extends ItemObsidian public String getItemNameIS(ItemStack item) { - return en_USNames[item.getItemDamage()].toLowerCase() + "Dust"; + return "item." + en_USNames[item.getItemDamage()].toLowerCase() + "Dust"; } } diff --git a/src/common/net/uberkat/obsidian/common/ItemIngot.java b/src/common/net/uberkat/obsidian/common/ItemIngot.java index 2201681ec..b70fefc33 100644 --- a/src/common/net/uberkat/obsidian/common/ItemIngot.java +++ b/src/common/net/uberkat/obsidian/common/ItemIngot.java @@ -9,7 +9,7 @@ import net.minecraft.src.*; public class ItemIngot extends ItemObsidian { public static String[] en_USNames = {"Obsidian", "Platinum", "Redstone", - "Glowstone", "Endium"}; + "Glowstone"}; public ItemIngot(int id) { @@ -26,14 +26,13 @@ public class ItemIngot extends ItemObsidian case 1: return 162; case 2: return 163; case 3: return 164; - case 4: return 174; default: return 0; } } public void getSubItems(int id, CreativeTabs tabs, List itemList) { - for (int counter = 0; counter <= 4; ++counter) + for (int counter = 0; counter <= 3; ++counter) { itemList.add(new ItemStack(this, 1, counter)); } @@ -41,6 +40,6 @@ public class ItemIngot extends ItemObsidian public String getItemNameIS(ItemStack item) { - return en_USNames[item.getItemDamage()].toLowerCase() + "Ingot"; + return "item." + en_USNames[item.getItemDamage()].toLowerCase() + "Ingot"; } } diff --git a/src/common/net/uberkat/obsidian/common/ObsidianIngots.java b/src/common/net/uberkat/obsidian/common/ObsidianIngots.java index 9e749c163..dd7e0f143 100644 --- a/src/common/net/uberkat/obsidian/common/ObsidianIngots.java +++ b/src/common/net/uberkat/obsidian/common/ObsidianIngots.java @@ -15,11 +15,10 @@ import java.util.Random; import java.util.logging.Logger; import net.minecraftforge.common.*; +import net.minecraftforge.event.ForgeSubscribe; +import net.minecraftforge.oredict.OreDictionary; import net.minecraft.src.*; import net.uberkat.obsidian.client.SoundHandler; -import net.uberkat.obsidian.hawk.common.TileEntityEndiumChunkloader; -import net.uberkat.obsidian.hawk.common.TileEntityTeleporter; -import net.uberkat.obsidian.hawk.common.TileEntityWasher; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.*; import cpw.mods.fml.common.Mod.Init; @@ -42,7 +41,7 @@ import cpw.mods.fml.common.registry.TickRegistry; * @author AidanBrady * */ -@Mod(modid = "ObsidianIngots", name = "Obsidian Ingots", version = "4.3") +@Mod(modid = "ObsidianIngots", name = "Obsidian Ingots", version = "5.0.0") @NetworkMod(channels = { "ObsidianIngots" }, clientSideRequired = true, serverSideRequired = false, packetHandler = PacketHandler.class) public class ObsidianIngots { @@ -64,7 +63,7 @@ public class ObsidianIngots public static Configuration configuration; /** Obsidian Ingots version number */ - public static Version versionNumber = new Version(4, 3, 0); + public static Version versionNumber = new Version(5, 0, 0); /** Obsidian Ingots creative tab */ public static CreativeTabOI tabOBSIDIAN = new CreativeTabOI(); @@ -214,6 +213,9 @@ public class ObsidianIngots //MultiID Items public static Item Dust; + public static ItemStack IronDust; + public static ItemStack GoldDust; + public static ItemStack ObsidianDust; public static Item Ingot; //Boolean Values @@ -659,7 +661,6 @@ public class ObsidianIngots LanguageRegistry.instance().addStringLocalization("tile.MultiBlock.RefinedObsidian.name", "Refined Obsidian"); LanguageRegistry.instance().addStringLocalization("tile.MultiBlock.CoalBlock.name", "Coal Block"); LanguageRegistry.instance().addStringLocalization("tile.MultiBlock.RefinedGlowstone.name", "Refined Glowstone Block"); - LanguageRegistry.instance().addStringLocalization("tile.MultiBlock.EndiumChunkloader.name", "Endium Chunkloader"); //Localization for MachineBlock LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.EnrichmentChamber.name", "Enrichment Chamber"); @@ -667,12 +668,9 @@ public class ObsidianIngots LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.Combiner.name", "Combiner"); LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.Crusher.name", "Crusher"); LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.TheoreticalElementizer.name", "Theoretical Elementizer"); - LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.Washer.name", "Washer"); - LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.Teleporter.name", "Teleporter"); //Localization for OreBlock LanguageRegistry.instance().addStringLocalization("tile.OreBlock.PlatinumOre.name", "Platinum Ore"); - LanguageRegistry.instance().addStringLocalization("tile.OreBlock.EndiumOre.name", "Endium Ore"); //Localization for PowerUnit LanguageRegistry.instance().addStringLocalization("tile.PowerUnit.PowerUnit.name", "Power Unit"); @@ -686,18 +684,12 @@ public class ObsidianIngots LanguageRegistry.instance().addStringLocalization("item.goldDust.name", "Gold Dust"); LanguageRegistry.instance().addStringLocalization("item.platinumDust.name", "Platinum Dust"); LanguageRegistry.instance().addStringLocalization("item.obsidianDust.name", "Obsidian Dust"); - LanguageRegistry.instance().addStringLocalization("item.diamondDust.name", "Diamond Dust"); - LanguageRegistry.instance().addStringLocalization("item.glassDust.name", "Glass Dust"); - LanguageRegistry.instance().addStringLocalization("item.emeraldDust.name", "Emerald Dust"); - LanguageRegistry.instance().addStringLocalization("item.starDust.name", "Star Dust"); - LanguageRegistry.instance().addStringLocalization("item.endiumDust.name", "Endium Dust"); //Localization for Ingot LanguageRegistry.instance().addStringLocalization("item.obsidianIngot.name", "Obsidian Ingot"); LanguageRegistry.instance().addStringLocalization("item.platinumIngot.name", "Platinum Ingot"); LanguageRegistry.instance().addStringLocalization("item.redstoneIngot.name", "Redstone Ingot"); LanguageRegistry.instance().addStringLocalization("item.glowstoneIngot.name", "Glowstone Ingot"); - LanguageRegistry.instance().addStringLocalization("item.endiumIngot.name", "Endium Ingot"); } /** @@ -922,20 +914,38 @@ public class ObsidianIngots { Ic2Recipes.addMaceratorRecipe(new ItemStack(Block.obsidian), new ItemStack(Dust, 1, 3)); } + + if(hooks.IC2Loaded) + { + IronDust = hooks.IC2IronDust; + GoldDust = hooks.IC2GoldDust; + } + else { + IronDust = new ItemStack(Dust, 1, 0); + GoldDust = new ItemStack(Dust, 1, 1); + } + + if(hooks.RailcraftLoaded) + { + ObsidianDust = hooks.RailcraftObsidianDust; + } + else { + ObsidianDust = new ItemStack(Dust, 1, 3); + } - RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.obsidian), new ItemStack(Dust, 1, 3)); - RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.oreIron), new ItemStack(Dust, 2, 0)); - RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.oreGold), new ItemStack(Dust, 2, 1)); - RecipeHandler.addPlatinumCompressorRecipe(new ItemStack(Dust, 1, 3), new ItemStack(Ingot, 1, 0)); - RecipeHandler.addCombinerRecipe(new ItemStack(Dust, 1, 3), new ItemStack(Block.obsidian)); - RecipeHandler.addCombinerRecipe(new ItemStack(Dust, 2, 0), new ItemStack(Block.oreIron)); - RecipeHandler.addCombinerRecipe(new ItemStack(Dust, 2, 1), new ItemStack(Block.oreGold)); - RecipeHandler.addCrusherRecipe(new ItemStack(Ingot, 1, 0), new ItemStack(Dust, 1, 3)); - RecipeHandler.addCrusherRecipe(new ItemStack(Item.ingotIron), new ItemStack(Dust, 1, 0)); - RecipeHandler.addCrusherRecipe(new ItemStack(Item.ingotGold), new ItemStack(Dust, 1, 1)); + RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.obsidian), ObsidianDust); + RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.oreIron), new ItemStack(IronDust.itemID, 2, 0)); + RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.oreGold), new ItemStack(GoldDust.itemID, 2, 1)); + RecipeHandler.addPlatinumCompressorRecipe(ObsidianDust, new ItemStack(Ingot, 1, 0)); + RecipeHandler.addCombinerRecipe(ObsidianDust, new ItemStack(Block.obsidian)); + RecipeHandler.addCombinerRecipe(new ItemStack(IronDust.itemID, 2, 0), new ItemStack(Block.oreIron)); + RecipeHandler.addCombinerRecipe(new ItemStack(GoldDust.itemID, 2, 1), new ItemStack(Block.oreGold)); + RecipeHandler.addCrusherRecipe(new ItemStack(Ingot, 1, 0), new ItemStack(ObsidianDust.itemID, 1, 3)); + RecipeHandler.addCrusherRecipe(new ItemStack(Item.ingotIron), new ItemStack(IronDust.itemID, 1, 0)); + RecipeHandler.addCrusherRecipe(new ItemStack(Item.ingotGold), new ItemStack(GoldDust.itemID, 1, 1)); GameRegistry.addShapelessRecipe(new ItemStack(EnrichedAlloy, 1), new Object[] { - Item.redstone, Item.lightStoneDust, new ItemStack(Dust, 1, 0), new ItemStack(Dust, 1, 1), new ItemStack(Dust, 1, 3), new ItemStack(Dust, 1, 2) + Item.redstone, Item.lightStoneDust, IronDust, GoldDust, ObsidianDust, new ItemStack(Dust, 1, 2) }); } @@ -961,9 +971,6 @@ public class ObsidianIngots GameRegistry.registerTileEntity(TileEntityPowerUnit.class, "PowerUnit"); GameRegistry.registerTileEntity(TileEntityAdvancedPowerUnit.class, "AdvancedPowerUnit"); GameRegistry.registerTileEntity(TileEntityHeatGenerator.class, "HeatGenerator"); - GameRegistry.registerTileEntity(TileEntityWasher.class, "Washer"); - GameRegistry.registerTileEntity(TileEntityTeleporter.class, "TeleporterSender"); - GameRegistry.registerTileEntity(TileEntityEndiumChunkloader.class, "EndiumChunkloader"); } /** diff --git a/src/common/net/uberkat/obsidian/common/PacketHandler.java b/src/common/net/uberkat/obsidian/common/PacketHandler.java index 924039c82..65c8cb666 100644 --- a/src/common/net/uberkat/obsidian/common/PacketHandler.java +++ b/src/common/net/uberkat/obsidian/common/PacketHandler.java @@ -18,7 +18,6 @@ import net.minecraft.src.Packet; import net.minecraft.src.Packet250CustomPayload; import net.minecraft.src.TileEntity; import net.minecraft.src.World; -import net.uberkat.obsidian.hawk.common.TileEntityWasher; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.network.IPacketHandler; @@ -385,84 +384,6 @@ public class PacketHandler implements IPacketHandler PacketDispatcher.sendPacketToAllAround(sender.xCoord, sender.yCoord, sender.zCoord, distance, sender.worldObj.provider.dimensionId, packet); } - /** - * Send a damagable machine update packet from server to client. This will send the data int '4,' as well as - * the machine's x, y, and z coordinates, along with it's facing, active state, operating ticks, energy stored, max energy, - * HP, and water units. - * @param sender - tile entity who is sending the packet - */ - public static void sendWasherPacket(TileEntityWasher sender) - { - ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - DataOutputStream output = new DataOutputStream(bytes); - - try { - output.writeInt(EnumPacketType.TILE_ENTITY.id); - output.writeInt(sender.xCoord); - output.writeInt(sender.yCoord); - output.writeInt(sender.zCoord); - output.writeInt(sender.facing); - output.writeByte(sender.isActive ? 1 : 0); - output.writeInt(sender.operatingTicks); - output.writeInt(sender.energyStored); - output.writeInt(sender.currentMaxEnergy); - output.writeInt(sender.currentTicksRequired); - output.writeFloat(sender.waterUnits); - } catch (IOException e) - { - System.err.println("[ObsidianIngots] Error while writing tile entity packet."); - e.printStackTrace(); - } - - Packet250CustomPayload packet = new Packet250CustomPayload(); - packet.channel = "ObsidianIngots"; - packet.data = bytes.toByteArray(); - packet.length = packet.data.length; - - if(FMLCommonHandler.instance().getMinecraftServerInstance() != null) - { - FMLCommonHandler.instance().getMinecraftServerInstance().getConfigurationManager().sendPacketToAllPlayers(packet); - } - } - - /** - * Send a damagable machine update packet from server to client with a defined range. This will send the data int '4,' as well as - * the machine's x, y, and z coordinates, along with it's facing, active state, operating ticks, energy stored, max energy, - * HP, and water units. - * @param sender - tile entity who is sending the packet - * @param distance - radius to send packet in - */ - public static void sendWasherPacketWithRange(TileEntityWasher sender, double distance) - { - ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - DataOutputStream output = new DataOutputStream(bytes); - - try { - output.writeInt(EnumPacketType.TILE_ENTITY.id); - output.writeInt(sender.xCoord); - output.writeInt(sender.yCoord); - output.writeInt(sender.zCoord); - output.writeInt(sender.facing); - output.writeByte(sender.isActive ? 1 : 0); - output.writeInt(sender.operatingTicks); - output.writeInt(sender.energyStored); - output.writeInt(sender.currentMaxEnergy); - output.writeInt(sender.currentTicksRequired); - output.writeFloat(sender.waterUnits); - } catch (IOException e) - { - System.err.println("[ObsidianIngots] Error while writing tile entity packet."); - e.printStackTrace(); - } - - Packet250CustomPayload packet = new Packet250CustomPayload(); - packet.channel = "ObsidianIngots"; - packet.data = bytes.toByteArray(); - packet.length = packet.data.length; - - PacketDispatcher.sendPacketToAllAround(sender.xCoord, sender.yCoord, sender.zCoord, distance, sender.worldObj.provider.dimensionId, packet); - } - /** * Sends the server the defined packet data int. * @param type - packet type diff --git a/src/common/net/uberkat/obsidian/common/RecipeHandler.java b/src/common/net/uberkat/obsidian/common/RecipeHandler.java index 8e1527699..97d52bf39 100644 --- a/src/common/net/uberkat/obsidian/common/RecipeHandler.java +++ b/src/common/net/uberkat/obsidian/common/RecipeHandler.java @@ -2,7 +2,6 @@ package net.uberkat.obsidian.common; import java.util.*; import net.minecraft.src.*; -import net.uberkat.obsidian.hawk.common.TileEntityWasher; /** * Class used to handle machine recipes. This is used for both adding recipes and checking outputs. diff --git a/src/common/net/uberkat/obsidian/common/TileEntityBasicMachine.java b/src/common/net/uberkat/obsidian/common/TileEntityBasicMachine.java index bfe03fd6f..b03192f10 100644 --- a/src/common/net/uberkat/obsidian/common/TileEntityBasicMachine.java +++ b/src/common/net/uberkat/obsidian/common/TileEntityBasicMachine.java @@ -54,6 +54,9 @@ public abstract class TileEntityBasicMachine extends TileEntityElectricBlock imp /** The previous active state for this block. */ public boolean prevActive; + /** Whether or not this machine has been registered with the MachineryManager. */ + public boolean registered; + /** The GUI texture path for this machine. */ public String guiTexturePath; @@ -86,6 +89,12 @@ public abstract class TileEntityBasicMachine extends TileEntityElectricBlock imp public void onUpdate() { + if(!registered && worldObj != null && !worldObj.isRemote) + { + ObsidianIngots.manager.register(this); + registered = true; + } + if(audio == null && worldObj != null && worldObj.isRemote) { if(FMLClientHandler.instance().getClient().sndManager.sndSystem != null) @@ -137,6 +146,12 @@ public abstract class TileEntityBasicMachine extends TileEntityElectricBlock imp public void invalidate() { super.invalidate(); + if(!worldObj.isRemote && registered) + { + ObsidianIngots.manager.remove(this); + registered = false; + } + if(worldObj.isRemote && audio != null) { audio.remove(); diff --git a/src/common/net/uberkat/obsidian/hawk/common/ContainerTeleporter.java b/src/common/net/uberkat/obsidian/hawk/common/ContainerTeleporter.java deleted file mode 100644 index 730afc2d2..000000000 --- a/src/common/net/uberkat/obsidian/hawk/common/ContainerTeleporter.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.uberkat.obsidian.hawk.common; - -import net.minecraft.src.Container; -import net.minecraft.src.EntityPlayer; -import net.minecraft.src.InventoryPlayer; -import net.minecraft.src.Slot; - -public class ContainerTeleporter extends Container -{ - public ContainerTeleporter(InventoryPlayer playerInv) - { - for (int counter = 0; counter < 3; ++counter) - { - for (int var4 = 0; var4 < 9; ++var4) - { - this.addSlotToContainer(new Slot(playerInv, var4 + counter * 9 + 9, 8 + var4 * 18, 84 + counter * 18)); - } - } - - for (int counter = 0; counter < 9; ++counter) - { - this.addSlotToContainer(new Slot(playerInv, counter, 8 + counter * 18, 142)); - } - - } - - @Override - public boolean canInteractWith(EntityPlayer player) - { - return true; - } -} diff --git a/src/common/net/uberkat/obsidian/hawk/common/ContainerWasher.java b/src/common/net/uberkat/obsidian/hawk/common/ContainerWasher.java deleted file mode 100644 index eada42739..000000000 --- a/src/common/net/uberkat/obsidian/hawk/common/ContainerWasher.java +++ /dev/null @@ -1,122 +0,0 @@ -package net.uberkat.obsidian.hawk.common; - -import hawk.api.ProcessingRecipes; -import net.minecraft.src.Container; -import net.minecraft.src.EntityPlayer; -import net.minecraft.src.InventoryPlayer; -import net.minecraft.src.ItemStack; -import net.minecraft.src.Slot; -import net.minecraft.src.SlotFurnace; -import net.minecraft.src.TileEntity; -import universalelectricity.prefab.SlotElectricItem; -import universalelectricity.implement.IItemElectric; - -public class ContainerWasher extends Container -{ - private TileEntityWasher tileEntity; - - public ContainerWasher(InventoryPlayer playerInventory, TileEntityWasher tentity) - { - tileEntity = tentity; - addSlotToContainer(new SlotElectricItem(tileEntity, 0, 36, 47));//Electric item - addSlotToContainer(new Slot(tileEntity, 1, 58, 52));//Water input - addSlotToContainer(new Slot(tileEntity, 2, 36, 15));//Actual input - addSlotToContainer(new SlotFurnace(playerInventory.player, tileEntity, 3, 107, 32)); - addSlotToContainer(new SlotFurnace(playerInventory.player, tileEntity, 4, 125, 32)); - addSlotToContainer(new SlotFurnace(playerInventory.player, tileEntity, 5, 143, 32)); - - for (int counter = 0; counter < 3; ++counter) - { - for (int var4 = 0; var4 < 9; ++var4) - { - addSlotToContainer(new Slot(playerInventory, var4 + counter * 9 + 9, 8 + var4 * 18, 84 + counter * 18)); - } - } - - for (int counter = 0; counter < 9; ++counter) - { - addSlotToContainer(new Slot(playerInventory, counter, 8 + counter * 18, 142)); - } - - } - - @Override - public boolean canInteractWith(EntityPlayer var1) - { - return true; - } - - @Override - public ItemStack func_82846_b(EntityPlayer player, int par1) - { - ItemStack var2 = null; - Slot var3 = (Slot)inventorySlots.get(par1); - - if (var3 != null && var3.getHasStack()) - { - ItemStack var4 = var3.getStack(); - var2 = var4.copy(); - - if (par1 == 2) - { - if (!mergeItemStack(var4, 3, 39, true)) - { - return null; - } - - var3.onSlotChange(var4, var2); - } - else if (par1 != 1 && par1 != 0) - { - if (var4.getItem() instanceof IItemElectric) - { - if (!mergeItemStack(var4, 0, 1, false)) - { - return null; - } - } - else if (ProcessingRecipes.getResult(var4, ProcessingRecipes.EnumProcessing.WASHING) != null) - { - if (!mergeItemStack(var4, 1, 2, false)) - { - return null; - } - } - else if (par1 >= 3 && par1 < 30) - { - if (!mergeItemStack(var4, 30, 39, false)) - { - return null; - } - } - else if (par1 >= 30 && par1 < 39 && !mergeItemStack(var4, 3, 30, false)) - { - return null; - } - } - else if (!mergeItemStack(var4, 3, 39, false)) - { - return null; - } - - if (var4.stackSize == 0) - { - var3.putStack((ItemStack)null); - } - else - { - var3.onSlotChanged(); - } - - if (var4.stackSize == var2.stackSize) - { - return null; - } - - var3.func_82870_a(player, var4); - } - - return var2; - } - -} diff --git a/src/common/net/uberkat/obsidian/hawk/common/HawkCore.java b/src/common/net/uberkat/obsidian/hawk/common/HawkCore.java deleted file mode 100644 index afb1b9e61..000000000 --- a/src/common/net/uberkat/obsidian/hawk/common/HawkCore.java +++ /dev/null @@ -1,134 +0,0 @@ - -package net.uberkat.obsidian.hawk.common; - -import java.io.File; -import java.util.List; -import java.util.Random; -import net.minecraft.src.Achievement; -import net.minecraft.src.AchievementList; -import net.minecraft.src.ChunkProviderEnd; -import net.minecraft.src.ChunkProviderGenerate; -import net.minecraft.src.ChunkProviderHell; -import net.minecraft.src.EntityPlayer; -import net.minecraft.src.EntityVillager; -import net.minecraft.src.IChunkProvider; -import net.minecraft.src.IInventory; -import net.minecraft.src.Item; -import net.minecraft.src.ItemStack; -import net.minecraft.src.MerchantRecipe; -import net.minecraft.src.MerchantRecipeList; -import net.minecraft.src.NBTTagCompound; -import net.minecraft.src.World; -import net.minecraftforge.client.event.sound.SoundLoadEvent; -import net.minecraftforge.common.AchievementPage; -import net.minecraftforge.common.Configuration; -import net.minecraftforge.common.ForgeChunkManager.LoadingCallback; -import net.minecraftforge.common.ForgeChunkManager.Ticket; -import net.minecraftforge.event.ForgeSubscribe; -import net.uberkat.obsidian.common.ObsidianIngots; -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.ICraftingHandler; -import cpw.mods.fml.common.IWorldGenerator; -import cpw.mods.fml.common.Loader; -import cpw.mods.fml.common.registry.VillagerRegistry.IVillageTradeHandler; - -/** - * - * - * - * @author Elusivehawk - */ -public class HawkCore implements LoadingCallback, ICraftingHandler -{ - private static int chunkLimit; - - public static int partsID; - public static int endiumPlateID; - public static int rivetsID; - public static int rivetGunID; - public static int ingotsID; - - public static int ACHprospector; - public static int ACHtimeToCrush; - public static int ACHminerkiin; - public static int ACHwash; - - public static int washerTicks; - public static int maxChunksLoaded; - - public static boolean enableUpdateChecking; - public static boolean enableAutoDL; - public static boolean enableChunkloader; - - public static Configuration HMConfig = new Configuration(new File(Loader.instance().getConfigDir(), "HawksMachinery/HMConfig.cfg")); - - public static void loadConfig() - { - - HMConfig.load(); - - //NOTE ID #3964 saved for the Endium Chunkloader. - //endiumTeleporterID = HMConfig.getBlock("Endium Teleporter", 3965).getInt(3965); - - enableUpdateChecking = HMConfig.get(Configuration.CATEGORY_GENERAL, "Enable Update Checking", true).getBoolean(true); - enableAutoDL = HMConfig.get(Configuration.CATEGORY_GENERAL, "Enable Auto DL", true).getBoolean(true); - enableChunkloader = HMConfig.get(Configuration.CATEGORY_GENERAL, "Enable Chunkloader Block", true).getBoolean(true); - - if (enableChunkloader) - { - maxChunksLoaded = HMConfig.get("Max Chunks Loaded", Configuration.CATEGORY_GENERAL, 25).getInt(25); - - } - - partsID = HMConfig.get(Configuration.CATEGORY_ITEM, "Parts", 24152).getInt(24152); - endiumPlateID = HMConfig.get(Configuration.CATEGORY_ITEM, "Endium Plate", 24154).getInt(24154); - rivetsID = HMConfig.get(Configuration.CATEGORY_ITEM, "Rivets", 24155).getInt(24155); - rivetGunID = HMConfig.get(Configuration.CATEGORY_ITEM, "Rivet Gun", 24156).getInt(24156); - ingotsID = HMConfig.get(Configuration.CATEGORY_ITEM, "Ingots", 24157).getInt(24157); - - ACHprospector = HMConfig.get(Configuration.CATEGORY_GENERAL, "ACH Prospector", 1500).getInt(1500); - ACHtimeToCrush = HMConfig.get(Configuration.CATEGORY_GENERAL, "ACH Time To Crush", 1501).getInt(1501); - ACHminerkiin = HMConfig.get(Configuration.CATEGORY_GENERAL, "ACH Minerkiin", 1503).getInt(1503); - ACHwash = HMConfig.get(Configuration.CATEGORY_GENERAL, "ACH Wash", 1504).getInt(1504); - - if (FMLCommonHandler.instance().getSide().isServer()) - { - HMConfig.addCustomCategoryComment("advanced_settings", "Advanced server OP settings, don't be a moron with them."); - washerTicks = HMConfig.get("advanced_settings", "Washer Ticks", 100).getInt(100); - - } - - HMConfig.save(); - } - - @Override - public void ticketsLoaded(List tickets, World world) - { - for (Ticket ticket : tickets) - { - int xPos = ticket.getModData().getInteger("xCoord"); - int yPos = ticket.getModData().getInteger("yCoord"); - int zPos = ticket.getModData().getInteger("zCoord"); - - if (world.getBlockTileEntity(xPos, yPos, zPos) != null) - { - if (world.getBlockTileEntity(xPos, yPos, zPos) instanceof TileEntityEndiumChunkloader) - { - ((TileEntityEndiumChunkloader)world.getBlockTileEntity(xPos, yPos, zPos)).forceChunkLoading(ticket); - } - } - } - } - - public void onCrafting(EntityPlayer player, ItemStack item, IInventory craftMatrix) - { - if (item.equals(new ItemStack(ObsidianIngots.MachineBlock, 1, 5))) - { - item.setTagCompound(new NBTTagCompound()); - item.stackTagCompound.setInteger("MachineHP", 0); - } - } - - @Override - public void onSmelting(EntityPlayer player, ItemStack item) {} -} diff --git a/src/common/net/uberkat/obsidian/hawk/common/HawksMachinery.java b/src/common/net/uberkat/obsidian/hawk/common/HawksMachinery.java deleted file mode 100644 index 37121f3d8..000000000 --- a/src/common/net/uberkat/obsidian/hawk/common/HawksMachinery.java +++ /dev/null @@ -1,70 +0,0 @@ - -package net.uberkat.obsidian.hawk.common; - -import hawk.api.ProcessingRecipes; -import hawk.api.ProcessingRecipes.EnumProcessing; - -import java.io.File; -import java.util.List; -import obsidian.api.ItemRetriever; -import com.google.common.collect.ObjectArrays; -import universalelectricity.core.UniversalElectricity; -import universalelectricity.prefab.ItemElectric; -import universalelectricity.prefab.network.ConnectionHandler; -import universalelectricity.prefab.network.PacketManager; -import universalelectricity.prefab.ore.OreGenBase; -import universalelectricity.prefab.ore.OreGenerator; -import net.minecraft.src.Achievement; -import net.minecraft.src.AchievementList; -import net.minecraft.src.Block; -import net.minecraft.src.CraftingManager; -import net.minecraft.src.CreativeTabs; -import net.minecraft.src.Enchantment; -import net.minecraft.src.EntityPlayer; -import net.minecraft.src.EnumRarity; -import net.minecraft.src.EnumToolMaterial; -import net.minecraft.src.FurnaceRecipes; -import net.minecraft.src.IInventory; -import net.minecraft.src.Item; -import net.minecraft.src.ItemStack; -import net.minecraft.src.Material; -import net.minecraft.src.NBTTagCompound; -import net.minecraft.src.StepSound; -import net.minecraft.src.World; -import net.minecraftforge.common.AchievementPage; -import net.minecraftforge.common.Configuration; -import net.minecraftforge.common.DungeonHooks; -import net.minecraftforge.common.EnumHelper; -import net.minecraftforge.common.ForgeChunkManager; -import net.minecraftforge.common.ForgeChunkManager.Ticket; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.oredict.OreDictionary; -import net.minecraftforge.oredict.ShapedOreRecipe; -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.ICraftingHandler; -import cpw.mods.fml.common.Loader; -import cpw.mods.fml.common.Mod; -import cpw.mods.fml.common.Mod.Metadata; -import cpw.mods.fml.common.ModMetadata; -import cpw.mods.fml.common.Side; -import cpw.mods.fml.common.Mod.Init; -import cpw.mods.fml.common.Mod.Instance; -import cpw.mods.fml.common.Mod.PostInit; -import cpw.mods.fml.common.Mod.PreInit; -import cpw.mods.fml.common.SidedProxy; -import cpw.mods.fml.common.asm.SideOnly; -import cpw.mods.fml.common.event.FMLInitializationEvent; -import cpw.mods.fml.common.event.FMLPostInitializationEvent; -import cpw.mods.fml.common.event.FMLPreInitializationEvent; -import cpw.mods.fml.common.network.NetworkMod; -import cpw.mods.fml.common.network.NetworkRegistry; -import cpw.mods.fml.common.registry.GameRegistry; -import cpw.mods.fml.common.registry.VillagerRegistry; - -public class HawksMachinery -{ - public static ProcessingRecipes PROCESS_RECIPES; - public static EnumProcessing WASH = EnumProcessing.WASHING; - - public static HawkCore CORE = new HawkCore(); -} diff --git a/src/common/net/uberkat/obsidian/hawk/common/TileEntityDamagableMachine.java b/src/common/net/uberkat/obsidian/hawk/common/TileEntityDamagableMachine.java deleted file mode 100644 index 6c8e06760..000000000 --- a/src/common/net/uberkat/obsidian/hawk/common/TileEntityDamagableMachine.java +++ /dev/null @@ -1,52 +0,0 @@ -package net.uberkat.obsidian.hawk.common; - -import hawk.api.ProcessingRecipes.EnumProcessing; - -import java.util.Random; -import com.google.common.io.ByteArrayDataInput; -import universalelectricity.electricity.ElectricInfo; -import universalelectricity.implement.IRotatable; -import universalelectricity.prefab.TileEntityElectricityReceiver; -import universalelectricity.prefab.network.IPacketReceiver; -import universalelectricity.prefab.network.PacketManager; -import universalelectricity.core.Vector3; -import net.minecraft.src.Entity; -import net.minecraft.src.EntityPlayer; -import net.minecraft.src.ItemStack; -import net.minecraft.src.NBTTagCompound; -import net.minecraft.src.NBTTagList; -import net.minecraft.src.INetworkManager; -import net.minecraft.src.Packet; -import net.minecraft.src.Packet250CustomPayload; -import net.minecraft.src.TileEntity; -import net.minecraftforge.common.ForgeDirection; -import net.minecraftforge.common.ISidedInventory; -import net.uberkat.obsidian.common.TileEntityBasicMachine; - -/** - * - * Extend this if you'd like to make a machine slightly faster. - * - * @author Elusivehawk - */ -public abstract class TileEntityDamagableMachine extends TileEntityBasicMachine -{ - public EnumProcessing machineEnum; - - protected boolean isProcessor; - - public TileEntityDamagableMachine(String soundPath, String name, String path, int perTick, int ticksRequired, int maxEnergy) - { - super(soundPath, name, path, perTick, ticksRequired, maxEnergy); - } - - protected void explodeMachine(float strength) - { - worldObj.createExplosion((Entity)null, xCoord, yCoord, zCoord, strength, true); - } - - public void handlePacketData(INetworkManager network, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream) - { - - } -} diff --git a/src/common/net/uberkat/obsidian/hawk/common/TileEntityEndiumChunkloader.java b/src/common/net/uberkat/obsidian/hawk/common/TileEntityEndiumChunkloader.java deleted file mode 100644 index 776d74813..000000000 --- a/src/common/net/uberkat/obsidian/hawk/common/TileEntityEndiumChunkloader.java +++ /dev/null @@ -1,50 +0,0 @@ -package net.uberkat.obsidian.hawk.common; - -import net.minecraft.src.ChunkCoordIntPair; -import net.minecraft.src.EntityPlayer; -import net.minecraft.src.TileEntity; -import net.minecraftforge.common.ForgeChunkManager; -import net.minecraftforge.common.ForgeChunkManager.Ticket; -import net.minecraftforge.common.ForgeChunkManager.Type; -import net.uberkat.obsidian.common.ObsidianIngots; - -public class TileEntityEndiumChunkloader extends TileEntity -{ - public Ticket heldChunk; - - public void invalidate() - { - forceChunkLoading(null); - } - - public void validate() - { - forceChunkLoading(null); - } - - public void forceChunkLoading(Ticket ticket) - { - if (ticket != null) - { - heldChunk = ticket; - ForgeChunkManager.forceChunk(heldChunk, new ChunkCoordIntPair(xCoord >> 4, zCoord >> 4)); - } - else - { - if (heldChunk == null) - { - Ticket newTicket = ForgeChunkManager.requestTicket(ObsidianIngots.instance, worldObj, Type.NORMAL); - newTicket.getModData().setInteger("xCoord", xCoord); - newTicket.getModData().setInteger("yCoord", yCoord); - newTicket.getModData().setInteger("zCoord", zCoord); - newTicket.setChunkListDepth(HawksMachinery.CORE.maxChunksLoaded); - heldChunk = newTicket; - } - else - { - ForgeChunkManager.releaseTicket(heldChunk); - heldChunk = null; - } - } - } -} diff --git a/src/common/net/uberkat/obsidian/hawk/common/TileEntityTeleporter.java b/src/common/net/uberkat/obsidian/hawk/common/TileEntityTeleporter.java deleted file mode 100644 index a15bd8b54..000000000 --- a/src/common/net/uberkat/obsidian/hawk/common/TileEntityTeleporter.java +++ /dev/null @@ -1,72 +0,0 @@ - -package net.uberkat.obsidian.hawk.common; - -import hawk.api.EndiumTeleporterCoords; -import hawk.api.TeleportationHelper; - -import java.util.List; - -import dan200.computer.api.IComputerAccess; -import net.minecraft.src.Entity; -import net.minecraftforge.common.ForgeDirection; - -public class TileEntityTeleporter extends TileEntityDamagableMachine -{ - public EndiumTeleporterCoords coords; - - public TileEntityTeleporter() - { - super("hawk/Teleporter.ogg", "Teleporter", "/gui/hawk/Teleporter.png", 200, 0, 100000); - } - - public boolean isReadyToTeleport() - { - return energyStored == MAX_ENERGY && worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord) && coords != null; - } - - public void teleportEntity(Entity entity) - { - TeleportationHelper.instance().teleportEntity(entity, coords); - energyStored = 0; - } - - public boolean canReceiveFromSide(ForgeDirection side) - { - return side.ordinal() == 0; - } - - public boolean canOperate() - { - return false; - } - - public void operate() - { - - } - - public List getRecipes() - { - return null; - } - - public String[] getMethodNames() - { - return null; - } - - public Object[] callMethod(IComputerAccess computer, int method, Object[] arguments) throws Exception - { - return null; - } - - public void sendPacket() - { - //Nothing to see here - } - - public void sendPacketWithRange() - { - //Nothing to see here either. - } -} diff --git a/src/common/net/uberkat/obsidian/hawk/common/TileEntityWasher.java b/src/common/net/uberkat/obsidian/hawk/common/TileEntityWasher.java deleted file mode 100644 index e853727ee..000000000 --- a/src/common/net/uberkat/obsidian/hawk/common/TileEntityWasher.java +++ /dev/null @@ -1,266 +0,0 @@ -package net.uberkat.obsidian.hawk.common; - -import hawk.api.ProcessingRecipes; -import hawk.api.ProcessingRecipes.EnumProcessing; - -import java.util.List; -import java.util.Random; -import java.util.Vector; - -import obsidian.api.IEnergizedItem; - -import buildcraft.api.core.Orientations; -import com.google.common.io.ByteArrayDataInput; -import cpw.mods.fml.common.FMLCommonHandler; -import dan200.computer.api.IComputerAccess; -import net.minecraft.src.EntityItem; -import net.minecraft.src.EntityPlayer; -import net.minecraft.src.IInventory; -import net.minecraft.src.Block; -import net.minecraft.src.Item; -import net.minecraft.src.ItemStack; -import net.minecraft.src.NBTTagCompound; -import net.minecraft.src.NBTTagList; -import net.minecraft.src.INetworkManager; -import net.minecraft.src.Packet; -import net.minecraft.src.Packet250CustomPayload; -import net.minecraft.src.TileEntity; -import net.minecraftforge.common.ForgeDirection; -import net.minecraftforge.common.ISidedInventory; -import net.uberkat.obsidian.common.PacketHandler; -import net.uberkat.obsidian.common.TileEntityBasicMachine; -import universalelectricity.electricity.ElectricInfo; -import universalelectricity.prefab.TileEntityElectricityReceiver; -import universalelectricity.implement.IItemElectric; -import universalelectricity.implement.IRedstoneReceptor; -import universalelectricity.implement.IRotatable; -import universalelectricity.prefab.network.IPacketReceiver; -import universalelectricity.prefab.network.PacketManager; - -public class TileEntityWasher extends TileEntityDamagableMachine -{ - public static Vector recipes; - - public float waterUnits = 0; - - public float WATER_LIMIT = 25.0F; - - public TileEntityWasher() - { - super("hawk/Washer.ogg", "Washer", "/gui/hawk/GuiWasher.png", 10, 200, 1200); - inventory = new ItemStack[6]; - machineEnum = EnumProcessing.WASHING; - isProcessor = true; - } - - public void onUpdate() - { - super.onUpdate(); - - if (inventory[0] != null) - { - if(energyStored < currentMaxEnergy) - { - if(inventory[0].getItem() instanceof IEnergizedItem) - { - int received = 0; - int energyNeeded = currentMaxEnergy - energyStored; - IEnergizedItem item = (IEnergizedItem)inventory[0].getItem(); - if(item.getRate() <= energyNeeded) - { - received = item.discharge(inventory[0], item.getRate()); - } - else if(item.getRate() > energyNeeded) - { - received = item.discharge(inventory[0], energyNeeded); - } - - setEnergy(energyStored + received); - } - } - } - - if (inventory[1] != null) - { - if (inventory[1].getItem() == Item.bucketWater && waterUnits + 1.0F <= WATER_LIMIT) - { - waterUnits += 1.0; - inventory[1] = new ItemStack(Item.bucketEmpty, 1); - } - - } - - if (canOperate()) - { - if (inventory[2] != null && operatingTicks == 0) - { - operatingTicks = TICKS_REQUIRED; - } - - if (canOperate() && operatingTicks > 0) - { - --operatingTicks; - waterUnits -= 0.01F; - - if (operatingTicks == 1) - { - operate(); - operatingTicks = 0; - } - - energyStored = energyStored - ENERGY_PER_TICK; - } - else - { - operatingTicks = 0; - } - } - - if (waterUnits > WATER_LIMIT) - { - waterUnits = WATER_LIMIT; - } - - if (worldObj.getBlockId(xCoord, yCoord + 1, zCoord) == Block.waterStill.blockID && waterUnits + 1.0F <= WATER_LIMIT) - { - waterUnits += 1.0F; - worldObj.setBlockWithNotify(xCoord, yCoord + 1, zCoord, 0); - } - - if (!canOperate() && operatingTicks != 0) - { - operatingTicks = 0; - } - } - - public boolean canOperate() - { - if (inventory[2] == null) - { - return false; - } - else - { - if (energyStored >= ENERGY_PER_TICK * 2 && waterUnits >= 1.0F && !isDisabled()) - { - ItemStack var1 = ProcessingRecipes.getResult(inventory[2], machineEnum); - if (var1 == null) return false; - if (inventory[3] == null) return true; - if (!inventory[3].isItemEqual(var1)) return false; - int result = inventory[3].stackSize + var1.stackSize; - return (result <= getInventoryStackLimit() && result <= var1.getMaxStackSize()); - } - else - { - return false; - } - } - } - - public void operate() - { - if (canOperate()) - { - ItemStack newItem = ProcessingRecipes.getResult(inventory[2], machineEnum); - - if (inventory[3] == null) - { - inventory[3] = newItem.copy(); - } - else if (inventory[3].isItemEqual(newItem)) - { - inventory[3].stackSize += newItem.stackSize; - } - - inventory[2].stackSize -= ProcessingRecipes.getQuantity(inventory[2], machineEnum); - - if (inventory[2].stackSize <= 0) - { - inventory[2] = null; - } - } - } - - public void handlePacketData(INetworkManager network, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream) - { - try { - facing = dataStream.readInt(); - isActive = dataStream.readByte() != 0; - operatingTicks = dataStream.readInt(); - energyStored = dataStream.readInt(); - currentMaxEnergy = dataStream.readInt(); - currentTicksRequired = dataStream.readInt(); - waterUnits = dataStream.readFloat(); - worldObj.markBlockAsNeedsUpdate(xCoord, yCoord, zCoord); - } catch (Exception e) - { - System.out.println("[ObsidianIngots] Error while handling tile entity packet."); - e.printStackTrace(); - } - } - - public int getWashingStatus(int par1) - { - return operatingTicks * par1 / 200; - } - - public void readFromNBT(NBTTagCompound NBTTag) - { - super.readFromNBT(NBTTag); - waterUnits = NBTTag.getFloat("waterUnits"); - } - - public void writeToNBT(NBTTagCompound NBTTag) - { - super.writeToNBT(NBTTag); - NBTTag.setFloat("waterUnits", waterUnits); - } - - public void sendPacket() - { - PacketHandler.sendWasherPacket(this); - } - - public void sendPacketWithRange() - { - PacketHandler.sendWasherPacketWithRange(this, 50); - } - - public String[] getMethodNames() - { - return new String[] {"getStored", "getProgress", "isActive", "facing", "canOperate", "getMaxEnergy", "getEnergyNeeded", "getWater", "getWaterNeeded"}; - } - - public Object[] callMethod(IComputerAccess computer, int method, Object[] arguments) throws Exception - { - switch(method) - { - case 0: - return new Object[] {energyStored}; - case 1: - return new Object[] {operatingTicks}; - case 2: - return new Object[] {isActive}; - case 3: - return new Object[] {facing}; - case 4: - return new Object[] {canOperate()}; - case 5: - return new Object[] {currentMaxEnergy}; - case 6: - return new Object[] {(currentMaxEnergy-energyStored)}; - case 7: - return new Object[] {waterUnits}; - case 8: - return new Object[] {(WATER_LIMIT - waterUnits)}; - default: - System.err.println("[ObsidianIngots] Attempted to call unknown method with computer ID " + computer.getID()); - return new Object[] {"Unknown command."}; - } - } - - public List getRecipes() - { - return recipes; - } -} diff --git a/src/minecraft/net/uberkat/obsidian/client/ClientProxy.java b/src/minecraft/net/uberkat/obsidian/client/ClientProxy.java index 1b9dc92ae..140be4527 100644 --- a/src/minecraft/net/uberkat/obsidian/client/ClientProxy.java +++ b/src/minecraft/net/uberkat/obsidian/client/ClientProxy.java @@ -35,10 +35,6 @@ import net.uberkat.obsidian.common.TileEntityGenerator; import net.uberkat.obsidian.common.TileEntityPlatinumCompressor; import net.uberkat.obsidian.common.TileEntityPowerUnit; import net.uberkat.obsidian.common.TileEntityTheoreticalElementizer; -import net.uberkat.obsidian.hawk.client.GuiTeleporter; -import net.uberkat.obsidian.hawk.client.GuiWasher; -import net.uberkat.obsidian.hawk.common.TileEntityTeleporter; -import net.uberkat.obsidian.hawk.common.TileEntityWasher; /** * Client proxy for Obsidian Ingots mod. @@ -130,12 +126,6 @@ public class ClientProxy extends CommonProxy case 9: TileEntityGenerator tileentity6 = (TileEntityGenerator)world.getBlockTileEntity(x, y, z); return new GuiGenerator(player.inventory, tileentity6); - case 10: - TileEntityWasher tileentity7 = (TileEntityWasher)world.getBlockTileEntity(x, y, z); - return new GuiWasher(player.inventory, tileentity7); - case 11: - TileEntityTeleporter tileentity8 = (TileEntityTeleporter)world.getBlockTileEntity(x, y, z); - return new GuiTeleporter(player.inventory, tileentity8); } return null; } diff --git a/src/minecraft/net/uberkat/obsidian/hawk/client/GuiTeleporter.java b/src/minecraft/net/uberkat/obsidian/hawk/client/GuiTeleporter.java deleted file mode 100644 index 86abb2ae5..000000000 --- a/src/minecraft/net/uberkat/obsidian/hawk/client/GuiTeleporter.java +++ /dev/null @@ -1,38 +0,0 @@ - -package net.uberkat.obsidian.hawk.client; - -import org.lwjgl.opengl.GL11; -import net.minecraft.src.GuiButton; -import net.minecraft.src.GuiContainer; -import net.minecraft.src.InventoryPlayer; -import net.uberkat.obsidian.hawk.common.ContainerTeleporter; -import net.uberkat.obsidian.hawk.common.HawksMachinery; -import net.uberkat.obsidian.hawk.common.TileEntityTeleporter; - -public class GuiTeleporter extends GuiContainer -{ - public TileEntityTeleporter tileEntity; - - private int containerWidth; - private int containerHeight; - - public GuiTeleporter(InventoryPlayer player, TileEntityTeleporter tentity) - { - super(new ContainerTeleporter(player)); - tileEntity = tentity; - } - - public void initGui() - { - controlList.add(new GuiButton(0, containerHeight - 9, containerWidth - 9, 16, 16, null)); - } - - protected void drawGuiContainerBackgroundLayer(float var1, int var2, int var3) - { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - mc.renderEngine.bindTexture(mc.renderEngine.getTexture("/gui/GuiEndiumTeleporter.png")); - containerWidth = (width - xSize) / 2; - containerHeight = (height - ySize) / 2; - drawTexturedModalRect(containerWidth, containerHeight, 0, 0, xSize, ySize); - } -} diff --git a/src/minecraft/net/uberkat/obsidian/hawk/client/GuiWasher.java b/src/minecraft/net/uberkat/obsidian/hawk/client/GuiWasher.java deleted file mode 100644 index 398399337..000000000 --- a/src/minecraft/net/uberkat/obsidian/hawk/client/GuiWasher.java +++ /dev/null @@ -1,60 +0,0 @@ - -package net.uberkat.obsidian.hawk.client; - -import org.lwjgl.opengl.GL11; -import universalelectricity.electricity.ElectricInfo; -import net.minecraft.src.GuiContainer; -import net.minecraft.src.InventoryPlayer; -import net.minecraft.src.StatCollector; -import net.uberkat.obsidian.hawk.common.ContainerWasher; -import net.uberkat.obsidian.hawk.common.HawksMachinery; -import net.uberkat.obsidian.hawk.common.TileEntityWasher; - -/** - * - * - * - * @author Elusivehawk - */ -public class GuiWasher extends GuiContainer -{ - private TileEntityWasher tileEntity; - - private int containerWidth; - private int containerHeight; - - public GuiWasher(InventoryPlayer playerInv, TileEntityWasher tentity) - { - super(new ContainerWasher(playerInv, tentity)); - tileEntity = tentity; - } - - @Override - protected void drawGuiContainerForegroundLayer(int par1, int par2) - { - fontRenderer.drawString(ElectricInfo.getDisplayShort(tileEntity.getVoltage(), ElectricInfo.ElectricUnit.VOLTAGE), 116, 60, 4210752); - fontRenderer.drawString(ElectricInfo.getDisplayShort(tileEntity.energyStored, ElectricInfo.ElectricUnit.WATT), 116, 70, 4210752); - } - - /** - * Draw the background layer for the GuiContainer (everything behind the items) - */ - @Override - protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) - { - int var4 = mc.renderEngine.getTexture("/gui/GuiWasher.png"); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - mc.renderEngine.bindTexture(var4); - containerWidth = (width - xSize) / 2; - containerHeight = (height - ySize) / 2; - drawTexturedModalRect(containerWidth, containerHeight, 0, 0, xSize, ySize); - - if (tileEntity.operatingTicks > 0) - { - int scale = tileEntity.getWashingStatus(tileEntity.TICKS_REQUIRED); - drawTexturedModalRect(containerWidth + 52, containerHeight + 28, 176, 0, 52 - scale, 20); - } - - drawTexturedModalRect(containerWidth - 32, containerHeight - 16, 0, 232, 240, 16); - } -}