diff --git a/bin/minecraft/gui/GuiEndiumTeleporter.png b/bin/minecraft/gui/GuiEndiumTeleporter.png new file mode 100755 index 000000000..5f2ff847d Binary files /dev/null and b/bin/minecraft/gui/GuiEndiumTeleporter.png differ diff --git a/bin/minecraft/gui/GuiWasher.png b/bin/minecraft/gui/GuiWasher.png new file mode 100755 index 000000000..12b1527f4 Binary files /dev/null and b/bin/minecraft/gui/GuiWasher.png differ diff --git a/bin/minecraft/textures/hawk/Washer.png b/bin/minecraft/textures/hawk/Washer.png new file mode 100755 index 000000000..5bf37726e Binary files /dev/null and b/bin/minecraft/textures/hawk/Washer.png differ diff --git a/bin/minecraft/textures/items.png b/bin/minecraft/textures/items.png index 04e9bc49d..cebe140bd 100644 Binary files a/bin/minecraft/textures/items.png and b/bin/minecraft/textures/items.png differ diff --git a/bin/minecraft/textures/terrain.png b/bin/minecraft/textures/terrain.png index dbefb1405..2e24f5829 100755 Binary files a/bin/minecraft/textures/terrain.png and b/bin/minecraft/textures/terrain.png differ diff --git a/src/common/hawk/api/EndiumTeleporterCoords.java b/src/common/hawk/api/EndiumTeleporterCoords.java new file mode 100644 index 000000000..c88466c23 --- /dev/null +++ b/src/common/hawk/api/EndiumTeleporterCoords.java @@ -0,0 +1,105 @@ + +package hawk.api; + +/** + * + * Used in order to store Endium Teleporter coordinates. + * + * @author Elusivehawk + */ +public class EndiumTeleporterCoords +{ + private int xCoord; + private int yCoord; + private int zCoord; + private int dimensionID; + private int symbolA; + private int symbolB; + private int symbolC; + + public EndiumTeleporterCoords(int x, int y, int z, int dimension, int symbol1, int symbol2, int symbol3) + { + if (symbol1 != 0 && symbol2 != 0 && symbol3 != 0) + { + this.xCoord = x; + this.yCoord = y; + this.zCoord = z; + this.dimensionID = dimension; + this.symbolA = symbol1; + this.symbolB = symbol2; + this.symbolC = symbol3; + + } + else + { + throw new RuntimeException("Hawk's Machinery: Symbol cannot be 0!"); + } + + } + + public boolean isEqual(int symbol1, int symbol2, int symbol3) + { + return this.symbolA == symbol1 && this.symbolB == symbol2 && this.symbolC == symbol3; + } + + public boolean isEqualXYZ(int x, int y, int z) + { + return this.xCoord == x && this.yCoord == y && this.zCoord == z; + } + + public int x() + { + return this.xCoord; + } + + public int y() + { + return this.yCoord; + } + + public int z() + { + return this.zCoord; + } + + public int symA() + { + return this.symbolA; + } + + public int symB() + { + return this.symbolB; + } + + public int symC() + { + return this.symbolC; + } + + public int dimension() + { + return this.dimensionID; + } + + public void setSymbolA(int symbol) + { + this.symbolA = symbol; + } + + public void setSymbolB(int symbol) + { + this.symbolB = symbol; + } + + public void setSymbolC(int symbol) + { + this.symbolC = symbol; + } + + public void setDimension(int dimension) + { + this.dimensionID = dimension; + } + +} diff --git a/src/common/hawk/api/ProcessingRecipes.java b/src/common/hawk/api/ProcessingRecipes.java new file mode 100644 index 000000000..a1beae72f --- /dev/null +++ b/src/common/hawk/api/ProcessingRecipes.java @@ -0,0 +1,201 @@ + +package hawk.api; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Random; +import net.minecraft.src.Block; +import net.minecraft.src.Item; +import net.minecraft.src.ItemStack; +import net.minecraftforge.oredict.OreDictionary; + + +/** + * + * + * + * @author Elusivehawk + */ +public class ProcessingRecipes +{ + private static Map washerSecondaries = new HashMap(); + private static Map washerRarities = new HashMap(); + + private static Map quantityMapping = new HashMap(); + + /** + * + * Instead of IDs, processing now uses enums. + * + * @author Elusivehawk + */ + public enum EnumProcessing + { + CRUSHING_EXPLOSIVES(new HashMap()), + + WASHING(new HashMap()), + + STAR_FORGE(new HashMap()), + + ENDIUM_FORGE(new HashMap()), + + HM_E2MM(new HashMap()); + + private Map processingList; + + EnumProcessing(Map recipeList) + { + processingList = recipeList; + } + + public Map getRecipeList() + { + return processingList; + } + + } + + /** + * + * Adds a processing recipe. + * + * @param input The input. + * @param output The output. + * @param processType What type of processing this recipe is for. + */ + public static void addHMProcessingRecipe(ItemStack input, ItemStack output, EnumProcessing processType) + { + processType.getRecipeList().put(Arrays.asList(input.getItem(), input.isItemStackDamageable() ? 0 : input.getItemDamage(), input.isItemEnchanted(), input.stackTagCompound != null), output); + quantityMapping.put(Arrays.asList(input.getItem(), input.getItemDamage(), processType), (Integer)input.stackSize); + + } + + public static void addHMProcessingRecipe(Item input, ItemStack output, EnumProcessing processType) + { + addHMProcessingRecipe(new ItemStack(input), output, processType); + } + + public static void addHMProcessingRecipe(Item input, Item output, EnumProcessing processType) + { + addHMProcessingRecipe(new ItemStack(input), new ItemStack(output), processType); + } + + public static void addHMProcessingRecipe(Item input, Block output, EnumProcessing processType) + { + addHMProcessingRecipe(new ItemStack(input), new ItemStack(output), processType); + } + + public static void addHMProcessingRecipe(Block input, ItemStack output, EnumProcessing processType) + { + addHMProcessingRecipe(new ItemStack(input), output, processType); + } + + public static void addHMProcessingRecipe(Block input, Item output, EnumProcessing processType) + { + addHMProcessingRecipe(new ItemStack(input), new ItemStack(output), processType); + } + + public static void addHMProcessingRecipe(Block input, Block output, EnumProcessing processType) + { + addHMProcessingRecipe(new ItemStack(input), new ItemStack(output), processType); + } + + /** + * + * Forge Ore Dictionary supported version. + * + * @param input + * @param output + * @param processingType + */ + public static void addHMFoDProcessingRecipe(String input, ItemStack output, EnumProcessing processType) + { + for (ItemStack ore : OreDictionary.getOres(input)) + { + if (ore != null) + { + addHMProcessingRecipe(ore, output, processType); + } + + } + + } + + public static void addHMWashingSecondary(ItemStack input, Object output, boolean isCommon) + { + if (isCommon) + { + washerSecondaries.put(Arrays.asList(input.getItem(), input.getItemDamage()), output); + } + else + { + washerRarities.put(Arrays.asList(input.getItem(), input.getItemDamage()), output); + } + + } + + public static ItemStack getResult(ItemStack input, EnumProcessing processType) + { + if (input == null) + { + return null; + } + else + { + ItemStack output = (ItemStack)processType.getRecipeList().get(Arrays.asList(input.getItem(), input.isItemStackDamageable() ? 0 : input.getItemDamage(), input.isItemEnchanted(), input.stackTagCompound != null)); + + if (output != null) + { + if (input.isItemEqual(output) && input.isItemStackDamageable() && output.isItemStackDamageable()) + { + output.setItemDamage(input.getItemDamage()); + } + } + return output; + } + } + + public static int getQuantity(ItemStack item, EnumProcessing processType) + { + return (Integer)quantityMapping.get(Arrays.asList(item.getItem(), item.getItemDamage(), processType)); + } + + public static ItemStack getWashingSecondaryResult(ItemStack item, Random random) + { + int secondaryChance = random.nextInt(100); + + if (item == null) + { + return null; + } + else + { + if (secondaryChance < 5) + { + ItemStack ret = (ItemStack)washerRarities.get(Arrays.asList(item.getItem(), item.getItemDamage())); + + if (ret != null) + { + return ret; + } + + } + else if (secondaryChance < 10) + { + ItemStack ret = (ItemStack)washerSecondaries.get(Arrays.asList(item.getItem(), item.getItemDamage())); + + if (ret != null) + { + return ret; + } + + } + + return null; + } + + } + +} diff --git a/src/common/hawk/api/TeleportationHelper.java b/src/common/hawk/api/TeleportationHelper.java new file mode 100644 index 000000000..6b222c21c --- /dev/null +++ b/src/common/hawk/api/TeleportationHelper.java @@ -0,0 +1,106 @@ + +package hawk.api; + +import java.util.List; +import java.util.Random; +import net.minecraft.server.MinecraftServer; +import net.minecraft.src.Entity; +import net.minecraft.src.EntityPlayer; +import net.minecraft.src.EntityPlayerMP; +import net.minecraft.src.ServerConfigurationManager; +import net.minecraft.src.World; +import net.minecraftforge.common.DimensionManager; + +/** + * + * + * + * @author Elusivehawk + */ +public class TeleportationHelper +{ + private List 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 0de429df0..87c5e26d5 100644 --- a/src/common/net/uberkat/obsidian/common/BlockMachine.java +++ b/src/common/net/uberkat/obsidian/common/BlockMachine.java @@ -7,6 +7,9 @@ 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. @@ -15,6 +18,8 @@ import net.minecraftforge.common.ForgeDirection; * 2: Combiner * 3: Crusher * 4: Theoretical Elementizer + * 5: Washer + * 6: Teleporter * @author AidanBrady * */ @@ -33,54 +38,62 @@ public class BlockMachine extends BlockContainer public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving entityliving) { - TileEntityBasicMachine tileEntity = (TileEntityBasicMachine)world.getBlockTileEntity(x, y, z); - int side = MathHelper.floor_double((double)(entityliving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; - int change = 3; - - switch(side) - { - case 0: change = 2; break; - case 1: change = 5; break; - case 2: change = 3; break; - case 3: change = 4; break; - } - - tileEntity.setFacing((short)change); + if(!(world.getBlockMetadata(x, y, z) == 6)) + { + TileEntityBasicMachine tileEntity = (TileEntityBasicMachine)world.getBlockTileEntity(x, y, z); + int side = MathHelper.floor_double((double)(entityliving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; + int change = 3; + + switch(side) + { + case 0: change = 2; break; + case 1: change = 5; break; + case 2: change = 3; break; + case 3: change = 4; break; + } + + tileEntity.setFacing((short)change); + } } @SideOnly(Side.CLIENT) public void randomDisplayTick(World world, int x, int y, int z, Random random) { - 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); - } - } + 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); + } + } + } } public int getBlockTextureFromSideAndMetadata(int side, int meta) @@ -139,6 +152,34 @@ 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; } @@ -211,6 +252,34 @@ 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; } @@ -229,6 +298,8 @@ 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)); } /** @@ -298,12 +369,13 @@ public class BlockMachine extends BlockContainer public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityplayer, int facing, float playerX, float playerY, float playerZ) { - if (world.isRemote) - { - return true; - } - else - { + if(world.isRemote) + { + return false; + } + + //If the block isn't a washer + else { TileEntityBasicMachine tileEntity = (TileEntityBasicMachine)world.getBlockTileEntity(x, y, z); int metadata = world.getBlockMetadata(x, y, z); @@ -318,15 +390,16 @@ public class BlockMachine extends BlockContainer else if(metadata == 2) id = 5; 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; } - else { - return false; - } + return false; } return true; - } + } } public String getTextureFile() @@ -356,6 +429,14 @@ 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; } @@ -373,7 +454,9 @@ public class BlockMachine extends BlockContainer PLATINUM_COMPRESSOR(1), COMBINER(2), CRUSHER(3), - THEORETICAL_ELEMENTIZER(4); + THEORETICAL_ELEMENTIZER(4), + WASHER(5), + TELEPORTER(6); private int index; @@ -381,5 +464,10 @@ public class BlockMachine extends BlockContainer { index = i; } + + public String toString() + { + return Integer.toString(index); + } } } diff --git a/src/common/net/uberkat/obsidian/common/BlockMulti.java b/src/common/net/uberkat/obsidian/common/BlockMulti.java index f25686ebf..13b872029 100644 --- a/src/common/net/uberkat/obsidian/common/BlockMulti.java +++ b/src/common/net/uberkat/obsidian/common/BlockMulti.java @@ -7,6 +7,8 @@ import cpw.mods.fml.common.Side; 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. @@ -15,11 +17,14 @@ import net.minecraft.src.*; * 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); @@ -60,6 +65,7 @@ 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) @@ -86,9 +92,78 @@ public class BlockMulti extends Block return 8; case 4: return 15; + case 5: + return 15; } 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) + { + if (world.isBlockIndirectlyGettingPowered(x, y + 1, z) && world.getBlockMetadata(z, y, z) == 5) + { + Chunk chunkInside = world.getChunkFromBlockCoords(x, z); + int xPosMax = chunkInside.xPosition << 4; + int zPosMax = chunkInside.zPosition << 4; + int xPosMin = xPosMax + 16; + int zPosMin = zPosMax + 16; + + world.spawnParticle("portal", xPosMax + 0.5, y + 1, zPosMax + 0.5, 0, 0, 0); + world.spawnParticle("portal", xPosMax + 1.5, y + 1, zPosMax + 0.5, 0, 0, 0); + world.spawnParticle("portal", xPosMax + 2.5, y + 1, zPosMax + 0.5, 0, 0, 0); + world.spawnParticle("portal", xPosMax + 3.5, y + 1, zPosMax + 0.5, 0, 0, 0); + world.spawnParticle("portal", xPosMax + 4.5, y + 1, zPosMax + 0.5, 0, 0, 0); + world.spawnParticle("portal", xPosMax + 0.5, y + 1, zPosMax + 1.5, 0, 0, 0); + world.spawnParticle("portal", xPosMax + 0.5, y + 1, zPosMax + 2.5, 0, 0, 0); + world.spawnParticle("portal", xPosMax + 0.5, y + 1, zPosMax + 3.5, 0, 0, 0); + world.spawnParticle("portal", xPosMax + 0.5, y + 1, zPosMax + 4.5, 0, 0, 0); + + world.spawnParticle("portal", xPosMin - 0.5, y + 1, zPosMax + 0.5, 0, 0, 0); + world.spawnParticle("portal", xPosMin - 1.5, y + 1, zPosMax + 0.5, 0, 0, 0); + world.spawnParticle("portal", xPosMin - 2.5, y + 1, zPosMax + 0.5, 0, 0, 0); + world.spawnParticle("portal", xPosMin - 3.5, y + 1, zPosMax + 0.5, 0, 0, 0); + world.spawnParticle("portal", xPosMin - 4.5, y + 1, zPosMax + 0.5, 0, 0, 0); + world.spawnParticle("portal", xPosMin - 0.5, y + 1, zPosMax + 1.5, 0, 0, 0); + world.spawnParticle("portal", xPosMin - 0.5, y + 1, zPosMax + 2.5, 0, 0, 0); + world.spawnParticle("portal", xPosMin - 0.5, y + 1, zPosMax + 3.5, 0, 0, 0); + world.spawnParticle("portal", xPosMin - 0.5, y + 1, zPosMax + 4.5, 0, 0, 0); + + world.spawnParticle("portal", xPosMax + 0.5, y + 1, zPosMin - 0.5, 0, 0, 0); + world.spawnParticle("portal", xPosMax + 1.5, y + 1, zPosMin - 0.5, 0, 0, 0); + world.spawnParticle("portal", xPosMax + 2.5, y + 1, zPosMin - 0.5, 0, 0, 0); + world.spawnParticle("portal", xPosMax + 3.5, y + 1, zPosMin - 0.5, 0, 0, 0); + world.spawnParticle("portal", xPosMax + 4.5, y + 1, zPosMin - 0.5, 0, 0, 0); + world.spawnParticle("portal", xPosMax + 0.5, y + 1, zPosMin - 1.5, 0, 0, 0); + world.spawnParticle("portal", xPosMax + 0.5, y + 1, zPosMin - 2.5, 0, 0, 0); + world.spawnParticle("portal", xPosMax + 0.5, y + 1, zPosMin - 3.5, 0, 0, 0); + world.spawnParticle("portal", xPosMax + 0.5, y + 1, zPosMin - 4.5, 0, 0, 0); + + world.spawnParticle("portal", xPosMin - 0.5, y + 1, zPosMin - 0.5, 0, 0, 0); + world.spawnParticle("portal", xPosMin - 1.5, y + 1, zPosMin - 0.5, 0, 0, 0); + world.spawnParticle("portal", xPosMin - 2.5, y + 1, zPosMin - 0.5, 0, 0, 0); + world.spawnParticle("portal", xPosMin - 3.5, y + 1, zPosMin - 0.5, 0, 0, 0); + world.spawnParticle("portal", xPosMin - 4.5, y + 1, zPosMin - 0.5, 0, 0, 0); + world.spawnParticle("portal", xPosMin - 0.5, y + 1, zPosMin - 1.5, 0, 0, 0); + world.spawnParticle("portal", xPosMin - 0.5, y + 1, zPosMin - 2.5, 0, 0, 0); + world.spawnParticle("portal", xPosMin - 0.5, y + 1, zPosMin - 3.5, 0, 0, 0); + world.spawnParticle("portal", xPosMin - 0.5, y + 1, zPosMin - 4.5, 0, 0, 0); + } + } public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving entityliving) { @@ -96,6 +171,11 @@ 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 654b7ad8f..04657db7d 100644 --- a/src/common/net/uberkat/obsidian/common/BlockOre.java +++ b/src/common/net/uberkat/obsidian/common/BlockOre.java @@ -9,6 +9,7 @@ import net.minecraft.src.*; /** * Block class for handling multiple ore block IDs. * 0: Platinum Ore + * 1: Endium Ore * @author AidanBrady * */ @@ -23,12 +24,19 @@ public class BlockOre extends Block setRequiresSelfNotify(); } + public boolean canDragonDestroy(World world, int x, int y, int z) + { + return world.getBlockMetadata(x, y, z) != 1; + } + public int getBlockTextureFromSideAndMetadata(int side, int meta) { switch(meta) { case 0: return 3; + case 1: + return 28; } return 0; } @@ -42,6 +50,7 @@ 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 227e9998c..7e6fe04e4 100644 --- a/src/common/net/uberkat/obsidian/common/CommonProxy.java +++ b/src/common/net/uberkat/obsidian/common/CommonProxy.java @@ -11,6 +11,12 @@ 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; /** @@ -121,6 +127,11 @@ 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/CreativeTabOI.java b/src/common/net/uberkat/obsidian/common/CreativeTabOI.java index 33b7691dd..40adce9af 100644 --- a/src/common/net/uberkat/obsidian/common/CreativeTabOI.java +++ b/src/common/net/uberkat/obsidian/common/CreativeTabOI.java @@ -11,6 +11,6 @@ public class CreativeTabOI extends CreativeTabs public ItemStack getIconItemStack() { - return new ItemStack(ObsidianIngots.ObsidianIngot); + return new ItemStack(ObsidianIngots.Ingot, 1, 0); } } diff --git a/src/common/net/uberkat/obsidian/common/ItemBlockMachine.java b/src/common/net/uberkat/obsidian/common/ItemBlockMachine.java index 3bbf0d51b..a67debd0e 100644 --- a/src/common/net/uberkat/obsidian/common/ItemBlockMachine.java +++ b/src/common/net/uberkat/obsidian/common/ItemBlockMachine.java @@ -11,6 +11,8 @@ import net.minecraft.src.ItemStack; * 2: Combiner * 3: Crusher * 4: Theoretical Elementizer + * 5: Washer + * 6: Teleporter * @author AidanBrady * */ @@ -55,6 +57,12 @@ 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 5114331f6..51622af47 100644 --- a/src/common/net/uberkat/obsidian/common/ItemBlockMulti.java +++ b/src/common/net/uberkat/obsidian/common/ItemBlockMulti.java @@ -9,6 +9,7 @@ import net.minecraft.src.*; * 2: Refined Obsidian * 3: Coal Block * 4: Refined Glowstone + * 5: Endium Chunkloader * @author AidanBrady * */ @@ -33,6 +34,15 @@ 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 = ""; @@ -53,6 +63,9 @@ 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 91ee9313d..1a9be0606 100644 --- a/src/common/net/uberkat/obsidian/common/ItemBlockOre.java +++ b/src/common/net/uberkat/obsidian/common/ItemBlockOre.java @@ -5,6 +5,7 @@ import net.minecraft.src.*; /** * Item class for handling multiple ore block IDs. * 0: Platinum Ore + * 1: Endium Ore * @author AidanBrady * */ @@ -37,6 +38,9 @@ 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 new file mode 100644 index 000000000..3cc1abd04 --- /dev/null +++ b/src/common/net/uberkat/obsidian/common/ItemDust.java @@ -0,0 +1,51 @@ +package net.uberkat.obsidian.common; + +import java.util.ArrayList; +import java.util.List; + +import cpw.mods.fml.common.registry.LanguageRegistry; +import net.minecraft.src.*; + +public class ItemDust extends ItemObsidian +{ + public static String[] en_USNames = {"Iron", "Gold", "Platinum", + "Obsidian", "Diamond", "Glass", + "Emerald", "Star", "Endium"}; + + public ItemDust(int id) + { + super(id); + setHasSubtypes(true); + setCreativeTab(ObsidianIngots.tabOBSIDIAN); + } + + public int getIconFromDamage(int meta) + { + switch (meta) + { + case 0: return 248; + 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) + { + itemList.add(new ItemStack(this, 1, counter)); + } + } + + public String getItemNameIS(ItemStack item) + { + return 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 new file mode 100644 index 000000000..2201681ec --- /dev/null +++ b/src/common/net/uberkat/obsidian/common/ItemIngot.java @@ -0,0 +1,46 @@ +package net.uberkat.obsidian.common; + +import java.util.ArrayList; +import java.util.List; + +import cpw.mods.fml.common.registry.LanguageRegistry; +import net.minecraft.src.*; + +public class ItemIngot extends ItemObsidian +{ + public static String[] en_USNames = {"Obsidian", "Platinum", "Redstone", + "Glowstone", "Endium"}; + + public ItemIngot(int id) + { + super(id); + setHasSubtypes(true); + setCreativeTab(ObsidianIngots.tabOBSIDIAN); + } + + public int getIconFromDamage(int meta) + { + switch (meta) + { + case 0: return 161; + 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) + { + itemList.add(new ItemStack(this, 1, counter)); + } + } + + public String getItemNameIS(ItemStack item) + { + return en_USNames[item.getItemDamage()].toLowerCase() + "Ingot"; + } +} diff --git a/src/common/net/uberkat/obsidian/common/ItemLightningRod.java b/src/common/net/uberkat/obsidian/common/ItemLightningRod.java index 4acbdcf6e..6d9656e19 100644 --- a/src/common/net/uberkat/obsidian/common/ItemLightningRod.java +++ b/src/common/net/uberkat/obsidian/common/ItemLightningRod.java @@ -40,6 +40,7 @@ public class ItemLightningRod extends ItemObsidian EntityLightningBolt entitybolt = new EntityLightningBolt(world, 0D, 0D, 0D); entitybolt.setLocationAndAngles(x, y, z, 0, 0.0F); world.spawnEntityInWorld(entitybolt); + entityplayer.swingItem(); if(!entityplayer.capabilities.isCreativeMode) { itemstack.damageItem(99, entityplayer); diff --git a/src/common/net/uberkat/obsidian/common/ObsidianHooks.java b/src/common/net/uberkat/obsidian/common/ObsidianHooks.java index 037e7e8cd..ac29385b3 100644 --- a/src/common/net/uberkat/obsidian/common/ObsidianHooks.java +++ b/src/common/net/uberkat/obsidian/common/ObsidianHooks.java @@ -38,7 +38,7 @@ public class ObsidianHooks IC2IronDust = getIC2Item("ironDust"); IC2GoldDust = getIC2Item("goldDust"); - Ic2Recipes.addMaceratorRecipe(new ItemStack(ObsidianIngots.OreBlock, 1, 0), new ItemStack(ObsidianIngots.PlatinumDust, 2)); + Ic2Recipes.addMaceratorRecipe(new ItemStack(ObsidianIngots.OreBlock, 1, 0), new ItemStack(ObsidianIngots.Dust, 2, 2)); Ic2Recipes.addMatterAmplifier(ObsidianIngots.EnrichedAlloy, 100000); System.out.println("[ObsidianIngots] Hooked into IC2 successfully."); diff --git a/src/common/net/uberkat/obsidian/common/ObsidianIngots.java b/src/common/net/uberkat/obsidian/common/ObsidianIngots.java index 62529cc9a..9e749c163 100644 --- a/src/common/net/uberkat/obsidian/common/ObsidianIngots.java +++ b/src/common/net/uberkat/obsidian/common/ObsidianIngots.java @@ -17,6 +17,9 @@ import java.util.logging.Logger; import net.minecraftforge.common.*; 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; @@ -122,11 +125,8 @@ public class ObsidianIngots public static Item IronKnife; public static Item DiamondKnife; public static Item GoldKnife; - public static Item IronDust; - public static Item GoldDust; //Glowstone Items - public static Item GlowstoneIngot; public static Item GlowstonePaxel; public static Item GlowstonePickaxe; public static Item GlowstoneAxe; @@ -140,7 +140,6 @@ public class ObsidianIngots public static Item GlowstoneKnife; //Redstone Items - public static Item RedstoneIngot; public static Item RedstonePaxel; public static Item RedstonePickaxe; public static Item RedstoneAxe; @@ -154,8 +153,6 @@ public class ObsidianIngots public static Item RedstoneKnife; //Platinum Items - public static Item PlatinumDust; - public static Item PlatinumIngot; public static Item PlatinumPaxel; public static Item PlatinumPickaxe; public static Item PlatinumAxe; @@ -169,12 +166,10 @@ public class ObsidianIngots public static Item PlatinumKnife; //Obsidian Items - public static Item ObsidianDust; public static Item ObsidianHelmet; public static Item ObsidianBody; public static Item ObsidianLegs; public static Item ObsidianBoots; - public static Item ObsidianIngot; public static Item ObsidianPaxel; public static Item ObsidianPickaxe; public static Item ObsidianAxe; @@ -217,6 +212,10 @@ public class ObsidianIngots public static Block PowerUnit; public static Block Generator; + //MultiID Items + public static Item Dust; + public static Item Ingot; + //Boolean Values public static boolean extrasEnabled = true; public static boolean oreGenerationEnabled = true; @@ -277,84 +276,84 @@ public class ObsidianIngots //Obsidian GameRegistry.addRecipe(new ItemStack(MultiBlock, 1, 2), new Object[] { - "***", "***", "***", Character.valueOf('*'), ObsidianIngot + "***", "***", "***", Character.valueOf('*'), new ItemStack(Ingot, 1, 0) }); - GameRegistry.addRecipe(new ItemStack(ObsidianIngot, 9), new Object[] { + GameRegistry.addRecipe(new ItemStack(Ingot, 9, 0), new Object[] { "*", Character.valueOf('*'), new ItemStack(MultiBlock, 1, 2) }); GameRegistry.addRecipe(new ItemStack(ObsidianHelmet, 1), new Object[] { - "***", "* *", Character.valueOf('*'), ObsidianIngot + "***", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 0) }); GameRegistry.addRecipe(new ItemStack(ObsidianBody, 1), new Object[] { - "* *", "***", "***", Character.valueOf('*'), ObsidianIngot + "* *", "***", "***", Character.valueOf('*'), new ItemStack(Ingot, 1, 0) }); GameRegistry.addRecipe(new ItemStack(ObsidianLegs, 1), new Object[] { - "***", "* *", "* *", Character.valueOf('*'), ObsidianIngot + "***", "* *", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 0) }); GameRegistry.addRecipe(new ItemStack(ObsidianBoots, 1), new Object[] { - "* *", "* *", Character.valueOf('*'), ObsidianIngot + "* *", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 0) }); GameRegistry.addRecipe(new ItemStack(ObsidianPaxel, 1), new Object[] { "XYZ", " T ", " T ", Character.valueOf('X'), ObsidianAxe, Character.valueOf('Y'), ObsidianPickaxe, Character.valueOf('Z'), ObsidianSpade, Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(ObsidianPickaxe, 1), new Object[] { - "XXX", " T ", " T ", Character.valueOf('X'), ObsidianIngot, Character.valueOf('T'), Item.stick + "XXX", " T ", " T ", Character.valueOf('X'), new ItemStack(Ingot, 1, 0), Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(ObsidianAxe, 1), new Object[] { - "XX", "XT", " T", Character.valueOf('X'), ObsidianIngot, Character.valueOf('T'), Item.stick + "XX", "XT", " T", Character.valueOf('X'), new ItemStack(Ingot, 1, 0), Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(ObsidianSpade, 1), new Object[] { - "X", "T", "T", Character.valueOf('X'), ObsidianIngot, Character.valueOf('T'), Item.stick + "X", "T", "T", Character.valueOf('X'), new ItemStack(Ingot, 1, 0), Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(ObsidianHoe, 1), new Object[] { - "XX", " T", " T", Character.valueOf('X'), ObsidianIngot, Character.valueOf('T'), Item.stick + "XX", " T", " T", Character.valueOf('X'), new ItemStack(Ingot, 1, 0), Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(ObsidianSword, 1), new Object[] { - "X", "X", "T", Character.valueOf('X'), ObsidianIngot, Character.valueOf('T'), Item.stick + "X", "X", "T", Character.valueOf('X'), new ItemStack(Ingot, 1, 0), Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(ObsidianKnife, 1), new Object[] { - " ^", "I ", Character.valueOf('^'), ObsidianIngot, Character.valueOf('I'), Item.stick + " ^", "I ", Character.valueOf('^'), new ItemStack(Ingot, 1, 0), Character.valueOf('I'), Item.stick }); //Glowstone GameRegistry.addRecipe(new ItemStack(MultiBlock, 1, 4), new Object[] { - "***", "***", "***", Character.valueOf('*'), GlowstoneIngot + "***", "***", "***", Character.valueOf('*'), new ItemStack(Ingot, 1, 3) }); - GameRegistry.addRecipe(new ItemStack(GlowstoneIngot, 9), new Object[] { + GameRegistry.addRecipe(new ItemStack(Ingot, 9, 3), new Object[] { "*", Character.valueOf('*'), new ItemStack(MultiBlock, 1, 4) }); GameRegistry.addRecipe(new ItemStack(GlowstonePaxel, 1), new Object[] { "XYZ", " T ", " T ", Character.valueOf('X'), GlowstoneAxe, Character.valueOf('Y'), GlowstonePickaxe, Character.valueOf('Z'), GlowstoneSpade, Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(GlowstonePickaxe, 1), new Object[] { - "XXX", " T ", " T ", Character.valueOf('X'), GlowstoneIngot, Character.valueOf('T'), Item.stick + "XXX", " T ", " T ", Character.valueOf('X'), new ItemStack(Ingot, 1, 3), Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(GlowstoneAxe, 1), new Object[] { - "XX", "XT", " T", Character.valueOf('X'), GlowstoneIngot, Character.valueOf('T'), Item.stick + "XX", "XT", " T", Character.valueOf('X'), new ItemStack(Ingot, 1, 3), Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(GlowstoneSpade, 1), new Object[] { - "X", "T", "T", Character.valueOf('X'), GlowstoneIngot, Character.valueOf('T'), Item.stick + "X", "T", "T", Character.valueOf('X'), new ItemStack(Ingot, 1, 3), Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(GlowstoneHoe, 1), new Object[] { - "XX", " T", " T", Character.valueOf('X'), GlowstoneIngot, Character.valueOf('T'), Item.stick + "XX", " T", " T", Character.valueOf('X'), new ItemStack(Ingot, 1, 3), Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(GlowstoneSword, 1), new Object[] { - "X", "X", "T", Character.valueOf('X'), GlowstoneIngot, Character.valueOf('T'), Item.stick + "X", "X", "T", Character.valueOf('X'), new ItemStack(Ingot, 1, 3), Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(GlowstoneHelmet, 1), new Object[] { - "***", "* *", Character.valueOf('*'), GlowstoneIngot + "***", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 3) }); GameRegistry.addRecipe(new ItemStack(GlowstoneBody, 1), new Object[] { - "* *", "***", "***", Character.valueOf('*'), GlowstoneIngot + "* *", "***", "***", Character.valueOf('*'), new ItemStack(Ingot, 1, 3) }); GameRegistry.addRecipe(new ItemStack(GlowstoneLegs, 1), new Object[] { - "***", "* *", "* *", Character.valueOf('*'), GlowstoneIngot + "***", "* *", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 3) }); GameRegistry.addRecipe(new ItemStack(GlowstoneBoots, 1), new Object[] { - "* *", "* *", Character.valueOf('*'), GlowstoneIngot + "* *", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 3) }); GameRegistry.addRecipe(new ItemStack(GlowstoneKnife, 1), new Object[] { - " ^", "I ", Character.valueOf('^'), GlowstoneIngot, Character.valueOf('I'), Item.stick + " ^", "I ", Character.valueOf('^'), new ItemStack(Ingot, 1, 3), Character.valueOf('I'), Item.stick }); //Lazuli @@ -394,84 +393,84 @@ public class ObsidianIngots //Platinum GameRegistry.addRecipe(new ItemStack(MultiBlock, 1, 0), new Object[] { - "XXX", "XXX", "XXX", Character.valueOf('X'), PlatinumIngot + "XXX", "XXX", "XXX", Character.valueOf('X'), new ItemStack(Ingot, 1, 1) }); GameRegistry.addRecipe(new ItemStack(PlatinumPaxel, 1), new Object[] { "XYZ", " T ", " T ", Character.valueOf('X'), PlatinumAxe, Character.valueOf('Y'), PlatinumPickaxe, Character.valueOf('Z'), PlatinumSpade, Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(PlatinumPickaxe, 1), new Object[] { - "XXX", " T ", " T ", Character.valueOf('X'), PlatinumIngot, Character.valueOf('T'), Item.stick + "XXX", " T ", " T ", Character.valueOf('X'), new ItemStack(Ingot, 1, 1), Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(PlatinumAxe, 1), new Object[] { - "XX", "XT", " T", Character.valueOf('X'), PlatinumIngot, Character.valueOf('T'), Item.stick + "XX", "XT", " T", Character.valueOf('X'), new ItemStack(Ingot, 1, 1), Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(PlatinumSpade, 1), new Object[] { - "X", "T", "T", Character.valueOf('X'), PlatinumIngot, Character.valueOf('T'), Item.stick + "X", "T", "T", Character.valueOf('X'), new ItemStack(Ingot, 1, 1), Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(PlatinumHoe, 1), new Object[] { - "XX", " T", " T", Character.valueOf('X'), PlatinumIngot, Character.valueOf('T'), Item.stick + "XX", " T", " T", Character.valueOf('X'), new ItemStack(Ingot, 1, 1), Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(PlatinumSword, 1), new Object[] { - "X", "X", "T", Character.valueOf('X'), PlatinumIngot, Character.valueOf('T'), Item.stick + "X", "X", "T", Character.valueOf('X'), new ItemStack(Ingot, 1, 1), Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(PlatinumHelmet, 1), new Object[] { - "***", "* *", Character.valueOf('*'), PlatinumIngot + "***", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 1) }); GameRegistry.addRecipe(new ItemStack(PlatinumBody, 1), new Object[] { - "* *", "***", "***", Character.valueOf('*'), PlatinumIngot + "* *", "***", "***", Character.valueOf('*'), new ItemStack(Ingot, 1, 1) }); GameRegistry.addRecipe(new ItemStack(PlatinumLegs, 1), new Object[] { - "***", "* *", "* *", Character.valueOf('*'), PlatinumIngot + "***", "* *", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 1) }); GameRegistry.addRecipe(new ItemStack(PlatinumBoots, 1), new Object[] { - "* *", "* *", Character.valueOf('*'), PlatinumIngot + "* *", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 1) }); - GameRegistry.addRecipe(new ItemStack(PlatinumIngot, 9), new Object[] { + GameRegistry.addRecipe(new ItemStack(Ingot, 9, 1), new Object[] { "*", Character.valueOf('*'), new ItemStack(MultiBlock, 1, 0) }); GameRegistry.addRecipe(new ItemStack(PlatinumKnife, 1), new Object[] { - " ^", "I ", Character.valueOf('^'), PlatinumIngot, Character.valueOf('I'), Item.stick + " ^", "I ", Character.valueOf('^'), new ItemStack(Ingot, 1, 1), Character.valueOf('I'), Item.stick }); //Redstone GameRegistry.addRecipe(new ItemStack(MultiBlock, 1, 1), new Object[] { - "***", "***", "***", Character.valueOf('*'), RedstoneIngot + "***", "***", "***", Character.valueOf('*'), new ItemStack(Ingot, 1, 2) }); - GameRegistry.addRecipe(new ItemStack(RedstoneIngot, 9), new Object[] { + GameRegistry.addRecipe(new ItemStack(Ingot, 9, 2), new Object[] { "*", Character.valueOf('*'), new ItemStack(MultiBlock, 1, 1) }); GameRegistry.addRecipe(new ItemStack(RedstonePaxel, 1), new Object[] { "XYZ", " T ", " T ", Character.valueOf('X'), RedstoneAxe, Character.valueOf('Y'), RedstonePickaxe, Character.valueOf('Z'), RedstoneSpade, Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(RedstonePickaxe, 1), new Object[] { - "XXX", " T ", " T ", Character.valueOf('X'), RedstoneIngot, Character.valueOf('T'), Item.stick + "XXX", " T ", " T ", Character.valueOf('X'), new ItemStack(Ingot, 1, 2), Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(RedstoneAxe, 1), new Object[] { - "XX", "XT", " T", Character.valueOf('X'), RedstoneIngot, Character.valueOf('T'), Item.stick + "XX", "XT", " T", Character.valueOf('X'), new ItemStack(Ingot, 1, 2), Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(RedstoneSpade, 1), new Object[] { - "X", "T", "T", Character.valueOf('X'), RedstoneIngot, Character.valueOf('T'), Item.stick + "X", "T", "T", Character.valueOf('X'), new ItemStack(Ingot, 1, 2), Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(RedstoneHoe, 1), new Object[] { - "XX", " T", " T", Character.valueOf('X'), RedstoneIngot, Character.valueOf('T'), Item.stick + "XX", " T", " T", Character.valueOf('X'), new ItemStack(Ingot, 1, 2), Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(RedstoneSword, 1), new Object[] { - "X", "X", "T", Character.valueOf('X'), RedstoneIngot, Character.valueOf('T'), Item.stick + "X", "X", "T", Character.valueOf('X'), new ItemStack(Ingot, 1, 2), Character.valueOf('T'), Item.stick }); GameRegistry.addRecipe(new ItemStack(RedstoneHelmet, 1), new Object[] { - "***", "* *", Character.valueOf('*'), RedstoneIngot + "***", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 2) }); GameRegistry.addRecipe(new ItemStack(RedstoneBody, 1), new Object[] { - "* *", "***", "***", Character.valueOf('*'), RedstoneIngot + "* *", "***", "***", Character.valueOf('*'), new ItemStack(Ingot, 1, 2) }); GameRegistry.addRecipe(new ItemStack(RedstoneLegs, 1), new Object[] { - "***", "* *", "* *", Character.valueOf('*'), RedstoneIngot + "***", "* *", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 2) }); GameRegistry.addRecipe(new ItemStack(RedstoneBoots, 1), new Object[] { - "* *", "* *", Character.valueOf('*'), RedstoneIngot + "* *", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 2) }); GameRegistry.addRecipe(new ItemStack(RedstoneKnife, 1), new Object[] { - " ^", "I ", Character.valueOf('^'), RedstoneIngot, Character.valueOf('I'), Item.stick + " ^", "I ", Character.valueOf('^'), new ItemStack(Ingot, 1, 2), Character.valueOf('I'), Item.stick }); //Extra @@ -479,10 +478,10 @@ public class ObsidianIngots "***", "XXX", "***", Character.valueOf('*'), Block.obsidian, Character.valueOf('X'), Block.tnt }); GameRegistry.addRecipe(new ItemStack(ObsidianBow, 1), new Object[] { - " AB", "A B", " AB", Character.valueOf('A'), ObsidianIngot, Character.valueOf('B'), Item.silk + " AB", "A B", " AB", Character.valueOf('A'), new ItemStack(Ingot, 1, 0), Character.valueOf('B'), Item.silk }); GameRegistry.addRecipe(EnergyCube.getUnchargedItem(), new Object[] { - "RAR", "APA", "RAR", Character.valueOf('R'), Item.redstone, Character.valueOf('A'), EnrichedAlloy, Character.valueOf('P'), PlatinumDust + "RAR", "APA", "RAR", Character.valueOf('R'), Item.redstone, Character.valueOf('A'), EnrichedAlloy, Character.valueOf('P'), new ItemStack(Dust, 1, 2) }); GameRegistry.addRecipe(EnergyTablet.getUnchargedItem(), new Object[] { "RCR", "ECE", "RCR", Character.valueOf('C'), EnergyCube.getUnchargedItem(), Character.valueOf('R'), Item.redstone, Character.valueOf('E'), EnrichedAlloy @@ -497,7 +496,7 @@ public class ObsidianIngots "ECE", "CPC", "ECE", Character.valueOf('E'), EnrichedAlloy, Character.valueOf('C'), EnergyCube.getUnchargedItem(), Character.valueOf('P'), new ItemStack(PowerUnit, 1, 0) }); GameRegistry.addRecipe(new ItemStack(MachineBlock, 1, 0), new Object[] { - "***", "*R*", "***", Character.valueOf('*'), PlatinumIngot, Character.valueOf('R'), Item.redstone + "***", "*R*", "***", Character.valueOf('*'), new ItemStack(Ingot, 1, 1), Character.valueOf('R'), Item.redstone }); GameRegistry.addRecipe(new ItemStack(MachineBlock, 1, 1), new Object[] { "***", "*P*", "***", Character.valueOf('*'), Item.redstone, Character.valueOf('P'), new ItemStack(MultiBlock, 1, 0) @@ -506,10 +505,10 @@ public class ObsidianIngots "***", "*P*", "***", Character.valueOf('*'), Block.cobblestone, Character.valueOf('P'), new ItemStack(MultiBlock, 1, 0) }); GameRegistry.addRecipe(new ItemStack(MachineBlock, 1, 3), new Object[] { - "***", "*L*", "***", Character.valueOf('*'), PlatinumIngot, Character.valueOf('L'), Item.bucketLava + "***", "*L*", "***", Character.valueOf('*'), new ItemStack(Ingot, 1, 1), Character.valueOf('L'), Item.bucketLava }); GameRegistry.addRecipe(new ItemStack(SpeedUpgrade), new Object[] { - "PAP", "ARA", "PAP", Character.valueOf('P'), PlatinumDust, Character.valueOf('A'), EnrichedAlloy, Character.valueOf('E'), Item.emerald + "PAP", "ARA", "PAP", Character.valueOf('P'), new ItemStack(Dust, 1, 2), Character.valueOf('A'), EnrichedAlloy, Character.valueOf('E'), Item.emerald }); GameRegistry.addRecipe(new ItemStack(EnergyUpgrade), new Object[] { "RAR", "AEA", "RAR", Character.valueOf('R'), Item.redstone, Character.valueOf('A'), EnrichedAlloy, Character.valueOf('E'), Item.emerald @@ -526,28 +525,28 @@ public class ObsidianIngots } //Furnace Recipes - GameRegistry.addSmelting(new ItemStack(OreBlock, 1, 0).itemID, new ItemStack(PlatinumIngot, 2), 1.0F); - GameRegistry.addSmelting(PlatinumDust.shiftedIndex, new ItemStack(PlatinumIngot, 1), 1.0F); + GameRegistry.addSmelting(new ItemStack(OreBlock, 1, 0).itemID, new ItemStack(Ingot, 2, 1), 1.0F); + GameRegistry.addSmelting(new ItemStack(Dust, 1, 2).itemID, new ItemStack(Ingot, 1, 1), 1.0F); //Enrichment Chamber Recipes - RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(OreBlock, 1, 0), new ItemStack(PlatinumDust, 2)); + RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(OreBlock, 1, 0), new ItemStack(Dust, 2, 2)); RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.oreRedstone), new ItemStack(Item.redstone, 2)); //Platinum Compressor Recipes - RecipeHandler.addPlatinumCompressorRecipe(new ItemStack(Item.redstone), new ItemStack(RedstoneIngot)); - RecipeHandler.addPlatinumCompressorRecipe(new ItemStack(Item.lightStoneDust), new ItemStack(GlowstoneIngot)); + RecipeHandler.addPlatinumCompressorRecipe(new ItemStack(Item.redstone), new ItemStack(Ingot, 1, 2)); + RecipeHandler.addPlatinumCompressorRecipe(new ItemStack(Item.lightStoneDust), new ItemStack(Ingot, 1, 3)); //Combiner Recipes RecipeHandler.addCombinerRecipe(new ItemStack(Item.redstone, 4), new ItemStack(Block.oreRedstone)); - RecipeHandler.addCombinerRecipe(new ItemStack(Item.redstone), new ItemStack(RedstoneIngot)); - RecipeHandler.addCombinerRecipe(new ItemStack(PlatinumDust, 2), new ItemStack(OreBlock, 1, 0)); + RecipeHandler.addCombinerRecipe(new ItemStack(Item.redstone), new ItemStack(Ingot, 1, 2)); + RecipeHandler.addCombinerRecipe(new ItemStack(Dust, 2, 2), new ItemStack(OreBlock, 1, 0)); RecipeHandler.addCombinerRecipe(new ItemStack(Item.diamond), new ItemStack(Block.oreDiamond)); RecipeHandler.addCombinerRecipe(new ItemStack(Item.dyePowder, 4, 4), new ItemStack(Block.oreLapis)); //Crusher Recipes - RecipeHandler.addCrusherRecipe(new ItemStack(RedstoneIngot), new ItemStack(Item.redstone)); - RecipeHandler.addCrusherRecipe(new ItemStack(PlatinumIngot), new ItemStack(PlatinumDust)); - RecipeHandler.addCrusherRecipe(new ItemStack(GlowstoneIngot), new ItemStack(Item.lightStoneDust)); + RecipeHandler.addCrusherRecipe(new ItemStack(Ingot, 1, 2), new ItemStack(Item.redstone)); + RecipeHandler.addCrusherRecipe(new ItemStack(Ingot, 1, 1), new ItemStack(Dust, 1, 2)); + RecipeHandler.addCrusherRecipe(new ItemStack(Ingot, 1, 3), new ItemStack(Item.lightStoneDust)); //Theoretical Elementizer Recipes RecipeHandler.addTheoreticalElementizerRecipe(new ItemStack(EnrichedAlloy), new ItemStack(TileEntityTheoreticalElementizer.getRandomMagicItem())); @@ -575,7 +574,6 @@ public class ObsidianIngots LanguageRegistry.addName(ObsidianBody, "Obsidian Chestplate"); LanguageRegistry.addName(ObsidianLegs, "Obsidian Leggings"); LanguageRegistry.addName(ObsidianBoots, "Obsidian Boots"); - LanguageRegistry.addName(ObsidianIngot, "Obsidian Ingot"); LanguageRegistry.addName(ObsidianPaxel, "Obsidian Paxel"); LanguageRegistry.addName(ObsidianPickaxe, "Obsidian Pickaxe"); LanguageRegistry.addName(ObsidianAxe, "Obsidian Axe"); @@ -598,12 +596,10 @@ public class ObsidianIngots LanguageRegistry.addName(LazuliKnife, "Lazuli Knife"); //Platinum - LanguageRegistry.addName(PlatinumDust, "Platinum Dust"); LanguageRegistry.addName(PlatinumHelmet, "Platinum Helmet"); LanguageRegistry.addName(PlatinumBody, "Platinum Chestplate"); LanguageRegistry.addName(PlatinumLegs, "Platinum Leggings"); LanguageRegistry.addName(PlatinumBoots, "Platinum Boots"); - LanguageRegistry.addName(PlatinumIngot, "Platinum Ingot"); LanguageRegistry.addName(PlatinumPaxel, "Platinum Paxel"); LanguageRegistry.addName(PlatinumPickaxe, "Platinum Pickaxe"); LanguageRegistry.addName(PlatinumAxe, "Platinum Axe"); @@ -617,7 +613,6 @@ public class ObsidianIngots LanguageRegistry.addName(RedstoneBody, "Redstone Chestplate"); LanguageRegistry.addName(RedstoneLegs, "Redstone Leggings"); LanguageRegistry.addName(RedstoneBoots, "Redstone Boots"); - LanguageRegistry.addName(RedstoneIngot, "Redstone Ingot"); LanguageRegistry.addName(RedstonePaxel, "Redstone Paxel"); LanguageRegistry.addName(RedstonePickaxe, "Redstone Pickaxe"); LanguageRegistry.addName(RedstoneAxe, "Redstone Axe"); @@ -627,7 +622,6 @@ public class ObsidianIngots LanguageRegistry.addName(RedstoneKnife, "Redstone Knife"); //Glowstone - LanguageRegistry.addName(GlowstoneIngot, "Glowstone Ingot"); LanguageRegistry.addName(GlowstonePaxel, "Glowstone Paxel"); LanguageRegistry.addName(GlowstonePickaxe, "Glowstone Pickaxe"); LanguageRegistry.addName(GlowstoneAxe, "Glowstone Axe"); @@ -665,15 +659,20 @@ 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"); LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.PlatinumCompressor.name", "Platinum Compressor"); 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"); @@ -682,10 +681,23 @@ public class ObsidianIngots //Localization for Generator LanguageRegistry.instance().addStringLocalization("tile.Generator.HeatGenerator.name", "Heat Generator"); - if(extrasEnabled == true) - { - LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.TheoreticalElementizer.name", "Theoretical Elementizer"); - } + //Localization for Dust + LanguageRegistry.instance().addStringLocalization("item.ironDust.name", "Iron Dust"); + 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"); } /** @@ -710,8 +722,6 @@ public class ObsidianIngots GlowstoneBody.setIconIndex(20); GlowstoneLegs.setIconIndex(36); GlowstoneBoots.setIconIndex(52); - GlowstoneIngot.setIconIndex(164); - GlowstoneIngot.setIconIndex(164); GlowstonePaxel.setIconIndex(148); GlowstonePickaxe.setIconIndex(68); GlowstoneAxe.setIconIndex(84); @@ -725,7 +735,6 @@ public class ObsidianIngots RedstoneBody.setIconIndex(19); RedstoneLegs.setIconIndex(35); RedstoneBoots.setIconIndex(51); - RedstoneIngot.setIconIndex(163); RedstonePaxel.setIconIndex(147); RedstonePickaxe.setIconIndex(67); RedstoneAxe.setIconIndex(83); @@ -735,12 +744,10 @@ public class ObsidianIngots RedstoneKnife.setIconIndex(211); //Platinum - PlatinumDust.setIconIndex(242); PlatinumHelmet.setIconIndex(2); PlatinumBody.setIconIndex(18); PlatinumLegs.setIconIndex(34); PlatinumBoots.setIconIndex(50); - PlatinumIngot.setIconIndex(162); PlatinumPaxel.setIconIndex(146); PlatinumPickaxe.setIconIndex(66); PlatinumAxe.setIconIndex(82); @@ -754,7 +761,6 @@ public class ObsidianIngots ObsidianBody.setIconIndex(17); ObsidianLegs.setIconIndex(33); ObsidianBoots.setIconIndex(49); - ObsidianIngot.setIconIndex(161); ObsidianPaxel.setIconIndex(145); ObsidianPickaxe.setIconIndex(65); ObsidianAxe.setIconIndex(81); @@ -804,7 +810,6 @@ public class ObsidianIngots RedstoneBody = (new ItemObsidianArmor(11236, armorREDSTONE, proxy.getArmorIndex("redstone"), 1)).setItemName("RedstoneBody"); RedstoneLegs = (new ItemObsidianArmor(11237, armorREDSTONE, proxy.getArmorIndex("redstone"), 2)).setItemName("RedstoneLegs"); RedstoneBoots = (new ItemObsidianArmor(11238, armorREDSTONE, proxy.getArmorIndex("redstone"), 3)).setItemName("RedstoneBoots"); - RedstoneIngot = new ItemObsidian(11239).setItemName("RedstoneIngot").setCreativeTab(tabOBSIDIAN); RedstonePaxel = new ItemObsidianPaxel(11240, toolREDSTONE2).setItemName("RedstonePaxel"); RedstonePickaxe = new ItemObsidianPickaxe(11241, toolREDSTONE).setItemName("RedstonePickaxe"); RedstoneAxe = new ItemObsidianAxe(11242, toolREDSTONE).setItemName("RedstoneAxe"); @@ -815,7 +820,6 @@ public class ObsidianIngots PlatinumBody = (new ItemObsidianArmor(11247, EnumArmorMaterial.DIAMOND, proxy.getArmorIndex("platinum"), 1)).setItemName("PlatinumBody"); PlatinumLegs = (new ItemObsidianArmor(11248, EnumArmorMaterial.DIAMOND, proxy.getArmorIndex("platinum"), 2)).setItemName("PlatinumLegs"); PlatinumBoots = (new ItemObsidianArmor(11249, EnumArmorMaterial.DIAMOND, proxy.getArmorIndex("platinum"), 3)).setItemName("PlatinumBoots"); - PlatinumIngot = new ItemObsidian(11250).setItemName("PlatinumIngot").setCreativeTab(tabOBSIDIAN); PlatinumPaxel = new ItemObsidianPaxel(11251, toolPLATINUM2).setItemName("PlatinumPaxel"); PlatinumPickaxe = new ItemObsidianPickaxe(11252, toolPLATINUM).setItemName("PlatinumPickaxe"); PlatinumAxe = new ItemObsidianAxe(11253, toolPLATINUM).setItemName("PlatinumAxe"); @@ -826,7 +830,6 @@ public class ObsidianIngots ObsidianBody = (new ItemObsidianArmor(11258, armorOBSIDIAN, proxy.getArmorIndex("obsidian"), 1)).setItemName("ObsidianBody"); ObsidianLegs = (new ItemObsidianArmor(11259, armorOBSIDIAN, proxy.getArmorIndex("obsidian"), 2)).setItemName("ObsidianLegs"); ObsidianBoots = (new ItemObsidianArmor(11260, armorOBSIDIAN, proxy.getArmorIndex("obsidian"), 3)).setItemName("ObsidianBoots"); - ObsidianIngot = new ItemObsidian(11261).setItemName("ObsidianIngot").setCreativeTab(tabOBSIDIAN); ObsidianPaxel = new ItemObsidianPaxel(11262, toolOBSIDIAN2).setItemName("ObsidianPaxel"); ObsidianPickaxe = new ItemObsidianPickaxe(11263, toolOBSIDIAN).setItemName("ObsidianPickaxe"); ObsidianAxe = new ItemObsidianAxe(11264, toolOBSIDIAN).setItemName("ObsidianAxe"); @@ -865,8 +868,8 @@ public class ObsidianIngots LazuliKnife = new ItemObsidianKnife(11294, toolLAZULI).setItemName("LazuliKnife"); PlatinumKnife = new ItemObsidianKnife(11295, toolPLATINUM).setItemName("PlatinumKnife"); RedstoneKnife = new ItemObsidianKnife(11296, toolREDSTONE).setItemName("RedstoneKnife"); - PlatinumDust = new ItemObsidian(11300).setItemName("PlatinumDust").setCreativeTab(tabOBSIDIAN); - GlowstoneIngot = new ItemObsidian(11301).setItemName("GlowstoneIngot").setCreativeTab(tabOBSIDIAN); + Dust = new ItemDust(11297-256); + Ingot = new ItemIngot(11298-256); GlowstonePaxel = new ItemObsidianPaxel(11302, toolGLOWSTONE2).setItemName("GlowstonePaxel"); GlowstonePickaxe = new ItemObsidianPickaxe(11303, toolGLOWSTONE).setItemName("GlowstonePickaxe"); GlowstoneAxe = new ItemObsidianAxe(11304, toolGLOWSTONE).setItemName("GlowstoneAxe"); @@ -915,48 +918,24 @@ public class ObsidianIngots */ public void addIntegratedItems() { - if(hooks.IC2Loaded && hooks.IC2GoldDust != null && hooks.IC2IronDust != null) - { - IronDust = hooks.IC2IronDust.getItem(); - GoldDust = hooks.IC2GoldDust.getItem(); - } - else { - IronDust = new ItemObsidian(11298).setItemName("IronDust").setCreativeTab(tabOBSIDIAN); - GoldDust = new ItemObsidian(11299).setItemName("GoldDust").setCreativeTab(tabOBSIDIAN); - IronDust.setIconIndex(248); - GoldDust.setIconIndex(250); - LanguageRegistry.addName(IronDust, "Iron Dust"); - LanguageRegistry.addName(GoldDust, "Gold Dust"); - } - - if(hooks.RailcraftLoaded && hooks.RailcraftObsidianDust != null) - { - ObsidianDust = hooks.RailcraftObsidianDust.getItem(); - } - else { - ObsidianDust = new ItemObsidian(11297).setItemName("ObsidianDust").setCreativeTab(tabOBSIDIAN); - ObsidianDust.setIconIndex(241); - LanguageRegistry.addName(ObsidianDust, "Obsidian Dust"); - } - if(!hooks.RailcraftLoaded && hooks.IC2Loaded) { - Ic2Recipes.addMaceratorRecipe(new ItemStack(Block.obsidian), new ItemStack(ObsidianIngots.ObsidianDust)); + Ic2Recipes.addMaceratorRecipe(new ItemStack(Block.obsidian), new ItemStack(Dust, 1, 3)); } - RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.obsidian), new ItemStack(ObsidianDust)); - RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.oreIron), new ItemStack(IronDust, 2)); - RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.oreGold), new ItemStack(GoldDust, 2)); - RecipeHandler.addPlatinumCompressorRecipe(new ItemStack(ObsidianDust), new ItemStack(ObsidianIngot)); - RecipeHandler.addCombinerRecipe(new ItemStack(ObsidianDust), new ItemStack(Block.obsidian)); - RecipeHandler.addCombinerRecipe(new ItemStack(IronDust, 2), new ItemStack(Block.oreIron)); - RecipeHandler.addCombinerRecipe(new ItemStack(GoldDust, 2), new ItemStack(Block.oreGold)); - RecipeHandler.addCrusherRecipe(new ItemStack(ObsidianIngot), new ItemStack(ObsidianDust)); - RecipeHandler.addCrusherRecipe(new ItemStack(Item.ingotIron), new ItemStack(IronDust)); - RecipeHandler.addCrusherRecipe(new ItemStack(Item.ingotGold), new ItemStack(GoldDust)); + 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)); GameRegistry.addShapelessRecipe(new ItemStack(EnrichedAlloy, 1), new Object[] { - Item.redstone, Item.lightStoneDust, IronDust, GoldDust, ObsidianDust, PlatinumDust + Item.redstone, Item.lightStoneDust, new ItemStack(Dust, 1, 0), new ItemStack(Dust, 1, 1), new ItemStack(Dust, 1, 3), new ItemStack(Dust, 1, 2) }); } @@ -982,6 +961,9 @@ 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/OreHandler.java b/src/common/net/uberkat/obsidian/common/OreHandler.java index 1d653bb5d..2214eb0c6 100644 --- a/src/common/net/uberkat/obsidian/common/OreHandler.java +++ b/src/common/net/uberkat/obsidian/common/OreHandler.java @@ -27,13 +27,20 @@ public class OreHandler implements IWorldGenerator { if(ObsidianIngots.oreGenerationEnabled == true) { - for (int i=0;i<6;i++) + for(int i=0;i<6;i++) { int randPosX = chunkX + random.nextInt(16); int randPosY = random.nextInt(60); int randPosZ = chunkZ + random.nextInt(16); (new WorldGenMinable(new ItemStack(ObsidianIngots.OreBlock, 1, 0).itemID, 8)).generate(world, random, randPosX, randPosY, randPosZ); } + for(int i=0;i<2;i++) + { + int randPosX = chunkX + random.nextInt(16); + int randPosY = random.nextInt(60); + int randPosZ = chunkZ + random.nextInt(16); + (new WorldGenMinable(new ItemStack(ObsidianIngots.OreBlock, 1, 1).itemID, 6)).generate(world, random, randPosX, randPosY, randPosZ); + } } } } diff --git a/src/common/net/uberkat/obsidian/common/PacketHandler.java b/src/common/net/uberkat/obsidian/common/PacketHandler.java index 65c8cb666..924039c82 100644 --- a/src/common/net/uberkat/obsidian/common/PacketHandler.java +++ b/src/common/net/uberkat/obsidian/common/PacketHandler.java @@ -18,6 +18,7 @@ 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; @@ -384,6 +385,84 @@ 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 97d52bf39..8e1527699 100644 --- a/src/common/net/uberkat/obsidian/common/RecipeHandler.java +++ b/src/common/net/uberkat/obsidian/common/RecipeHandler.java @@ -2,6 +2,7 @@ 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/TileEntityAdvancedElectricMachine.java b/src/common/net/uberkat/obsidian/common/TileEntityAdvancedElectricMachine.java index 4badcf636..be62eef3a 100644 --- a/src/common/net/uberkat/obsidian/common/TileEntityAdvancedElectricMachine.java +++ b/src/common/net/uberkat/obsidian/common/TileEntityAdvancedElectricMachine.java @@ -347,62 +347,16 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM public void readFromNBT(NBTTagCompound nbtTags) { - super.readFromNBT(nbtTags); - - if(PowerFramework.currentFramework != null) - { - PowerFramework.currentFramework.loadPowerProvider(this, nbtTags); - } - - NBTTagList tagList = nbtTags.getTagList("Items"); - inventory = new ItemStack[getSizeInventory()]; - - for (int slots = 0; slots < tagList.tagCount(); ++slots) - { - NBTTagCompound tagCompound = (NBTTagCompound)tagList.tagAt(slots); - byte slotID = tagCompound.getByte("Slot"); - - if (slotID >= 0 && slotID < inventory.length) - { - inventory[slotID] = ItemStack.loadItemStackFromNBT(tagCompound); - } - } - - operatingTicks = nbtTags.getInteger("operatingTicks"); - energyStored = nbtTags.getInteger("energyStored"); + super.readFromNBT(nbtTags); + secondaryEnergyStored = nbtTags.getInteger("secondaryEnergyStored"); - prevActive = isActive = nbtTags.getBoolean("isActive"); - facing = nbtTags.getInteger("facing"); } public void writeToNBT(NBTTagCompound nbtTags) { super.writeToNBT(nbtTags); - if(PowerFramework.currentFramework != null) - { - PowerFramework.currentFramework.savePowerProvider(this, nbtTags); - } - - nbtTags.setInteger("operatingTicks", operatingTicks); - nbtTags.setInteger("energyStored", energyStored); nbtTags.setInteger("secondaryEnergyStored", secondaryEnergyStored); - nbtTags.setBoolean("isActive", isActive); - nbtTags.setInteger("facing", facing); - NBTTagList tagList = new NBTTagList(); - - for (int slots = 0; slots < inventory.length; ++slots) - { - if (inventory[slots] != null) - { - NBTTagCompound tagCompound = new NBTTagCompound(); - tagCompound.setByte("Slot", (byte)slots); - inventory[slots].writeToNBT(tagCompound); - tagList.appendTag(tagCompound); - } - } - - nbtTags.setTag("Items", tagList); } /** diff --git a/src/common/net/uberkat/obsidian/common/TileEntityBasicMachine.java b/src/common/net/uberkat/obsidian/common/TileEntityBasicMachine.java index f9afc1750..bfe03fd6f 100644 --- a/src/common/net/uberkat/obsidian/common/TileEntityBasicMachine.java +++ b/src/common/net/uberkat/obsidian/common/TileEntityBasicMachine.java @@ -108,6 +108,32 @@ public abstract class TileEntityBasicMachine extends TileEntityElectricBlock imp } } + public void readFromNBT(NBTTagCompound nbtTags) + { + super.readFromNBT(nbtTags); + + if(PowerFramework.currentFramework != null) + { + PowerFramework.currentFramework.loadPowerProvider(this, nbtTags); + } + + operatingTicks = nbtTags.getInteger("operatingTicks"); + isActive = nbtTags.getBoolean("isActive"); + } + + public void writeToNBT(NBTTagCompound nbtTags) + { + super.writeToNBT(nbtTags); + + if(PowerFramework.currentFramework != null) + { + PowerFramework.currentFramework.savePowerProvider(this, nbtTags); + } + + nbtTags.setInteger("operatingTicks", operatingTicks); + nbtTags.setBoolean("isActive", isActive); + } + public void invalidate() { super.invalidate(); diff --git a/src/common/net/uberkat/obsidian/common/TileEntityElectricBlock.java b/src/common/net/uberkat/obsidian/common/TileEntityElectricBlock.java index 2f9f0359e..c6eb6f0c9 100644 --- a/src/common/net/uberkat/obsidian/common/TileEntityElectricBlock.java +++ b/src/common/net/uberkat/obsidian/common/TileEntityElectricBlock.java @@ -1,5 +1,6 @@ package net.uberkat.obsidian.common; +import buildcraft.api.power.PowerFramework; import obsidian.api.ITileNetwork; import universalelectricity.prefab.TileEntityDisableable; import ic2.api.EnergyNet; @@ -157,6 +158,50 @@ public abstract class TileEntityElectricBlock extends TileEntityDisableable impl } } + public void readFromNBT(NBTTagCompound nbtTags) + { + super.readFromNBT(nbtTags); + + NBTTagList tagList = nbtTags.getTagList("Items"); + inventory = new ItemStack[getSizeInventory()]; + + for (int slots = 0; slots < tagList.tagCount(); ++slots) + { + NBTTagCompound tagCompound = (NBTTagCompound)tagList.tagAt(slots); + byte slotID = tagCompound.getByte("Slot"); + + if (slotID >= 0 && slotID < inventory.length) + { + inventory[slotID] = ItemStack.loadItemStackFromNBT(tagCompound); + } + } + + energyStored = nbtTags.getInteger("energyStored"); + facing = nbtTags.getInteger("facing"); + } + + public void writeToNBT(NBTTagCompound nbtTags) + { + super.writeToNBT(nbtTags); + + nbtTags.setInteger("energyStored", energyStored); + nbtTags.setInteger("facing", facing); + NBTTagList tagList = new NBTTagList(); + + for (int slots = 0; slots < inventory.length; ++slots) + { + if (inventory[slots] != null) + { + NBTTagCompound tagCompound = new NBTTagCompound(); + tagCompound.setByte("Slot", (byte)slots); + inventory[slots].writeToNBT(tagCompound); + tagList.appendTag(tagCompound); + } + } + + nbtTags.setTag("Items", tagList); + } + public boolean isUseableByPlayer(EntityPlayer entityplayer) { return worldObj.getBlockTileEntity(xCoord, yCoord, zCoord) != this ? false : entityplayer.getDistanceSq((double)xCoord + 0.5D, (double)yCoord + 0.5D, (double)zCoord + 0.5D) <= 64.0D; diff --git a/src/common/net/uberkat/obsidian/common/TileEntityElectricMachine.java b/src/common/net/uberkat/obsidian/common/TileEntityElectricMachine.java index 8722b9770..b902b56ee 100644 --- a/src/common/net/uberkat/obsidian/common/TileEntityElectricMachine.java +++ b/src/common/net/uberkat/obsidian/common/TileEntityElectricMachine.java @@ -282,64 +282,6 @@ public abstract class TileEntityElectricMachine extends TileEntityBasicMachine e.printStackTrace(); } } - - public void readFromNBT(NBTTagCompound nbtTags) - { - super.readFromNBT(nbtTags); - - if(PowerFramework.currentFramework != null) - { - PowerFramework.currentFramework.loadPowerProvider(this, nbtTags); - } - - NBTTagList tagList = nbtTags.getTagList("Items"); - inventory = new ItemStack[getSizeInventory()]; - - for (int slots = 0; slots < tagList.tagCount(); ++slots) - { - NBTTagCompound tagCompound = (NBTTagCompound)tagList.tagAt(slots); - byte slotID = tagCompound.getByte("Slot"); - - if (slotID >= 0 && slotID < inventory.length) - { - inventory[slotID] = ItemStack.loadItemStackFromNBT(tagCompound); - } - } - - operatingTicks = nbtTags.getInteger("operatingTicks"); - energyStored = nbtTags.getInteger("energyStored"); - isActive = nbtTags.getBoolean("isActive"); - facing = nbtTags.getInteger("facing"); - } - - public void writeToNBT(NBTTagCompound nbtTags) - { - super.writeToNBT(nbtTags); - - if(PowerFramework.currentFramework != null) - { - PowerFramework.currentFramework.savePowerProvider(this, nbtTags); - } - - nbtTags.setInteger("operatingTicks", operatingTicks); - nbtTags.setInteger("energyStored", energyStored); - nbtTags.setBoolean("isActive", isActive); - nbtTags.setInteger("facing", facing); - NBTTagList tagList = new NBTTagList(); - - for (int slots = 0; slots < inventory.length; ++slots) - { - if (inventory[slots] != null) - { - NBTTagCompound tagCompound = new NBTTagCompound(); - tagCompound.setByte("Slot", (byte)slots); - inventory[slots].writeToNBT(tagCompound); - tagList.appendTag(tagCompound); - } - } - - nbtTags.setTag("Items", tagList); - } public String[] getMethodNames() { diff --git a/src/common/net/uberkat/obsidian/common/TileEntityPlatinumCompressor.java b/src/common/net/uberkat/obsidian/common/TileEntityPlatinumCompressor.java index 522e91671..0c0069e16 100644 --- a/src/common/net/uberkat/obsidian/common/TileEntityPlatinumCompressor.java +++ b/src/common/net/uberkat/obsidian/common/TileEntityPlatinumCompressor.java @@ -27,7 +27,7 @@ public class TileEntityPlatinumCompressor extends TileEntityAdvancedElectricMach public int getFuelTicks(ItemStack itemstack) { - if (itemstack.itemID == ObsidianIngots.PlatinumIngot.shiftedIndex) return 200; + if (itemstack.itemID == new ItemStack(ObsidianIngots.Ingot, 1, 1).itemID) return 200; return 0; } } diff --git a/src/common/net/uberkat/obsidian/hawk/common/ContainerTeleporter.java b/src/common/net/uberkat/obsidian/hawk/common/ContainerTeleporter.java new file mode 100644 index 000000000..730afc2d2 --- /dev/null +++ b/src/common/net/uberkat/obsidian/hawk/common/ContainerTeleporter.java @@ -0,0 +1,32 @@ +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 new file mode 100644 index 000000000..eada42739 --- /dev/null +++ b/src/common/net/uberkat/obsidian/hawk/common/ContainerWasher.java @@ -0,0 +1,122 @@ +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 new file mode 100644 index 000000000..afb1b9e61 --- /dev/null +++ b/src/common/net/uberkat/obsidian/hawk/common/HawkCore.java @@ -0,0 +1,134 @@ + +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 new file mode 100644 index 000000000..37121f3d8 --- /dev/null +++ b/src/common/net/uberkat/obsidian/hawk/common/HawksMachinery.java @@ -0,0 +1,70 @@ + +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 new file mode 100644 index 000000000..6c8e06760 --- /dev/null +++ b/src/common/net/uberkat/obsidian/hawk/common/TileEntityDamagableMachine.java @@ -0,0 +1,52 @@ +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 new file mode 100644 index 000000000..776d74813 --- /dev/null +++ b/src/common/net/uberkat/obsidian/hawk/common/TileEntityEndiumChunkloader.java @@ -0,0 +1,50 @@ +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 new file mode 100644 index 000000000..a15bd8b54 --- /dev/null +++ b/src/common/net/uberkat/obsidian/hawk/common/TileEntityTeleporter.java @@ -0,0 +1,72 @@ + +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 new file mode 100644 index 000000000..e853727ee --- /dev/null +++ b/src/common/net/uberkat/obsidian/hawk/common/TileEntityWasher.java @@ -0,0 +1,266 @@ +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 87dd64d32..1b9dc92ae 100644 --- a/src/minecraft/net/uberkat/obsidian/client/ClientProxy.java +++ b/src/minecraft/net/uberkat/obsidian/client/ClientProxy.java @@ -35,6 +35,10 @@ 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. @@ -61,6 +65,10 @@ public class ClientProxy extends CommonProxy MinecraftForgeClient.preloadTexture("/textures/ElementizerBack.png"); MinecraftForgeClient.preloadTexture("/textures/ElementizerSide.png"); + //Hawk's Machines + MinecraftForgeClient.preloadTexture("/textures/hawk/blocks.png"); + MinecraftForgeClient.preloadTexture("/textures/hawk/items.png"); + //Register animated TextureFX for machines try { TextureFXManager.instance().addAnimation(new TextureAnimatedFX("/textures/CompressorFront.png", ObsidianIngots.ANIMATED_TEXTURE_INDEX)); @@ -122,6 +130,12 @@ 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 new file mode 100644 index 000000000..86abb2ae5 --- /dev/null +++ b/src/minecraft/net/uberkat/obsidian/hawk/client/GuiTeleporter.java @@ -0,0 +1,38 @@ + +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 new file mode 100644 index 000000000..398399337 --- /dev/null +++ b/src/minecraft/net/uberkat/obsidian/hawk/client/GuiWasher.java @@ -0,0 +1,60 @@ + +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); + } +}