diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 437f4fded..adad59101 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -829,6 +829,8 @@ public class ModBlocks { public static Block machine_refinery; public static final int guiID_machine_refinery = 43; + + public static Block machine_fraction_tower; public static Block machine_boiler_off; public static Block machine_boiler_on; @@ -1912,6 +1914,7 @@ public class ModBlocks { oil_pipe = new BlockNoDrop(Material.iron).setBlockName("oil_pipe").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":oil_pipe"); machine_flare = new MachineGasFlare(Material.iron).setBlockName("machine_flare").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_flare"); machine_refinery = new MachineRefinery(Material.iron).setBlockName("machine_refinery").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_refinery"); + machine_fraction_tower = new MachineFractionTower(Material.iron).setBlockName("machine_fraction_tower").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_fraction_tower"); machine_drill = new MachineMiningDrill(Material.iron).setBlockName("machine_drill").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_drill"); drill_pipe = new BlockNoDrop(Material.iron).setBlockName("drill_pipe").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":drill_pipe"); machine_mining_laser = new MachineMiningLaser(Material.iron).setBlockName("machine_mining_laser").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_mining_laser"); diff --git a/src/main/java/com/hbm/blocks/generic/YellowBarrel.java b/src/main/java/com/hbm/blocks/generic/YellowBarrel.java index 1178c0809..7824939da 100644 --- a/src/main/java/com/hbm/blocks/generic/YellowBarrel.java +++ b/src/main/java/com/hbm/blocks/generic/YellowBarrel.java @@ -107,7 +107,6 @@ public class YellowBarrel extends Block { @Override public int tickRate(World world) { - return 20; } diff --git a/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java b/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java new file mode 100644 index 000000000..8ed63752a --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java @@ -0,0 +1,85 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.handler.FluidTypeHandler.FluidType; +import com.hbm.items.ModItems; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.machine.TileEntityMachineFractionTower; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; + +public class MachineFractionTower extends BlockDummyable { + + public MachineFractionTower(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= 12) + return new TileEntityMachineFractionTower(); + + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {2, 0, 1, 1, 1, 1}; + } + + @Override + public int getOffset() { + return 1; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(!player.isSneaking()) { + + if(player.getHeldItem() == null || player.getHeldItem().getItem() == ModItems.fluid_identifier) { + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(!(te instanceof TileEntityMachineFractionTower)) + return false; + + TileEntityMachineFractionTower frac = (TileEntityMachineFractionTower) te; + + if(player.getHeldItem() == null) { + + for(int i = 0; i < frac.tanks.length; i++) + player.addChatComponentMessage(new ChatComponentText(frac.tanks[i].getTankType() + ": " + frac.tanks[i].getFill() + "/" + frac.tanks[i].getMaxFill() + "mB")); + } else { + + if(world.getTileEntity(pos[0], pos[1] - 3, pos[2]) instanceof TileEntityMachineFractionTower) { + player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.RED + "You can only change the type in the bottom segment!")); + } else { + FluidType type = FluidType.values()[player.getHeldItem().getItemDamage()]; + frac.tanks[0].setTankType(type); + frac.markDirty(); + player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Changed type to " + type + "!")); + } + } + + return true; + } + return false; + + } else { + return true; + } + } +} diff --git a/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java b/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java index 92916c76b..6c945b22c 100644 --- a/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java @@ -8,6 +8,7 @@ import java.util.List; import java.util.Map; import com.hbm.inventory.MachineRecipes; +import com.hbm.inventory.RefineryRecipes; import com.hbm.inventory.gui.GUIMachineRefinery; import com.hbm.lib.RefStrings; @@ -85,7 +86,7 @@ public class RefineryRecipeHandler extends TemplateRecipeHandler { @Override public void loadCraftingRecipes(String outputId, Object... results) { if ((outputId.equals("refinery")) && getClass() == RefineryRecipeHandler.class) { - Map recipes = MachineRecipes.instance().getRefineryRecipe(); + Map recipes = RefineryRecipes.getRefineryRecipe(); for (Map.Entry recipe : recipes.entrySet()) { this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue()[0], (ItemStack)recipe.getValue()[1], @@ -99,7 +100,7 @@ public class RefineryRecipeHandler extends TemplateRecipeHandler { @Override public void loadCraftingRecipes(ItemStack result) { - Map recipes = MachineRecipes.instance().getRefineryRecipe(); + Map recipes = RefineryRecipes.getRefineryRecipe(); for (Map.Entry recipe : recipes.entrySet()) { if (compareFluidStacks((ItemStack)recipe.getValue()[0], result) || compareFluidStacks((ItemStack)recipe.getValue()[1], result) || @@ -124,7 +125,7 @@ public class RefineryRecipeHandler extends TemplateRecipeHandler { @Override public void loadUsageRecipes(ItemStack ingredient) { - Map recipes = MachineRecipes.instance().getRefineryRecipe(); + Map recipes = RefineryRecipes.getRefineryRecipe(); for (Map.Entry recipe : recipes.entrySet()) { if (compareFluidStacks(ingredient, (ItemStack)recipe.getKey())) this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey(), diff --git a/src/main/java/com/hbm/inventory/AnvilRecipes.java b/src/main/java/com/hbm/inventory/AnvilRecipes.java index c1e3aabdf..2be45c828 100644 --- a/src/main/java/com/hbm/inventory/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/AnvilRecipes.java @@ -169,20 +169,20 @@ public class AnvilRecipes { new AnvilOutput(new ItemStack(ModItems.wings_limp))).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe( - new AStack[] {new OreDictStack("ingotDesh", 2), new OreDictStack("dustPolymer", 2), new ComparableStack(ModItems.ingot_dura_steel, 1)}, + new AStack[] {new OreDictStack("ingotDesh", 4), new OreDictStack("dustPolymer", 2), new ComparableStack(ModItems.ingot_dura_steel, 1)}, new AnvilOutput(new ItemStack(ModItems.plate_desh, 4))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe( - new AStack[] {new OreDictStack("ingotEuphemium", 2), new ComparableStack(ModItems.powder_astatine, 2), new ComparableStack(Items.nether_star, 1)}, + new AStack[] {new OreDictStack("ingotEuphemium", 4), new ComparableStack(ModItems.powder_astatine, 2), new ComparableStack(ModItems.gem_volcanic, 1)}, new AnvilOutput(new ItemStack(ModItems.plate_euphemium, 4))).setTier(6)); constructionRecipes.add(new AnvilConstructionRecipe( - new AStack[] {new OreDictStack("ingotDineutronium", 2), new ComparableStack(ModItems.powder_spark_mix, 2), new OreDictStack("ingotDesh", 1)}, + new AStack[] {new OreDictStack("ingotDineutronium", 4), new ComparableStack(ModItems.powder_spark_mix, 2), new OreDictStack("ingotDesh", 1)}, new AnvilOutput(new ItemStack(ModItems.plate_dineutronium, 4))).setTier(7)); constructionRecipes.add(new AnvilConstructionRecipe( - new AStack[] {new OreDictStack("plateTitanium", 4), new OreDictStack("ingotSteel", 1), new ComparableStack(ModItems.bolt_tungsten, 2)}, + new AStack[] {new OreDictStack("plateTitanium", 2), new OreDictStack("ingotSteel", 1), new ComparableStack(ModItems.bolt_tungsten, 2)}, new AnvilOutput(new ItemStack(ModItems.plate_armor_titanium))).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe( - new AStack[] {new OreDictStack("plateIron", 4), new ComparableStack(ModItems.plate_saturnite, 4), new ComparableStack(ModItems.plate_armor_titanium, 1)}, + new AStack[] {new OreDictStack("plateIron", 4), new ComparableStack(ModItems.plate_saturnite, 2), new ComparableStack(ModItems.plate_armor_titanium, 1)}, new AnvilOutput(new ItemStack(ModItems.plate_armor_ajr))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] {new ComparableStack(ModItems.plate_advanced_alloy, 4), new ComparableStack(ModItems.plate_armor_titanium, 1), new ComparableStack(ModItems.wire_tungsten, 6)}, @@ -194,7 +194,7 @@ public class AnvilRecipes { new AStack[] {new ComparableStack(ModItems.ingot_meteorite_forged, 4), new OreDictStack("ingotDesh", 1), new ComparableStack(ModItems.billet_yharonite, 1)}, new AnvilOutput(new ItemStack(ModItems.plate_armor_fau))).setTier(6)); constructionRecipes.add(new AnvilConstructionRecipe( - new AStack[] {new ComparableStack(ModItems.plate_dineutronium, 4), new ComparableStack(ModItems.particle_sparkticle, 1), new ComparableStack(ModItems.plate_armor_fau, 1)}, + new AStack[] {new ComparableStack(ModItems.plate_dineutronium, 4), new ComparableStack(ModItems.particle_sparkticle, 1), new ComparableStack(ModItems.plate_armor_fau, 6)}, new AnvilOutput(new ItemStack(ModItems.plate_armor_dnt))).setTier(7)); } @@ -202,74 +202,74 @@ public class AnvilRecipes { public static void registerConstructionAmmo() { Object[][] recs = new Object[][] { - new Object[] {ModItems.ammo_12gauge, ModItems.powder_fire, ModItems.ammo_12gauge_incendiary, 20, 2}, - new Object[] {ModItems.ammo_12gauge, Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_12gauge_shrapnel, 20, 2}, - new Object[] {ModItems.ammo_12gauge, ModItems.ingot_u238, ModItems.ammo_12gauge_du, 20, 3}, - new Object[] {ModItems.ammo_12gauge, ModItems.coin_maskman, ModItems.ammo_12gauge_sleek, 100, 4}, + {ModItems.ammo_12gauge, ModItems.powder_fire, ModItems.ammo_12gauge_incendiary, 20, 2}, + {ModItems.ammo_12gauge, Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_12gauge_shrapnel, 20, 2}, + {ModItems.ammo_12gauge, ModItems.ingot_u238, ModItems.ammo_12gauge_du, 20, 3}, + {ModItems.ammo_12gauge, ModItems.coin_maskman, ModItems.ammo_12gauge_sleek, 100, 4}, - new Object[] {ModItems.ammo_20gauge, ModItems.powder_fire, ModItems.ammo_20gauge_incendiary, 20, 2}, - new Object[] {ModItems.ammo_20gauge, Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_20gauge_shrapnel, 20, 2}, - new Object[] {ModItems.ammo_20gauge, ModItems.powder_poison, ModItems.ammo_20gauge_caustic, 20, 2}, - new Object[] {ModItems.ammo_20gauge, "dustDiamond", ModItems.ammo_20gauge_shock, 20, 2}, - new Object[] {ModItems.ammo_20gauge, Item.getItemFromBlock(Blocks.soul_sand), ModItems.ammo_20gauge_wither, 10, 3}, - new Object[] {ModItems.ammo_20gauge, ModItems.coin_maskman, ModItems.ammo_20gauge_sleek, 100, 4}, + {ModItems.ammo_20gauge, ModItems.powder_fire, ModItems.ammo_20gauge_incendiary, 20, 2}, + {ModItems.ammo_20gauge, Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_20gauge_shrapnel, 20, 2}, + {ModItems.ammo_20gauge, ModItems.powder_poison, ModItems.ammo_20gauge_caustic, 20, 2}, + {ModItems.ammo_20gauge, "dustDiamond", ModItems.ammo_20gauge_shock, 20, 2}, + {ModItems.ammo_20gauge, Item.getItemFromBlock(Blocks.soul_sand), ModItems.ammo_20gauge_wither, 10, 3}, + {ModItems.ammo_20gauge, ModItems.coin_maskman, ModItems.ammo_20gauge_sleek, 100, 4}, - new Object[] {ModItems.ammo_4gauge_flechette, ModItems.ingot_phosphorus, ModItems.ammo_4gauge_flechette_phosphorus, 20, 2}, - new Object[] {ModItems.ammo_4gauge_explosive, ModItems.egg_balefire_shard, ModItems.ammo_4gauge_balefire, 10, 4}, - new Object[] {ModItems.ammo_4gauge_explosive, ModItems.ammo_rocket, ModItems.ammo_4gauge_kampf, 4, 2}, - new Object[] {ModItems.ammo_4gauge_kampf, ModItems.pellet_canister, ModItems.ammo_4gauge_canister, 10, 3}, - new Object[] {ModItems.ammo_4gauge, ModItems.pellet_claws, ModItems.ammo_4gauge_claw, 4, 5}, - new Object[] {ModItems.ammo_4gauge, ModItems.toothpicks, ModItems.ammo_4gauge_vampire, 4, 5}, - new Object[] {ModItems.ammo_4gauge, ModItems.pellet_charged, ModItems.ammo_4gauge_void, 1, 5}, - new Object[] {ModItems.ammo_4gauge, ModItems.coin_maskman, ModItems.ammo_4gauge_sleek, 100, 4}, + {ModItems.ammo_4gauge_flechette, ModItems.ingot_phosphorus, ModItems.ammo_4gauge_flechette_phosphorus, 20, 2}, + {ModItems.ammo_4gauge_explosive, ModItems.egg_balefire_shard, ModItems.ammo_4gauge_balefire, 10, 4}, + {ModItems.ammo_4gauge_explosive, ModItems.ammo_rocket, ModItems.ammo_4gauge_kampf, 4, 2}, + {ModItems.ammo_4gauge_kampf, ModItems.pellet_canister, ModItems.ammo_4gauge_canister, 10, 3}, + {ModItems.ammo_4gauge, ModItems.pellet_claws, ModItems.ammo_4gauge_claw, 4, 5}, + {ModItems.ammo_4gauge, ModItems.toothpicks, ModItems.ammo_4gauge_vampire, 4, 5}, + {ModItems.ammo_4gauge, ModItems.pellet_charged, ModItems.ammo_4gauge_void, 1, 5}, + {ModItems.ammo_4gauge, ModItems.coin_maskman, ModItems.ammo_4gauge_sleek, 100, 4}, - new Object[] {ModItems.ammo_44, ModItems.ingot_dura_steel, ModItems.ammo_44_ap, 20, 2}, - new Object[] {ModItems.ammo_44, ModItems.ingot_u238, ModItems.ammo_44_du, 20, 2}, - new Object[] {ModItems.ammo_44, ModItems.ingot_phosphorus, ModItems.ammo_44_phosphorus, 20, 2}, - new Object[] {ModItems.ammo_44_du, ModItems.ingot_starmetal, ModItems.ammo_44_star, 10, 3}, - new Object[] {ModItems.ammo_44, ModItems.pellet_chlorophyte, ModItems.ammo_44_chlorophyte, 10, 3}, + {ModItems.ammo_44, ModItems.ingot_dura_steel, ModItems.ammo_44_ap, 20, 2}, + {ModItems.ammo_44, ModItems.ingot_u238, ModItems.ammo_44_du, 20, 2}, + {ModItems.ammo_44, ModItems.ingot_phosphorus, ModItems.ammo_44_phosphorus, 20, 2}, + {ModItems.ammo_44_du, ModItems.ingot_starmetal, ModItems.ammo_44_star, 10, 3}, + {ModItems.ammo_44, ModItems.pellet_chlorophyte, ModItems.ammo_44_chlorophyte, 10, 3}, - new Object[] {ModItems.ammo_5mm, ModItems.ingot_semtex, ModItems.ammo_5mm_explosive, 20, 2}, - new Object[] {ModItems.ammo_5mm, ModItems.ingot_u238, ModItems.ammo_5mm_du, 20, 2}, - new Object[] {ModItems.ammo_5mm, ModItems.ingot_starmetal, ModItems.ammo_5mm_star, 10, 3}, - new Object[] {ModItems.ammo_5mm, ModItems.pellet_chlorophyte, ModItems.ammo_5mm_chlorophyte, 10, 3}, + {ModItems.ammo_5mm, ModItems.ingot_semtex, ModItems.ammo_5mm_explosive, 20, 2}, + {ModItems.ammo_5mm, ModItems.ingot_u238, ModItems.ammo_5mm_du, 20, 2}, + {ModItems.ammo_5mm, ModItems.ingot_starmetal, ModItems.ammo_5mm_star, 10, 3}, + {ModItems.ammo_5mm, ModItems.pellet_chlorophyte, ModItems.ammo_5mm_chlorophyte, 10, 3}, - new Object[] {ModItems.ammo_9mm, ModItems.ingot_dura_steel, ModItems.ammo_9mm_ap, 20, 2}, - new Object[] {ModItems.ammo_9mm, ModItems.ingot_u238, ModItems.ammo_9mm_du, 20, 2}, - new Object[] {ModItems.ammo_9mm, ModItems.pellet_chlorophyte, ModItems.ammo_9mm_chlorophyte, 10, 3}, + {ModItems.ammo_9mm, ModItems.ingot_dura_steel, ModItems.ammo_9mm_ap, 20, 2}, + {ModItems.ammo_9mm, ModItems.ingot_u238, ModItems.ammo_9mm_du, 20, 2}, + {ModItems.ammo_9mm, ModItems.pellet_chlorophyte, ModItems.ammo_9mm_chlorophyte, 10, 3}, - new Object[] {ModItems.ammo_22lr, ModItems.ingot_dura_steel, ModItems.ammo_22lr_ap, 20, 2}, - new Object[] {ModItems.ammo_22lr, ModItems.pellet_chlorophyte, ModItems.ammo_22lr_chlorophyte, 10, 3}, + {ModItems.ammo_22lr, ModItems.ingot_dura_steel, ModItems.ammo_22lr_ap, 20, 2}, + {ModItems.ammo_22lr, ModItems.pellet_chlorophyte, ModItems.ammo_22lr_chlorophyte, 10, 3}, - new Object[] {ModItems.ammo_50bmg, ModItems.powder_fire, ModItems.ammo_50bmg_incendiary, 20, 2}, - new Object[] {ModItems.ammo_50bmg, ModItems.ingot_phosphorus, ModItems.ammo_50bmg_phosphorus, 20, 2}, - new Object[] {ModItems.ammo_50bmg, ModItems.ingot_semtex, ModItems.ammo_50bmg_explosive, 20, 2}, - new Object[] {ModItems.ammo_50bmg, ModItems.ingot_dura_steel, ModItems.ammo_50bmg_ap, 20, 2}, - new Object[] {ModItems.ammo_50bmg, ModItems.ingot_u238, ModItems.ammo_50bmg_du, 20, 2}, - new Object[] {ModItems.ammo_50bmg_du, ModItems.ingot_starmetal, ModItems.ammo_50bmg_star, 10, 3}, - new Object[] {ModItems.ammo_50bmg, ModItems.pellet_chlorophyte, ModItems.ammo_50bmg_chlorophyte, 10, 3}, - new Object[] {ModItems.ammo_50bmg, ModItems.coin_maskman, ModItems.ammo_50bmg_sleek, 100, 4}, - new Object[] {ModItems.ammo_50bmg_flechette, ModItems.nugget_am_mix, ModItems.ammo_50bmg_flechette_am, 10, 3}, - new Object[] {ModItems.ammo_50bmg_flechette, ModItems.powder_polonium, ModItems.ammo_50bmg_flechette_po, 20, 3}, + {ModItems.ammo_50bmg, ModItems.powder_fire, ModItems.ammo_50bmg_incendiary, 20, 2}, + {ModItems.ammo_50bmg, ModItems.ingot_phosphorus, ModItems.ammo_50bmg_phosphorus, 20, 2}, + {ModItems.ammo_50bmg, ModItems.ingot_semtex, ModItems.ammo_50bmg_explosive, 20, 2}, + {ModItems.ammo_50bmg, ModItems.ingot_dura_steel, ModItems.ammo_50bmg_ap, 20, 2}, + {ModItems.ammo_50bmg, ModItems.ingot_u238, ModItems.ammo_50bmg_du, 20, 2}, + {ModItems.ammo_50bmg_du, ModItems.ingot_starmetal, ModItems.ammo_50bmg_star, 10, 3}, + {ModItems.ammo_50bmg, ModItems.pellet_chlorophyte, ModItems.ammo_50bmg_chlorophyte, 10, 3}, + {ModItems.ammo_50bmg, ModItems.coin_maskman, ModItems.ammo_50bmg_sleek, 100, 4}, + {ModItems.ammo_50bmg_flechette, ModItems.nugget_am_mix, ModItems.ammo_50bmg_flechette_am, 10, 3}, + {ModItems.ammo_50bmg_flechette, ModItems.powder_polonium, ModItems.ammo_50bmg_flechette_po, 20, 3}, - new Object[] {ModItems.ammo_50ae, ModItems.ingot_dura_steel, ModItems.ammo_50ae_ap, 20, 2}, - new Object[] {ModItems.ammo_50ae, ModItems.ingot_u238, ModItems.ammo_50ae_du, 20, 2}, - new Object[] {ModItems.ammo_50ae_du, ModItems.ingot_starmetal, ModItems.ammo_50ae_star, 10, 3}, - new Object[] {ModItems.ammo_50ae, ModItems.pellet_chlorophyte, ModItems.ammo_50ae_chlorophyte, 10, 3}, + {ModItems.ammo_50ae, ModItems.ingot_dura_steel, ModItems.ammo_50ae_ap, 20, 2}, + {ModItems.ammo_50ae, ModItems.ingot_u238, ModItems.ammo_50ae_du, 20, 2}, + {ModItems.ammo_50ae_du, ModItems.ingot_starmetal, ModItems.ammo_50ae_star, 10, 3}, + {ModItems.ammo_50ae, ModItems.pellet_chlorophyte, ModItems.ammo_50ae_chlorophyte, 10, 3}, - new Object[] {ModItems.ammo_556, ModItems.ingot_phosphorus, ModItems.ammo_556_phosphorus, 20, 2}, - new Object[] {ModItems.ammo_556, ModItems.ingot_dura_steel, ModItems.ammo_556_ap, 20, 2}, - new Object[] {ModItems.ammo_556, ModItems.ingot_u238, ModItems.ammo_556_du, 20, 2}, - new Object[] {ModItems.ammo_556_du, ModItems.ingot_starmetal, ModItems.ammo_556_star, 10, 3}, - new Object[] {ModItems.ammo_556, ModItems.pellet_chlorophyte, ModItems.ammo_556_chlorophyte, 10, 3}, - new Object[] {ModItems.ammo_556, ModItems.coin_maskman, ModItems.ammo_556_sleek, 100, 4}, - new Object[] {ModItems.ammo_556, Items.redstone, ModItems.ammo_556_tracer, 20, 2}, - new Object[] {ModItems.ammo_556, ModItems.pellet_flechette, ModItems.ammo_556_flechette, 20, 2}, - new Object[] {ModItems.ammo_556_flechette, ModItems.powder_fire, ModItems.ammo_556_flechette_incendiary, 20, 2}, - new Object[] {ModItems.ammo_556_flechette, ModItems.ingot_phosphorus, ModItems.ammo_556_flechette_phosphorus, 20, 2}, - new Object[] {ModItems.ammo_556_flechette, ModItems.ingot_u238, ModItems.ammo_556_flechette_du, 20, 2}, - new Object[] {ModItems.ammo_556_flechette, ModItems.coin_maskman, ModItems.ammo_556_flechette_sleek, 100, 4}, - new Object[] {ModItems.ammo_556_flechette, ModItems.pellet_chlorophyte, ModItems.ammo_556_flechette_chlorophyte, 10, 3}, + {ModItems.ammo_556, ModItems.ingot_phosphorus, ModItems.ammo_556_phosphorus, 20, 2}, + {ModItems.ammo_556, ModItems.ingot_dura_steel, ModItems.ammo_556_ap, 20, 2}, + {ModItems.ammo_556, ModItems.ingot_u238, ModItems.ammo_556_du, 20, 2}, + {ModItems.ammo_556_du, ModItems.ingot_starmetal, ModItems.ammo_556_star, 10, 3}, + {ModItems.ammo_556, ModItems.pellet_chlorophyte, ModItems.ammo_556_chlorophyte, 10, 3}, + {ModItems.ammo_556, ModItems.coin_maskman, ModItems.ammo_556_sleek, 100, 4}, + {ModItems.ammo_556, Items.redstone, ModItems.ammo_556_tracer, 20, 2}, + {ModItems.ammo_556, ModItems.pellet_flechette, ModItems.ammo_556_flechette, 20, 2}, + {ModItems.ammo_556_flechette, ModItems.powder_fire, ModItems.ammo_556_flechette_incendiary, 20, 2}, + {ModItems.ammo_556_flechette, ModItems.ingot_phosphorus, ModItems.ammo_556_flechette_phosphorus, 20, 2}, + {ModItems.ammo_556_flechette, ModItems.ingot_u238, ModItems.ammo_556_flechette_du, 20, 2}, + {ModItems.ammo_556_flechette, ModItems.coin_maskman, ModItems.ammo_556_flechette_sleek, 100, 4}, + {ModItems.ammo_556_flechette, ModItems.pellet_chlorophyte, ModItems.ammo_556_flechette_chlorophyte, 10, 3}, }; for(Object[] objs : recs) { diff --git a/src/main/java/com/hbm/inventory/MachineRecipes.java b/src/main/java/com/hbm/inventory/MachineRecipes.java index 18cf336ed..89fe6777b 100644 --- a/src/main/java/com/hbm/inventory/MachineRecipes.java +++ b/src/main/java/com/hbm/inventory/MachineRecipes.java @@ -1564,40 +1564,6 @@ public class MachineRecipes { return recipes; } - public Map getRefineryRecipe() { - - Map recipes = new HashMap(); - - ItemStack oil = new ItemStack(ModItems.fluid_icon, 1, Arrays.asList(FluidType.values()).indexOf(FluidType.HOTOIL)); - oil.stackTagCompound = new NBTTagCompound(); - oil.stackTagCompound.setInteger("fill", 1000); - - ItemStack heavy = new ItemStack(ModItems.fluid_icon, 1, Arrays.asList(FluidType.values()).indexOf(FluidType.HEAVYOIL)); - heavy.stackTagCompound = new NBTTagCompound(); - heavy.stackTagCompound.setInteger("fill", 500); - - ItemStack naphtha = new ItemStack(ModItems.fluid_icon, 1, Arrays.asList(FluidType.values()).indexOf(FluidType.NAPHTHA)); - naphtha.stackTagCompound = new NBTTagCompound(); - naphtha.stackTagCompound.setInteger("fill", 250); - - ItemStack light = new ItemStack(ModItems.fluid_icon, 1, Arrays.asList(FluidType.values()).indexOf(FluidType.LIGHTOIL)); - light.stackTagCompound = new NBTTagCompound(); - light.stackTagCompound.setInteger("fill", 150); - - ItemStack petroleum = new ItemStack(ModItems.fluid_icon, 1, Arrays.asList(FluidType.values()).indexOf(FluidType.PETROLEUM)); - petroleum.stackTagCompound = new NBTTagCompound(); - petroleum.stackTagCompound.setInteger("fill", 100); - - recipes.put(oil , new ItemStack[] { - heavy, - naphtha, - light, - petroleum, - new ItemStack(ModItems.sulfur, 1) }); - - return recipes; - } - public Map getBoilerRecipes() { Map recipes = new HashMap(); @@ -2174,20 +2140,20 @@ public class MachineRecipes { switch(ItemChemistryTemplate.EnumChemistryTemplate.getEnum(stack.getItemDamage())) { case FP_HEAVYOIL: - output[0] = new FluidStack(300, FluidType.BITUMEN); - output[1] = new FluidStack(700, FluidType.SMEAR); + output[0] = new FluidStack(RefineryRecipes.heavy_frac_bitu * 10, FluidType.BITUMEN); + output[1] = new FluidStack(RefineryRecipes.heavy_frac_smear * 10, FluidType.SMEAR); break; case FP_SMEAR: - output[0] = new FluidStack(600, FluidType.HEATINGOIL); - output[1] = new FluidStack(400, FluidType.LUBRICANT); + output[0] = new FluidStack(RefineryRecipes.smear_frac_heat * 10, FluidType.HEATINGOIL); + output[1] = new FluidStack(RefineryRecipes.smear_frac_lube * 10, FluidType.LUBRICANT); break; case FP_NAPHTHA: - output[0] = new FluidStack(400, FluidType.HEATINGOIL); - output[1] = new FluidStack(600, FluidType.DIESEL); + output[0] = new FluidStack(RefineryRecipes.napth_frac_heat * 10, FluidType.HEATINGOIL); + output[1] = new FluidStack(RefineryRecipes.napth_frac_diesel * 10, FluidType.DIESEL); break; case FP_LIGHTOIL: - output[0] = new FluidStack(400, FluidType.DIESEL); - output[1] = new FluidStack(600, FluidType.KEROSENE); + output[0] = new FluidStack(RefineryRecipes.light_frac_diesel * 10, FluidType.DIESEL); + output[1] = new FluidStack(RefineryRecipes.light_frac_kero * 10, FluidType.KEROSENE); break; case FR_REOIL: output[0] = new FluidStack(800, FluidType.RECLAIMED); diff --git a/src/main/java/com/hbm/inventory/RefineryRecipes.java b/src/main/java/com/hbm/inventory/RefineryRecipes.java new file mode 100644 index 000000000..7f1572542 --- /dev/null +++ b/src/main/java/com/hbm/inventory/RefineryRecipes.java @@ -0,0 +1,59 @@ +package com.hbm.inventory; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +import com.hbm.handler.FluidTypeHandler.FluidType; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemFluidIcon; +import com.hbm.util.Tuple.Quartet; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +public class RefineryRecipes { + + /// fractions in percent /// + public static final int oil_frac_heavy = 50; + public static final int oil_frac_naph = 25; + public static final int oil_frac_light = 15; + public static final int oil_frac_petro = 10; + + public static final int heavy_frac_bitu = 30; + public static final int heavy_frac_smear = 70; + public static final int smear_frac_heat = 60; + public static final int smear_frac_lube = 40; + public static final int napth_frac_heat = 40; + public static final int napth_frac_diesel = 60; + public static final int light_frac_diesel = 40; + public static final int light_frac_kero = 60; + + private static Map> fractions = new HashMap(); + + public static Map getRefineryRecipe() { + + Map recipes = new HashMap(); + + recipes.put(ItemFluidIcon.make(FluidType.HOTOIL, 1000), + new ItemStack[] { + ItemFluidIcon.make(FluidType.HEAVYOIL, oil_frac_heavy * 10), + ItemFluidIcon.make(FluidType.NAPHTHA, oil_frac_naph * 10), + ItemFluidIcon.make(FluidType.LIGHTOIL, oil_frac_light * 10), + ItemFluidIcon.make(FluidType.PETROLEUM, oil_frac_petro * 10), + new ItemStack(ModItems.sulfur, 1) }); + + return recipes; + } + + public static void registerFractions() { + fractions.put(FluidType.HEAVYOIL, new Quartet(FluidType.BITUMEN, FluidType.SMEAR, heavy_frac_bitu, heavy_frac_smear)); + fractions.put(FluidType.SMEAR, new Quartet(FluidType.HEATINGOIL, FluidType.LUBRICANT, smear_frac_heat, smear_frac_lube)); + fractions.put(FluidType.NAPHTHA, new Quartet(FluidType.HEATINGOIL, FluidType.DIESEL, napth_frac_heat, napth_frac_diesel)); + fractions.put(FluidType.LIGHTOIL, new Quartet(FluidType.DIESEL, FluidType.KEROSENE, light_frac_diesel, light_frac_kero)); + } + + public static Quartet getFractions(FluidType oil) { + return fractions.get(oil); + } +} diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index a19935752..533764b5d 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -2508,7 +2508,7 @@ public class ModItems { plate_paa = new ItemCustomLore().setUnlocalizedName("plate_paa").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_paa"); board_copper = new Item().setUnlocalizedName("board_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":board_copper"); bolt_dura_steel = new Item().setUnlocalizedName("bolt_dura_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bolt_dura_steel"); - pipes_steel = new ItemCustomLore().setUnlocalizedName("pipes_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":pipes_steel"); + pipes_steel = new Item().setUnlocalizedName("pipes_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":pipes_steel"); drill_titanium = new Item().setUnlocalizedName("drill_titanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":drill_titanium"); plate_dalekanium = new Item().setUnlocalizedName("plate_dalekanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_dalekanium"); plate_euphemium = new ItemCustomLore().setUnlocalizedName("plate_euphemium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_euphemium"); diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIcon.java b/src/main/java/com/hbm/items/machine/ItemFluidIcon.java index 50a2bc455..faf1991c1 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIcon.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIcon.java @@ -2,6 +2,8 @@ package com.hbm.items.machine; import java.util.List; import com.hbm.handler.FluidTypeHandler.FluidType; +import com.hbm.items.ModItems; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.resources.I18n; @@ -47,7 +49,11 @@ public class ItemFluidIcon extends Item { stack.getTagCompound().setInteger("fill", i); - return stack.copy(); + return stack; + } + + public static ItemStack make(FluidType fluid, int i) { + return addQuantity(new ItemStack(ModItems.fluid_icon, 1, fluid.ordinal()), i); } public static int getQuantity(ItemStack stack) { diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 8ff5c9750..0e689ed8a 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -690,7 +690,7 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.barrel_plastic, 1), new Object[] { "IPI", "I I", "IPI", 'I', ModItems.plate_polymer, 'P', "plateAluminum" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.barrel_iron, 1), new Object[] { "IPI", "I I", "IPI", 'I', "plateIron", 'P', "ingotIron" })); GameRegistry.addShapelessRecipe(new ItemStack(ModBlocks.barrel_iron, 1), new Object[] { ModBlocks.barrel_corroded, ModItems.oil_tar }); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.barrel_steel, 1), new Object[] { "IPI", "I I", "IPI", 'I', "plateSteel", 'P', "ingotSteel" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.barrel_steel, 1), new Object[] { "IPI", "ITI", "IPI", 'I', "plateSteel", 'P', "ingotSteel", 'T', ModItems.oil_tar })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.barrel_tcalloy, 1), new Object[] { "IPI", "I I", "IPI", 'I', "ingotTcAlloy", 'P', "plateTitanium" })); GameRegistry.addRecipe(new ItemStack(ModBlocks.barrel_antimatter, 1), new Object[] { "IPI", "IPI", "IPI", 'I', ModItems.plate_saturnite, 'P', ModItems.coil_advanced_torus }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.tesla, 1), new Object[] { "CCC", "PIP", "WTW", 'C', ModItems.coil_copper, 'I', "ingotIron", 'P', "ingotPolymer", 'T', ModBlocks.machine_transformer, 'W', "plankWood" })); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index c61f8f2a4..844f67c83 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -486,6 +486,7 @@ public class MainRegistry { GameRegistry.registerTileEntity(TileEntityWatz.class, "tileentity_watz"); GameRegistry.registerTileEntity(TileEntityMachineBAT9000.class, "tileentity_bat9000"); GameRegistry.registerTileEntity(TileEntityMachineOrbus.class, "tileentity_orbus"); + GameRegistry.registerTileEntity(TileEntityMachineFractionTower.class, "tileentity_fraction_tower"); GameRegistry.registerTileEntity(TileEntityRBMKRod.class, "tileentity_rbmk_rod"); GameRegistry.registerTileEntity(TileEntityRBMKRodReaSim.class, "tileentity_rbmk_rod_reasim"); @@ -1084,6 +1085,7 @@ public class MainRegistry { MagicRecipes.register(); SILEXRecipes.register(); AnvilRecipes.register(); + RefineryRecipes.registerFractions(); TileEntityNukeCustom.registerBombItems(); HazmatRegistry.registerHazmats(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBattery.java index 6f4b593c0..fab09236a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBattery.java @@ -170,7 +170,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I short mode = (short) this.getRelevantMode(); ////////////////////////////////////////////////////////////////////// - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + /*for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); @@ -199,7 +199,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I if(con.getPowerNet() != null && !con.getPowerNet().isSubscribed(this)) con.getPowerNet().subscribe(this); } - } + }*/ ////////////////////////////////////////////////////////////////////// this.maxPower = ((MachineBattery)worldObj.getBlock(xCoord, yCoord, zCoord)).maxPower; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFractionTower.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFractionTower.java new file mode 100644 index 000000000..d2b41c5d2 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFractionTower.java @@ -0,0 +1,203 @@ +package com.hbm.tileentity.machine; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.handler.FluidTypeHandler.FluidType; +import com.hbm.interfaces.IFluidAcceptor; +import com.hbm.interfaces.IFluidSource; +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.RefineryRecipes; +import com.hbm.lib.Library; +import com.hbm.util.Tuple.Quartet; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import scala.actors.threadpool.Arrays; + +public class TileEntityMachineFractionTower extends TileEntity implements IFluidSource, IFluidAcceptor { + + public FluidTank[] tanks; + public List list1 = new ArrayList(); + public List list2 = new ArrayList(); + + public TileEntityMachineFractionTower() { + super(); + + tanks = new FluidTank[3]; + tanks[0] = new FluidTank(FluidType.HEAVYOIL, 4000, 0); + tanks[1] = new FluidTank(FluidType.BITUMEN, 4000, 0); + tanks[2] = new FluidTank(FluidType.SMEAR, 4000, 0); + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + TileEntity stack = worldObj.getTileEntity(xCoord, yCoord + 3, zCoord); + + + if(stack instanceof TileEntityMachineFractionTower) { + TileEntityMachineFractionTower frac = (TileEntityMachineFractionTower) stack; + + //make types equal + for(int i = 0; i < 3; i++) { + frac.tanks[i].setTankType(tanks[i].getTankType()); + } + + //calculate transfer + int oil = Math.min(tanks[0].getFill(), frac.tanks[0].getMaxFill() - frac.tanks[0].getFill()); + int left = Math.min(frac.tanks[1].getFill(), tanks[1].getMaxFill() - tanks[1].getFill()); + int right = Math.min(frac.tanks[2].getFill(), tanks[2].getMaxFill() - tanks[2].getFill()); + + //move oil up, pull fractions down + tanks[0].setFill(tanks[0].getFill() - oil); + tanks[1].setFill(tanks[1].getFill() + left); + tanks[2].setFill(tanks[2].getFill() + right); + frac.tanks[0].setFill(frac.tanks[0].getFill() + oil); + frac.tanks[1].setFill(frac.tanks[1].getFill() - left); + frac.tanks[2].setFill(frac.tanks[2].getFill() - right); + } + + setupTanks(); + + if(worldObj.getTotalWorldTime() % 20 == 0) + fractionate(); + } + } + + private void setupTanks() { + + Quartet quart = RefineryRecipes.getFractions(tanks[0].getTankType()); + + if(quart != null) { + tanks[1].setTankType(quart.getW()); + tanks[2].setTankType(quart.getX()); + } + } + + private void fractionate() { + + Quartet quart = RefineryRecipes.getFractions(tanks[0].getTankType()); + + if(quart != null) { + + int left = quart.getY(); + int right = quart.getZ(); + + if(tanks[0].getFill() >= 100 && hasSpace(left, right)) { + tanks[0].setFill(tanks[0].getFill() - 100); + tanks[1].setFill(tanks[1].getFill() + left); + tanks[2].setFill(tanks[2].getFill() + right); + } + } + } + + private boolean hasSpace(int left, int right) { + return tanks[1].getFill() + left <= tanks[1].getMaxFill() && tanks[2].getFill() + right <= tanks[2].getMaxFill(); + } + + @Override + public void setFillstate(int fill, int index) { + if(index < 3 && tanks[index] != null) + tanks[index].setFill(fill); + } + + @Override + public void setFluidFill(int fill, FluidType type) { + for(FluidTank tank : tanks) { + if(tank.getTankType() == type) { + tank.setFill(fill); + } + } + } + + @Override + public void setType(FluidType type, int index) { + this.tanks[index].setTankType(type); + } + + @Override + public List getTanks() { + return Arrays.asList(this.tanks); + } + + @Override + public int getFluidFill(FluidType type) { + for(FluidTank tank : tanks) { + if(tank.getTankType() == type) { + return tank.getFill(); + } + } + return 0; + } + + @Override + public int getMaxFluidFill(FluidType type) { + if(type.name().equals(tanks[0].getTankType().name())) + return tanks[0].getMaxFill(); + else + return 0; + } + + @Override + public void fillFluidInit(FluidType type) { + // TODO Auto-generated method stub + + } + + @Override + public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { + Library.transmitFluid(x, y, z, newTact, this, worldObj, type); + } + + @Override + public boolean getTact() { + return worldObj.getTotalWorldTime() % 20 < 10; + } + + @Override + public List getFluidList(FluidType type) { + if(type.name().equals(tanks[1].getTankType().name())) + return list1; + if(type.name().equals(tanks[2].getTankType().name())) + return list2; + return new ArrayList(); + } + + @Override + public void clearFluidList(FluidType type) { + if(type.name().equals(tanks[1].getTankType().name())) + list1.clear(); + if(type.name().equals(tanks[2].getTankType().name())) + list2.clear(); + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 3, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRefinery.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRefinery.java index 1ef693bbd..a97b4eae0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRefinery.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRefinery.java @@ -10,6 +10,7 @@ import com.hbm.interfaces.IFluidContainer; import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.FluidContainerRegistry; import com.hbm.inventory.FluidTank; +import com.hbm.inventory.RefineryRecipes; import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; @@ -270,10 +271,10 @@ public class TileEntityMachineRefinery extends TileEntity implements ISidedInven tanks[0].loadTank(1, 2, slots); - int ho = 50; - int nt = 25; - int lo = 15; - int pe = 10; + int ho = RefineryRecipes.oil_frac_heavy; + int nt = RefineryRecipes.oil_frac_naph; + int lo = RefineryRecipes.oil_frac_light; + int pe = RefineryRecipes.oil_frac_petro; if(power >= 5 && tanks[0].getFill() >= 100 && tanks[1].getFill() + ho <= tanks[1].getMaxFill() && @@ -454,8 +455,7 @@ public class TileEntityMachineRefinery extends TileEntity implements ISidedInven @Override @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { + public double getMaxRenderDistanceSquared() { return 65536.0D; } } diff --git a/src/main/java/com/hbm/util/Tuple.java b/src/main/java/com/hbm/util/Tuple.java index d17185c15..427ea7bbd 100644 --- a/src/main/java/com/hbm/util/Tuple.java +++ b/src/main/java/com/hbm/util/Tuple.java @@ -1,6 +1,14 @@ package com.hbm.util; +import com.hbm.interfaces.Spaghetti; + +@Spaghetti("alreay??") //i made this like a week ago and it's already eye-bleeding, what the fuck happened?! public class Tuple { + + /* + * We endure this horribleness in order to provide a way to create classes that hold values of definite types (no more nasty casting) + * that may also be used in hashmaps, should the need arrive. I'm kinda tired of making new classes just to hold values for one single list. + */ public static class Pair { @@ -113,4 +121,78 @@ public class Tuple { return true; } } + + public static class Quartet { + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((w == null) ? 0 : w.hashCode()); + result = prime * result + ((x == null) ? 0 : x.hashCode()); + result = prime * result + ((y == null) ? 0 : y.hashCode()); + result = prime * result + ((z == null) ? 0 : z.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if(this == obj) + return true; + if(obj == null) + return false; + if(getClass() != obj.getClass()) + return false; + Quartet other = (Quartet) obj; + if(w == null) { + if(other.w != null) + return false; + } else if(!w.equals(other.w)) + return false; + if(x == null) { + if(other.x != null) + return false; + } else if(!x.equals(other.x)) + return false; + if(y == null) { + if(other.y != null) + return false; + } else if(!y.equals(other.y)) + return false; + if(z == null) { + if(other.z != null) + return false; + } else if(!z.equals(other.z)) + return false; + return true; + } + + W w; + X x; + Y y; + Z z; + + public Quartet(W w, X x, Y y, Z z) { + this.w = w; + this.x = x; + this.y = y; + this.z = z; + } + + public W getW() { + return this.w; + } + + public X getX() { + return this.x; + } + + public Y getY() { + return this.y; + } + + public Z getZ() { + return this.z; + } + } } diff --git a/src/main/resources/assets/hbm/textures/items/black_diamond.png b/src/main/resources/assets/hbm/textures/items/black_diamond.png new file mode 100644 index 000000000..7b9265b73 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/black_diamond.png differ