From cc4b0d01c045ab09d19e7a7cb0abb5e7af5b302d Mon Sep 17 00:00:00 2001 From: Vaern Date: Sat, 30 Apr 2022 23:07:14 -0700 Subject: [PATCH 1/2] pile shenanigans --- .../machine/pile/BlockGraphiteDrilled.java | 35 ++++++++++++++++-- .../pile/BlockGraphiteDrilledBase.java | 12 +++++- .../machine/pile/BlockGraphiteFuel.java | 16 +++++++- .../blocks/machine/pile/BlockGraphiteRod.java | 33 +++++++++++------ .../machine/pile/BlockGraphiteSource.java | 19 +++++++++- .../machine/pile/TileEntityPileBase.java | 22 ++++++++--- .../machine/pile/TileEntityPileFuel.java | 6 +-- .../machine/pile/TileEntityPileSource.java | 2 +- .../block_graphite_drilled_aluminum.png | Bin 0 -> 459 bytes .../blocks/block_graphite_fuel_aluminum.png | Bin 0 -> 453 bytes .../block_graphite_plutonium_aluminum.png | Bin 0 -> 459 bytes .../blocks/block_graphite_rod_in_aluminum.png | Bin 0 -> 461 bytes .../block_graphite_rod_out_aluminum.png | Bin 0 -> 468 bytes .../blocks/block_graphite_source_aluminum.png | Bin 0 -> 458 bytes 14 files changed, 115 insertions(+), 30 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/blocks/block_graphite_drilled_aluminum.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/block_graphite_fuel_aluminum.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/block_graphite_plutonium_aluminum.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/block_graphite_rod_in_aluminum.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/block_graphite_rod_out_aluminum.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/block_graphite_source_aluminum.png 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 a0c6ce4a0..483cb7ac2 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilled.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilled.java @@ -3,12 +3,16 @@ package com.hbm.blocks.machine.pile; import com.hbm.blocks.ModBlocks; import com.hbm.items.ModItems; +import api.hbm.block.IToolable; +import api.hbm.block.IToolable.ToolType; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class BlockGraphiteDrilled extends BlockGraphiteDrilledBase { +public class BlockGraphiteDrilled extends BlockGraphiteDrilledBase implements IToolable { @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { @@ -16,13 +20,17 @@ public class BlockGraphiteDrilled extends BlockGraphiteDrilledBase { if(player.getHeldItem() != null) { int meta = world.getBlockMetadata(x, y, z); - - if(side == meta * 2 || side == meta * 2 + 1) { + int cfg = meta & 3; + + 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, 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; - if(checkInteraction(world, x, y, z, 0, player, ModItems.ingot_graphite, ModBlocks.block_graphite)) return true; + if(meta >> 2 != 1) { + if(checkInteraction(world, x, y, z, meta | 4, player, ModItems.hull_small_aluminium, ModBlocks.block_graphite_drilled)) return true; + if(checkInteraction(world, x, y, z, 0, player, ModItems.ingot_graphite, ModBlocks.block_graphite)) return true; + } } } @@ -42,4 +50,23 @@ public class BlockGraphiteDrilled extends BlockGraphiteDrilledBase { return false; } + + @Override + public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { + + int meta = world.getBlockMetadata(x, y, z); + int cfg = meta & 3; + + if(tool != ToolType.SCREWDRIVER) + return false; + + if(!world.isRemote && (side == cfg * 2 || side == cfg * 2 + 1) && meta >> 2 == 1) { + world.setBlock(x, y, z, ModBlocks.block_graphite_drilled, cfg, 3); + world.playSoundEffect(x + 0.5, y + 1.5, z + 0.5, "hbm:item.upgradePlug", 1.0F, 0.85F); + + BlockGraphiteRod.ejectItem(world, x, y, z, ForgeDirection.getOrientation(side), new ItemStack(ModItems.hull_small_aluminium)); + } + + 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 213df7cfd..45142da3f 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilledBase.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilledBase.java @@ -23,6 +23,8 @@ public abstract class BlockGraphiteDrilledBase extends BlockFlammable { @SideOnly(Side.CLIENT) protected IIcon sideIcon; + @SideOnly(Side.CLIENT) + protected IIcon blockIconAluminum; //shrouded in aluminum public BlockGraphiteDrilledBase() { super(ModBlocks.block_graphite.getMaterial(), ((BlockFlammable) ModBlocks.block_graphite).encouragement, ((BlockFlammable) ModBlocks.block_graphite).flammability); @@ -38,6 +40,7 @@ public abstract class BlockGraphiteDrilledBase extends BlockFlammable { public void registerBlockIcons(IIconRegister iconRegister) { super.registerBlockIcons(iconRegister); this.sideIcon = iconRegister.registerIcon(RefStrings.MODID + ":block_graphite"); + this.blockIconAluminum = iconRegister.registerIcon(RefStrings.MODID + ":block_graphite_drilled_aluminum"); } @Override @@ -45,9 +48,14 @@ public abstract class BlockGraphiteDrilledBase extends BlockFlammable { public IIcon getIcon(int side, int metadata) { int cfg = metadata & 3; + int meta = metadata >> 2; - if(side == cfg * 2 || side == cfg * 2 + 1) + if(side == cfg * 2 || side == cfg * 2 + 1) { + if(meta == 1) + return this.blockIconAluminum; + return this.blockIcon; + } return this.sideIcon; } @@ -70,6 +78,8 @@ public abstract class BlockGraphiteDrilledBase extends BlockFlammable { public ArrayList getDrops(World world, int x, int y, int z, int meta, int fortune) { ArrayList drops = new ArrayList(); drops.add(new ItemStack(ModItems.ingot_graphite, 8)); + if(meta >> 2 == 1) + drops.add(new ItemStack(ModItems.hull_small_aluminium, 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 ad5f41247..43351e185 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java @@ -4,9 +4,13 @@ import java.util.ArrayList; import com.hbm.blocks.ModBlocks; import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.pile.TileEntityPileFuel; import api.hbm.block.IToolable; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -23,6 +27,13 @@ public class BlockGraphiteFuel extends BlockGraphiteDrilledTE implements IToolab return new TileEntityPileFuel(); } + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.blockIconAluminum = iconRegister.registerIcon(RefStrings.MODID + ":block_graphite_fuel_aluminum"); + } + @Override public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { ArrayList drops = super.getDrops(world, x, y, z, metadata, fortune); @@ -37,9 +48,10 @@ public class BlockGraphiteFuel extends BlockGraphiteDrilledTE implements IToolab if(tool == ToolType.SCREWDRIVER) { - int meta = world.getBlockMetadata(x, y, z) & 3; + int meta = world.getBlockMetadata(x, y, z); + int cfg = meta & 3; - if(side == meta * 2 || side == meta * 2 + 1) { + 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)); } diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteRod.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteRod.java index 1111b45c2..4812b6dc8 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteRod.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteRod.java @@ -20,12 +20,15 @@ public class BlockGraphiteRod extends BlockGraphiteDrilledBase implements IToola @SideOnly(Side.CLIENT) protected IIcon outIcon; + @SideOnly(Side.CLIENT) + protected IIcon outIconAluminum; @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { super.registerBlockIcons(iconRegister); - this.sideIcon = iconRegister.registerIcon(RefStrings.MODID + ":block_graphite"); + this.blockIconAluminum = iconRegister.registerIcon(RefStrings.MODID + ":block_graphite_rod_in_aluminum"); + this.outIconAluminum = iconRegister.registerIcon(RefStrings.MODID + ":block_graphite_rod_out_aluminum"); this.outIcon = iconRegister.registerIcon(RefStrings.MODID + ":block_graphite_rod_out"); } @@ -35,8 +38,11 @@ public class BlockGraphiteRod extends BlockGraphiteDrilledBase implements IToola int cfg = metadata & 3; - if(side == cfg * 2 || side == cfg * 2 + 1) - return ((metadata & 4) > 0) ? this.outIcon : this.blockIcon; + if(side == cfg * 2 || side == cfg * 2 + 1) { + if((metadata & 4) == 4) + return ((metadata & 8) > 0) ? this.outIconAluminum : this.blockIconAluminum; + return ((metadata & 8) > 0) ? this.outIcon : this.blockIcon; + } return this.sideIcon; } @@ -48,7 +54,7 @@ public class BlockGraphiteRod extends BlockGraphiteDrilledBase implements IToola return false; int oldMeta = world.getBlockMetadata(x, y, z); - int newMeta = oldMeta ^ 4; //toggle bit #3 + int newMeta = oldMeta ^ 8; //toggle bit #4 int pureMeta = oldMeta & 3; //in case the bit was set if(side == pureMeta * 2 || side == pureMeta * 2 + 1) { @@ -60,7 +66,7 @@ public class BlockGraphiteRod extends BlockGraphiteDrilledBase implements IToola world.playSoundEffect(x + 0.5D, y + 0.5D, z + 0.5D, "random.click", 0.3F, pureMeta == oldMeta ? 0.75F : 0.65F); - ForgeDirection dir = ForgeDirection.getOrientation(pureMeta); + ForgeDirection dir = ForgeDirection.getOrientation(side); if(dir == ForgeDirection.UNKNOWN) return true; @@ -68,17 +74,19 @@ public class BlockGraphiteRod extends BlockGraphiteDrilledBase implements IToola for(int i = -1; i <= 1; i += 1) { //why is XZ switched? i don't know, man - int ix = x + dir.offsetZ * i; + /* ForgeDirection's getOrientation method operates on actual sides, not n/s or w/e, so you had to switch x & z for w/e to work since it was actually returning north. also meant that + n/s hasn't been working this entire time */ + int ix = x + dir.offsetX * i; int iy = y + dir.offsetY * i; - int iz = z + dir.offsetX * i; + int iz = z + dir.offsetZ * i; while(world.getBlock(ix, iy, iz) == this && world.getBlockMetadata(ix, iy, iz) == oldMeta) { world.setBlockMetadataWithNotify(ix, iy, iz, newMeta, 3); - ix += dir.offsetZ * i; + ix += dir.offsetX * i; iy += dir.offsetY * i; - iz += dir.offsetX * i; + iz += dir.offsetZ * i; } } @@ -96,10 +104,11 @@ public class BlockGraphiteRod extends BlockGraphiteDrilledBase implements IToola if(!world.isRemote) { - int meta = world.getBlockMetadata(x, y, z) & 3; + int meta = world.getBlockMetadata(x, y, z); + int cfg = meta & 3; - if(side == meta * 2 || side == meta * 2 + 1) { - world.setBlock(x, y, z, ModBlocks.block_graphite_drilled, meta, 3); + if(side == cfg * 2 || side == cfg * 2 + 1) { + world.setBlock(x, y, z, ModBlocks.block_graphite_drilled, meta & 7, 3); this.ejectItem(world, x, y, z, ForgeDirection.getOrientation(side), new ItemStack(ModItems.pile_rod_boron)); } } diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteSource.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteSource.java index 97120c264..cf02a9785 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteSource.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteSource.java @@ -4,9 +4,13 @@ import java.util.ArrayList; import com.hbm.blocks.ModBlocks; import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.pile.TileEntityPileSource; import api.hbm.block.IToolable; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -21,6 +25,16 @@ public class BlockGraphiteSource extends BlockGraphiteDrilledTE implements ITool return new TileEntityPileSource(); } + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + if(this == ModBlocks.block_graphite_plutonium) + this.blockIconAluminum = iconRegister.registerIcon(RefStrings.MODID + ":block_graphite_plutonium_aluminum"); + else if(this == ModBlocks.block_graphite_source) + this.blockIconAluminum = iconRegister.registerIcon(RefStrings.MODID + ":block_graphite_source_aluminum"); + } + @Override public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { ArrayList drops = super.getDrops(world, x, y, z, metadata, fortune); @@ -36,9 +50,10 @@ public class BlockGraphiteSource extends BlockGraphiteDrilledTE implements ITool if(!world.isRemote) { - int meta = world.getBlockMetadata(x, y, z) & 3; + int meta = world.getBlockMetadata(x, y, z); + int cfg = meta & 3; - if(side == meta * 2 || side == meta * 2 + 1) { + 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(whoAmIAgain())); } diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java index d19ae6d75..9fed6d5b5 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java @@ -26,6 +26,7 @@ public abstract class TileEntityPileBase extends TileEntity { Vec3 vec = Vec3.createVectorHelper(1, 0, 0); vec.rotateAroundZ((float)(rand.nextDouble() * Math.PI * 2D)); vec.rotateAroundY((float)(rand.nextDouble() * Math.PI * 2D)); + vec.rotateAroundX((float)(rand.nextDouble() * Math.PI * 2D)); int prevX = xCoord; int prevY = yCoord; @@ -44,6 +45,16 @@ public abstract class TileEntityPileBase extends TileEntity { prevY = y; prevZ = z; + /*if(i == range) { + NBTTagCompound data2 = new NBTTagCompound(); + data2.setString("type", "vanillaExt"); + data2.setString("mode", "greendust"); + data2.setDouble("posX", xCoord + 0.5 + vec.xCoord * range); + data2.setDouble("posY", yCoord + 0.5 + vec.yCoord * range); + data2.setDouble("posZ", zCoord + 0.5 + vec.zCoord * range); + MainRegistry.proxy.effectNT(data2); + }*/ + Block b = worldObj.getBlock(x, y, z); if(b == ModBlocks.concrete || b == ModBlocks.concrete_smooth || b == ModBlocks.concrete_asbestos || b == ModBlocks.concrete_colored || b == ModBlocks.brick_concrete) @@ -54,19 +65,20 @@ public abstract class TileEntityPileBase extends TileEntity { int meta = worldObj.getBlockMetadata(x, y, z); - if(b == ModBlocks.block_graphite_rod && (meta & 4) == 0) + if(b == ModBlocks.block_graphite_rod && (meta & 8) == 0) return; TileEntity te = worldObj.getTileEntity(x, y, z); if(te instanceof IPileNeutronReceiver) { - //this part throttles neutron efficiency for reactions that are way too close, efficiency reaches 100% after 2.5 meters - float mult = Math.min((float)range / 1.5F, 1F); - int n = (int)(flux * mult); + //this part throttles neutron efficiency for reactions that are way too close, efficiency reaches 100% after 1.5 meters + //This entire time, this multiplier has been using the max distance, not the actual one, meaning efficency has always been 100% + //float mult = Math.min((float)i / 1.5F, 1F); + //int n = (int)(flux * mult); IPileNeutronReceiver rec = (IPileNeutronReceiver) te; - rec.receiveNeutrons(n); + rec.receiveNeutrons(flux); return; } 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 4549d5d23..6f3401be0 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java @@ -34,7 +34,7 @@ public class TileEntityPileFuel extends TileEntityPileBase implements IPileNeutr } private void dissipateHeat() { - this.heat -= heat * 0.05; //remove 5% of the stored heat per tick + this.heat -= (this.getBlockMetadata() & 4) == 4 ? heat * 0.065 : heat * 0.05; //remove 5% of the stored heat per tick; 6.5% for windscale } private void react() { @@ -42,7 +42,7 @@ public class TileEntityPileFuel extends TileEntityPileBase implements IPileNeutr int reaction = (int) (this.neutrons * (1D - ((double)this.heat / (double)this.maxHeat) * 0.5D)); //max heat reduces reaction by 50% due to thermal expansion this.lastNeutrons = this.neutrons; - this.neutrons = 0;; + this.neutrons = 0; this.progress += reaction; @@ -51,7 +51,7 @@ public class TileEntityPileFuel extends TileEntityPileBase implements IPileNeutr this.heat += reaction; - for(int i = 0; i < 16; i++) + for(int i = 0; i < 12; i++) this.castRay((int) Math.max(reaction * 0.25, 1), 5); } 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 dc01a2ba2..ad1cc976f 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileSource.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileSource.java @@ -11,7 +11,7 @@ public class TileEntityPileSource extends TileEntityPileBase { int n = this.getBlockType() == ModBlocks.block_graphite_source ? 1 : 3; - for(int i = 0; i < 16; i++) { + for(int i = 0; i < 12; i++) { this.castRay(n, 5); } } diff --git a/src/main/resources/assets/hbm/textures/blocks/block_graphite_drilled_aluminum.png b/src/main/resources/assets/hbm/textures/blocks/block_graphite_drilled_aluminum.png new file mode 100644 index 0000000000000000000000000000000000000000..fb546e6e4774f0bc2523bafb708195d08baa8471 GIT binary patch literal 459 zcmV;+0W|)JP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0bof)K~y+T)sjC? z!e9`_egCDDgw4Uhgv5j*vqQfD3zM5pCOYZlH(+qk(ZN+Wqb#m2CgP%#--Lh-DbPY& zf8`7@_z66c%e{Bc-967y)#-HR^Z8=2D2gIUk~B?;vn(^l;E8?T&+~jZ98M+^GOFEf z$8kKJPRWYV!w73FJ;Z>p*=$BLRTYNecs%CKV`FKuK`EuRmgSV#PYG|T)vD~00)fxmFrT>L3VOtrou7Y#L{U3Env; zm(|AB>-Ac#MoedUI5xruV%AyEs9g1wX6;}wK(QQc{eQT9c!D?EnFsjlqPxAdDSD{l zRin`WO+*$P!OQz6CoS1nv$wlL1_Lej|Gy=rz5z*M%tcC-OEv%i002ovPDHLkV1jG2 B%3=Tj literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/block_graphite_fuel_aluminum.png b/src/main/resources/assets/hbm/textures/blocks/block_graphite_fuel_aluminum.png new file mode 100644 index 0000000000000000000000000000000000000000..ee21bacff6269fc4ca02933e7f591b0915f06354 GIT binary patch literal 453 zcmV;$0XqJPP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0a{5!K~y+T)sn4F z15pr#xj!qqNgV<~vI$AMR3rKZE2zQ&h6EHS-T(&{hahMK0Sf|y0mV~bo86YB?Y4W{ z^4$*E1Q2LW)0_D@bLY(5Rh>?!EKBFyd_EtK$CJqfdpeyOV>q#Ewc2bpOVe~X91>AU zk_-le(P%_eKn+(|YpKD81d5`dn5=5I+j*Yj<18&89h6d9YiUl3{-iif7>3eI5*U)h zmP&D{|HAJXb`FkAzz literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/block_graphite_plutonium_aluminum.png b/src/main/resources/assets/hbm/textures/blocks/block_graphite_plutonium_aluminum.png new file mode 100644 index 0000000000000000000000000000000000000000..23ef0dbe3df740dd2385983be90c8e0f6077c68f GIT binary patch literal 459 zcmV;+0W|)JP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0bof)K~y+T)snwU z!$1_rd%4TdLN^Bop&+z1IEh0C_ab!BMRXE$QV`tS)J;0s)xlYCa1$42H~$MaLt40| zX?|Sdr#%Uxg0tVi@x6QBm-oK!PV{=cG)=QCD~ckH<0MJo#uzCjE4*5*=6N0j!DKSw zM0C5|Fbtz8;?#m1exZ~i2aX6#r&E%NicY7awPw$zGKZ}ogm4_k7AHh~Laee@tJzvM z0I@N+&9qzcKk?JU-r=!y`RK_VTwVO(VgKm#J$%beC5@xZ6kD4+2fN$oe)n*4c5c-{ z;8PawW3Bs_*BfiAr3Z&vB+v;^QhiltX=>)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0b)r+K~y+T)sjC? z!e9`_dH-~v37dn135f~C&JKKohJ?vYClj4?@*6n1I-3wo9Nb)8TwHYWn^2%sDD)rx z+A|C~IC~{8_uk!e_dM6C!C;VOS)S*c&1St`r)i2`6ooN{6TjJPmSs7aOqRPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0clA@K~y+T)smr4 z!%z^$_xfJNmdqg#BuhxPv7iWI0$($Q14RO6BO$@zKw=SCa0CaLsY2rrBq;udr5i14 z*RI|8wMP~*_y@Q)ulL^FclUkwsydy{bUIDbbUvTQahxOxewJlgYgYVnxjdWAJkJZm zkQ3!N&UieIqKH#5FqAOHfWapTn@lEviK=$H9RvY;Hl@O(gHp<}ENM=N{)AX{rBabz z62Ordz93}_{@Z?Q*grbfHV>TatILZe4TkKW8V-7=uImPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0bfZ(K~y+T)sneN z15p%)y~{8p5Cl=M5Q4&FsV(vbX;Rr~C1|CUZ(u26V`*b;rLBz!B537v#3H%l5Hedf zzvP4|w6OLcIGlUW|DWxS>U27z(P%s#&t|hM%kn(OpG+pk7%YCNRGLnw&bc^_xl!$Q zdpH~>Ny4oF4JoX(Xz(F{G))l`RjpQQFc@&=u(E(uP)cd7r8pt#6T+Huxh%CLfFm({ zQOXhh62E6SI6gHVA3b^37w3P>aCmao*k1E}A90pvs~f@5{vNzy1|3CF7=~X96zni` zF6=wke|^4xe0e7$Y-vnWi=pWRSYw5qW+?^4vaVtV)}U*(TC>^2*6VfS*@A}!WYNY} ztJO-S!j@6a7e__^63|0k8%C|6fw-8x&Fin`6fXGXMYp07*qoM6N<$f~jP^ Ak^lez literal 0 HcmV?d00001 From 71115ec066c64ede3314379f36d3e314d21f09ec Mon Sep 17 00:00:00 2001 From: Vaern Date: Sun, 1 May 2022 20:10:18 -0700 Subject: [PATCH 2/2] pile shenanigans pt. 2 --- src/main/java/com/hbm/blocks/ModBlocks.java | 9 ++ .../pile/BlockGraphiteBreedingFuel.java | 71 +++++++++ .../pile/BlockGraphiteBreedingProduct.java | 31 ++++ .../machine/pile/BlockGraphiteDrilled.java | 3 + .../pile/BlockGraphiteDrilledBase.java | 33 ++++- .../machine/pile/BlockGraphiteFuel.java | 13 +- .../pile/BlockGraphiteNeutronDetector.java | 135 ++++++++++++++++++ .../blocks/machine/pile/BlockGraphiteRod.java | 30 +--- .../machine/pile/BlockGraphiteSource.java | 28 +--- .../java/com/hbm/crafting/RodRecipes.java | 4 +- .../inventory/recipes/anvil/AnvilRecipes.java | 14 ++ src/main/java/com/hbm/items/ModItems.java | 8 +- .../com/hbm/items/machine/ItemPileRod.java | 21 ++- .../java/com/hbm/tileentity/TileMappings.java | 2 + .../machine/pile/TileEntityPileBase.java | 8 +- .../pile/TileEntityPileBreedingFuel.java | 59 ++++++++ .../pile/TileEntityPileNeutronDetector.java | 50 +++++++ .../world/worldgen/ComponentNTMFeatures.java | 2 +- src/main/resources/assets/hbm/lang/en_US.lang | 13 ++ .../blocks/block_graphite_detector.png | Bin 0 -> 461 bytes .../block_graphite_detector_aluminum.png | Bin 0 -> 474 bytes .../blocks/block_graphite_detector_out.png | Bin 0 -> 461 bytes .../block_graphite_detector_out_aluminum.png | Bin 0 -> 480 bytes .../blocks/block_graphite_lithium.png | Bin 0 -> 436 bytes .../block_graphite_lithium_aluminum.png | Bin 0 -> 461 bytes .../blocks/block_graphite_tritium.png | Bin 0 -> 437 bytes .../block_graphite_tritium_aluminum.png | Bin 0 -> 459 bytes .../hbm/textures/items/pile_rod_detector.png | Bin 0 -> 286 bytes .../hbm/textures/items/pile_rod_lithium.png | Bin 0 -> 276 bytes 29 files changed, 455 insertions(+), 79 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteBreedingFuel.java create mode 100644 src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteBreedingProduct.java create mode 100644 src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteNeutronDetector.java create mode 100644 src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBreedingFuel.java create mode 100644 src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileNeutronDetector.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/block_graphite_detector.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/block_graphite_detector_aluminum.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/block_graphite_detector_out.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/block_graphite_detector_out_aluminum.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/block_graphite_lithium.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/block_graphite_lithium_aluminum.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/block_graphite_tritium.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/block_graphite_tritium_aluminum.png create mode 100644 src/main/resources/assets/hbm/textures/items/pile_rod_detector.png create mode 100644 src/main/resources/assets/hbm/textures/items/pile_rod_lithium.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index aae7ab573..92202f903 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -253,6 +253,9 @@ public class ModBlocks { public static Block block_graphite_plutonium; public static Block block_graphite_rod; public static Block block_graphite_source; + public static Block block_graphite_lithium; + public static Block block_graphite_tritium; + public static Block block_graphite_detector; public static Block block_boron; public static Block block_lanthanium; public static Block block_ra226; @@ -1485,6 +1488,9 @@ public class ModBlocks { block_graphite_plutonium = new BlockGraphiteSource().setBlockName("block_graphite_plutonium"); block_graphite_rod = new BlockGraphiteRod().setBlockName("block_graphite_rod").setBlockTextureName(RefStrings.MODID + ":block_graphite_rod_in"); block_graphite_source = new BlockGraphiteSource().setBlockName("block_graphite_source"); + block_graphite_lithium = new BlockGraphiteBreedingFuel().setBlockName("block_graphite_lithium"); + block_graphite_tritium = new BlockGraphiteBreedingProduct().setBlockName("block_graphite_tritium"); + block_graphite_detector = new BlockGraphiteNeutronDetector().setBlockName("block_graphite_detector"); block_boron = new BlockBeaconable(Material.iron).setBlockName("block_boron").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_boron"); block_lanthanium = new BlockBeaconable(Material.iron).setBlockName("block_lanthanium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_lanthanium"); block_ra226 = new BlockHazard().makeBeaconable().setBlockName("block_ra226").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_ra226"); @@ -2509,6 +2515,9 @@ public class ModBlocks { GameRegistry.registerBlock(block_graphite_rod, block_graphite_rod.getUnlocalizedName()); GameRegistry.registerBlock(block_graphite_plutonium, block_graphite_plutonium.getUnlocalizedName()); GameRegistry.registerBlock(block_graphite_source, block_graphite_source.getUnlocalizedName()); + GameRegistry.registerBlock(block_graphite_lithium, block_graphite_lithium.getUnlocalizedName()); + GameRegistry.registerBlock(block_graphite_tritium, block_graphite_tritium.getUnlocalizedName()); + GameRegistry.registerBlock(block_graphite_detector, block_graphite_detector.getUnlocalizedName()); GameRegistry.registerBlock(block_boron, block_boron.getUnlocalizedName()); GameRegistry.registerBlock(block_insulator, block_insulator.getUnlocalizedName()); GameRegistry.registerBlock(block_fiberglass, block_fiberglass.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteBreedingFuel.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteBreedingFuel.java new file mode 100644 index 000000000..e2def83dc --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteBreedingFuel.java @@ -0,0 +1,71 @@ +package com.hbm.blocks.machine.pile; + +import java.util.ArrayList; + +import com.hbm.blocks.ModBlocks; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.pile.TileEntityPileBreedingFuel; +import com.hbm.tileentity.machine.pile.TileEntityPileFuel; + +import api.hbm.block.IToolable; +import api.hbm.block.IToolable.ToolType; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockGraphiteBreedingFuel extends BlockGraphiteDrilledTE implements IToolable { + + @Override + public TileEntity createNewTileEntity(World world, int mets) { + return new TileEntityPileBreedingFuel(); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.blockIconAluminum = iconRegister.registerIcon(RefStrings.MODID + ":block_graphite_lithium_aluminum"); + } + + @Override + public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { + + if(!world.isRemote) { + + 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_lithium)); + } + } + + if(tool == ToolType.HAND_DRILL) { + TileEntityPileBreedingFuel pile = (TileEntityPileBreedingFuel) world.getTileEntity(x, y, z); + player.addChatComponentMessage(new ChatComponentText("CP1 FUEL ASSEMBLY " + x + " " + y + " " + z).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD))); + 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))); + } + } + + return true; + } + + @Override + protected Item getInsertedItem() { + return ModItems.pile_rod_lithium; + } +} diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteBreedingProduct.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteBreedingProduct.java new file mode 100644 index 000000000..4dc994367 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteBreedingProduct.java @@ -0,0 +1,31 @@ +package com.hbm.blocks.machine.pile; + +import com.hbm.blocks.ModBlocks; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; + +import api.hbm.block.IToolable; +import api.hbm.block.IToolable.ToolType; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockGraphiteBreedingProduct extends BlockGraphiteDrilledBase implements IToolable { + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.blockIconAluminum = iconRegister.registerIcon(RefStrings.MODID + ":block_graphite_tritium_aluminum"); + } + + @Override + protected Item getInsertedItem() { + return ModItems.cell_tritium; + } +} 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 483cb7ac2..4571eda33 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilled.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilled.java @@ -27,6 +27,9 @@ public class BlockGraphiteDrilled extends BlockGraphiteDrilledBase implements IT 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; + if(checkInteraction(world, x, y, z, meta, player, ModItems.pile_rod_lithium, ModBlocks.block_graphite_lithium)) return true; + if(checkInteraction(world, x, y, z, meta, player, ModItems.cell_tritium, ModBlocks.block_graphite_tritium)) return true; //if you want to i guess? + if(checkInteraction(world, x, y, z, meta, player, ModItems.pile_rod_detector, ModBlocks.block_graphite_detector)) return true; if(meta >> 2 != 1) { if(checkInteraction(world, x, y, z, meta | 4, player, ModItems.hull_small_aluminium, ModBlocks.block_graphite_drilled)) return true; if(checkInteraction(world, x, y, z, 0, player, ModItems.ingot_graphite, ModBlocks.block_graphite)) 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 45142da3f..984eed4c1 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilledBase.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilledBase.java @@ -8,18 +8,21 @@ import com.hbm.blocks.generic.BlockFlammable; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; +import api.hbm.block.IToolable; +import api.hbm.block.IToolable.ToolType; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public abstract class BlockGraphiteDrilledBase extends BlockFlammable { +public abstract class BlockGraphiteDrilledBase extends BlockFlammable implements IToolable { @SideOnly(Side.CLIENT) protected IIcon sideIcon; @@ -74,12 +77,38 @@ public abstract class BlockGraphiteDrilledBase extends BlockFlammable { return null; } + @Override + public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { + + if(tool != ToolType.SCREWDRIVER) + return false; + + if(!world.isRemote) { + + 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 & 7, 3); + this.ejectItem(world, x, y, z, ForgeDirection.getOrientation(side), new ItemStack(getInsertedItem())); + } + } + + return true; + } + + protected Item getInsertedItem() { + return null; + } + @Override public ArrayList getDrops(World world, int x, int y, int z, int meta, int fortune) { ArrayList drops = new ArrayList(); drops.add(new ItemStack(ModItems.ingot_graphite, 8)); - if(meta >> 2 == 1) + if((meta & 4) == 4) drops.add(new ItemStack(ModItems.hull_small_aluminium, 1)); + if(getInsertedItem() != null) + drops.add(new ItemStack(getInsertedItem(), 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 43351e185..9bfe9c094 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java @@ -12,6 +12,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentText; @@ -34,13 +35,6 @@ public class BlockGraphiteFuel extends BlockGraphiteDrilledTE implements IToolab this.blockIconAluminum = iconRegister.registerIcon(RefStrings.MODID + ":block_graphite_fuel_aluminum"); } - @Override - public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { - ArrayList drops = super.getDrops(world, x, y, z, metadata, fortune); - drops.add(new ItemStack(ModItems.pile_rod_uranium)); - return drops; - } - @Override public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { @@ -68,4 +62,9 @@ public class BlockGraphiteFuel extends BlockGraphiteDrilledTE implements IToolab return true; } + + @Override + protected Item getInsertedItem() { + return ModItems.pile_rod_uranium; + } } diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteNeutronDetector.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteNeutronDetector.java new file mode 100644 index 000000000..6340817b8 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteNeutronDetector.java @@ -0,0 +1,135 @@ +package com.hbm.blocks.machine.pile; + +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.pile.TileEntityPileFuel; +import com.hbm.tileentity.machine.pile.TileEntityPileNeutronDetector; + +import api.hbm.block.IToolable.ToolType; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockGraphiteNeutronDetector extends BlockGraphiteDrilledTE { + + @Override + public TileEntity createNewTileEntity(World world, int p_149915_2_) { + return new TileEntityPileNeutronDetector(); + } + + @SideOnly(Side.CLIENT) + protected IIcon outIcon; + @SideOnly(Side.CLIENT) + protected IIcon outIconAluminum; + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.blockIconAluminum = iconRegister.registerIcon(RefStrings.MODID + ":block_graphite_detector_aluminum"); + this.outIconAluminum = iconRegister.registerIcon(RefStrings.MODID + ":block_graphite_detector_out_aluminum"); + this.outIcon = iconRegister.registerIcon(RefStrings.MODID + ":block_graphite_detector_out"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + + int cfg = metadata & 3; + + if(side == cfg * 2 || side == cfg * 2 + 1) { + if((metadata & 4) == 4) + return ((metadata & 8) > 0) ? this.outIconAluminum : this.blockIconAluminum; + return ((metadata & 8) > 0) ? this.outIcon : this.blockIcon; + } + + return this.sideIcon; + } + + public void triggerRods(World world, int x, int y, int z) { + int oldMeta = world.getBlockMetadata(x, y, z); + int newMeta = oldMeta ^ 8; //toggle bit #4 + int pureMeta = oldMeta & 3; + + world.setBlockMetadataWithNotify(x, y, z, newMeta, 3); + + world.playSoundEffect(x + 0.5D, y + 0.5D, z + 0.5D, "hbm:item.techBleep", 0.02F, 1.0F); + + ForgeDirection dir = ForgeDirection.getOrientation(pureMeta * 2); + + if(dir == ForgeDirection.UNKNOWN) + return; + + for(int i = -1; i <= 1; i += 1) { + + int ix = x + dir.offsetX * i; + int iy = y + dir.offsetY * i; + int iz = z + dir.offsetZ * i; + + while(world.getBlock(ix, iy, iz) == ModBlocks.block_graphite_rod && world.getBlockMetadata(ix, iy, iz) == oldMeta) { + + world.setBlockMetadataWithNotify(ix, iy, iz, newMeta, 3); + + ix += dir.offsetX * i; + iy += dir.offsetY * i; + iz += dir.offsetZ * i; + } + } + } + + @Override + public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { + + if(!world.isRemote) { + + if(tool == ToolType.SCREWDRIVER) { + + int meta = world.getBlockMetadata(x, y, z); + int cfg = meta & 3; + + if(!player.isSneaking()) { + if(side == cfg * 2 || side == cfg * 2 + 1) { + world.setBlock(x, y, z, ModBlocks.block_graphite_drilled, meta & 7, 3); + this.ejectItem(world, x, y, z, ForgeDirection.getOrientation(side), new ItemStack(getInsertedItem())); + } + } else { + TileEntityPileNeutronDetector pile = (TileEntityPileNeutronDetector) world.getTileEntity(x, y, z); + + player.addChatComponentMessage(new ChatComponentText("CP1 FUEL ASSEMBLY " + x + " " + y + " " + z).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD))); + player.addChatComponentMessage(new ChatComponentText("FLUX: " + pile.lastNeutrons + "/" + pile.maxNeutrons).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); + } + } + + if(tool == ToolType.DEFUSER) { + TileEntityPileNeutronDetector pile = (TileEntityPileNeutronDetector) world.getTileEntity(x, y, z); + + if(player.isSneaking()) { + if(pile.maxNeutrons > 1) + pile.maxNeutrons--; + } else { + pile.maxNeutrons++; + } + } + } + + return true; + } + + @Override + protected Item getInsertedItem() { + return ModItems.pile_rod_detector; + } +} diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteRod.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteRod.java index 4812b6dc8..900ea3d89 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteRod.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteRod.java @@ -9,8 +9,10 @@ import com.hbm.lib.RefStrings; import api.hbm.block.IToolable; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.World; @@ -64,7 +66,7 @@ public class BlockGraphiteRod extends BlockGraphiteDrilledBase implements IToola world.setBlockMetadataWithNotify(x, y, z, newMeta, 3); - world.playSoundEffect(x + 0.5D, y + 0.5D, z + 0.5D, "random.click", 0.3F, pureMeta == oldMeta ? 0.75F : 0.65F); + world.playSoundEffect(x + 0.5D, y + 0.5D, z + 0.5D, "random.click", 0.3F, pureMeta == (oldMeta & 11) ? 0.75F : 0.65F); ForgeDirection dir = ForgeDirection.getOrientation(side); @@ -95,31 +97,9 @@ public class BlockGraphiteRod extends BlockGraphiteDrilledBase implements IToola return false; } - - @Override - public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { - - if(tool != ToolType.SCREWDRIVER) - return false; - - if(!world.isRemote) { - - 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 & 7, 3); - this.ejectItem(world, x, y, z, ForgeDirection.getOrientation(side), new ItemStack(ModItems.pile_rod_boron)); - } - } - - return true; - } @Override - public ArrayList getDrops(World world, int x, int y, int z, int meta, int fortune) { - ArrayList drops = super.getDrops(world, x, y, z, meta, fortune); - drops.add(new ItemStack(ModItems.pile_rod_boron)); - return drops; + protected Item getInsertedItem() { + return ModItems.pile_rod_boron; } } diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteSource.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteSource.java index cf02a9785..b88d13f7f 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteSource.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteSource.java @@ -36,33 +36,7 @@ public class BlockGraphiteSource extends BlockGraphiteDrilledTE implements ITool } @Override - public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { - ArrayList drops = super.getDrops(world, x, y, z, metadata, fortune); - drops.add(new ItemStack(whoAmIAgain())); - return drops; - } - - @Override - public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { - - if(tool != ToolType.SCREWDRIVER) - return false; - - if(!world.isRemote) { - - 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(whoAmIAgain())); - } - } - - return true; - } - - private Item whoAmIAgain() { + protected Item getInsertedItem() { return this == ModBlocks.block_graphite_plutonium ? ModItems.pile_rod_plutonium : ModItems.pile_rod_source; } } diff --git a/src/main/java/com/hbm/crafting/RodRecipes.java b/src/main/java/com/hbm/crafting/RodRecipes.java index e98baed08..834b6849c 100644 --- a/src/main/java/com/hbm/crafting/RodRecipes.java +++ b/src/main/java/com/hbm/crafting/RodRecipes.java @@ -85,7 +85,9 @@ public class RodRecipes { //Pile fuel CraftingManager.addRecipeAuto(new ItemStack(ModItems.pile_rod_uranium, 1), new Object[] { " U ", "PUP", " U ", 'P', IRON.plate(), 'U', U.billet() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.pile_rod_source, 1), new Object[] { " U ", "PUP", " U ", 'P', IRON.plate(), 'U', ModItems.billet_ra226be }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.pile_rod_boron, 1), new Object[] { "B", "W", "B", 'B', B.ingot(), 'W', KEY_PLANKS }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.pile_rod_boron, 1), new Object[] { " B ", " W ", " B ", 'B', B.ingot(), 'W', KEY_PLANKS }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.pile_rod_lithium, 1), new Object[] { ModItems.cell_empty, LI.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.pile_rod_detector, 1), new Object[] { " B ", "CM ", " B ", 'B', B.ingot(), 'C', ModItems.circuit_aluminium, 'M', ModItems.motor }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.rbmk_fuel_empty, 1), new Object[] { "ZRZ", "Z Z", "ZRZ", 'Z', ZR.ingot(), 'R', ModItems.rod_quad_empty }); addRBMKRod(U, ModItems.rbmk_fuel_ueu); 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 fa1f6ad7a..339d19b29 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -131,6 +131,9 @@ public class AnvilRecipes { constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModItems.plate_steel, 2), new AnvilOutput(new ItemStack(ModItems.hull_small_steel))).setTier(1)); + constructionRecipes.add(new AnvilConstructionRecipe( + new ComparableStack(ModItems.plate_aluminium, 2), + new AnvilOutput(new ItemStack(ModItems.hull_small_aluminium))).setTier(1)); constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModItems.coil_copper, 2), new AnvilOutput(new ItemStack(ModItems.coil_copper_torus))).setTier(1).setOverlay(OverlayType.CONSTRUCTION)); @@ -551,6 +554,17 @@ public class AnvilRecipes { new AnvilOutput(new ItemStack(ModItems.ingot_boron, 2)), new AnvilOutput(new ItemStack(Items.stick, 2)) }).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new ComparableStack(ModItems.pile_rod_detector), new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.ingot_boron, 2)), + new AnvilOutput(new ItemStack(ModItems.motor, 1)), + new AnvilOutput(new ItemStack(ModItems.circuit_aluminium, 1)) + }).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new ComparableStack(ModItems.pile_rod_lithium), new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.lithium, 1)), + new AnvilOutput(new ItemStack(ModItems.cell_empty, 1)) + }).setTier(2)); //RBMK 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 8de41adb6..24a05f230 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1057,6 +1057,8 @@ public class ModItems { public static Item pile_rod_plutonium; public static Item pile_rod_source; public static Item pile_rod_boron; + public static Item pile_rod_lithium; + public static Item pile_rod_detector; public static Item plate_fuel_u233; public static Item plate_fuel_u235; @@ -3027,7 +3029,7 @@ public class ModItems { cap_aluminium = new Item().setUnlocalizedName("cap_aluminium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":cap_aluminium"); hull_small_steel = new Item().setUnlocalizedName("hull_small_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":hull_small_steel"); - hull_small_aluminium = new Item().setUnlocalizedName("hull_small_aluminium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":hull_small_aluminium"); + hull_small_aluminium = new ItemCustomLore().setUnlocalizedName("hull_small_aluminium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":hull_small_aluminium"); hull_big_steel = new Item().setUnlocalizedName("hull_big_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":hull_big_steel"); hull_big_aluminium = new Item().setUnlocalizedName("hull_big_aluminium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":hull_big_aluminium"); hull_big_titanium = new Item().setUnlocalizedName("hull_big_titanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":hull_big_titanium"); @@ -3601,6 +3603,8 @@ public class ModItems { 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"); + pile_rod_lithium = new ItemPileRod().setUnlocalizedName("pile_rod_lithium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pile_rod_lithium"); + pile_rod_detector = new ItemPileRod().setUnlocalizedName("pile_rod_detector").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pile_rod_detector"); plate_fuel_u233 = new ItemPlateFuel(2200000).setFunction(FunctionEnum.SQUARE_ROOT, 50).setUnlocalizedName("plate_fuel_u233").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":plate_fuel_u233"); plate_fuel_u235 = new ItemPlateFuel(2200000).setFunction(FunctionEnum.SQUARE_ROOT, 40).setUnlocalizedName("plate_fuel_u235").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":plate_fuel_u235"); @@ -6749,6 +6753,8 @@ public class ModItems { 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()); + GameRegistry.registerItem(pile_rod_lithium, pile_rod_lithium.getUnlocalizedName()); + GameRegistry.registerItem(pile_rod_detector, pile_rod_detector.getUnlocalizedName()); //Plate Fuels GameRegistry.registerItem(plate_fuel_u233, plate_fuel_u233.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/machine/ItemPileRod.java b/src/main/java/com/hbm/items/machine/ItemPileRod.java index 6930840ff..68debdd78 100644 --- a/src/main/java/com/hbm/items/machine/ItemPileRod.java +++ b/src/main/java/com/hbm/items/machine/ItemPileRod.java @@ -3,6 +3,7 @@ package com.hbm.items.machine; import java.util.List; import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -13,23 +14,17 @@ public class ItemPileRod extends Item { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - - list.add(EnumChatFormatting.YELLOW + "Use on drilled graphite to insert"); - list.add(EnumChatFormatting.YELLOW + "Use screwdriver to extract"); - list.add(""); - if(this == ModItems.pile_rod_uranium) { - list.add(EnumChatFormatting.GREEN + "[Reactive Fuel]"); - list.add(EnumChatFormatting.YELLOW + "Use hand drill to take core sample"); + String[] defaultLocs = I18nUtil.resolveKey("desc.item.pileRod").split("\\$"); + + for(String loc : defaultLocs) { + list.add(loc); } - if(this == ModItems.pile_rod_boron) { - list.add(EnumChatFormatting.BLUE + "[Neutron Absorber]"); - list.add(EnumChatFormatting.YELLOW + "Click to toggle"); - } + String[] descLocs = I18nUtil.resolveKey(this.getUnlocalizedName() + ".desc").split("\\$"); - if(this == ModItems.pile_rod_source || this == ModItems.pile_rod_plutonium) { - list.add(EnumChatFormatting.LIGHT_PURPLE + "[Neutron Source]"); + for(String loc : descLocs) { + list.add(loc); } } } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index b71596055..a1409c64d 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -273,6 +273,8 @@ public class TileMappings { private static void putPile() { put(TileEntityPileFuel.class, "tileentity_pile_fuel"); put(TileEntityPileSource.class, "tileentity_pile_source"); + put(TileEntityPileBreedingFuel.class, "tileentity_pile_breedingfuel"); + put(TileEntityPileNeutronDetector.class, "tileentity_pile_neutrondetector"); } private static void putRBMK() { diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java index 9fed6d5b5..90d3cd483 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java @@ -23,7 +23,9 @@ public abstract class TileEntityPileBase extends TileEntity { protected void castRay(int flux, int range) { Random rand = worldObj.rand; - Vec3 vec = Vec3.createVectorHelper(1, 0, 0); + int[] vecVals = { 0, 0, 0,}; + vecVals[rand.nextInt(3)] = 1; + Vec3 vec = Vec3.createVectorHelper(vecVals[0], vecVals[1], vecVals[2]); vec.rotateAroundZ((float)(rand.nextDouble() * Math.PI * 2D)); vec.rotateAroundY((float)(rand.nextDouble() * Math.PI * 2D)); vec.rotateAroundX((float)(rand.nextDouble() * Math.PI * 2D)); @@ -79,7 +81,9 @@ public abstract class TileEntityPileBase extends TileEntity { IPileNeutronReceiver rec = (IPileNeutronReceiver) te; rec.receiveNeutrons(flux); - return; + + if(b != ModBlocks.block_graphite_detector || (meta & 8) == 0) + return; } List entities = worldObj.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(x + 0.5, y + 0.5, z + 0.5, x + 0.5, y + 0.5, z + 0.5)); diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBreedingFuel.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBreedingFuel.java new file mode 100644 index 000000000..117ecf27e --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBreedingFuel.java @@ -0,0 +1,59 @@ +package com.hbm.tileentity.machine.pile; + +import com.hbm.blocks.ModBlocks; +import com.hbm.config.GeneralConfig; + +import api.hbm.block.IPileNeutronReceiver; +import net.minecraft.nbt.NBTTagCompound; + +public class TileEntityPileBreedingFuel extends TileEntityPileBase implements IPileNeutronReceiver { + + public int neutrons; + public int lastNeutrons; + public int progress; + public static final int maxProgress = GeneralConfig.enable528 ? 37500 : 25000; + + @Override + public void updateEntity() { + if(!worldObj.isRemote) { + react(); + + if(this.progress >= this.maxProgress) { + worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.block_graphite_tritium, this.getBlockMetadata(), 3); + } + } + } + + private void react() { + + this.lastNeutrons = this.neutrons; + this.progress += this.neutrons; + + this.neutrons = 0; + + if(lastNeutrons <= 0) + return; + + for(int i = 0; i < 2; i++) + this.castRay(1, 5); + } + + @Override + public void receiveNeutrons(int n) { + this.neutrons += n; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.progress = nbt.getInteger("progress"); + this.neutrons = nbt.getInteger("neutrons"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("progress", this.progress); + nbt.setInteger("neutrons", this.neutrons); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileNeutronDetector.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileNeutronDetector.java new file mode 100644 index 000000000..421f14eb2 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileNeutronDetector.java @@ -0,0 +1,50 @@ +package com.hbm.tileentity.machine.pile; + +import api.hbm.block.IPileNeutronReceiver; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.machine.pile.BlockGraphiteNeutronDetector; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityPileNeutronDetector extends TileEntity implements IPileNeutronReceiver { + + public int lastNeutrons; + public int neutrons; + public int maxNeutrons = 10; + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + //lastNeutrons is used to reduce the responsiveness of control rods; should cut down on sound/updates whilst keeping them still useful for automatic control. + //Even with it, the auto rods are *very* subject to triggering on and off rapidly - this is necessary, as rays in smaller piles aren't guarenteed to consistently flood all surrounding areas + if(this.neutrons >= this.maxNeutrons && (this.getBlockMetadata() & 8) > 0) + ((BlockGraphiteNeutronDetector)worldObj.getBlock(xCoord, yCoord, zCoord)).triggerRods(worldObj, xCoord, yCoord, zCoord); + if(this.neutrons < this.maxNeutrons && this.lastNeutrons < this.maxNeutrons && (this.getBlockMetadata() & 8) == 0) + ((BlockGraphiteNeutronDetector)worldObj.getBlock(xCoord, yCoord, zCoord)).triggerRods(worldObj, xCoord, yCoord, zCoord); + + this.lastNeutrons = this.neutrons; + this.neutrons = 0; + } + } + + @Override + public void receiveNeutrons(int n) { + this.neutrons += n; + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("maxNeutrons", this.maxNeutrons); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.maxNeutrons = nbt.getInteger("maxNeutrons"); + } +} diff --git a/src/main/java/com/hbm/world/worldgen/ComponentNTMFeatures.java b/src/main/java/com/hbm/world/worldgen/ComponentNTMFeatures.java index ed4f6703c..7c6e83576 100644 --- a/src/main/java/com/hbm/world/worldgen/ComponentNTMFeatures.java +++ b/src/main/java/com/hbm/world/worldgen/ComponentNTMFeatures.java @@ -988,7 +988,7 @@ public class ComponentNTMFeatures { this.fillWithBlocks(world, box, featureSizeX, 0, 5, featureSizeX, 1, 5, ModBlocks.concrete_pillar, Blocks.air, false); //Back Wall Pt. 2 this.fillWithRandomizedBlocks(world, box, 6, 0, 5, featureSizeX - 1, 0, 5, false, rand, RandomConcreteBricks); this.fillWithRandomizedBlocks(world, box, 6, 1, 5, 6, 1, 5, false, rand, RandomConcreteBricks); - this.fillWithRandomizedBlocks(world, box, featureSizeX + 1, 1, 5, featureSizeX + 1, 1, 5, false, rand, RandomConcreteBricks); + this.fillWithRandomizedBlocks(world, box, featureSizeX - 1, 1, 5, featureSizeX + 1, 1, 5, false, rand, RandomConcreteBricks); this.fillWithBlocks(world, box, featureSizeX, 0, featureSizeZ, featureSizeX, 1, featureSizeZ, ModBlocks.concrete_pillar, Blocks.air, false); //Right Wall Pt. 2 this.fillWithRandomizedBlocks(world, box, featureSizeX, 0, 6, featureSizeX, 0, featureSizeZ - 1, false, rand, RandomConcreteBricks); this.fillWithRandomizedBlocks(world, box, featureSizeX, 1, 6, featureSizeX, 1, featureSizeZ - 3, false, rand, RandomConcreteBricks); diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 20bd0abb3..86050b7c4 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -557,6 +557,7 @@ death.attack.tau=%1$s was riddeled by %2$s using negatively charged tauons. death.attack.tauBlast=%1$s charged the XVL1456 for too long and was blown into pieces. death.attack.teleporter=%1$s was teleported into nothingness. +desc.item.pileRod=§eUse on drilled graphite to insert$§eUse screwdriver to extract$ desc.item.rtgDecay=Decays to: %s desc.item.rtgHeat=Power Level: %s desc.item.wasteCooling=Cool in a Spent Fuel Pool Drum @@ -1842,6 +1843,7 @@ item.hull_big_aluminium.name=Big Aluminium Shell item.hull_big_steel.name=Big Steel Shell item.hull_big_titanium.name=Big Titanium Shell item.hull_small_aluminium.name=Small Aluminium Shell +item.hull_small_aluminium.desc=Can be inserted into drilled graphite item.hull_small_steel.name=Small Steel Shell item.igniter.name=Igniter item.igniter.desc=(Used by right-clicking the Prototype)$It's a green metal handle with a$bright red button and a small lid.$At the bottom, the initials N.E. are$engraved. Whoever N.E. was, he had$a great taste in shades of green. @@ -2441,9 +2443,17 @@ item.pellet_rtg_weak.desc=Cheaper and weaker pellet, now with more U238! item.pellet_schrabidium.name=Pure Schrabidium Watz Pellet item.photo_panel.name=Photovoltaic Panel item.pile_rod_boron.name=Chicago Pile Control Rod +item.pile_rod_boron.desc=§9[Neutron Absorber]$§eClick to toggle +item.pile_rod_detector.name=Chicago Pile Control & Detector Rod +item.pile_rod_detector.desc=§9[Neutron Detector/Absorber]$§eUse defuser to increase/decrease neutron limit$§eUse screwdriver w/o sneaking to inspect flux +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_source.name=Chicago Pile Ra226Be Neutron Source +item.pile_rod_source.desc=§d[Neutron Source] item.pile_rod_uranium.name=Chicago Pile Uranium Rod +item.pile_rod_uranium.desc=§a[Reactive Fuel]$§eUse hand drill to take core sample item.pill_iodine.name=Iodine Pill item.pin.name=Bobby Pin item.pin.desc="*Unmodified* success rate of picking a standard lock is ~10%. @@ -3332,11 +3342,14 @@ tile.block_fluorite.name=Block of Fluorite tile.block_foam.name=Foam tile.block_insulator.name=Roll of Insulation tile.block_graphite.name=Block of Graphite +tile.block_graphite_detector.name=Pile Neutron Detector tile.block_graphite_drilled.name=Drilled Graphite tile.block_graphite_fuel.name=Pile Fuel +tile.block_graphite_lithium.name=Pile Lithium Fuel tile.block_graphite_plutonium.name=Pile Fuel (Bred) tile.block_graphite_rod.name=Pile Control Rod tile.block_graphite_source.name=Pile Neutron Source +tile.block_graphite_tritium.name=Pile Lithium Fuel (Bred) tile.block_lead.name=Block of Lead tile.block_lanthanium.name=Block of Lanthanium tile.block_lithium.name=Block of Lithium diff --git a/src/main/resources/assets/hbm/textures/blocks/block_graphite_detector.png b/src/main/resources/assets/hbm/textures/blocks/block_graphite_detector.png new file mode 100644 index 0000000000000000000000000000000000000000..51907956d19fb29b46921a5b553fa3431d3569d3 GIT binary patch literal 461 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%Lfm0X`wF-rnABZf;IaPL7U_R#sLfCME_32D-YsnwpwMMn-aSav~xkf`Wq9 z*4BD@dOA8fYHDhVii)bLsu~&^N=i!d^71k=G6Dhue0+T7=H^;jS_%pZl9G~AQc~jL z;=;nh{QUf~va-_B(xRfGLPA0g4i3)F&Yqs0RW04+ja_989i{ahK|w)f4V~#l)u{!Q zsRb1=X?ammQI{@VO3W!u$S#RU%1Ta7-mqaqOnQE3e0p|vc0g2ONL*@hadAUKgR<+# zt3bbS7I;J!GcfQS24TkI`72U@g3~-*978mMm!5YQYcgPPy?8{(CCQmbizR2F_hco7 z9sgq=9$>ckrvG5xcgBXrA5*$4j-0J95jSYymeUP?-MeFInahOl4+^G;xGHL?&gx73 z$#TSap}1G*+g0~Jq{lZ)UXYPGvq|>)Yu>cGe-(NjoioV!KXFOqJ;@84lhOmj<|gh+ xjN0>R+4~QR)~vaIxX)t!toeQR`x5Rj9a$q@bo!9#5ughhJYD@<);T3K0RTB?n7sf1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/block_graphite_detector_aluminum.png b/src/main/resources/assets/hbm/textures/blocks/block_graphite_detector_aluminum.png new file mode 100644 index 0000000000000000000000000000000000000000..72bcf90d9b637d5f11504ea079426af41b181623 GIT binary patch literal 474 zcmV<00VV#4P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0dGk}K~y+T)sj0) z15pr#b01qIkj}zF2nb0`ZIQxOmOu)zQY%F(wecTVT525#5mMNQZ5lyrwDO-G739z{_c$3YN;VTiq0EQ~Rn*x77$xm@=9{mEp4 zN4c&$9*?KfDP92_N?2>*V3P!9vl(Qfs#>l3zR#UYCWUlRN@=a7IU)KJ;xxHjPI^fI zLt@y%lq>vi{GQ?H?7}#FXmajuuK$?f`24EZ>!o#(k*U?()5Cr8Rx@bN^9F;#Fok5} zAL1N(e67}f=k=Y6WQ#COFNQ`5u*Oo`8;vec4#-HAMyzW!18dNwQmIm@aF)wu<5-k{ z+eUkDcLxe$w6TRkA)n8)Wthq0=!hPK*@S?T0piEb%cnnr?^xUIcA1!N$?X68bfNa74|Cf~d0v96%kk;oQ Q&j0`b07*qoM6N<$g2w07Gynhq literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/block_graphite_detector_out.png b/src/main/resources/assets/hbm/textures/blocks/block_graphite_detector_out.png new file mode 100644 index 0000000000000000000000000000000000000000..fb0b77eba608720ece8bcd37c3031f1565e14778 GIT binary patch literal 461 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%Lfm0X`wF-rnABZf;IaPL7U_R#sLfCME_32D-YsnwpwMMn-aSav~xkf`Wq9 z*4BD@dOA8fYHDhVii)bLsu~&^N=i!d^71k=G6Dhue0+T7=H^;jS_%pZl9G~AQc~jL z;=;nh{QUf~va-_B(xRfGLPA0g4i3)F&Yqs0&b}cIUcvUBfp#8&K|w+Gov(lWKvG_h6GHcn1XE-x=vHL#G=Fv!l%mQ>b~Ro5#nE^cUOnE!1` zInXbh1s;*b3=DjSL74G){)!Z!;51Jc#}JL+rRUwnnhY3RFCGzcNpj}VV#!(PJy}U% z$N$)e2be9s=|7nFov~r@$CNIMBWEj2#0?s_<#fYe_wJZl<}%^?gMuj{u8LZ!v-(nh zvK%p9DDD;dcGdk4>G92y7i6T)Y?8hHnm6t4Uxl7W=L~ZGPh1jtPx1oir1ZeBxrw_H wqxQU7_Wr}7HEZr4?z31wYkr^ozJxnWN7jfJojzoG1n5ErPgg&ebxsLQ0I&6pi~s-t literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/block_graphite_detector_out_aluminum.png b/src/main/resources/assets/hbm/textures/blocks/block_graphite_detector_out_aluminum.png new file mode 100644 index 0000000000000000000000000000000000000000..7b365c131c377dfd71bd7f724cc036e681ffe7a6 GIT binary patch literal 480 zcmV<60U!Q}P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0d+}4K~y+T)sj6+ z13?gmv$uOi0@qns2mv99!AdNG*jc1GENn!pfHp}$u(Q+BHieyNrPxK%1Oyu!I}5?e z-w<*!XYM1pWgl*fS(I|?dIF7?G91e%rm_|_;2~W!~S7intX6F8|P6x7+P$UudK*u5SK}`?zrSJ+IZe-&|YO#Lxz_0Kf!MQqi00dS#b>Q>GE;n(e?DjC?*{EEds) zLP44eCP?G*W_xP`2xJVYve~R3#4W{h+Hm5H5O4=Vmv;-aMI+Rm0Vw0CW26{<^TUnLVN*r Wn+2bNnHyRF0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0ZBmH9s(==_{68C*?Sr#YpY&IK)ArAy2(H)b?RFz8Ktl`Lw$Ttn z0(D&@rmB43FN%UY7vl>uK`CXLrVOXVd`g_wd_I?1QXr5Tu_)z={)N9D7K;VT2$CfE z<-vyi-NSOZJVb}dWP-S9oBiAVcs#-zJy@&N>T31A0d*G$)^!A5v^du-$Iio5moDA~HbO e;Q#+6r9J_?;S$v+ZzAjf0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0b)r+K~y+T)snkP z15pr$J(ndUkj}zF2nflV+9EF?3zEu0(8i#Gpp|c6Y3mDE+u7RK*l6W52o}a7Ih$ok zvX@-^k_lUAVeP*#%sKP_b33cr?RK8$lgVU0pQmY>Wf}f-IyJ^%@yq4%Y&LVwjYcDG zR1gHi;cz@2b1OhY3TrJId`KWk62wGRtJR9*m@|j9C8UBJALsU-m% ziQ$VUd1IxEceZ9{dy5+YTk!w?C8fRr{Z0g_P&(7u00000NkvXXu0mjf DuhhuL literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/block_graphite_tritium.png b/src/main/resources/assets/hbm/textures/blocks/block_graphite_tritium.png new file mode 100644 index 0000000000000000000000000000000000000000..5e99673ce400cbbf6d17dd7464212c472ce6f5b0 GIT binary patch literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%Lg@0X`wF-rnABZf;IaPL7U_R#sLfCME_32D-YsnwpwMMn-aSav~xkf`Wq9 z*4BD@dOA8fYHDhVii)bLsu~&^N=i!d^71k=G6Dhue0+T7=H^;jS_%pZl9G~AQc~jL z;=;nh{QUf~va-_B(xRfGLPA0g4i3)F&Yqs0kDh&b`S$ni2XBLdf^OV-dEx5Aljm-& z-Ml|4D(c|zOUu^mNKQ`Px&PFHWt+0Ivu7??U0ht;(9lq8IEfMHa?S#e$YKTtzQZ8Q zcszea3Q%x@r;B5VMsRXMLP}CvVrp`F^798Nj~_itOnCA%LeUP@I@kg86u>xZW(}o)1VB;NZe#Ft^>bP0l+XkKDc_Pn literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/block_graphite_tritium_aluminum.png b/src/main/resources/assets/hbm/textures/blocks/block_graphite_tritium_aluminum.png new file mode 100644 index 0000000000000000000000000000000000000000..8611290f1cd03fb66ecb6b1d9f018ce213122a53 GIT binary patch literal 459 zcmV;+0W|)JP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0bof)K~y+T)sj6+ z!%!54y&s{Z(9OX?Cqd1toylY}olc9Q$g(WYbNtzCW{kn&`@TP)&z*Cl(TE$> zZnuZS;dngeR)B^S)><_9kU*NIh>5B&3?`aqCO$4saC5}O9D6& z!xyC-(Xa4(hU1GX;ckMpBFc;yT_Ns>5@`%9GU zICd`XIoIn)$@-U$AeMENGq4671VO9S!Zw>tNS%G}50G|-o@T8oS{L1RK3B5BGZP>8k(xpp#Ph9%Xz~ITiFl*MV^73+HV`JZl zB%pHUk`_@Q#a9yK7yKU?Ft{GLa{?&CS>O>_3{-F!gc*t4C4SL%5*5wflJ=?^>wHQWO_C)7qz~BeF5@!P3Ah?_k#k!tV_8#~ zgv+Am6EFYidy)N-HO56{$GV?yUdz|=9r?xN7jsd#=UtN5hm0O+$%~wCes76C0JM(5 M)78&qol`;+0PR?4@c;k- literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/pile_rod_lithium.png b/src/main/resources/assets/hbm/textures/items/pile_rod_lithium.png new file mode 100644 index 0000000000000000000000000000000000000000..fd1bfd832fdfe8fec147c9f4317a82ac6f467288 GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}@0G|-osHmv)^z^#Ax(O2|95`^`>VFV;`}Xa%YuEPe+xO_vqkw<_pxO-< zswF^*wU6aM48NFhe_cwm9Oi&6r#^?5Cjdk-6=9J8q*Lkb% zUzi=|UEd_L&||)0&AEh3Et|3#s_%Ks=4{~6Pvd{y$GPM$dqMGT&