pile shenanigans pt. 2

This commit is contained in:
Vaern 2022-05-01 20:10:18 -07:00
parent 5c2c4d300e
commit c3aee19b3a
29 changed files with 455 additions and 79 deletions

View File

@ -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());

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;

View File

@ -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<ItemStack> getDrops(World world, int x, int y, int z, int meta, int fortune) {
ArrayList<ItemStack> 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;
}
}

View File

@ -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<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
ArrayList<ItemStack> 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;
}
}

View File

@ -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;
}
}

View File

@ -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<ItemStack> getDrops(World world, int x, int y, int z, int meta, int fortune) {
ArrayList<ItemStack> 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;
}
}

View File

@ -36,33 +36,7 @@ public class BlockGraphiteSource extends BlockGraphiteDrilledTE implements ITool
}
@Override
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
ArrayList<ItemStack> 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;
}
}

View File

@ -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);

View File

@ -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(

View File

@ -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());

View File

@ -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);
}
}
}

View File

@ -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() {

View File

@ -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<EntityLivingBase> 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));

View File

@ -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);
}
}

View File

@ -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");
}
}

View File

@ -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);

View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 480 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 459 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 B