diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilled.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilled.java index 4571eda33..b949bd3b7 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilled.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilled.java @@ -24,6 +24,7 @@ public class BlockGraphiteDrilled extends BlockGraphiteDrilledBase implements IT if(side == cfg * 2 || side == cfg * 2 + 1) { if(checkInteraction(world, x, y, z, meta, player, ModItems.pile_rod_uranium, ModBlocks.block_graphite_fuel)) return true; + if(checkInteraction(world, x, y, z, meta | 8, player, ModItems.pile_rod_pu239, ModBlocks.block_graphite_fuel)) return true; if(checkInteraction(world, x, y, z, meta, player, ModItems.pile_rod_plutonium, ModBlocks.block_graphite_plutonium)) return true; if(checkInteraction(world, x, y, z, meta, player, ModItems.pile_rod_source, ModBlocks.block_graphite_source)) return true; if(checkInteraction(world, x, y, z, meta, player, ModItems.pile_rod_boron, ModBlocks.block_graphite_rod)) return true; diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilledBase.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilledBase.java index 984eed4c1..4bd72a07f 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilledBase.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilledBase.java @@ -51,10 +51,10 @@ public abstract class BlockGraphiteDrilledBase extends BlockFlammable implements public IIcon getIcon(int side, int metadata) { int cfg = metadata & 3; - int meta = metadata >> 2; + int meta = metadata & 4; if(side == cfg * 2 || side == cfg * 2 + 1) { - if(meta == 1) + if(meta == 4) return this.blockIconAluminum; return this.blockIcon; @@ -97,6 +97,11 @@ public abstract class BlockGraphiteDrilledBase extends BlockFlammable implements return true; } + //Thank god getDrops passes meta + protected Item getInsertedItem(int meta) { + return getInsertedItem(); + } + protected Item getInsertedItem() { return null; } @@ -108,7 +113,7 @@ public abstract class BlockGraphiteDrilledBase extends BlockFlammable implements if((meta & 4) == 4) drops.add(new ItemStack(ModItems.hull_small_aluminium, 1)); if(getInsertedItem() != null) - drops.add(new ItemStack(getInsertedItem(), 1)); + drops.add(new ItemStack(getInsertedItem(meta), 1)); return drops; } } diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java index 9bfe9c094..cf3b61c80 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java @@ -40,14 +40,15 @@ public class BlockGraphiteFuel extends BlockGraphiteDrilledTE implements IToolab if(!world.isRemote) { + int meta = world.getBlockMetadata(x, y, z); + if(tool == ToolType.SCREWDRIVER) { - - int meta = world.getBlockMetadata(x, y, z); + int cfg = meta & 3; if(side == cfg * 2 || side == cfg * 2 + 1) { - world.setBlock(x, y, z, ModBlocks.block_graphite_drilled, meta, 3); - this.ejectItem(world, x, y, z, ForgeDirection.getOrientation(side), new ItemStack(ModItems.pile_rod_uranium)); + world.setBlock(x, y, z, ModBlocks.block_graphite_drilled, meta & 7, 3); + this.ejectItem(world, x, y, z, ForgeDirection.getOrientation(side), new ItemStack(getInsertedItem(meta))); } } @@ -57,6 +58,8 @@ public class BlockGraphiteFuel extends BlockGraphiteDrilledTE implements IToolab player.addChatComponentMessage(new ChatComponentText("HEAT: " + pile.heat + "/" + pile.maxHeat).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); player.addChatComponentMessage(new ChatComponentText("DEPLETION: " + pile.progress + "/" + pile.maxProgress).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); player.addChatComponentMessage(new ChatComponentText("FLUX: " + pile.lastNeutrons).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); + if((meta & 8) == 8) + player.addChatComponentMessage(new ChatComponentText("PU-239 RICH").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.DARK_GREEN))); } } @@ -64,7 +67,7 @@ public class BlockGraphiteFuel extends BlockGraphiteDrilledTE implements IToolab } @Override - protected Item getInsertedItem() { - return ModItems.pile_rod_uranium; + protected Item getInsertedItem(int meta) { + return (meta & 8) == 8 ? ModItems.pile_rod_pu239 : ModItems.pile_rod_uranium; } } diff --git a/src/main/java/com/hbm/hazard/HazardRegistry.java b/src/main/java/com/hbm/hazard/HazardRegistry.java index 62289f19e..eb48756dc 100644 --- a/src/main/java/com/hbm/hazard/HazardRegistry.java +++ b/src/main/java/com/hbm/hazard/HazardRegistry.java @@ -335,6 +335,7 @@ public class HazardRegistry { HazardSystem.register(new ItemStack(pellet_rtg_depleted, 1, DepletedRTGMaterial.NEPTUNIUM.ordinal()), makeData(RADIATION, np237 * rtg)); HazardSystem.register(pile_rod_uranium, makeData(RADIATION, u * billet * 3)); + HazardSystem.register(pile_rod_pu239, makeData(RADIATION, !GeneralConfig.enable528 ? purg * billet + pu239 * billet + u * billet : purg * billet + pu239 * billet + wst * billet)); HazardSystem.register(pile_rod_plutonium, makeData(RADIATION, !GeneralConfig.enable528 ? purg * billet * 3 : purg * billet * 2 + wst * billet)); HazardSystem.register(pile_rod_source, makeData(RADIATION, rabe * billet * 3)); diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 339d19b29..030292ee1 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -669,6 +669,13 @@ public class AnvilRecipes { new AnvilOutput(new ItemStack(ModItems.billet_pu_mix, 3)), new AnvilOutput(new ItemStack(ModItems.plate_iron, 2)) }).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new ComparableStack(ModItems.pile_rod_pu239), new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.billet_pu239, 1)), //Might need to be cut to 3 nuggets, but a full billet is nice and round + new AnvilOutput(new ItemStack(ModItems.billet_pu_mix, 1)), + new AnvilOutput(new ItemStack(ModItems.billet_uranium, 1)), + new AnvilOutput(new ItemStack(ModItems.plate_iron, 2)) + }).setTier(2)); } else { constructionRecipes.add(new AnvilConstructionRecipe( @@ -677,6 +684,13 @@ public class AnvilRecipes { new AnvilOutput(new ItemStack(ModItems.billet_nuclear_waste, 1)), new AnvilOutput(new ItemStack(ModItems.plate_iron, 1)) }).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new ComparableStack(ModItems.pile_rod_pu239), new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.billet_pu239, 1)), + new AnvilOutput(new ItemStack(ModItems.billet_pu_mix, 1)), + new AnvilOutput(new ItemStack(ModItems.billet_nuclear_waste, 1)), + new AnvilOutput(new ItemStack(ModItems.plate_iron, 2)) + }).setTier(2)); } constructionRecipes.add(new AnvilConstructionRecipe( diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 24a05f230..ad6f6d863 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1054,6 +1054,7 @@ public class ModItems { public static Item waste_plate_pu238be; public static Item pile_rod_uranium; + public static Item pile_rod_pu239; public static Item pile_rod_plutonium; public static Item pile_rod_source; public static Item pile_rod_boron; @@ -3600,6 +3601,7 @@ public class ModItems { waste_plate_pu238be = new ItemDepletedFuel().setUnlocalizedName("waste_plate_pu238be").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":waste_plate_pu238be"); pile_rod_uranium = new ItemPileRod().setUnlocalizedName("pile_rod_uranium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pile_rod_uranium"); + pile_rod_pu239 = new ItemPileRod().setUnlocalizedName("pile_rod_pu239").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pile_rod_pu239"); pile_rod_plutonium = new ItemPileRod().setUnlocalizedName("pile_rod_plutonium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pile_rod_plutonium"); pile_rod_source = new ItemPileRod().setUnlocalizedName("pile_rod_source").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pile_rod_source"); pile_rod_boron = new ItemPileRod().setUnlocalizedName("pile_rod_boron").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pile_rod_boron"); @@ -6750,6 +6752,7 @@ public class ModItems { //Pile parts GameRegistry.registerItem(pile_rod_uranium, pile_rod_uranium.getUnlocalizedName()); + GameRegistry.registerItem(pile_rod_pu239, pile_rod_pu239.getUnlocalizedName()); GameRegistry.registerItem(pile_rod_plutonium, pile_rod_plutonium.getUnlocalizedName()); GameRegistry.registerItem(pile_rod_source, pile_rod_source.getUnlocalizedName()); GameRegistry.registerItem(pile_rod_boron, pile_rod_boron.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java index 6f3401be0..7a48e4f83 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java @@ -21,6 +21,7 @@ public class TileEntityPileFuel extends TileEntityPileBase implements IPileNeutr if(!worldObj.isRemote) { dissipateHeat(); react(); + transmute(); if(this.heat >= this.maxHeat) { worldObj.newExplosion(null, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 4, true, true); @@ -28,7 +29,7 @@ public class TileEntityPileFuel extends TileEntityPileBase implements IPileNeutr } if(this.progress >= this.maxProgress) { - worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.block_graphite_plutonium, this.getBlockMetadata(), 3); + worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.block_graphite_plutonium, this.getBlockMetadata() & 7, 3); } } } @@ -54,6 +55,19 @@ public class TileEntityPileFuel extends TileEntityPileBase implements IPileNeutr for(int i = 0; i < 12; i++) this.castRay((int) Math.max(reaction * 0.25, 1), 5); } + + private void transmute() { + + if((this.getBlockMetadata() & 8) == 8) { + if(this.progress < this.maxProgress - 1000) //Might be subject to change, but 1000 seems like a good number. + this.progress = maxProgress - 1000; + + return; + } else if(this.progress >= maxProgress - 1000) { + worldObj.setBlockMetadataWithNotify(this.xCoord, this.yCoord, this.zCoord, this.getBlockMetadata() | 8, 3); + return; + } + } @Override public void receiveNeutrons(int n) { diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileSource.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileSource.java index ad1cc976f..c297f9dfb 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileSource.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileSource.java @@ -9,7 +9,7 @@ public class TileEntityPileSource extends TileEntityPileBase { if(!worldObj.isRemote) { - int n = this.getBlockType() == ModBlocks.block_graphite_source ? 1 : 3; + int n = this.getBlockType() == ModBlocks.block_graphite_source ? 1 : 2; for(int i = 0; i < 12; i++) { this.castRay(n, 5); diff --git a/src/main/java/com/hbm/world/worldgen/MapGenNTMFeatures.java b/src/main/java/com/hbm/world/worldgen/MapGenNTMFeatures.java index 984f94acd..9f26946be 100644 --- a/src/main/java/com/hbm/world/worldgen/MapGenNTMFeatures.java +++ b/src/main/java/com/hbm/world/worldgen/MapGenNTMFeatures.java @@ -82,6 +82,8 @@ public class MapGenNTMFeatures extends MapGenStructure { public static class Start extends StructureStart { + public Start() {} + public Start(World world, Random rand, int chunkX, int chunkZ) { super(chunkX, chunkZ); diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 86050b7c4..baa894236 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -2450,6 +2450,8 @@ item.pile_rod_lithium.name=Chicago Pile Lithium Cell item.pile_rod_lithium.desc=§a[Breedable Fuel]$§eUse hand drill to inspect core item.pile_rod_plutonium.name=Chicago Pile Plutonium Rod item.pile_rod_plutonium.desc=§d[Neutron Source] +item.pile_rod_pu239.name=Chicago Pile Bred Uranium Rod +item.pile_rod_pu239.desc=§a[Reactive Fuel]$§eRich in Plutonium-239. item.pile_rod_source.name=Chicago Pile Ra226Be Neutron Source item.pile_rod_source.desc=§d[Neutron Source] item.pile_rod_uranium.name=Chicago Pile Uranium Rod diff --git a/src/main/resources/assets/hbm/textures/items/pile_rod_pu239.png b/src/main/resources/assets/hbm/textures/items/pile_rod_pu239.png new file mode 100644 index 000000000..066e3f3d7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pile_rod_pu239.png differ