diff --git a/src/main/java/com/hbm/blocks/BlockDummyable.java b/src/main/java/com/hbm/blocks/BlockDummyable.java index 3b78e324a..3c1869089 100644 --- a/src/main/java/com/hbm/blocks/BlockDummyable.java +++ b/src/main/java/com/hbm/blocks/BlockDummyable.java @@ -444,7 +444,7 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl z = pos[2]; for(AxisAlignedBB aabb :this.bounding) { - AxisAlignedBB boxlet = getAABBRotationOffset(aabb, x, y, z, ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z) - this.offset).getRotation(ForgeDirection.UP)); + AxisAlignedBB boxlet = getAABBRotationOffset(aabb, x + 0.5, y, z + 0.5, ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z) - this.offset).getRotation(ForgeDirection.UP)); if(entityBounding.intersectsWith(boxlet)) { list.add(boxlet); @@ -452,7 +452,7 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl } } - public static AxisAlignedBB getAABBRotationOffset(AxisAlignedBB aabb, int x, int y, int z, ForgeDirection dir) { + public static AxisAlignedBB getAABBRotationOffset(AxisAlignedBB aabb, double x, double y, double z, ForgeDirection dir) { AxisAlignedBB newBox = null; @@ -462,7 +462,7 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl if(dir == ForgeDirection.WEST) newBox = AxisAlignedBB.getBoundingBox(aabb.minZ, aabb.minY, -aabb.maxX, aabb.maxZ, aabb.maxY, -aabb.minX); if(newBox != null) { - newBox.offset(x + 0.5, y, z + 0.5); + newBox.offset(x, y, z); return newBox; } @@ -505,7 +505,7 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl float exp = 0.002F; ICustomBlockHighlight.setup(); - for(AxisAlignedBB aabb : this.bounding) event.context.drawOutlinedBoundingBox(aabb.expand(exp, exp, exp).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1); + for(AxisAlignedBB aabb : this.bounding) event.context.drawOutlinedBoundingBox(getAABBRotationOffset(aabb.expand(exp, exp, exp), 0, 0, 0, ForgeDirection.getOrientation(tile.getBlockMetadata() - offset).getRotation(ForgeDirection.UP)).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1); ICustomBlockHighlight.cleanup(); } } diff --git a/src/main/java/com/hbm/blocks/BlockEnumMulti.java b/src/main/java/com/hbm/blocks/BlockEnumMulti.java index 8c92a8384..bca10f87e 100644 --- a/src/main/java/com/hbm/blocks/BlockEnumMulti.java +++ b/src/main/java/com/hbm/blocks/BlockEnumMulti.java @@ -19,7 +19,7 @@ public class BlockEnumMulti extends BlockMulti { this.multiTexture = multiTexture; } - private IIcon[] icons; + protected IIcon[] icons; @Override @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index afe2c497b..d968217b9 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -485,6 +485,7 @@ public class ModBlocks { public static Block mush_block_stem; public static Block plant_flower; + public static Block plant_tall; public static Block plant_dead; public static Block reeds; @@ -1656,6 +1657,7 @@ public class ModBlocks { mush_block_stem = new BlockMushHuge(Material.plants).setBlockName("mush_block_stem").setLightLevel(1.0F).setStepSound(Block.soundTypeGrass).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":mush_block_stem"); plant_flower = new BlockNTMFlower().setBlockName("plant_flower").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); + plant_tall = new BlockTallPlant().setBlockName("plant_tall").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); plant_dead = new BlockDeadPlant().setBlockName("plant_dead").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); reeds = new BlockReeds().setBlockName("plant_reeds").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); @@ -2764,6 +2766,7 @@ public class ModBlocks { GameRegistry.registerBlock(deco_pipe_quad_red, ItemBlockBase.class, deco_pipe_quad_red.getUnlocalizedName()); GameRegistry.registerBlock(deco_pipe_quad_marked, ItemBlockBase.class, deco_pipe_quad_marked.getUnlocalizedName()); register(plant_flower); + register(plant_tall); register(plant_dead); register(reeds); GameRegistry.registerBlock(mush, mush.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockGrate.java b/src/main/java/com/hbm/blocks/generic/BlockGrate.java index e74a4bb69..735c8a89f 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGrate.java @@ -103,7 +103,9 @@ public class BlockGrate extends Block implements ITooltipProvider { return; } - if((entity instanceof EntityItem || entity instanceof EntityXPOrb) && entity.posY < y + 1.5) { + int meta = world.getBlockMetadata(x, y, z); + + if((entity instanceof EntityItem || entity instanceof EntityXPOrb) && entity.posY < y + meta * 0.125D + 0.375) { entity.motionX = 0; entity.motionY = -0.25; entity.motionZ = 0; diff --git a/src/main/java/com/hbm/blocks/generic/BlockNTMFlower.java b/src/main/java/com/hbm/blocks/generic/BlockNTMFlower.java index 5b4b330f7..f9c84a96c 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockNTMFlower.java +++ b/src/main/java/com/hbm/blocks/generic/BlockNTMFlower.java @@ -5,6 +5,9 @@ import java.util.Random; import com.hbm.blocks.BlockEnumMulti; import com.hbm.blocks.ITooltipProvider; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockDeadPlant.EnumDeadPlantType; +import com.hbm.blocks.generic.BlockTallPlant.EnumTallFlower; import net.minecraft.block.Block; import net.minecraft.block.IGrowable; @@ -17,19 +20,26 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.EnumPlantType; import net.minecraftforge.common.IPlantable; -import net.minecraftforge.common.util.ForgeDirection; public class BlockNTMFlower extends BlockEnumMulti implements IPlantable, IGrowable, ITooltipProvider { public BlockNTMFlower() { super(Material.plants, EnumFlowerType.class, true, true); + this.setTickRandomly(true); } public static enum EnumFlowerType { - FOXGLOVE, - TOBACCO, - NIGHTSHADE, - WEED + FOXGLOVE(false), + TOBACCO(false), + NIGHTSHADE(false), + WEED(false), + CD0(true), + CD1(true); + + public boolean needsOil; + private EnumFlowerType(boolean needsOil) { + this.needsOil = needsOil; + } } @Override @@ -53,7 +63,7 @@ public class BlockNTMFlower extends BlockEnumMulti implements IPlantable, IGrowa } protected boolean canPlaceBlockOn(Block block) { - return block == Blocks.grass || block == Blocks.dirt || block == Blocks.farmland; + return block == Blocks.grass || block == Blocks.dirt || block == Blocks.farmland || block == ModBlocks.dirt_dead || block == ModBlocks.dirt_oily; } @Override @@ -65,13 +75,13 @@ public class BlockNTMFlower extends BlockEnumMulti implements IPlantable, IGrowa protected void checkAndDropBlock(World world, int x, int y, int z) { if(!this.canBlockStay(world, x, y, z)) { this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); - world.setBlock(x, y, z, getBlockById(0), 0, 2); + world.setBlock(x, y, z, Blocks.air, 0, 2); } } @Override public boolean canBlockStay(World world, int x, int y, int z) { - return world.getBlock(x, y - 1, z).canSustainPlant(world, x, y - 1, z, ForgeDirection.UP, this); + return canPlaceBlockOn(world.getBlock(x, y - 1, z)); } @Override @@ -96,24 +106,96 @@ public class BlockNTMFlower extends BlockEnumMulti implements IPlantable, IGrowa @Override public int damageDropped(int meta) { + + if(meta == EnumFlowerType.CD1.ordinal()) { + return EnumFlowerType.CD0.ordinal(); + } + return meta; } + @Override + public void updateTick(World world, int x, int y, int z, Random rand) { + + if(world.isRemote) return; //not possible i believe, but better safe than sorry + + int meta = world.getBlockMetadata(x, y, z); + EnumFlowerType type = EnumFlowerType.values()[rectify(meta)]; + + if(!(type == EnumFlowerType.WEED || type == EnumFlowerType.CD0 || type == EnumFlowerType.CD1)) return; + + if(func_149851_a(world, x, y, z, false) && func_149852_a(world, rand, x, y, z) && rand.nextInt(3) == 0) { + func_149853_b(world, rand, x, y, z); + } + } + /* grow condition */ @Override public boolean func_149851_a(World world, int x, int y, int z, boolean b) { + + int meta = world.getBlockMetadata(x, y, z); + + //cadmium willows can only grow with water + if(meta == EnumFlowerType.CD0.ordinal() || meta == EnumFlowerType.CD1.ordinal()) { + + if(world.getBlock(x + 1, y - 1, z).getMaterial() != Material.water && + world.getBlock(x - 1, y - 1, z).getMaterial() != Material.water && + world.getBlock(x, y - 1, z + 1).getMaterial() != Material.water && + world.getBlock(x, y - 1, z - 1).getMaterial() != Material.water) { + return false; + } + } + + if(meta == EnumFlowerType.WEED.ordinal() || meta == EnumFlowerType.CD1.ordinal()) { + return world.isAirBlock(x, y + 1, z); + } return true; } /* chance */ @Override - public boolean func_149852_a(World p_149852_1_, Random p_149852_2_, int p_149852_3_, int p_149852_4_, int p_149852_5_) { + public boolean func_149852_a(World world, Random rand, int x, int y, int z) { + + int meta = world.getBlockMetadata(x, y, z); + + if(meta == EnumFlowerType.WEED.ordinal() || meta == EnumFlowerType.CD0.ordinal() || meta == EnumFlowerType.CD1.ordinal()) { + return rand.nextFloat() < 0.33F; + } + return true; } /* grow */ @Override public void func_149853_b(World world, Random rand, int x, int y, int z) { + + int meta = world.getBlockMetadata(x, y, z); + Block onTop = world.getBlock(x, y - 1, z); + + if(meta == EnumFlowerType.WEED.ordinal()) { + if(onTop == ModBlocks.dirt_dead || onTop == ModBlocks.dirt_oily) { + world.setBlock(x, y, z, ModBlocks.plant_dead, EnumDeadPlantType.GENERIC.ordinal(), 3); + return; + } + } + + if(meta == EnumFlowerType.WEED.ordinal()) { + world.setBlock(x, y, z, ModBlocks.plant_tall, EnumTallFlower.WEED.ordinal(), 3); + world.setBlock(x, y + 1, z, ModBlocks.plant_tall, EnumTallFlower.WEED.ordinal() + 8, 3); + return; + } + + if(meta == EnumFlowerType.CD0.ordinal()) { + world.setBlock(x, y, z, ModBlocks.plant_flower, EnumFlowerType.CD1.ordinal(), 3); + return; + } + + if(meta == EnumFlowerType.CD1.ordinal()) { + world.setBlock(x, y, z, ModBlocks.plant_tall, EnumTallFlower.CD2.ordinal(), 3); + world.setBlock(x, y + 1, z, ModBlocks.plant_tall, EnumTallFlower.CD2.ordinal() + 8, 3); + return; + } + this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); } diff --git a/src/main/java/com/hbm/blocks/generic/BlockTallPlant.java b/src/main/java/com/hbm/blocks/generic/BlockTallPlant.java new file mode 100644 index 000000000..f9ff43fb0 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockTallPlant.java @@ -0,0 +1,318 @@ +package com.hbm.blocks.generic; + +import java.util.ArrayList; +import java.util.Random; + +import com.hbm.blocks.BlockEnumMulti; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockDeadPlant.EnumDeadPlantType; +import com.hbm.blocks.generic.BlockNTMFlower.EnumFlowerType; +import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.items.ModItems; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.IGrowable; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.EnumPlantType; +import net.minecraftforge.common.IPlantable; + +public class BlockTallPlant extends BlockEnumMulti implements IPlantable, IGrowable { + + public BlockTallPlant() { + super(Material.plants, EnumTallFlower.class, true, true); + this.setTickRandomly(true); + } + + public static enum EnumTallFlower { + WEED(false), + CD2(true), + CD3(true), + CD4(true); + + public boolean needsOil; + private EnumTallFlower(boolean needsOil) { + this.needsOil = needsOil; + } + } + + @Override + public Item getItemDropped(int meta, Random rand, int fortune) { + + /*if(meta == EnumTallFlower.WEED.ordinal()) { + return Item.getItemFromBlock(ModBlocks.plant_flower); + } + + return Item.getItemFromBlock(this);*/ + + return Item.getItemFromBlock(ModBlocks.plant_flower); + } + + @Override + public int quantityDropped(int meta, int fortune, Random random) { + return 1; + } + + @Override + public int damageDropped(int meta) { + meta = rectify(meta); + + if(meta == EnumTallFlower.WEED.ordinal()) { + return EnumFlowerType.WEED.ordinal(); + } + + return EnumFlowerType.CD0.ordinal(); + } + + protected IIcon[] bottomIcons; + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + + Enum[] enums = theEnum.getEnumConstants(); + this.icons = new IIcon[enums.length]; + this.bottomIcons = new IIcon[enums.length]; + + for(int i = 0; i < icons.length; i++) { + Enum num = enums[i]; + this.icons[i] = reg.registerIcon(this.getTextureName() + "." + num.name().toLowerCase() + ".upper"); + this.bottomIcons[i] = reg.registerIcon(this.getTextureName() + "." + num.name().toLowerCase() + ".lower"); + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return meta > 7 ? this.icons[meta % this.icons.length] : this.bottomIcons[meta % this.icons.length]; + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + return null; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public int getRenderType() { + return 1; + } + + @Override + public boolean canPlaceBlockAt(World world, int x, int y, int z) { + return super.canPlaceBlockAt(world, x, y, z) && this.canBlockStay(world, x, y, z) && world.isAirBlock(x, y + 1, z); + } + + protected boolean canPlaceBlockOn(Block block) { + return block == Blocks.grass || block == Blocks.dirt || block == Blocks.farmland || block == ModBlocks.dirt_dead || block == ModBlocks.dirt_oily; + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { + super.onNeighborBlockChange(world, x, y, z, block); + this.checkAndDropBlock(world, x, y, z); + } + + public static boolean detectCut = true; + protected void checkAndDropBlock(World world, int x, int y, int z) { + if(!this.canBlockStay(world, x, y, z)) { + if(world.getBlockMetadata(x, y, z) < 8) { + this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); + } + world.setBlock(x, y, z, Blocks.air, 0, 3); + } + + if(!detectCut) return; + + Block block = world.getBlock(x, y + 1, z); + int meta = world.getBlockMetadata(x, y + 1, z); + int ownMeta = world.getBlockMetadata(x, y, z); + + if(ownMeta < 8 && (meta != ownMeta + 8 || block != this) && ModBlocks.plant_flower.canBlockStay(world, x, y, z)) { + + if(ownMeta == EnumTallFlower.WEED.ordinal()) + world.setBlock(x, y, z, ModBlocks.plant_flower, EnumFlowerType.WEED.ordinal(), 3); + else + world.setBlock(x, y, z, ModBlocks.plant_flower, EnumFlowerType.CD0.ordinal(), 3); + } + } + + @Override + public boolean canBlockStay(World world, int x, int y, int z) { + int meta = world.getBlockMetadata(x, y, z); + + if(meta > 7) { + return world.getBlock(x, y - 1, z) == this && world.getBlockMetadata(x, y - 1, z) == meta - 8; + } + + return canPlaceBlockOn(world.getBlock(x, y - 1, z)); + } + + @Override + public int getDamageValue(World world, int x, int y, int z) { + return world.getBlockMetadata(x, y, z) % 8; + } + + @Override + public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) { + + if(meta > 7) { + + if(world.getBlock(x, y - 1, z) == this) { + if(!player.capabilities.isCreativeMode) { + this.dropBlockAsItem(world, x, y - 1, z, world.getBlockMetadata(x, y - 1, z), 0); + } + } + } else if(world.getBlock(x, y + 1, z) == this) { + + if(player.capabilities.isCreativeMode) { + world.setBlock(x, y + 1, z, Blocks.air, 0, 2); + } else { + this.dropBlockAsItem(world, x, y + 1, z, world.getBlockMetadata(x, y + 1, z), 0); + } + } + + super.onBlockHarvested(world, x, y, z, meta, player); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack stack) { + world.setBlock(x, y + 1, z, this, stack.getItemDamage() + 8, 2); + } + + @Override + public void updateTick(World world, int x, int y, int z, Random rand) { + + if(world.isRemote) return; //not possible i believe, but better safe than sorry + + int meta = world.getBlockMetadata(x, y, z); + if(meta > 7) return; + + EnumTallFlower type = EnumTallFlower.values()[rectify(meta)]; + Block onTop = world.getBlock(x, y - 1, z); + + if(!type.needsOil) { + if(onTop == ModBlocks.dirt_dead || onTop == ModBlocks.dirt_oily) { + world.setBlock(x, y, z, ModBlocks.plant_dead, EnumDeadPlantType.BIGFLOWER.ordinal(), 3); + return; + } + } + + if(func_149851_a(world, x, y, z, false) && func_149852_a(world, rand, x, y, z) && rand.nextInt(3) == 0) { + func_149853_b(world, rand, x, y, z); + } + } + + /* grow condition */ + @Override + public boolean func_149851_a(World world, int x, int y, int z, boolean b) { + + int meta = world.getBlockMetadata(x, y, z); + int rec = rectify(meta); + + if(rec == EnumTallFlower.CD2.ordinal() || rec == EnumTallFlower.CD3.ordinal()) { + + int y0 = rec == meta ? y : y - 1; + + if(world.getBlock(x + 1, y0 - 1, z).getMaterial() != Material.water && + world.getBlock(x - 1, y0 - 1, z).getMaterial() != Material.water && + world.getBlock(x, y0 - 1, z + 1).getMaterial() != Material.water && + world.getBlock(x, y0 - 1, z - 1).getMaterial() != Material.water) { + return false; + } + } + + if(rec == EnumTallFlower.CD3.ordinal()) { + Block onTop = world.getBlock(x, y - (rec == meta ? 1 : 2), z); + return onTop == ModBlocks.dirt_dead || onTop == ModBlocks.dirt_oily; + } + + return rec != EnumTallFlower.CD4.ordinal() && rec != EnumTallFlower.WEED.ordinal(); + } + + /* chance */ + @Override + public boolean func_149852_a(World world, Random rand, int x, int y, int z) { + int meta = rectify(world.getBlockMetadata(x, y, z)); + if(meta == EnumTallFlower.CD3.ordinal()) { + return true; + } + return rand.nextFloat() < 0.33F; + } + + /* grow */ + @Override + public void func_149853_b(World world, Random rand, int x, int y, int z) { + + int meta = world.getBlockMetadata(x, y, z); + int rec = rectify(meta); + + detectCut = false; + + if(rec == EnumTallFlower.CD2.ordinal() || rec == EnumTallFlower.CD3.ordinal()) { + + if(meta == rec) { + world.setBlockMetadataWithNotify(x, y + 1, z, meta + 9, 3); + world.setBlockMetadataWithNotify(x, y, z, meta + 1, 3); + if(rec == EnumTallFlower.CD3.ordinal()) { + world.setBlock(x, y - 1, z, Blocks.dirt); + } + } else { + world.setBlockMetadataWithNotify(x, y, z, meta + 1, 3); + world.setBlockMetadataWithNotify(x, y - 1, z, rec + 1, 3); + if(rec == EnumTallFlower.CD3.ordinal()) { + world.setBlock(x, y - 2, z, Blocks.dirt); + } + } + } + + detectCut = true; + } + + @Override + public EnumPlantType getPlantType(IBlockAccess world, int x, int y, int z) { + return EnumPlantType.Plains; + } + + @Override + public Block getPlant(IBlockAccess world, int x, int y, int z) { + return this; + } + + @Override + public int getPlantMetadata(IBlockAccess world, int x, int y, int z) { + return world.getBlockMetadata(x, y, z); + } + + + @Override + public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { + ArrayList ret = super.getDrops(world, x, y, z, metadata, fortune); + + if(rectify(world.getBlockMetadata(x, y, z)) == EnumTallFlower.CD4.ordinal()) { + ret.add(DictFrame.fromOne(ModItems.plant_item, com.hbm.items.ItemEnums.EnumPlantType.MUSTARDWILLOW, 3 + world.rand.nextInt(4))); + } + + return ret; + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineGasFlare.java b/src/main/java/com/hbm/blocks/machine/MachineGasFlare.java index 4fd9166b4..4567cf760 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineGasFlare.java +++ b/src/main/java/com/hbm/blocks/machine/MachineGasFlare.java @@ -11,6 +11,7 @@ import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -19,6 +20,11 @@ public class MachineGasFlare extends BlockDummyable implements ITooltipProvider public MachineGasFlare(Material mat) { super(mat); + + this.bounding.add(AxisAlignedBB.getBoundingBox(-1.5D, 0D, -1.5D, 1.5D, 3.875D, 1.5D)); + this.bounding.add(AxisAlignedBB.getBoundingBox(-0.75D, 3.875D, -0.75D, 0.75D, 9, 0.75D)); + this.bounding.add(AxisAlignedBB.getBoundingBox(-1.5D, 9D, -1.5D, 1.5D, 9.375D, 1.5D)); + this.bounding.add(AxisAlignedBB.getBoundingBox(-0.75D, 9.375D, -0.75D, 0.75D, 12, 0.75D)); } @Override diff --git a/src/main/java/com/hbm/blocks/machine/MachineSawmill.java b/src/main/java/com/hbm/blocks/machine/MachineSawmill.java index e79978f1e..1be748c34 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineSawmill.java +++ b/src/main/java/com/hbm/blocks/machine/MachineSawmill.java @@ -171,7 +171,9 @@ public class MachineSawmill extends BlockDummyable implements ILookOverlay, IToo } @Override - public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { } + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } @Override public void printHook(Pre event, World world, int x, int y, int z) { diff --git a/src/main/java/com/hbm/config/WorldConfig.java b/src/main/java/com/hbm/config/WorldConfig.java index 8e705bd15..9f560b536 100644 --- a/src/main/java/com/hbm/config/WorldConfig.java +++ b/src/main/java/com/hbm/config/WorldConfig.java @@ -47,8 +47,9 @@ public class WorldConfig { public static int aluminiumClusterSpawn = 3; public static int copperClusterSpawn = 4; public static int alexandriteSpawn = 100; - + public static int malachiteSpawn = 1; + public static int limestoneSpawn = 1; public static int netherUraniumuSpawn = 8; public static int netherTungstenSpawn = 10; @@ -147,6 +148,7 @@ public class WorldConfig { copperClusterSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.C03_copperClusterSpawn", "Amount of copper cluster veins per chunk", 4); malachiteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.L01_malachiteSpawn", "Amount of malachite block veins per chunk", 1); + limestoneSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.L02_limestoneSpawn", "Amount of limestone block veins per chunk", 1); netherUraniumuSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.N00_uraniumSpawnrate", "Amount of nether uranium per chunk", 8); netherTungstenSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.N01_tungstenSpawnrate", "Amount of nether tungsten per chunk", 10); diff --git a/src/main/java/com/hbm/crafting/PowderRecipes.java b/src/main/java/com/hbm/crafting/PowderRecipes.java index aeabe7c77..f928c7e72 100644 --- a/src/main/java/com/hbm/crafting/PowderRecipes.java +++ b/src/main/java/com/hbm/crafting/PowderRecipes.java @@ -2,6 +2,7 @@ package com.hbm.crafting; import static com.hbm.inventory.OreDictManager.*; +import com.hbm.config.GeneralConfig; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemChemicalDye.EnumChemDye; @@ -52,18 +53,9 @@ public class PowderRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_desh_ready, 1), new Object[] { ModItems.powder_desh_mix, ModItems.ingot_mercury, ModItems.ingot_mercury, COAL.dust() }); //Metal powders - //CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 4), new Object[] { REDSTONE.dust(), IRON.dust(), COAL.dust(), CU.dust() }); - //CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 4), new Object[] { IRON.dust(), COAL.dust(), MINGRADE.dust(), MINGRADE.dust() }); - //CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 4), new Object[] { REDSTONE.dust(), CU.dust(), STEEL.dust(), STEEL.dust() }); - //CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 2), new Object[] { MINGRADE.dust(), STEEL.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_magnetized_tungsten, 1), new Object[] { W.dust(), SA326.nugget() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_tcalloy, 1), new Object[] { STEEL.dust(), TC99.nugget() }); - //CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_red_copper, 2), new Object[] { REDSTONE.dust(), CU.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_steel, 1), new Object[] { IRON.dust(), COAL.dust() }); - //CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_dura_steel, 2), new Object[] { STEEL.dust(), W.dust() }); - //CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_dura_steel, 2), new Object[] { STEEL.dust(), CO.dust() }); - //CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_dura_steel, 4), new Object[] { IRON.dust(), COAL.dust(), W.dust(), W.dust() }); - //CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_dura_steel, 4), new Object[] { IRON.dust(), COAL.dust(), CO.dust(), CO.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 1), new Object[] { new ItemStack(Items.coal, 1, 1), KEY_SAND }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 2), new Object[] { COAL.dust(), KEY_SAND }); @@ -72,6 +64,20 @@ public class PowderRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 12), new Object[] { CA.dust(), KEY_SAND }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 16), new Object[] { BORAX.dust(), KEY_SAND }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_fertilizer, 4), new Object[] { CA.dust(), P_RED.dust(), KNO.dust(), S.dust() }); + + if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCrafting) { + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 4), new Object[] { REDSTONE.dust(), IRON.dust(), COAL.dust(), CU.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 4), new Object[] { IRON.dust(), COAL.dust(), MINGRADE.dust(), MINGRADE.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 4), new Object[] { REDSTONE.dust(), CU.dust(), STEEL.dust(), STEEL.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 2), new Object[] { MINGRADE.dust(), STEEL.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_red_copper, 2), new Object[] { REDSTONE.dust(), CU.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_dura_steel, 2), new Object[] { STEEL.dust(), W.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_dura_steel, 2), new Object[] { STEEL.dust(), CO.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_dura_steel, 4), new Object[] { IRON.dust(), COAL.dust(), W.dust(), W.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_dura_steel, 4), new Object[] { IRON.dust(), COAL.dust(), CO.dust(), CO.dust() }); + } + //Unleash the colores CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.GRAY, 2), new Object[] { DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLACK), DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.WHITE) }); CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.SILVER, 2), new Object[] { DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.GRAY), DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.WHITE) }); diff --git a/src/main/java/com/hbm/crafting/SmeltingRecipes.java b/src/main/java/com/hbm/crafting/SmeltingRecipes.java index f1844f7c2..8b7749cba 100644 --- a/src/main/java/com/hbm/crafting/SmeltingRecipes.java +++ b/src/main/java/com/hbm/crafting/SmeltingRecipes.java @@ -105,6 +105,7 @@ public class SmeltingRecipes { GameRegistry.addSmelting(ModItems.powder_niobium, new ItemStack(ModItems.ingot_niobium), 1.0F); GameRegistry.addSmelting(ModItems.powder_bismuth, new ItemStack(ModItems.ingot_bismuth), 1.0F); GameRegistry.addSmelting(ModItems.powder_calcium, new ItemStack(ModItems.ingot_calcium), 1.0F); + GameRegistry.addSmelting(ModItems.powder_cadmium, new ItemStack(ModItems.ingot_cadmium), 1.0F); GameRegistry.addSmelting(ModItems.combine_scrap, new ItemStack(ModItems.ingot_combine_steel), 1.0F); GameRegistry.addSmelting(ModItems.tank_waste, new ItemStack(ModItems.tank_waste), 0.0F); diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index 5ebc7cc48..2d6d82b78 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -120,7 +120,7 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.defuser, 1), new Object[] { " PS", "P P", " P ", 'P', POLYMER.ingot(), 'S', STEEL.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.coltan_tool, 1), new Object[] { "ACA", "CXC", "ACA", 'A', ALLOY.ingot(), 'C', CINNABAR.crystal(), 'X', Items.compass }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.reacher, 1), new Object[] { "BIB", "P P", "B B", 'B', ModItems.bolt_tungsten, 'I', W.ingot(), 'P', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.bismuth_tool, 1), new Object[] { "TBT", "SRS", "SCS", 'T', TA.nugget(), 'B', ModItems.nugget_bismuth, 'S', TCALLOY.ingot(), 'R', ModItems.reacher, 'C', ModItems.circuit_aluminium }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.bismuth_tool, 1), new Object[] { "TBT", "SRS", "SCS", 'T', TA.nugget(), 'B', ModItems.nugget_bismuth, 'S', ANY_RESISTANTALLOY.ingot(), 'R', ModItems.reacher, 'C', ModItems.circuit_aluminium }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.sat_designator, 1), new Object[] { "RRD", "PIC", " P", 'P', GOLD.plate(), 'R', Items.redstone, 'C', ModItems.circuit_gold, 'D', ModItems.sat_chip, 'I', GOLD.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mirror_tool), new Object[] { " A ", " IA", "I ", 'A', AL.ingot(), 'I', IRON.ingot() }); diff --git a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java index 54496f30b..06d4afa91 100644 --- a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java +++ b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java @@ -29,6 +29,7 @@ public class BulletConfigSyncingUtil { public static int IRON_HS = i++; public static int STEEL_HS = i++; public static int GOLD_HS = i++; + public static int LEAD_HS = i++; public static int DESH_HS = i++; public static int G20_NORMAL = i++; @@ -305,6 +306,7 @@ public class BulletConfigSyncingUtil { configSet.put(IRON_HS, Gun357MagnumFactory.getRevIronConfig().setHeadshot(3F)); configSet.put(STEEL_HS, Gun357MagnumFactory.getRevCursedConfig().setHeadshot(3F)); configSet.put(GOLD_HS, Gun357MagnumFactory.getRevGoldConfig().setHeadshot(3F)); + configSet.put(LEAD_HS, Gun357MagnumFactory.getRevLeadConfig().setHeadshot(3F)); configSet.put(DESH_HS, Gun357MagnumFactory.getRevDeshConfig().setHeadshot(3F)); configSet.put(G20_NORMAL, Gun20GaugeFactory.get20GaugeConfig()); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun357MagnumFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun357MagnumFactory.java index 7dbe79452..53b5251db 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun357MagnumFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun357MagnumFactory.java @@ -193,11 +193,11 @@ public class Gun357MagnumFactory { config.name = "bio"; config.manufacturer = EnumGunManufacturer.RYAN; - config.config.add(BulletConfigSyncingUtil.STEEL_REVOLVER); - config.config.add(BulletConfigSyncingUtil.GOLD_REVOLVER); - config.config.add(BulletConfigSyncingUtil.IRON_REVOLVER); - config.config.add(BulletConfigSyncingUtil.LEAD_REVOLVER); - config.config.add(BulletConfigSyncingUtil.DESH_REVOLVER); + config.config.add(BulletConfigSyncingUtil.STEEL_HS); + config.config.add(BulletConfigSyncingUtil.GOLD_HS); + config.config.add(BulletConfigSyncingUtil.IRON_HS); + config.config.add(BulletConfigSyncingUtil.LEAD_HS); + config.config.add(BulletConfigSyncingUtil.DESH_HS); return config; } diff --git a/src/main/java/com/hbm/handler/nei/CrucibleCastingHandler.java b/src/main/java/com/hbm/handler/nei/CrucibleCastingHandler.java index e8e630024..1befff001 100644 --- a/src/main/java/com/hbm/handler/nei/CrucibleCastingHandler.java +++ b/src/main/java/com/hbm/handler/nei/CrucibleCastingHandler.java @@ -74,7 +74,7 @@ public class CrucibleCastingHandler extends TemplateRecipeHandler { if(outputId.equals("ntmCrucibleFoundry")) { - for(ItemStack[] recipe : CrucibleRecipes.moldRecipes) { + for(ItemStack[] recipe : CrucibleRecipes.getMoldRecipes()) { this.arecipes.add(new RecipeSet(recipe)); } } else { @@ -85,7 +85,7 @@ public class CrucibleCastingHandler extends TemplateRecipeHandler { @Override public void loadCraftingRecipes(ItemStack result) { - for(ItemStack[] recipe : CrucibleRecipes.moldRecipes) { + for(ItemStack[] recipe : CrucibleRecipes.getMoldRecipes()) { if(NEIServerUtils.areStacksSameTypeCrafting(recipe[3], result)) { this.arecipes.add(new RecipeSet(recipe)); } @@ -105,7 +105,7 @@ public class CrucibleCastingHandler extends TemplateRecipeHandler { @Override public void loadUsageRecipes(ItemStack ingredient) { - for(ItemStack[] recipe : CrucibleRecipes.moldRecipes) { + for(ItemStack[] recipe : CrucibleRecipes.getMoldRecipes()) { for(int i = 0; i < 3; i++) { if(NEIServerUtils.areStacksSameTypeCrafting(recipe[i], ingredient)) { diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index f5a75b68c..b3fc0cdc7 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -153,11 +153,14 @@ public class OreDictManager { public static final DictFrame STEEL = new DictFrame("Steel"); /** TECHNETIUM STEEL */ public static final DictFrame TCALLOY = new DictFrame("TcAlloy"); + /** CADMIUM STEEL */ + public static final DictFrame CDALLOY = new DictFrame("CdAlloy"); /** LEAD */ public static final DictFrame PB = new DictFrame("Lead"); public static final DictFrame BI = new DictFrame("Bismuth"); public static final DictFrame AS = new DictFrame("Arsenic"); public static final DictFrame CA = new DictFrame("Calcium"); + public static final DictFrame CD = new DictFrame("Cadmium"); /** TANTALUM */ public static final DictFrame TA = new DictFrame("Tantalum"); public static final DictFrame COLTAN = new DictFrame("Coltan"); @@ -268,6 +271,8 @@ public class OreDictManager { public static final DictGroup ANY_PLASTIC = new DictGroup("AnyPlastic", POLYMER, BAKELITE); //using the Any prefix means that it's just the secondary prefix, and that shape prefixes are applicable /** Any post vacuum polymer like PET or PVC */ public static final DictGroup ANY_HARDPLASTIC = new DictGroup("AnyHardPlastic", PC, PVC); + /** Any post nuclear steel like TCA or CDA */ + public static final DictGroup ANY_RESISTANTALLOY = new DictGroup("AnyResistantAlloy", TCALLOY, CDALLOY); /** Any "powder" propellant like gunpowder, ballistite and cordite */ public static final DictFrame ANY_GUNPOWDER = new DictFrame("AnyPropellant"); /** Any smokeless powder like ballistite and cordite */ @@ -337,10 +342,12 @@ public class OreDictManager { AL .ingot(ingot_aluminium) .dust(powder_aluminium) .plate(plate_aluminium) .block(block_aluminium) .ore(ore_aluminium, ore_meteor_aluminium); STEEL .ingot(ingot_steel) .dustSmall(powder_steel_tiny) .dust(powder_steel) .plate(plate_steel) .block(block_steel); TCALLOY .ingot(ingot_tcalloy) .dust(powder_tcalloy); + CDALLOY .ingot(ingot_cdalloy); PB .nugget(nugget_lead) .ingot(ingot_lead) .dust(powder_lead) .plate(plate_lead) .block(block_lead) .ore(ore_lead, ore_meteor_lead); BI .nugget(nugget_bismuth) .ingot(ingot_bismuth) .dust(powder_bismuth); AS .nugget(nugget_arsenic) .ingot(ingot_arsenic); CA .ingot(ingot_calcium) .dust(powder_calcium); + CD .ingot(ingot_cadmium) .dust(powder_cadmium); TA .nugget(nugget_tantalium) .gem(gem_tantalium) .ingot(ingot_tantalium) .dust(powder_tantalium) .block(block_tantalium); COLTAN .ingot(fragment_coltan) .dust(powder_coltan_ore) .block(block_coltan) .ore(ore_coltan); NB .nugget(fragment_niobium) .ingot(ingot_niobium) .dustSmall(powder_niobium_tiny) .dust(powder_niobium) .block(block_niobium); @@ -565,6 +572,7 @@ public class OreDictManager { public static void registerGroups() { ANY_PLASTIC.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(BLOCK, true); ANY_HARDPLASTIC.addPrefix(INGOT, true); + ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(PLATECAST, true).addPrefix(BLOCK, true); ANY_TAR.addPrefix(ANY, false); } diff --git a/src/main/java/com/hbm/inventory/container/ContainerSILEX.java b/src/main/java/com/hbm/inventory/container/ContainerSILEX.java index d754fdc98..498427428 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerSILEX.java +++ b/src/main/java/com/hbm/inventory/container/ContainerSILEX.java @@ -1,7 +1,8 @@ package com.hbm.inventory.container; +import com.hbm.inventory.FluidContainerRegistry; import com.hbm.inventory.SlotMachineOutput; -import com.hbm.items.ModItems; +import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.tileentity.machine.TileEntitySILEX; import net.minecraft.entity.player.EntityPlayer; @@ -57,17 +58,25 @@ public class ContainerSILEX extends Container { ItemStack var5 = var4.getStack(); var3 = var5.copy(); - if(par2 <= silex.getSizeInventory() - 1) { - if(!this.mergeItemStack(var5, silex.getSizeInventory(), this.inventorySlots.size(), true)) { + if(par2 <= 10) { + if(!this.mergeItemStack(var5, 11, this.inventorySlots.size(), true)) { return null; } - } else if(var5.getItem() == ModItems.turret_chip) { //did i copy this from turrets? tf is happening lol + } else { - if(!this.mergeItemStack(var5, 0, 1, false)) - return null; - - } else if(!this.mergeItemStack(var5, 1, silex.getSizeInventory(), false)) { - return null; + if(var3.getItem() instanceof IItemFluidIdentifier) { + if(!this.mergeItemStack(var5, 1, 2, false)) { + return null; + } + } else if(FluidContainerRegistry.getFluidContent(var3, silex.tank.getTankType()) > 0) { + if(!this.mergeItemStack(var5, 2, 3, false)) { + return null; + } + } else { + if(!this.mergeItemStack(var5, 0, 1, false)) { + return null; + } + } } if(var5.stackSize == 0) { diff --git a/src/main/java/com/hbm/inventory/material/MatDistribution.java b/src/main/java/com/hbm/inventory/material/MatDistribution.java index 6d7f0619c..ccc083f50 100644 --- a/src/main/java/com/hbm/inventory/material/MatDistribution.java +++ b/src/main/java/com/hbm/inventory/material/MatDistribution.java @@ -12,7 +12,10 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.blocks.BlockEnums.EnumStoneType; +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.OreDictManager; +import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; @@ -78,8 +81,7 @@ public class MatDistribution extends SerializableRecipe { registerOre(OreDictManager.HEMATITE.ore(), MAT_HEMATITE, INGOT.q(4)); registerOre(OreDictManager.MALACHITE.ore(), MAT_MALACHITE, INGOT.q(4)); - - registerEntry(ModItems.powder_flux, MAT_FLUX, DUST.q(1)); + registerEntry(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.LIMESTONE), MAT_FLUX, DUST.q(10)); } public static void registerEntry(Object key, Object... matDef) { diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index 727d1b405..665a65372 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -106,6 +106,7 @@ public class Mats { public static final NTMMaterial MAT_BERYLLIUM = makeSmeltable(400, BE, 0xB2B2A6, 0x0F0F03, 0xAE9572).setShapes(NUGGET, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_COBALT = makeSmeltable(2700, CO, 0xC2D1EE, 0x353554, 0x8F72AE).setShapes(NUGGET, DUSTTINY, BILLET, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_BORON = makeSmeltable(500, B, 0xBDC8D2, 0x29343E, 0xAD72AE).setShapes(DUSTTINY, INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_CADMIUM = makeSmeltable(4800, CD, 0xFFFADE, 0x350000, 0xA85600).setShapes(INGOT, DUST); //Alloys public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setShapes(DUSTTINY, INGOT, DUST, PLATE, CASTPLATE, BLOCK); @@ -114,13 +115,14 @@ public class Mats { public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x183039, 0x030B0B, 0x376373).setShapes(INGOT, DUST, BLOCK); public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0x4DA3AF, 0x00000C, 0x4DA3AF).setShapes(INGOT, DUST, BLOCK); public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setShapes(INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setShapes(INGOT, DUST); + public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setShapes(INGOT, DUST, CASTPLATE); public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).setShapes(INGOT); public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setShapes(INGOT, DUST, BLOCK); public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, BLOCK); - public static final NTMMaterial MAT_FLUX = makeAdditive(_AS + 10, df("Flux"), 0x404242, 0x404242, 0xDECCAD).setShapes(DUST); + public static final NTMMaterial MAT_FLUX = makeAdditive(_AS + 10, df("Flux"), 0xF1E0BB, 0x6F6256, 0xDECCAD).setShapes(DUST); public static final NTMMaterial MAT_SLAG = makeSmeltable(_AS + 11, SLAG, 0x554940, 0x34281F, 0x6C6562).setShapes(BLOCK); public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setShapes(INGOT, DUST, CASTPLATE, BLOCK); + public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setShapes(INGOT, CASTPLATE); @Deprecated public static NTMMaterial makeSmeltable(int id, DictFrame dict, int color) { return makeSmeltable(id, dict, color, color, color); } @Deprecated public static NTMMaterial makeAdditive(int id, DictFrame dict, int color) { return makeAdditive(id, dict, color, color, color); } diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 90ef04f95..f1697f9b9 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -291,8 +291,8 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_chemplant, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(CU.plate528(), 6), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.coil_tungsten, 3), new ComparableStack(ModItems.circuit_copper, 2), new ComparableStack(ModItems.circuit_red_copper, 1), new ComparableStack(ModItems.plate_polymer, 8), },200); makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.pipes_steel, 1), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.blades_advanced_alloy, 2), new OreDictStack(STEEL.ingot(), 16), new OreDictStack(TI.plate(), 16), new ComparableStack(Blocks.glass, 4), new ComparableStack(ModItems.circuit_gold, 1), },400); makeRecipe(new ComparableStack(ModBlocks.machine_fluidtank, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.hull_big_steel, 4), new OreDictStack(ANY_TAR.any(), 4), },150); - makeRecipe(new ComparableStack(ModBlocks.machine_bat9000, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(TCALLOY.ingot(), 16), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(ANY_TAR.any(), 16), },150); - makeRecipe(new ComparableStack(ModBlocks.machine_orbus, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(TCALLOY.ingot(), 12), new OreDictStack(BIGMT.plate(), 12), new ComparableStack(ModItems.coil_advanced_alloy, 12), new ComparableStack(ModItems.battery_sc_polonium, 1) }, 200); + makeRecipe(new ComparableStack(ModBlocks.machine_bat9000, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 16), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(ANY_TAR.any(), 16), },150); + makeRecipe(new ComparableStack(ModBlocks.machine_orbus, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 12), new OreDictStack(BIGMT.plate(), 12), new ComparableStack(ModItems.coil_advanced_alloy, 12), new ComparableStack(ModItems.battery_sc_polonium, 1) }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_drill, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 6), new OreDictStack(STEEL.ingot(), 4), new ComparableStack(ModItems.wire_red_copper, 4), new ComparableStack(ModItems.circuit_copper, 1), new ComparableStack(ModItems.motor, 1), new OreDictStack(DURA.ingot(), 2), new ComparableStack(ModItems.bolt_dura_steel, 2), new ComparableStack(ModItems.drill_titanium, 1), },200); makeRecipe(new ComparableStack(ModBlocks.machine_mining_laser, 1), new AStack[] {new ComparableStack(ModItems.tank_steel, 3), new OreDictStack(STEEL.plate528(), 16), new ComparableStack(ModItems.crystal_redstone, 3), new ComparableStack(Items.diamond, 3), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.motor, 3), new OreDictStack(DURA.ingot(), 4), new ComparableStack(ModItems.bolt_dura_steel, 6), new ComparableStack(ModBlocks.machine_battery, 3), },400); makeRecipe(new ComparableStack(ModBlocks.machine_turbofan, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.hull_small_steel, 2), new ComparableStack(ModItems.turbine_tungsten, 1), new ComparableStack(ModItems.turbine_titanium, 7), new ComparableStack(ModItems.bolt_compound, 8), new OreDictStack(MINGRADE.ingot(), 12), new ComparableStack(ModItems.wire_red_copper, 24), },500); @@ -553,7 +553,7 @@ public class AssemblerRecipes { new ComparableStack(ModItems.hull_big_steel, 6), new OreDictStack(STEEL.plate528(), 32), new OreDictStack(TI.plate528(), 12), - new OreDictStack(TCALLOY.ingot(), 16), + new OreDictStack(ANY_RESISTANTALLOY.ingot(), 16), new ComparableStack(ModItems.turbine_tungsten, 5), new ComparableStack(ModItems.turbine_titanium, 3), new ComparableStack(ModItems.flywheel_beryllium, 1), @@ -779,7 +779,7 @@ public class AssemblerRecipes { new ComparableStack(ModItems.pipes_steel, 1), new ComparableStack(ModItems.mechanism_special, 3), new ComparableStack(ModItems.magnetron, 16), - new OreDictStack(TCALLOY.ingot(), 8), + new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), new ComparableStack(ModItems.crt_display, 1) }, 200); makeRecipe(new ComparableStack(ModBlocks.turret_fritz, 1), new AStack[] { @@ -904,7 +904,7 @@ public class AssemblerRecipes { }, 100); makeRecipe(new ComparableStack(ModItems.multitool_hit, 1), new AStack[] { - new OreDictStack(TCALLOY.ingot(), 4), + new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(STEEL.plate(), 4), new ComparableStack(ModItems.wire_gold, 12), new ComparableStack(ModItems.motor, 4), @@ -913,7 +913,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_assemfac, 1), new AStack[] { new OreDictStack(STEEL.ingot(), 48), - new OreDictStack(TCALLOY.ingot(), 8), + new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), new OreDictStack(B.ingot(), 4), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(KEY_ANYPANE, 64), @@ -925,7 +925,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_chemfac, 1), new AStack[] { new OreDictStack(STEEL.ingot(), 48), - new OreDictStack(TCALLOY.ingot(), 8), + new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), new OreDictStack(NB.ingot(), 4), new OreDictStack(RUBBER.ingot(), 16), new ComparableStack(ModItems.hull_big_steel, 12), @@ -960,7 +960,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_vacuum_distill, 1), new AStack[] { new OreDictStack(STEEL.plateCast(), 16), new OreDictStack(CU.plate528(), 16), - new OreDictStack(TCALLOY.ingot(), 4), + new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.sphere_steel, 1), new ComparableStack(ModItems.pipes_steel, 1), new ComparableStack(ModItems.motor_desh, 3), @@ -970,7 +970,7 @@ public class AssemblerRecipes { new OreDictStack(STEEL.plateCast(), 12), new OreDictStack(CU.plate528(), 8), new OreDictStack(NB.ingot(), 8), - new OreDictStack(TCALLOY.ingot(), 4), + new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.hull_big_steel, 3), new ComparableStack(ModItems.pipes_steel, 1), new ComparableStack(ModItems.motor, 1), @@ -994,8 +994,8 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.reactor_conductor, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(CU.plate(), 12), new ComparableStack(ModItems.wire_tungsten, 4), },130); makeRecipe(new ComparableStack(ModBlocks.reactor_computer, 1), new AStack[] {new ComparableStack(ModBlocks.reactor_conductor, 2), new ComparableStack(ModItems.circuit_targeting_tier3, 4), new ComparableStack(ModItems.circuit_gold, 1), },250); makeRecipe(new ComparableStack(ModBlocks.machine_radgen, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModItems.coil_magnetized_tungsten, 6), new ComparableStack(ModItems.wire_magnetized_tungsten, 24), new ComparableStack(ModItems.circuit_gold, 4), new ComparableStack(ModItems.reactor_core, 3), new OreDictStack(STAR.ingot(), 1), new OreDictStack("dyeRed", 1), },400); - makeRecipe(new ComparableStack(ModBlocks.machine_reactor_breeding, 1), new AStack[] {new ComparableStack(ModItems.reactor_core, 1), new OreDictStack(STEEL.ingot(), 12), new OreDictStack(PB.plate(), 16), new ComparableStack(ModBlocks.reinforced_glass, 4), new OreDictStack(ASBESTOS.ingot(), 4), new OreDictStack(TCALLOY.ingot(), 4), new ComparableStack(ModItems.crt_display, 1)},150); - makeRecipe(new ComparableStack(ModBlocks.reactor_research, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(TCALLOY.ingot(), 4), new ComparableStack(ModItems.motor_desh, 2), new OreDictStack(B.ingot(), 5), new OreDictStack(PB.plate(), 8), new ComparableStack(ModItems.crt_display, 3), new ComparableStack(ModItems.circuit_copper, 2), },300); + makeRecipe(new ComparableStack(ModBlocks.machine_reactor_breeding, 1), new AStack[] {new ComparableStack(ModItems.reactor_core, 1), new OreDictStack(STEEL.ingot(), 12), new OreDictStack(PB.plate(), 16), new ComparableStack(ModBlocks.reinforced_glass, 4), new OreDictStack(ASBESTOS.ingot(), 4), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.crt_display, 1)},150); + makeRecipe(new ComparableStack(ModBlocks.reactor_research, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.motor_desh, 2), new OreDictStack(B.ingot(), 5), new OreDictStack(PB.plate(), 8), new ComparableStack(ModItems.crt_display, 3), new ComparableStack(ModItems.circuit_copper, 2), },300); } else { addTantalium(new ComparableStack(ModBlocks.machine_centrifuge, 1), 5); @@ -1056,7 +1056,7 @@ public class AssemblerRecipes { new ComparableStack(ModBlocks.hadron_coil_alloy, 24), new OreDictStack(STEEL.ingot(), 8), new OreDictStack(ANY_PLASTIC.ingot(), 16), - new OreDictStack(TCALLOY.ingot(), 8), + new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), new ComparableStack(ModItems.circuit_gold, 5), new ComparableStack(ModItems.circuit_schrabidium, 5), new ComparableStack(ModItems.circuit_tantalium, 192), @@ -1136,7 +1136,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_radiolysis), new AStack[] { new OreDictStack(STEEL.ingot(), 12), - new OreDictStack(TCALLOY.ingot(), 4), + new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(DURA.ingot(), 10), new OreDictStack(RUBBER.ingot(), 4), new OreDictStack(PB.plate528(), 12), diff --git a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java index 9a1b21989..979ff7f1e 100644 --- a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java @@ -120,11 +120,11 @@ public class ChemplantRecipes extends SerializableRecipe { new FluidStack(Fluids.PHOSGENE, 500)) .outputItems(new ItemStack(ModItems.ingot_pc))); recipes.add(new ChemRecipe(96, "PVC", 100) - .inputItems(new OreDictStack(CA.dust())) //placeholder! + .inputItems(new OreDictStack(CD.dust())) .inputFluids( new FluidStack(Fluids.UNSATURATEDS, 250), new FluidStack(Fluids.CHLORINE, 250)) - .outputItems(new ItemStack(ModItems.ingot_pvc))); + .outputItems(new ItemStack(ModItems.ingot_pvc, 2))); recipes.add(new ChemRecipe(89, "DYNAMITE", 50) .inputItems( new ComparableStack(Items.sugar), diff --git a/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java index b20b9ee03..42f2dc872 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java @@ -92,6 +92,10 @@ public class CrucibleRecipes extends SerializableRecipe { .inputs(new MaterialStack(Mats.MAT_STEEL, n * 8), new MaterialStack(Mats.MAT_TECHNIETIUM, n)) .outputs(new MaterialStack(Mats.MAT_TCALLOY, i))); + recipes.add(new CrucibleRecipe(12, "crucible.cdalloy", 9, new ItemStack(ModItems.ingot_cdalloy)) + .inputs(new MaterialStack(Mats.MAT_STEEL, n * 8), new MaterialStack(Mats.MAT_CADMIUM, n)) + .outputs(new MaterialStack(Mats.MAT_CDALLOY, i))); + registerMoldsForNEI(); } @@ -221,6 +225,7 @@ public class CrucibleRecipes extends SerializableRecipe { public void deleteRecipes() { this.indexMapping.clear(); this.recipes.clear(); + this.moldRecipes.clear(); } /** Returns a map containing all recipes where an item becomes a liquid material in the crucible. */ @@ -264,9 +269,17 @@ public class CrucibleRecipes extends SerializableRecipe { return map; } - public static List moldRecipes = new ArrayList(); + private static List moldRecipes = new ArrayList(); - public static void registerMoldsForNEI() { + public static List getMoldRecipes() { + if(moldRecipes.isEmpty()) { + registerMoldsForNEI(); + } + + return moldRecipes; + } + + private static void registerMoldsForNEI() { for(NTMMaterial material : Mats.orderedList) { diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index bc358061b..87121e45e 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -19,6 +19,7 @@ import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ItemEnums.EnumPlantType; import com.hbm.items.ItemEnums.EnumTarType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemChemicalDye.EnumChemDye; @@ -91,6 +92,9 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(new ComparableStack(Items.rotten_flesh), new CrystallizerRecipe(Items.leather, utilityTime)); registerRecipe(new ComparableStack(ModItems.coal_infernal), new CrystallizerRecipe(ModItems.solid_fuel, utilityTime)); registerRecipe(new ComparableStack(ModBlocks.stone_gneiss), new CrystallizerRecipe(ModItems.powder_lithium, utilityTime)); + registerRecipe(new ComparableStack(Items.dye, 1, 15), new CrystallizerRecipe(new ItemStack(Items.slime_ball, 4), 20), new FluidStack(Fluids.SULFURIC_ACID, 250)); + registerRecipe(new ComparableStack(Items.bone), new CrystallizerRecipe(new ItemStack(Items.slime_ball, 16), 20), new FluidStack(Fluids.SULFURIC_ACID, 1_000)); + registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.plant_item, EnumPlantType.MUSTARDWILLOW)), new CrystallizerRecipe(new ItemStack(ModItems.powder_cadmium), 100).setReq(10), new FluidStack(Fluids.RADIOSOLVENT, 250)); registerRecipe(DIAMOND.dust(), new CrystallizerRecipe(Items.diamond, utilityTime)); registerRecipe(EMERALD.dust(), new CrystallizerRecipe(Items.emerald, utilityTime)); @@ -187,10 +191,12 @@ public class CrystallizerRecipes extends SerializableRecipe { FluidType acid = key.getValue(); if(input instanceof String) { - OreDictStack stack = new OreDictStack((String) input); + OreDictStack stack = new OreDictStack((String) input, recipe.itemAmount); recipes.put(new Object[] {ItemFluidIcon.make(acid, recipe.acidAmount), stack}, recipe.output); } else { - ComparableStack stack = (ComparableStack) input; + ComparableStack stack = ((ComparableStack) input); + stack = (ComparableStack) stack.copy(); + stack.stacksize = recipe.itemAmount; if(stack.item == ModItems.scrap_plastic) continue; recipes.put(new Object[] {ItemFluidIcon.make(acid, recipe.acidAmount), stack}, recipe.output); } @@ -210,12 +216,18 @@ public class CrystallizerRecipes extends SerializableRecipe { public static class CrystallizerRecipe { public int acidAmount; + public int itemAmount = 1; public int duration; public ItemStack output; public CrystallizerRecipe(Block output, int duration) { this(new ItemStack(output), duration); } public CrystallizerRecipe(Item output, int duration) { this(new ItemStack(output), duration); } + public CrystallizerRecipe setReq(int amount) { + this.itemAmount = amount; + return this; + } + public CrystallizerRecipe(ItemStack output, int duration) { this.output = output; this.duration = duration; @@ -242,10 +254,11 @@ public class CrystallizerRecipes extends SerializableRecipe { FluidStack fluid = this.readFluidStack(obj.get("fluid").getAsJsonArray()); int duration = obj.get("duration").getAsInt(); - CrystallizerRecipe cRecipe = new CrystallizerRecipe(output, duration); + CrystallizerRecipe cRecipe = new CrystallizerRecipe(output, duration).setReq(input.stacksize); + input.stacksize = 1; cRecipe.acidAmount = fluid.fill; if(input instanceof ComparableStack) { - recipes.put(new Pair(((ComparableStack) input).makeSingular(), fluid.type), cRecipe); + recipes.put(new Pair(((ComparableStack) input), fluid.type), cRecipe); } else if(input instanceof OreDictStack) { recipes.put(new Pair(((OreDictStack) input).name, fluid.type), cRecipe); } @@ -256,7 +269,8 @@ public class CrystallizerRecipes extends SerializableRecipe { Entry rec = (Entry) recipe; CrystallizerRecipe cRecipe = rec.getValue(); Pair pair = rec.getKey(); - AStack input = pair.getKey() instanceof String ? new OreDictStack((String )pair.getKey()) : (ComparableStack) pair.getKey(); + AStack input = pair.getKey() instanceof String ? new OreDictStack((String )pair.getKey()) : ((ComparableStack) pair.getKey()).copy(); + input.stacksize = cRecipe.itemAmount; FluidStack fluid = new FluidStack(pair.value, cRecipe.acidAmount); writer.name("duration").value(cRecipe.duration); @@ -272,4 +286,9 @@ public class CrystallizerRecipes extends SerializableRecipe { public void deleteRecipes() { recipes.clear(); } + + @Override + public String getComment() { + return "The acidizer also supports stack size requirements for input items, eg. the cadmium recipe requires 10 willow leaves."; + } } diff --git a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java index 66676d48d..bd6698749 100644 --- a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java @@ -9,6 +9,7 @@ import java.util.Map.Entry; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.FluidStack; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; @@ -52,6 +53,8 @@ public class LiquefactionRecipes extends SerializableRecipe { recipes.put(new ComparableStack(Items.ender_pearl), new FluidStack(100, Fluids.ENDERJUICE)); recipes.put(new ComparableStack(Items.sugar), new FluidStack(100, Fluids.ETHANOL)); + recipes.put(new ComparableStack(ModBlocks.plant_flower, 1, 3), new FluidStack(150, Fluids.ETHANOL)); + recipes.put(new ComparableStack(ModBlocks.plant_flower, 1, 4), new FluidStack(50, Fluids.ETHANOL)); recipes.put(new ComparableStack(ModItems.biomass), new FluidStack(125, Fluids.BIOGAS)); recipes.put(new ComparableStack(Items.wheat_seeds), new FluidStack(50, Fluids.SEEDSLURRY)); diff --git a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java index cce2fcf99..dffd4636b 100644 --- a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java @@ -40,6 +40,7 @@ public class MixerRecipes extends SerializableRecipe { recipes.put(Fluids.SOLVENT, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.NAPHTHA, 500)).setStack2(new FluidStack(Fluids.AROMATICS, 500))); recipes.put(Fluids.SULFURIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.ACID, 800)).setSolid(new OreDictStack(S.dust()))); recipes.put(Fluids.NITRIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.SULFURIC_ACID, 500)).setSolid(new OreDictStack(KNO.dust()))); + recipes.put(Fluids.RADIOSOLVENT, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.REFORMGAS, 750)).setStack2(new FluidStack(Fluids.CHLORINE, 250))); recipes.put(Fluids.SCHRABIDIC, new MixerRecipe(16_000, 100).setStack1(new FluidStack(Fluids.SAS3, 8_000)).setStack2(new FluidStack(Fluids.ACID, 6_000)).setSolid(new ComparableStack(ModItems.pellet_charged))); recipes.put(Fluids.LUBRICANT, new MixerRecipe(1_000, 20).setStack1(new FluidStack(Fluids.HEATINGOIL, 500)).setStack2(new FluidStack(Fluids.UNSATURATEDS, 500))); diff --git a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java index f93b75585..61e7905d7 100644 --- a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java @@ -167,6 +167,7 @@ public class ShredderRecipes extends SerializableRecipe { ShredderRecipes.setRecipe(Blocks.clay, new ItemStack(Items.clay_ball, 4)); ShredderRecipes.setRecipe(Blocks.hardened_clay, new ItemStack(Items.clay_ball, 4)); ShredderRecipes.setRecipe(Blocks.tnt, new ItemStack(Items.gunpowder, Compat.isModLoaded(Compat.MOD_GT6) ? 4 : 5)); + ShredderRecipes.setRecipe(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.LIMESTONE), new ItemStack(ModItems.powder_calcium)); ShredderRecipes.setRecipe(ModBlocks.stone_gneiss, new ItemStack(ModItems.powder_lithium_tiny, 1)); ShredderRecipes.setRecipe(ModItems.powder_lapis, new ItemStack(ModItems.powder_cobalt_tiny, 1)); ShredderRecipes.setRecipe(ModItems.fragment_neodymium, new ItemStack(ModItems.powder_neodymium_tiny, 1)); diff --git a/src/main/java/com/hbm/items/ItemEnums.java b/src/main/java/com/hbm/items/ItemEnums.java index e05310a03..5db68070c 100644 --- a/src/main/java/com/hbm/items/ItemEnums.java +++ b/src/main/java/com/hbm/items/ItemEnums.java @@ -36,6 +36,7 @@ public class ItemEnums { public static enum EnumPlantType { TOBACCO, - ROPE + ROPE, + MUSTARDWILLOW } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 9ac065476..bdbde155e 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -137,6 +137,7 @@ public class ModItems { public static Item nugget_schrabidium_fuel; public static Item ingot_advanced_alloy; public static Item ingot_tcalloy; + public static Item ingot_cdalloy; public static Item lithium; public static Item ingot_zirconium; public static Item ingot_hes; @@ -355,6 +356,8 @@ public class ModItems { public static Item powder_asbestos; public static Item ingot_calcium; public static Item powder_calcium; + public static Item ingot_cadmium; + public static Item powder_cadmium; public static Item powder_bismuth; public static Item ingot_lanthanium; @@ -525,6 +528,7 @@ public class ModItems { public static Item powder_balefire; public static Item powder_sawdust; public static Item powder_flux; + public static Item powder_fertilizer; public static Item fragment_neodymium; public static Item fragment_cobalt; @@ -2681,6 +2685,7 @@ public class ModItems { nugget_schrabidium_fuel = new Item().setUnlocalizedName("nugget_schrabidium_fuel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_schrabidium_fuel"); ingot_advanced_alloy = new Item().setUnlocalizedName("ingot_advanced_alloy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_advanced_alloy"); ingot_tcalloy = new Item().setUnlocalizedName("ingot_tcalloy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_tcalloy"); + ingot_cdalloy = new Item().setUnlocalizedName("ingot_cdalloy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_cdalloy"); niter = new Item().setUnlocalizedName("niter").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":salpeter"); ingot_copper = new Item().setUnlocalizedName("ingot_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_copper"); @@ -2817,6 +2822,8 @@ public class ModItems { bottle_mercury = new ItemCustomLore().setUnlocalizedName("bottle_mercury").setContainerItem(Items.glass_bottle).setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bottle_mercury"); ingot_calcium = new Item().setUnlocalizedName("ingot_calcium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_calcium"); powder_calcium = new Item().setUnlocalizedName("powder_calcium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_calcium"); + ingot_cadmium = new Item().setUnlocalizedName("ingot_cadmium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_cadmium"); + powder_cadmium = new Item().setUnlocalizedName("powder_cadmium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_cadmium"); powder_bismuth = new Item().setUnlocalizedName("powder_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_bismuth"); ore_byproduct = new ItemByproduct().setUnlocalizedName("ore_byproduct").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":byproduct"); @@ -3063,6 +3070,7 @@ public class ModItems { powder_balefire = new Item().setUnlocalizedName("powder_balefire").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_balefire"); powder_sawdust = new Item().setUnlocalizedName("powder_sawdust").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_sawdust"); powder_flux = new Item().setUnlocalizedName("powder_flux").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_flux"); + powder_fertilizer = new ItemFertilizer().setUnlocalizedName("powder_fertilizer").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_fertilizer"); powder_coltan_ore = new Item().setUnlocalizedName("powder_coltan_ore").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_coltan_ore"); powder_coltan = new Item().setUnlocalizedName("powder_coltan").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_coltan"); powder_tektite = new Item().setUnlocalizedName("powder_tektite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_tektite"); @@ -4280,30 +4288,17 @@ public class ModItems { gun_karl = new ItemGunBase(GunRocketFactory.getKarlConfig()).setUnlocalizedName("gun_karl").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_karl"); gun_panzerschreck = new ItemGunBase(GunRocketFactory.getPanzConfig()).setUnlocalizedName("gun_panzerschreck").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_panzerschreck"); gun_quadro = new ItemGunBase(GunRocketFactory.getQuadroConfig()).setUnlocalizedName("gun_quadro").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_quadro"); - //gun_rpg_ammo = new Item().setUnlocalizedName("gun_rpg_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_rpg_ammo_alt"); gun_hk69 = new ItemGunBase(GunGrenadeFactory.getHK69Config()).setUnlocalizedName("gun_hk69").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_hk69"); gun_stinger = new ItemGunBase(GunRocketHomingFactory.getStingerConfig()).setUnlocalizedName("gun_stinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_stinger"); gun_skystinger = new ItemGunBase(GunRocketHomingFactory.getSkyStingerConfig()).setUnlocalizedName("gun_skystinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_skystinger"); - //gun_stinger_ammo = new Item().setUnlocalizedName("gun_stinger_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_stinger_ammo"); - //gun_revolver_ammo = new Item().setUnlocalizedName("gun_revolver_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_ammo"); gun_revolver = new ItemGunBase(Gun357MagnumFactory.getRevolverConfig()).setUnlocalizedName("gun_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver"); gun_revolver_saturnite = new ItemGunBase(Gun357MagnumFactory.getRevolverSaturniteConfig()).setUnlocalizedName("gun_revolver_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_saturnite"); - //gun_revolver_iron_ammo = new Item().setUnlocalizedName("gun_revolver_iron_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_iron_ammo"); - //gun_revolver_iron = new ItemGunBase(Gun357MagnumFactory.getRevolverIronConfig()).setUnlocalizedName("gun_revolver_iron").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_iron"); - //gun_revolver_gold_ammo = new Item().setUnlocalizedName("gun_revolver_gold_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_gold_ammo"); gun_revolver_gold = new ItemGunBase(Gun357MagnumFactory.getRevolverGoldConfig()).setUnlocalizedName("gun_revolver_gold").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_gold"); - //gun_revolver_lead_ammo = new Item().setUnlocalizedName("gun_revolver_lead_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_lead_ammo"); - //gun_revolver_schrabidium_ammo = new ItemCustomLore().setRarity(EnumRarity.rare).setUnlocalizedName("gun_revolver_schrabidium_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_schrabidium_ammo"); gun_revolver_schrabidium = new ItemGunBase(Gun357MagnumFactory.getRevolverSchrabidiumConfig()).setUnlocalizedName("gun_revolver_schrabidium").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_schrabidium"); - //gun_revolver_cursed_ammo = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("gun_revolver_cursed_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_cursed_ammo"); gun_revolver_cursed = new ItemGunBase(Gun357MagnumFactory.getRevolverCursedConfig()).setUnlocalizedName("gun_revolver_cursed").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_cursed"); - //gun_revolver_nightmare_ammo = new ItemCustomLore().setUnlocalizedName("gun_revolver_nightmare_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare_ammo"); gun_revolver_nightmare = new ItemGunBase(Gun357MagnumFactory.getRevolverNightmareConfig()).setUnlocalizedName("gun_revolver_nightmare").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare"); - //gun_revolver_nightmare2_ammo = new ItemCustomLore().setUnlocalizedName("gun_revolver_nightmare2_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare2_ammo"); gun_revolver_nightmare2 = new ItemGunBase(Gun357MagnumFactory.getRevolverNightmare2Config()).setUnlocalizedName("gun_revolver_nightmare2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare2"); - //gun_revolver_pip_ammo = new ItemCustomLore().setUnlocalizedName("gun_revolver_pip_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_revolver_pip_ammo"); gun_revolver_pip = new ItemGunBase(Gun44MagnumFactory.getMacintoshConfig()).setUnlocalizedName("gun_revolver_pip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_pip"); - //gun_revolver_nopip_ammo = new Item().setUnlocalizedName("gun_revolver_nopip_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_revolver_nopip_ammo"); gun_revolver_nopip = new ItemGunBase(Gun44MagnumFactory.getNovacConfig()).setUnlocalizedName("gun_revolver_nopip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nopip"); gun_revolver_blackjack = new ItemGunBase(Gun44MagnumFactory.getBlackjackConfig()).setUnlocalizedName("gun_revolver_blackjack").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_blackjack"); gun_revolver_silver = new ItemGunBase(Gun44MagnumFactory.getSilverConfig()).setUnlocalizedName("gun_revolver_silver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_silver"); @@ -4312,40 +4307,31 @@ public class ModItems { gun_bio_revolver = new ItemGunBio(Gun357MagnumFactory.getRevolverBioConfig()).setUnlocalizedName("gun_bio_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bio_revolver"); gun_flechette = new ItemGunBase(Gun556mmFactory.getSPIWConfig(), Gun556mmFactory.getGLauncherConfig()).setUnlocalizedName("gun_flechette").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_flechette"); gun_ar15 = new ItemGunBase(Gun50BMGFactory.getAR15Config()).setUnlocalizedName("gun_ar15").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_ar15"); - //gun_calamity_ammo = new ItemCustomLore().setUnlocalizedName("gun_calamity_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_calamity_ammo"); gun_calamity = new ItemGunBase(Gun762mmFactory.getCalamityConfig()).setUnlocalizedName("gun_calamity").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_calamity"); - //gun_lacunae_ammo = new ItemCustomLore().setUnlocalizedName("gun_lacunae_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_lacunae_ammo"); gun_minigun = new ItemGunLacunae(Gun5mmFactory.get53Config()).setUnlocalizedName("gun_minigun").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_minigun"); gun_avenger = new ItemGunLacunae(Gun5mmFactory.get57Config()).setUnlocalizedName("gun_avenger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_avenger"); gun_lacunae = new ItemGunLacunae(Gun5mmFactory.getLacunaeConfig()).setUnlocalizedName("gun_lacunae").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lacunae"); gun_folly = new GunFolly().setUnlocalizedName("gun_folly").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_folly"); - //gun_fatman_ammo = new Item().setUnlocalizedName("gun_fatman_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_fatman_ammo"); gun_fatman = new ItemGunBase(GunFatmanFactory.getFatmanConfig()).setUnlocalizedName("gun_fatman").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); gun_proto = new ItemGunBase(GunFatmanFactory.getProtoConfig()).setUnlocalizedName("gun_proto").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); - //gun_mirv_ammo = new Item().setUnlocalizedName("gun_mirv_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_mirv_ammo"); gun_mirv = new ItemGunBase(GunFatmanFactory.getMIRVConfig()).setUnlocalizedName("gun_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mirv"); gun_bf_ammo = new Item().setUnlocalizedName("gun_bf_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bf_ammo"); gun_bf = new ItemGunBase(GunFatmanFactory.getBELConfig()).setUnlocalizedName("gun_bf").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bf"); gun_chemthrower = new ItemGunChemthrower().setUnlocalizedName("gun_chemthrower").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); - //gun_mp40_ammo = new Item().setUnlocalizedName("gun_mp40_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_mp40_ammo"); gun_mp40 = new ItemGunBase(Gun9mmFactory.getMP40Config()).setUnlocalizedName("gun_mp40").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mp40"); gun_thompson = new ItemGunBase(Gun45ACPFactory.getThompsonConfig()).setUnlocalizedName("gun_thompson").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_thompson"); - //gun_uzi_ammo = new Item().setUnlocalizedName("gun_uzi_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_uzi_ammo"); gun_uzi = new ItemGunBase(Gun22LRFactory.getUziConfig()).setUnlocalizedName("gun_uzi").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi"); gun_uzi_silencer = new ItemGunBase(Gun22LRFactory.getUziConfig().silenced()).setUnlocalizedName("gun_uzi_silencer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_silencer"); gun_uzi_saturnite = new ItemGunBase(Gun22LRFactory.getSaturniteConfig()).setUnlocalizedName("gun_uzi_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_saturnite"); gun_uzi_saturnite_silencer = new ItemGunBase(Gun22LRFactory.getSaturniteConfig().silenced()).setUnlocalizedName("gun_uzi_saturnite_silencer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_saturnite_silencer"); - //gun_uboinik_ammo = new Item().setUnlocalizedName("gun_uboinik_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_uboinik_ammo"); gun_uboinik = new ItemGunBase(Gun12GaugeFactory.getUboinikConfig()).setUnlocalizedName("gun_uboinik").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); gun_spas12 = new ItemGunBase(Gun12GaugeFactory.getSpas12Config(), Gun12GaugeFactory.getSpas12AltConfig()).setUnlocalizedName("gun_spas12").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spas12"); gun_supershotgun = new ItemGunShotty(Gun12GaugeFactory.getShottyConfig()).setUnlocalizedName("gun_supershotgun").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); gun_ks23 = new ItemGunBase(Gun4GaugeFactory.getKS23Config()).setUnlocalizedName("gun_ks23").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); gun_sauer = new ItemGunBase(Gun4GaugeFactory.getSauerConfig()).setUnlocalizedName("gun_sauer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); - //gun_lever_action_ammo = new Item().setUnlocalizedName("gun_lever_action_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_lever_action_ammo"); gun_lever_action = new ItemGunBase(Gun20GaugeFactory.getMareConfig()).setUnlocalizedName("gun_lever_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action"); gun_lever_action_dark = new ItemGunBase(Gun20GaugeFactory.getMareDarkConfig()).setUnlocalizedName("gun_lever_action_dark").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action_dark"); gun_lever_action_sonata = new GunLeverActionS().setUnlocalizedName("gun_lever_action_sonata").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action_sonata"); - //gun_bolt_action_ammo = new Item().setUnlocalizedName("gun_bolt_action_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bolt_action_ammo"); gun_bolt_action = new ItemGunBase(Gun20GaugeFactory.getBoltConfig()).setUnlocalizedName("gun_bolt_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action"); gun_bolt_action_green = new ItemGunBase(Gun20GaugeFactory.getBoltGreenConfig()).setUnlocalizedName("gun_bolt_action_green").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_green"); gun_bolt_action_saturnite = new ItemGunBase(Gun20GaugeFactory.getBoltSaturniteConfig()).setUnlocalizedName("gun_bolt_action_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_saturnite"); @@ -4364,7 +4350,6 @@ public class ModItems { gun_cryolator_ammo = new Item().setUnlocalizedName("gun_cryolator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator_ammo"); gun_cryolator = new GunCryolator().setUnlocalizedName("gun_cryolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator"); gun_fireext = new ItemGunBase(GunEnergyFactory.getExtConfig()).setUnlocalizedName("gun_fireext").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fireext"); - //ammo_566_gold = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("gun_mp_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_pm_ammo"); gun_mp = new ItemGunBase(Gun556mmFactory.getEuphieConfig()).setUnlocalizedName("gun_mp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_pm"); gun_bolter = new ItemGunBase(Gun75BoltFactory.getBolterConfig()).setUnlocalizedName("gun_bolter").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolter"); gun_bolter_digamma = new ItemGunBase(Gun75BoltFactory.getBolterConfig()).setUnlocalizedName("gun_bolter_digamma").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolter_digamma"); @@ -5705,10 +5690,12 @@ public class ModItems { GameRegistry.registerItem(ingot_aluminium, ingot_aluminium.getUnlocalizedName()); GameRegistry.registerItem(ingot_steel, ingot_steel.getUnlocalizedName()); GameRegistry.registerItem(ingot_tcalloy, ingot_tcalloy.getUnlocalizedName()); + GameRegistry.registerItem(ingot_cdalloy, ingot_cdalloy.getUnlocalizedName()); GameRegistry.registerItem(ingot_lead, ingot_lead.getUnlocalizedName()); GameRegistry.registerItem(ingot_bismuth, ingot_bismuth.getUnlocalizedName()); GameRegistry.registerItem(ingot_arsenic, ingot_arsenic.getUnlocalizedName()); GameRegistry.registerItem(ingot_calcium, ingot_calcium.getUnlocalizedName()); + GameRegistry.registerItem(ingot_cadmium, ingot_cadmium.getUnlocalizedName()); GameRegistry.registerItem(ingot_tantalium, ingot_tantalium.getUnlocalizedName()); GameRegistry.registerItem(ingot_niobium, ingot_niobium.getUnlocalizedName()); GameRegistry.registerItem(ingot_beryllium, ingot_beryllium.getUnlocalizedName()); @@ -5883,6 +5870,7 @@ public class ModItems { GameRegistry.registerItem(powder_lead, powder_lead.getUnlocalizedName()); GameRegistry.registerItem(powder_bismuth, powder_bismuth.getUnlocalizedName()); GameRegistry.registerItem(powder_calcium, powder_calcium.getUnlocalizedName()); + GameRegistry.registerItem(powder_cadmium, powder_cadmium.getUnlocalizedName()); GameRegistry.registerItem(powder_coltan_ore, powder_coltan_ore.getUnlocalizedName()); GameRegistry.registerItem(powder_coltan, powder_coltan.getUnlocalizedName()); GameRegistry.registerItem(powder_tantalium, powder_tantalium.getUnlocalizedName()); @@ -5937,6 +5925,7 @@ public class ModItems { GameRegistry.registerItem(powder_cloud, powder_cloud.getUnlocalizedName()); GameRegistry.registerItem(powder_sawdust, powder_sawdust.getUnlocalizedName()); GameRegistry.registerItem(powder_flux, powder_flux.getUnlocalizedName()); + GameRegistry.registerItem(powder_fertilizer, powder_fertilizer.getUnlocalizedName()); GameRegistry.registerItem(powder_balefire, powder_balefire.getUnlocalizedName()); GameRegistry.registerItem(powder_semtex_mix, powder_semtex_mix.getUnlocalizedName()); GameRegistry.registerItem(powder_desh_mix, powder_desh_mix.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/tool/ItemFertilizer.java b/src/main/java/com/hbm/items/tool/ItemFertilizer.java new file mode 100644 index 000000000..120d7b21a --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemFertilizer.java @@ -0,0 +1,101 @@ +package com.hbm.items.tool; + +import cpw.mods.fml.common.eventhandler.Event.Result; +import net.minecraft.block.Block; +import net.minecraft.block.IGrowable; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraft.world.WorldServer; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.util.FakePlayerFactory; +import net.minecraftforge.event.entity.player.BonemealEvent; + +public class ItemFertilizer extends Item { + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) { + + if(!player.canPlayerEdit(x, y, z, side, stack)) { + return false; + } + + world.captureBlockSnapshots = false; //what the fuck is the point of this?! + + boolean didSomething = false; + + for(int i = x - 1; i <= x + 1; i++) { + for(int j = y - 1; j <= y + 1; j++) { + for(int k = z - 1; k <= z + 1; k++) { + boolean success = fertilize(world, i, j, k, player, i == x && j == y && k == z); + didSomething = didSomething || success; + if(success && !world.isRemote) { + world.playAuxSFX(2005, i, j, k, 0); + } + } + } + } + + if(didSomething && !player.capabilities.isCreativeMode) { + stack.stackSize--; + } + + return false; + } + + public static boolean useFertillizer(ItemStack stack, World world, int x, int y, int z) { + + if(!(world instanceof WorldServer)) return false; + EntityPlayer player = FakePlayerFactory.getMinecraft((WorldServer)world); + + boolean didSomething = false; + + for(int i = x - 1; i <= x + 1; i++) { + for(int j = y - 1; j <= y + 1; j++) { + for(int k = z - 1; k <= z + 1; k++) { + boolean success = fertilize(world, i, j, k, player, i == x && j == y && k == z); + didSomething = didSomething || success; + if(success && !world.isRemote) { + world.playAuxSFX(2005, i, j, k, 0); + } + } + } + } + + if(didSomething) stack.stackSize--; + + return didSomething; + } + + public static boolean fertilize(World world, int x, int y, int z, EntityPlayer player, boolean force) { + + Block b = world.getBlock(x, y, z); + + BonemealEvent event = new BonemealEvent(player, world, b, x, y, z); + if(MinecraftForge.EVENT_BUS.post(event)) { + return false; + } + + if(event.getResult() == Result.ALLOW) { + return true; + } + + if(b instanceof IGrowable) { + IGrowable growable = (IGrowable) b; + + if(growable.func_149851_a(world, x, y, z, world.isRemote)) { + + if(!world.isRemote) { + if(force || growable.func_149852_a(world, world.rand, x, y, z)) { + growable.func_149853_b(world, world.rand, x, y, z); + } + } + + return true; + } + } + + return false; + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index a2ab0efec..09d85e711 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.lib.Library; import com.hbm.saveddata.TomSaveData; import com.hbm.util.TimeAnalyzer; +import com.hbm.world.feature.OilSpot; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; @@ -25,12 +26,12 @@ public class ItemWandD extends Item { if(pos != null) { - TimeAnalyzer.startCount("setBlock"); + /*TimeAnalyzer.startCount("setBlock"); world.setBlock(pos.blockX, pos.blockY, pos.blockZ, Blocks.dirt); TimeAnalyzer.startEndCount("getBlock"); world.getBlock(pos.blockX, pos.blockY, pos.blockZ); TimeAnalyzer.endCount(); - TimeAnalyzer.dump(); + TimeAnalyzer.dump();*/ /*TomSaveData data = TomSaveData.forWorld(world); data.impact = false; @@ -60,7 +61,7 @@ public class ItemWandD extends Item { //MapGenStronghold.Start startS = new MapGenStronghold.Start(world, world.rand, pos.blockX >> 4, pos.blockZ >> 4); //startS.generateStructure(world, world.rand, new StructureBoundingBox(k - 124, l - 124, k + 15 + 124, l + 15 + 124)); - /*OilSpot.generateOilSpot(world, pos.blockX, pos.blockZ, 20, 500);*/ + OilSpot.generateOilSpot(world, pos.blockX, pos.blockZ, 3, 50, true); /*EntityNukeTorex torex = new EntityNukeTorex(world); torex.setPositionAndRotation(pos.blockX, pos.blockY + 1, pos.blockZ, 0, 0); diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index 9ba48f076..6fc6e3d3f 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -156,6 +156,7 @@ public class HbmWorldGen implements IWorldGenerator { //DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.hematiteSpawn, 10, 4, 80, ModBlocks.stone_resource, EnumStoneType.HEMATITE.ordinal()); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.malachiteSpawn, 10, 6, 40, ModBlocks.stone_resource, EnumStoneType.MALACHITE.ordinal()); + DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.limestoneSpawn, 12, 25, 30, ModBlocks.stone_resource, EnumStoneType.LIMESTONE.ordinal()); DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.IRON, 1, WorldConfig.bedrockIronSpawn); DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.COPPER, 1, WorldConfig.bedrockCopperSpawn); @@ -613,7 +614,7 @@ public class HbmWorldGen implements IWorldGenerator { } DungeonToolbox.generateOre(world, rand, i, j, 16, 8, 10, 50, ModBlocks.stone_porous); - OilSpot.generateOilSpot(world, randPosX, randPosZ, 5, 50); + OilSpot.generateOilSpot(world, randPosX, randPosZ, 5, 50, true); } if(WorldConfig.meteoriteSpawn > 0 && rand.nextInt(WorldConfig.meteoriteSpawn) == 0) { diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 0d0dfeeae..538edff75 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -13,6 +13,7 @@ import com.hbm.crafting.*; import com.hbm.crafting.handlers.*; import com.hbm.inventory.OreDictManager; import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.material.Mats; import static com.hbm.inventory.OreDictManager.*; @@ -84,8 +85,9 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.redstone_sword, 1), new Object[] { "R", "R", "S", 'R', REDSTONE.block(), 'S', KEY_STICK }); addRecipeAuto(new ItemStack(ModItems.big_sword, 1), new Object[] { "QIQ", "QIQ", "GSG", 'G', Items.gold_ingot, 'S', KEY_STICK, 'I', Items.iron_ingot, 'Q', Items.quartz}); - + addRecipeAuto(new ItemStack(ModItems.board_copper, 1), new Object[] { "TTT", "TTT", 'T', CU.plate() }); + addRecipeAuto(Mats.MAT_IRON.make(ModItems.plate_cast), new Object[] { "BPB", "BPB", "BPB", 'B', ModItems.bolt_tungsten, 'P', IRON.plate() }); addRecipeAuto(new ItemStack(ModItems.hazmat_cloth_red, 1), new Object[] { "C", "R", "C", 'C', ModItems.hazmat_cloth, 'R', REDSTONE.dust() }); addRecipeAuto(new ItemStack(ModItems.hazmat_cloth_grey, 1), new Object[] { " P ", "ICI", " L ", 'C', ModItems.hazmat_cloth_red, 'P', IRON.plate(), 'L', PB.plate(), 'I', ModItems.plate_polymer }); addRecipeAuto(new ItemStack(ModItems.asbestos_cloth, 8), new Object[] { "SCS", "CPC", "SCS", 'S', Items.string, 'P', BR.dust(), 'C', Blocks.wool }); @@ -151,6 +153,7 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.biomass, 4), new Object[] { Items.sugar, ModItems.powder_sawdust, ModItems.powder_sawdust, Blocks.pumpkin }); addShapelessAuto(new ItemStack(ModItems.biomass, 4), new Object[] { Items.sugar, ModItems.powder_sawdust, ModItems.powder_sawdust, Blocks.melon_block }); addShapelessAuto(new ItemStack(ModItems.biomass, 4), new Object[] { Items.sugar, ModItems.powder_sawdust, ModItems.powder_sawdust, Items.wheat, Items.wheat, Items.wheat, Items.wheat, Items.wheat, Items.wheat }); + addShapelessAuto(new ItemStack(ModItems.biomass, 4), new Object[] { DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED), DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED), DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED), DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED), DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED), DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED) }); //addRecipeAuto(new ItemStack(ModItems.part_lithium), new Object[] { "P", "D", "P", 'P', STEEL.plate(), 'D', LI.dust() }); //addRecipeAuto(new ItemStack(ModItems.part_beryllium), new Object[] { "P", "D", "P", 'P', STEEL.plate(), 'D', BE.dust() }); @@ -192,7 +195,7 @@ public class CraftingManager { //addRecipeAuto(new ItemStack(ModItems.rtg_unit, 1), new Object[] { "TIT", "PCP", "TIT", 'T', ModItems.thermo_element, 'I', PB.ingot(), 'P', ModItems.board_copper, 'C', ModItems.circuit_copper }); //addRecipeAuto(new ItemStack(ModItems.thermo_unit_empty, 1), new Object[] { "TTT", " S ", "P P", 'S', STEEL.ingot(), 'P', TI.plate(), 'T', ModItems.coil_copper_torus }); //addRecipeAuto(new ItemStack(ModItems.levitation_unit, 1), new Object[] { "CSC", "TAT", "PSP", 'C', ModItems.coil_copper, 'S', ModItems.nugget_schrabidium, 'T', ModItems.coil_tungsten, 'P', TI.plate(), 'A', STEEL.ingot() }); - addRecipeAuto(new ItemStack(ModItems.deuterium_filter, 1), new Object[] { "TST", "SCS", "TST", 'T', TCALLOY.ingot(), 'S', S.dust(), 'C', ModItems.catalyst_clay }); + addRecipeAuto(new ItemStack(ModItems.deuterium_filter, 1), new Object[] { "TST", "SCS", "TST", 'T', ANY_RESISTANTALLOY.ingot(), 'S', S.dust(), 'C', ModItems.catalyst_clay }); addRecipeAuto(new ItemStack(ModItems.hull_small_steel, 3), new Object[] { "PPP", " ", "PPP", 'P', STEEL.plate(), 'I', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModItems.hull_small_aluminium, 3), new Object[] { "PPP", " ", "PPP", 'P', AL.plate(), 'I', AL.ingot() }); @@ -293,7 +296,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.safe, 1), new Object[] { "LAL", "ACA", "LAL", 'L', PB.plate(), 'A', ALLOY.plate(), 'C', ModBlocks.crate_steel }); addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 0), new Object[] { "ICI", "CLC", "ICI", 'I', TI.ingot(), 'C', ModBlocks.crate_steel, 'L', ModItems.circuit_copper }); addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 1), new Object[] { "PCP", "PMP", "PPP", 'P', DESH.ingot(), 'C', ModItems.circuit_red_copper, 'M', new ItemStack(ModBlocks.mass_storage, 1, 0) }); - addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 2), new Object[] { "PCP", "PMP", "PPP", 'P', TCALLOY.ingot(), 'C', ModItems.circuit_gold, 'M', new ItemStack(ModBlocks.mass_storage, 1, 1) }); + addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 2), new Object[] { "PCP", "PMP", "PPP", 'P', ANY_RESISTANTALLOY.ingot(), 'C', ModItems.circuit_gold, 'M', new ItemStack(ModBlocks.mass_storage, 1, 1) }); addRecipeAuto(new ItemStack(ModBlocks.machine_autocrafter, 1), new Object[] { "SCS", "MWM", "SCS", 'S', STEEL.plate(), 'C', ModItems.circuit_copper, 'M', ModItems.motor, 'W', Blocks.crafting_table }); addRecipeAuto(new ItemStack(ModBlocks.machine_waste_drum, 1), new Object[] { "LRL", "BRB", "LRL", 'L', PB.ingot(), 'B', Blocks.iron_bars, 'R', ModItems.rod_quad_empty }); addRecipeAuto(new ItemStack(ModBlocks.machine_press, 1), new Object[] { "IRI", "IPI", "IBI", 'I', IRON.ingot(), 'R', Blocks.furnace, 'B', IRON.block(), 'P', Blocks.piston }); @@ -396,7 +399,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.tile_lab_broken, 6), new Object[] { " C " , "C C", " C ", 'C', ModBlocks.tile_lab_cracked }); addShapelessAuto(new ItemStack(ModBlocks.asphalt_light, 1), new Object[] { ModBlocks.asphalt, Items.glowstone_dust }); addShapelessAuto(new ItemStack(ModBlocks.asphalt, 1), new Object[] { ModBlocks.asphalt_light }); - addRecipeAuto(new ItemStack(ModBlocks.block_niter_reinforced, 1), new Object[] { "TCT", "CNC", "TCT", 'T', TCALLOY.ingot(), 'C', ModBlocks.concrete, 'N', KNO.block() }); + addRecipeAuto(new ItemStack(ModBlocks.block_niter_reinforced, 1), new Object[] { "TCT", "CNC", "TCT", 'T', ANY_RESISTANTALLOY.ingot(), 'C', ModBlocks.concrete, 'N', KNO.block() }); String[] dyes = { "Black", "Red", "Green", "Brown", "Blue", "Purple", "Cyan", "LightGray", "Gray", "Pink", "Lime", "Yellow", "LightBlue", "Magenta", "Orange", "White" }; @@ -657,7 +660,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.vent_pink_cloud), new Object[] { "IGI", "ICI", "IDI", 'I', IRON.plate(), 'G', Blocks.iron_bars, 'C', ModItems.grenade_pink_cloud, 'D', Blocks.dispenser }); addRecipeAuto(new ItemStack(ModBlocks.spikes, 4), new Object[] { "FFF", "BBB", "TTT", 'F', Items.flint, 'B', ModItems.bolt_tungsten, 'T', W.ingot() }); addRecipeAuto(new ItemStack(ModItems.custom_fall, 1), new Object[] { "IIP", "CHW", "IIP", 'I', ModItems.plate_polymer, 'P', BIGMT.plate(), 'C', ModItems.circuit_red_copper, 'H', ModItems.hull_small_steel, 'W', ModItems.coil_copper }); - addRecipeAuto(new ItemStack(ModBlocks.machine_controller, 1), new Object[] { "TDT", "DCD", "TDT", 'T', TCALLOY.ingot(), 'D', ModItems.crt_display, 'C', ModItems.circuit_targeting_tier3 }); + addRecipeAuto(new ItemStack(ModBlocks.machine_controller, 1), new Object[] { "TDT", "DCD", "TDT", 'T', ANY_RESISTANTALLOY.ingot(), 'D', ModItems.crt_display, 'C', ModItems.circuit_targeting_tier3 }); addRecipeAuto(new ItemStack(ModItems.containment_box, 1), new Object[] { "LUL", "UCU", "LUL", 'L', PB.plate(), 'U', U238.billet(), 'C', ModBlocks.crate_steel }); addRecipeAuto(new ItemStack(ModBlocks.absorber, 1), new Object[] { "ICI", "CPC", "ICI", 'I', CU.ingot(), 'C', COAL.dust(), 'P', PB.dust() }); @@ -826,11 +829,15 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.rbmk_moderator, 1), new Object[] { " G ", "GRG", " G ", 'G', GRAPHITE.block(), 'R', ModBlocks.rbmk_blank }); addRecipeAuto(new ItemStack(ModBlocks.rbmk_absorber, 1), new Object[] { "GGG", "GRG", "GGG", 'G', B.ingot(), 'R', ModBlocks.rbmk_blank }); addRecipeAuto(new ItemStack(ModBlocks.rbmk_reflector, 1), new Object[] { "GGG", "GRG", "GGG", 'G', OreDictManager.getReflector(), 'R', ModBlocks.rbmk_blank }); - addRecipeAuto(new ItemStack(ModBlocks.rbmk_control, 1), new Object[] { " B ", "GRG", " B ", 'G', GRAPHITE.ingot(), 'B', ModItems.motor, 'R', ModBlocks.rbmk_absorber }); + if(!GeneralConfig.enable528) { + addRecipeAuto(new ItemStack(ModBlocks.rbmk_control, 1), new Object[] { " B ", "GRG", " B ", 'G', GRAPHITE.ingot(), 'B', ModItems.motor, 'R', ModBlocks.rbmk_absorber }); + } else { + addRecipeAuto(new ItemStack(ModBlocks.rbmk_control, 1), new Object[] { "CBC", "GRG", "CBC", 'G', GRAPHITE.ingot(), 'B', ModItems.motor, 'R', ModBlocks.rbmk_absorber, 'C', CD.ingot() }); + } addRecipeAuto(new ItemStack(ModBlocks.rbmk_control_mod, 1), new Object[] { "BGB", "GRG", "BGB", 'G', GRAPHITE.block(), 'R', ModBlocks.rbmk_control, 'B', ModItems.nugget_bismuth }); addRecipeAuto(new ItemStack(ModBlocks.rbmk_control_auto, 1), new Object[] { "C", "R", "D", 'C', ModItems.circuit_targeting_tier1, 'R', ModBlocks.rbmk_control, 'D', ModItems.crt_display }); addRecipeAuto(new ItemStack(ModBlocks.rbmk_rod_reasim, 1), new Object[] { "ZCZ", "ZRZ", "ZCZ", 'C', ModItems.hull_small_steel, 'R', ModBlocks.rbmk_blank, 'Z', ZR.ingot() }); - addRecipeAuto(new ItemStack(ModBlocks.rbmk_rod_reasim_mod, 1), new Object[] { "BGB", "GRG", "BGB", 'G', GRAPHITE.block(), 'R', ModBlocks.rbmk_rod_reasim, 'B', TCALLOY.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.rbmk_rod_reasim_mod, 1), new Object[] { "BGB", "GRG", "BGB", 'G', GRAPHITE.block(), 'R', ModBlocks.rbmk_rod_reasim, 'B', ANY_RESISTANTALLOY.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.rbmk_outgasser, 1), new Object[] { "GHG", "GRG", "GTG", 'G', ModBlocks.steel_grate, 'H', Blocks.hopper, 'T', ModItems.tank_steel, 'R', ModBlocks.rbmk_blank }); addRecipeAuto(new ItemStack(ModBlocks.rbmk_storage, 1), new Object[] { "C", "R", "C", 'C', ModBlocks.crate_steel, 'R', ModBlocks.rbmk_blank }); addRecipeAuto(new ItemStack(ModBlocks.rbmk_loader, 1), new Object[] { "SCS", "CBC", "SCS", 'S', STEEL.plate(), 'C', CU.ingot(), 'B', ModItems.tank_steel }); @@ -918,7 +925,7 @@ public class CraftingManager { addRecipeAuto(DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC, 4), new Object[] { " I ", "CPC", " I ", 'I', IRON.ingot(), 'C', CU.ingot(), 'P', IRON.plate() }); addRecipeAuto(DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_HYDRAULIC, 4), new Object[] { " I ", "CPC", " I ", 'I', STEEL.ingot(), 'C', TI.ingot(), 'P', Fluids.LUBRICANT.getDict(1000) }); - addRecipeAuto(DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_ELECTRIC, 4), new Object[] { " I ", "CPC", " I ", 'I', TCALLOY.ingot(), 'C', ANY_PLASTIC.ingot(), 'P', ModItems.motor }); + addRecipeAuto(DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_ELECTRIC, 4), new Object[] { " I ", "CPC", " I ", 'I', ANY_RESISTANTALLOY.ingot(), 'C', ANY_PLASTIC.ingot(), 'P', ModItems.motor }); Object[] craneCasing = new Object[] { Blocks.stonebrick, 1, diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index d88605e43..be5417a80 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -2,7 +2,9 @@ package com.hbm.main; import net.minecraft.block.BlockDispenser; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.dispenser.BehaviorDefaultDispenseItem; import net.minecraft.dispenser.BehaviorProjectileDispense; +import net.minecraft.dispenser.IBlockSource; import net.minecraft.dispenser.IPosition; import net.minecraft.entity.IProjectile; import net.minecraft.init.Items; @@ -12,6 +14,7 @@ import net.minecraft.item.ItemArmor.ArmorMaterial; import net.minecraft.item.ItemStack; import net.minecraft.stats.Achievement; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; import net.minecraft.util.WeightedRandomChestContent; import net.minecraft.world.World; import net.minecraftforge.common.AchievementPage; @@ -60,6 +63,7 @@ import com.hbm.inventory.recipes.*; import com.hbm.inventory.recipes.anvil.AnvilRecipes; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemFertilizer; import com.hbm.items.ItemAmmoEnums.Ammo4Gauge; import com.hbm.lib.HbmWorld; import com.hbm.lib.Library; @@ -602,6 +606,27 @@ public class MainRegistry { return new EntityGrenadeDynamite(world, position.getX(), position.getY(), position.getZ()); } }); + BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.powder_fertilizer, new BehaviorDefaultDispenseItem() { + + private boolean dispenseSound = true; + @Override protected ItemStack dispenseStack(IBlockSource source, ItemStack stack) { + + EnumFacing facing = BlockDispenser.func_149937_b(source.getBlockMetadata()); + World world = source.getWorld(); + int x = source.getXInt() + facing.getFrontOffsetX(); + int y = source.getYInt() + facing.getFrontOffsetY(); + int z = source.getZInt() + facing.getFrontOffsetZ(); + this.dispenseSound = ItemFertilizer.useFertillizer(stack, world, x, y, z); + return stack; + } + @Override protected void playDispenseSound(IBlockSource source) { + if(this.dispenseSound) { + source.getWorld().playAuxSFX(1000, source.getXInt(), source.getYInt(), source.getZInt(), 0); + } else { + source.getWorld().playAuxSFX(1001, source.getXInt(), source.getYInt(), source.getZInt(), 0); + } + } + }); } @EventHandler diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java index ebcb72c88..2ca86eb13 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java @@ -2,13 +2,18 @@ package com.hbm.tileentity.machine; import java.util.List; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockTallPlant.EnumTallFlower; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.ModDamageSource; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.fluid.IFluidStandardReceiver; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -80,7 +85,17 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IN List affected = worldObj.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(cX - 1, cY - 0.25, cZ - 1, cX + 1, cY + 0.25, cZ + 1)); for(EntityLivingBase e : affected) { - e.attackEntityFrom(ModDamageSource.turbofan, 100); + if(e.isEntityAlive() && e.attackEntityFrom(ModDamageSource.turbofan, 100)) { + worldObj.playSoundEffect(e.posX, e.posY, e.posZ, "mob.zombie.woodbreak", 2.0F, 0.95F + worldObj.rand.nextFloat() * 0.2F); + int count = Math.min((int)Math.ceil(e.getMaxHealth() / 4), 250); + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaburst"); + data.setInteger("count", count * 4); + data.setDouble("motion", 0.1D); + data.setString("mode", "blockdust"); + data.setInteger("block", Block.getIdFromBlock(Blocks.redstone_block)); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, e.posX, e.posY + e.height * 0.5, e.posZ), new TargetPoint(e.dimension, e.posX, e.posY, e.posZ, 50)); + } } if(state == 0) { @@ -109,7 +124,11 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IN Block b = worldObj.getBlock(pos.blockX, pos.blockY, pos.blockZ); if(b.getMaterial() == Material.wood || b.getMaterial() == Material.leaves || b.getMaterial() == Material.plants) { - state = 1; + + int meta = worldObj.getBlockMetadata(pos.blockX, pos.blockY, pos.blockZ); + if(!shouldIgnore(b, meta)) { + state = 1; + } } } } @@ -184,9 +203,23 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IN } } + /** Anything additionally that the detector nor the blades should pick up on, like non-mature willows */ + public static boolean shouldIgnore(Block b, int meta) { + if(b == ModBlocks.plant_tall) { + return meta == EnumTallFlower.CD2.ordinal() + 8 || meta == EnumTallFlower.CD3.ordinal() + 8; + } + + return false; + } + protected void tryInteract(int x, int y, int z) { Block b = worldObj.getBlock(x, y, z); + int meta = worldObj.getBlockMetadata(x, y, z); + + if(shouldIgnore(b, meta)) { + return; + } if(b.getMaterial() == Material.leaves || b.getMaterial() == Material.plants) { worldObj.func_147480_a(x, y, z, true); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java index f2811240f..7c19d40bb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java @@ -161,7 +161,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme float freeChance = this.getFreeChance(); if(freeChance == 0 || freeChance < worldObj.rand.nextFloat()) - this.decrStackSize(0, 1); + this.decrStackSize(0, result.itemAmount); } private boolean canProcess() { @@ -179,6 +179,10 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme if(result == null) return false; + //Not enough of the input item? + if(slots[0].stackSize < result.itemAmount) + return false; + if(tank.getFill() < result.acidAmount) return false; ItemStack stack = result.output.copy(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySawmill.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySawmill.java index 7359ac6a9..e906bc154 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySawmill.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySawmill.java @@ -8,14 +8,18 @@ import com.hbm.entity.projectile.EntitySawblade; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.machine.TileEntityMachineAutocrafter.InventoryCraftingAuto; import com.hbm.util.ItemStackUtil; import api.hbm.tile.IHeatSource; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.Blocks; import net.minecraft.init.Items; @@ -87,10 +91,20 @@ public class TileEntitySawmill extends TileEntityMachineBase { } AxisAlignedBB aabb = AxisAlignedBB.getBoundingBox(-1D, 0.375D, -1D, -0.875, 2.375D, 1D); - aabb = BlockDummyable.getAABBRotationOffset(aabb, xCoord, yCoord, zCoord, ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getRotation(ForgeDirection.UP)); + aabb = BlockDummyable.getAABBRotationOffset(aabb, xCoord + 0.5, yCoord, zCoord + 0.5, ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getRotation(ForgeDirection.UP)); for(Object o : worldObj.getEntitiesWithinAABB(EntityLivingBase.class, aabb)) { - EntityLivingBase living = (EntityLivingBase) o; - living.attackEntityFrom(ModDamageSource.turbofan, 100); + EntityLivingBase e = (EntityLivingBase) o; + if(e.isEntityAlive() && e.attackEntityFrom(ModDamageSource.turbofan, 100)) { + worldObj.playSoundEffect(e.posX, e.posY, e.posZ, "mob.zombie.woodbreak", 2.0F, 0.95F + worldObj.rand.nextFloat() * 0.2F); + int count = Math.min((int)Math.ceil(e.getMaxHealth() / 4), 250); + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaburst"); + data.setInteger("count", count * 4); + data.setDouble("motion", 0.1D); + data.setString("mode", "blockdust"); + data.setInteger("block", Block.getIdFromBlock(Blocks.redstone_block)); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, e.posX, e.posY + e.height * 0.5, e.posZ), new TargetPoint(e.dimension, e.posX, e.posY, e.posZ, 50)); + } } } else { diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFrackingTower.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFrackingTower.java index 62f4a2cc7..13fb8015b 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFrackingTower.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFrackingTower.java @@ -125,7 +125,7 @@ public class TileEntityMachineFrackingTower extends TileEntityOilDrillBase imple this.tanks[2].setFill(tanks[2].getFill() - solutionRequired); - OilSpot.generateOilSpot(worldObj, xCoord, zCoord, destructionRange, 10); + OilSpot.generateOilSpot(worldObj, xCoord, zCoord, destructionRange, 10, false); } @Override diff --git a/src/main/java/com/hbm/wiaj/cannery/CanneryWillow.java b/src/main/java/com/hbm/wiaj/cannery/CanneryWillow.java new file mode 100644 index 000000000..11c9c4b6e --- /dev/null +++ b/src/main/java/com/hbm/wiaj/cannery/CanneryWillow.java @@ -0,0 +1,150 @@ +package com.hbm.wiaj.cannery; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockNTMFlower.EnumFlowerType; +import com.hbm.blocks.generic.BlockTallPlant.EnumTallFlower; +import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumPlantType; +import com.hbm.util.I18nUtil; +import com.hbm.wiaj.JarScene; +import com.hbm.wiaj.JarScript; +import com.hbm.wiaj.WorldInAJar; +import com.hbm.wiaj.actions.ActionCreateActor; +import com.hbm.wiaj.actions.ActionRemoveActor; +import com.hbm.wiaj.actions.ActionSetBlock; +import com.hbm.wiaj.actions.ActionSetZoom; +import com.hbm.wiaj.actions.ActionWait; +import com.hbm.wiaj.actors.ActorFancyPanel; +import com.hbm.wiaj.actors.ActorFancyPanel.Orientation; + +import net.minecraft.client.Minecraft; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; + +public class CanneryWillow extends CanneryBase { + + @Override + public ItemStack getIcon() { + return DictFrame.fromOne(ModItems.plant_item, EnumPlantType.MUSTARDWILLOW); + } + + @Override + public String getName() { + return "cannery.willow"; + } + + @Override + public JarScript createScript() { + + WorldInAJar world = new WorldInAJar(5, 5, 5); + JarScript script = new JarScript(world); + + JarScene scene0 = new JarScene(script); + scene0.add(new ActionSetZoom(3, 0)); + + for(int x = world.sizeX - 1; x >= 0 ; x--) { + for(int z = 0; z < world.sizeZ; z++) { + scene0.add(new ActionSetBlock(x, 1, z, Blocks.grass)); + scene0.add(new ActionSetBlock(x, 0, z, Blocks.dirt)); + } + scene0.add(new ActionWait(2)); + } + + scene0.add(new ActionWait(8)); + scene0.add(new ActionSetBlock(2, 2, 2, ModBlocks.plant_flower, EnumFlowerType.CD0.ordinal())); + + scene0.add(new ActionWait(10)); + + scene0.add(new ActionCreateActor(0, new ActorFancyPanel(Minecraft.getMinecraft().fontRenderer, 0, -15, new Object[][] {{I18nUtil.resolveKey("cannery.willow.0")}}, 150) + .setColors(colorCopper).setOrientation(Orientation.BOTTOM))); + + scene0.add(new ActionWait(80)); + + scene0.add(new ActionCreateActor(0, new ActorFancyPanel(Minecraft.getMinecraft().fontRenderer, 0, -15, new Object[][] {{I18nUtil.resolveKey("cannery.willow.1")}}, 150) + .setColors(colorCopper).setOrientation(Orientation.BOTTOM))); + + scene0.add(new ActionWait(80)); + scene0.add(new ActionRemoveActor(0)); + + scene0.add(new ActionWait(10)); + scene0.add(new ActionSetBlock(2, 1, 1, Blocks.air)); + scene0.add(new ActionWait(10)); + scene0.add(new ActionSetBlock(2, 1, 1, Blocks.water)); + + scene0.add(new ActionWait(20)); + + scene0.add(new ActionCreateActor(0, new ActorFancyPanel(Minecraft.getMinecraft().fontRenderer, 0, -15, new Object[][] {{I18nUtil.resolveKey("cannery.willow.2")}}, 150) + .setColors(colorCopper).setOrientation(Orientation.BOTTOM))); + + scene0.add(new ActionWait(80)); + scene0.add(new ActionRemoveActor(0)); + scene0.add(new ActionWait(20)); + scene0.add(new ActionSetBlock(2, 2, 2, ModBlocks.plant_flower, EnumFlowerType.CD1.ordinal())); + + scene0.add(new ActionWait(20)); + + scene0.add(new ActionCreateActor(0, new ActorFancyPanel(Minecraft.getMinecraft().fontRenderer, 0, -15, new Object[][] {{I18nUtil.resolveKey("cannery.willow.3")}}, 150) + .setColors(colorCopper).setOrientation(Orientation.BOTTOM))); + + scene0.add(new ActionWait(80)); + scene0.add(new ActionRemoveActor(0)); + scene0.add(new ActionWait(20)); + scene0.add(new ActionSetBlock(2, 2, 2, ModBlocks.plant_tall, EnumTallFlower.CD2.ordinal())); + scene0.add(new ActionSetBlock(2, 3, 2, ModBlocks.plant_tall, EnumTallFlower.CD2.ordinal() + 8)); + + scene0.add(new ActionWait(20)); + scene0.add(new ActionSetBlock(2, 2, 2, ModBlocks.plant_tall, EnumTallFlower.CD3.ordinal())); + scene0.add(new ActionSetBlock(2, 3, 2, ModBlocks.plant_tall, EnumTallFlower.CD3.ordinal() + 8)); + scene0.add(new ActionWait(20)); + + scene0.add(new ActionCreateActor(0, new ActorFancyPanel(Minecraft.getMinecraft().fontRenderer, 0, -35, new Object[][] {{I18nUtil.resolveKey("cannery.willow.4")}}, 150) + .setColors(colorCopper).setOrientation(Orientation.BOTTOM))); + scene0.add(new ActionWait(80)); + scene0.add(new ActionCreateActor(0, new ActorFancyPanel(Minecraft.getMinecraft().fontRenderer, 0, -35, new Object[][] {{I18nUtil.resolveKey("cannery.willow.5")}}, 200) + .setColors(colorCopper).setOrientation(Orientation.BOTTOM))); + + scene0.add(new ActionWait(100)); + scene0.add(new ActionRemoveActor(0)); + scene0.add(new ActionWait(20)); + scene0.add(new ActionSetBlock(2, 1, 2, ModBlocks.dirt_oily)); + + scene0.add(new ActionWait(20)); + scene0.add(new ActionSetBlock(2, 2, 2, ModBlocks.plant_tall, EnumTallFlower.CD4.ordinal())); + scene0.add(new ActionSetBlock(2, 3, 2, ModBlocks.plant_tall, EnumTallFlower.CD4.ordinal() + 8)); + scene0.add(new ActionSetBlock(2, 1, 2, Blocks.dirt)); + scene0.add(new ActionWait(20)); + + scene0.add(new ActionCreateActor(0, new ActorFancyPanel(Minecraft.getMinecraft().fontRenderer, 0, -35, new Object[][] {{I18nUtil.resolveKey("cannery.willow.6")}}, 150) + .setColors(colorCopper).setOrientation(Orientation.BOTTOM))); + scene0.add(new ActionWait(100)); + scene0.add(new ActionRemoveActor(0)); + + JarScene scene1 = new JarScene(script); + scene1.add(new ActionCreateActor(0, new ActorFancyPanel(Minecraft.getMinecraft().fontRenderer, 0, -35, new Object[][] {{I18nUtil.resolveKey("cannery.willow.7")}}, 200) + .setColors(colorCopper).setOrientation(Orientation.BOTTOM))); + scene1.add(new ActionWait(100)); + scene1.add(new ActionRemoveActor(0)); + + scene1.add(new ActionWait(20)); + scene1.add(new ActionCreateActor(0, new ActorFancyPanel(Minecraft.getMinecraft().fontRenderer, 10, -25, new Object[][] {{"=", DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.CD0), "x1 + ", DictFrame.fromOne(ModItems.plant_item, EnumPlantType.MUSTARDWILLOW), "x3-6"}}, 0) + .setColors(colorCopper).setOrientation(Orientation.LEFT))); + scene1.add(new ActionSetBlock(2, 3, 2, Blocks.air)); + scene1.add(new ActionSetBlock(2, 2, 2, ModBlocks.plant_flower, EnumFlowerType.CD0.ordinal())); + scene1.add(new ActionWait(60)); + + scene1.add(new ActionRemoveActor(0)); + scene1.add(new ActionWait(20)); + scene1.add(new ActionCreateActor(0, new ActorFancyPanel(Minecraft.getMinecraft().fontRenderer, 0, -15, new Object[][] {{I18nUtil.resolveKey("cannery.willow.8")}}, 200) + .setColors(colorCopper).setOrientation(Orientation.BOTTOM))); + scene1.add(new ActionWait(100)); + + scene1.add(new ActionCreateActor(0, new ActorFancyPanel(Minecraft.getMinecraft().fontRenderer, 0, -15, new Object[][] {{I18nUtil.resolveKey("cannery.willow.9")}}, 150) + .setColors(colorCopper).setOrientation(Orientation.BOTTOM))); + scene1.add(new ActionWait(100)); + scene1.add(new ActionRemoveActor(0)); + + script.addScene(scene0).addScene(scene1); + return script; + } +} diff --git a/src/main/java/com/hbm/wiaj/cannery/Jars.java b/src/main/java/com/hbm/wiaj/cannery/Jars.java index 800482d3f..47723ba8a 100644 --- a/src/main/java/com/hbm/wiaj/cannery/Jars.java +++ b/src/main/java/com/hbm/wiaj/cannery/Jars.java @@ -3,7 +3,11 @@ package com.hbm.wiaj.cannery; import java.util.HashMap; import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockNTMFlower.EnumFlowerType; +import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumPlantType; public class Jars { @@ -19,5 +23,8 @@ public class Jars { canneries.put(new ComparableStack(ModBlocks.machine_silex), new CannerySILEX()); canneries.put(new ComparableStack(ModBlocks.foundry_channel), new CanneryFoundryChannel()); canneries.put(new ComparableStack(ModBlocks.machine_crucible), new CanneryCrucible()); + + canneries.put(new ComparableStack(DictFrame.fromOne(ModItems.plant_item, EnumPlantType.MUSTARDWILLOW)), new CanneryWillow()); + canneries.put(new ComparableStack(DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.CD0)), new CanneryWillow()); } } diff --git a/src/main/java/com/hbm/world/feature/OilSpot.java b/src/main/java/com/hbm/world/feature/OilSpot.java index cfc3014c1..bcd746638 100644 --- a/src/main/java/com/hbm/world/feature/OilSpot.java +++ b/src/main/java/com/hbm/world/feature/OilSpot.java @@ -2,6 +2,9 @@ package com.hbm.world.feature; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockDeadPlant.EnumDeadPlantType; +import com.hbm.blocks.generic.BlockNTMFlower.EnumFlowerType; +import com.hbm.blocks.generic.BlockTallPlant; +import com.hbm.blocks.generic.BlockTallPlant.EnumTallFlower; import net.minecraft.block.Block; import net.minecraft.block.BlockBush; @@ -15,7 +18,7 @@ import net.minecraftforge.common.IPlantable; public class OilSpot { - public static void generateOilSpot(World world, int x, int z, int width, int count) { + public static void generateOilSpot(World world, int x, int z, int width, int count, boolean addWillows) { for(int i = 0; i < count; i++) { int rX = x + (int)(world.rand.nextGaussian() * width); @@ -26,6 +29,11 @@ public class OilSpot { Block below = world.getBlock(rX, y - 1, rZ); Block ground = world.getBlock(rX, y, rZ); + int meta = world.getBlockMetadata(rX, y, rZ); + + /* don't affect mustard willows */ + if(ground == ModBlocks.plant_flower && (meta == EnumFlowerType.CD0.ordinal() || meta == EnumFlowerType.CD1.ordinal())) continue; + if(ground == ModBlocks.plant_tall && (meta == EnumTallFlower.CD2.ordinal() || meta == EnumTallFlower.CD3.ordinal() || meta == EnumTallFlower.CD4.ordinal())) continue; if(below.isNormalCube() && ground != ModBlocks.plant_dead) { if(ground instanceof BlockTallGrass) { @@ -40,7 +48,7 @@ public class OilSpot { } } else if(ground instanceof BlockFlower) { world.setBlock(rX, y, rZ, ModBlocks.plant_dead, EnumDeadPlantType.FLOWER.ordinal(), 3); - } else if(ground instanceof BlockDoublePlant) { + } else if(ground instanceof BlockDoublePlant || ground instanceof BlockTallPlant) { world.setBlock(rX, y, rZ, ModBlocks.plant_dead, EnumDeadPlantType.BIGFLOWER.ordinal(), 3); } else if(ground instanceof BlockBush) { world.setBlock(rX, y, rZ, ModBlocks.plant_dead, EnumDeadPlantType.GENERIC.ordinal(), 3); @@ -51,6 +59,13 @@ public class OilSpot { if(ground == Blocks.grass || ground == Blocks.dirt) { world.setBlock(rX, y, rZ, world.rand.nextInt(10) == 0 ? ModBlocks.dirt_oily : ModBlocks.dirt_dead); + + if(addWillows && world.rand.nextInt(50) == 0) { + if(ModBlocks.plant_flower.canPlaceBlockAt(world, rX, y + 1, rZ)) { + world.setBlock(rX, y + 1, rZ, ModBlocks.plant_flower, EnumFlowerType.CD0.ordinal(), 3); + } + } + break; } else if(ground == Blocks.sand || ground == ModBlocks.ore_oil_sand) { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 911aff76c..c74073eb2 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -412,6 +412,7 @@ container.watzPowerplant=Watzkraftwerk container.zirnox=ZIRNOX Atomreaktor crucible.aa=Herstellung - Fortgeschrittene Legierung +crucible.cdalloy=Herstellung Cadmiumstahl crucible.ferro=Herstellung - Ferrouran crucible.hematite=Herstellung - Eisen aus Hämatit crucible.hss=Herstellung - Schnellarbeitsstahl @@ -701,6 +702,7 @@ hbmmat.bismuth=Bismut hbmmat.borax=Borax hbmmat.boron=Bor hbmmat.carbon=Kohlenstoff +hbmmat.cdalloy=Cadmiumstahl hbmmat.cinnabar=Zinnober hbmmat.cmbsteel=Combinestahl hbmmat.coal=Kohle @@ -1976,7 +1978,9 @@ item.ingot_beryllium.name=Berylliumbarren item.ingot_bismuth.name=Bismutbarren item.ingot_boron.name=Borbarren item.ingot_c4.name=C4-Tafel +item.ingot_cadmium.name=Cadmiumbarren item.ingot_calcium.name=Kalziumbarren +item.ingot_cdalloy.name=Cadmiumstahlbarren item.ingot_chainsteel.name=Schwerer Kettenstahl item.ingot_co60.name=Kobalt-60-Barren item.ingot_cobalt.name=Kobaltbarren @@ -2549,6 +2553,7 @@ item.piston_set_dura.name=Ottomotorenkolben (Schnellarbeitsstahl) item.piston_set_starmetal.name=Ottomotorenkolben (Sternmetall) item.piston_set_steel.name=Ottomotorenkolben (Stahl) item.plan_c.name=Plan C +item.plant_item.mustardwillow.name=Senf-Weidenblatt item.plant_item.rope.name=Seil item.plant_item.tobacco.name=Tabak item.plate_advanced_alloy.name=Fortgeschrittene Legierungsplatte @@ -2595,6 +2600,7 @@ item.powder_borax.name=Borax item.powder_boron.name=Borstaub item.powder_boron_tiny.name=Kleiner Haufen Borstaub item.powder_bromine.name=Bromstaub +item.powder_cadmium.name=Cadmiumstaub item.powder_caesium.name=Caesiumstaub item.powder_calcium.name=Kalziumstaub item.powder_cerium.name=Cerstaub @@ -2621,6 +2627,7 @@ item.powder_dineutronium.name=Dineutroniumstaub item.powder_dura_steel.name=Schnellarbeitsstahlstaub item.powder_emerald.name=Smaragdstaub item.powder_euphemium.name=Euphemiumstaub +item.powder_fertilizer.name=Industriedünger item.powder_fire.name=Roter Phosphor item.powder_flux.name=Flussmittel item.powder_gold.name=Goldstaub @@ -3768,7 +3775,7 @@ tile.heater_firebox.desc=Erzeugt Wärme aus Festbrennstoff. tile.heater_heatex.name=Wärmetauschender Heizer tile.heater_heatex.desc=Erzeugt Wärme aus heißen Flüssigkeiten. tile.heater_oilburner.name=Brenner -tile.heater_oilburner.desc=Erzäuft Wärme aus fluiden Brennstoffen. +tile.heater_oilburner.desc=Erzäuft Wärme aus fluiden Brennstoffen.$Kann mit einem Schraubenzeiher konfiguriert werden. tile.heater_oven.name=Heizofen tile.heater_oven.desc=Erzeugt Wärme aus Festbrennstoff.$Nimmt von unten Wärme mit 50%% Effizienz auf. tile.hev_battery.name=Anzugs-Batterie @@ -3889,6 +3896,7 @@ tile.machine_rtg_red.name=Fulminationsgenerator tile.machine_rtg_yellow.name=Australium Supergenerator tile.machine_satlinker.name=Satelliten-ID-Manager tile.machine_sawmill.name=Stirling-Sägemühle +tile.machine_sawmill.desc=Benötigt externe Hitzequelle.$Wärmestransferrate: T*0.1 TU/t$Minimalaufnahme: 100 TU/t, Maximalaufnahme: 300 TU/t tile.machine_schrabidium_battery.name=Schrabidium-Energiespeicherblock tile.machine_schrabidium_transmutator.name=Schrabidium-Transmutationsgerät tile.machine_selenium.name=Hochleistungs-Sternmotor @@ -4035,11 +4043,17 @@ tile.pink_planks.name=Pinke Holzbretter tile.pink_slab.name=Pinke Holzstufe tile.pink_stairs.name=Pinke Holztreppen tile.plant_dead.name=Tote Pflanze +tile.plant_flower.cd0.name=Senf-Weide +tile.plant_flower.cd1.name=Senf-Weide tile.plant_flower.foxglove.name=Roter Fingerhut tile.plant_flower.nightshade.name=Schwarze Tollkirsche tile.plant_flower.tobacco.name=Tabakpflanze tile.plant_flower.weed.name=Hanf tile.plant_reeds.name=Schilf +tile.plant_tall.cd2.name=Senf-Weide +tile.plant_tall.cd3.name=Senf-Weide +tile.plant_tall.cd4.name=Senf-Weide (Reif) +tile.plant_tall.weed.name=Hanf tile.plasma.name=Plasma tile.plasma_heater.name=Plasmaerhitzer tile.pole_satellite_receiver.name=Satellitenschüssel diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 6aac09461..b3be054d8 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -442,6 +442,18 @@ cannery.stirling.1=It needs to be placed on top of a heat-producing machine, suc cannery.stirling.2=The amount of heat it can utilize however is limited, overspinning can lead to catastrophic malfunction. cannery.stirling.3=The upgraded version can take significantly more heat without breaking. +cannery.willow=Mustard Willow +cannery.willow.0=The mustard willow is a plant that allows cadmium metal to be harvested. +cannery.willow.1=Willows can be placed on dirt, grass or even dead/oily dirt, but they require water to grow. +cannery.willow.2=Willows can be fertilized with bone meal or industrial fertilizer. They do not need light to grow. +cannery.willow.3=After the second stage of growth, they will need an extra block of space above them to grow further. +cannery.willow.4=After the fourth stage of growth, they require dead or oily dirt below them. +cannery.willow.5=This can be done either by manually planting willows on dead/oily dirt, or by having a hydraulic fracking tower nearby which continuously contaminates the ground. +cannery.willow.6=After reaching the final stage, the willow will remove contamination from the ground, reverting the dead/oily dirt back into regular dirt. +cannery.willow.7=Now the willow's leaves can be harvested. Breaking the top block will drop a small willow plant, 3-6 leaves and keep the bottom part of the plant intact. +cannery.willow.8=Soon the plant will start growing again, yielding more leaves if the dirt is replaced with oily dirt. The leaves can be processed into cadmium powder using an ore acidizer. +cannery.willow.9=Harvesting willow leaves can be automated using the automatic buzzsaw, it will only break plants that are ready for harvest. + chem.ARSENIC=Arsenic Extraction chem.ASPHALT=Asphalt Production chem.BAKELITE=Bakelite Production @@ -693,6 +705,7 @@ container.watzPowerplant=Watz Power Plant container.zirnox=ZIRNOX Nuclear Reactor crucible.aa=Advanced Alloy Production +crucible.cdalloy=Cadmium Steel Production crucible.ferro=Ferrouranium Production crucible.hematite=Iron Production from Hematite crucible.hss=High-Speed Steel Production @@ -1266,6 +1279,7 @@ hbmmat.bismuth=Bismuth hbmmat.borax=Borax hbmmat.boron=Boron hbmmat.carbon=Carbon +hbmmat.cdalloy=Cadmium Steel hbmmat.cinnabar=Cinnabar hbmmat.cmbsteel=Combine Steel hbmmat.coal=Coal @@ -2608,7 +2622,9 @@ item.ingot_beryllium.name=Beryllium Ingot item.ingot_bismuth.name=Bismuth Ingot item.ingot_boron.name=Boron Ingot item.ingot_c4.name=Bar of Composition C-4 +item.ingot_cadmium.name=Cadmium Ingot item.ingot_calcium.name=Calcium Ingot +item.ingot_cdalloy.name=Cadmium Steel Ingot item.ingot_chainsteel.name=Heavy Chainsteel item.ingot_co60.name=Cobalt-60 Ingot item.ingot_cobalt.name=Cobalt Ingot @@ -3249,6 +3265,7 @@ item.piston_set_starmetal.name=Starmetal Piston Set item.piston_set_steel.name=Steel Piston Set item.plan_c.name=Plan C item.plan_c.desc=Deadly +item.plant_item.mustardwillow.name=Mustard Willow Leaf item.plant_item.rope.name=Rope item.plant_item.tobacco.name=Tobacco item.plate_advanced_alloy.name=Advanced Alloy Plate @@ -3305,6 +3322,7 @@ item.powder_borax.name=Borax item.powder_boron.name=Boron Powder item.powder_boron_tiny.name=Tiny Pile of Boron Powder item.powder_bromine.name=Bromine Powder +item.powder_cadmium.name=Cadmium Powder item.powder_caesium.name=Caesium Powder item.powder_calcium.name=Calcium Powder item.powder_cerium.name=Cerium Powder @@ -3332,6 +3350,7 @@ item.powder_dura_steel.name=High-Speed Steel Powder item.powder_emerald.name=Emerald Powder item.powder_euphemium.name=Euphemium Powder item.powder_euphemium.desc=Pulverized pink.$Tastes like strawberries. +item.powder_fertilizer.name=Industrial Fertilizer item.powder_fire.name=Red Phosphorus item.powder_fire.desc=Used in multi purpose bombs:$Incendiary bombs are fun! item.powder_flux.name=Flux @@ -4568,7 +4587,7 @@ tile.heater_firebox.desc=Burns solid fuel to produce heat. tile.heater_heatex.name=Heat Exchanging Heater tile.heater_heatex.desc=Produces heat from hot fluids. tile.heater_oilburner.name=Fluid Burner -tile.heater_oilburner.desc=Burns fluids to produce heat. +tile.heater_oilburner.desc=Burns fluids to produce heat.$Can be configured with a screwdriver. tile.heater_oven.name=Heating Oven tile.heater_oven.desc=Burns solid fuel to produce heat.$Accepts heat from the bottom with 50%% efficiency. tile.hev_battery.name=Suit Battery @@ -4691,6 +4710,7 @@ tile.machine_rtg_red.name=Fulmination Generator tile.machine_rtg_yellow.name=Australium Superfuel Reactor tile.machine_satlinker.name=Satellite ID Manager tile.machine_sawmill.name=Stirling Sawmill +tile.machine_sawmill.desc=Requires external heat source.$Heat transfer rate: T*0.1 TU/t$Min intake: 100 TU/t, Max intake: 300 TU/t tile.machine_schrabidium_battery.name=Schrabidium Energy Storage Block tile.machine_schrabidium_transmutator.name=Schrabidium Transmutation Device tile.machine_selenium.name=Radial Performance Engine @@ -4838,11 +4858,17 @@ tile.pink_planks.name=Pink Wood Planks tile.pink_slab.name=Pink Wood Slab tile.pink_stairs.name=Pink Wood Stairs tile.plant_dead.name=Dead Plant +tile.plant_flower.cd0.name=Mustard Willow +tile.plant_flower.cd1.name=Mustard Willow tile.plant_flower.foxglove.name=Foxglove tile.plant_flower.nightshade.name=Deadly Nightshade tile.plant_flower.tobacco.name=Tobacco Plant tile.plant_flower.weed.name=Hemp tile.plant_reeds.name=Reeds +tile.plant_tall.cd2.name=Mustard Willow +tile.plant_tall.cd3.name=Mustard Willow +tile.plant_tall.cd4.name=Mustard Willow (Mature) +tile.plant_tall.weed.name=Hemp tile.plasma.name=Plasma tile.plasma_heater.name=Plasma Heater tile.pole_satellite_receiver.name=Satellite Dish diff --git a/src/main/resources/assets/hbm/textures/blocks/plant_flower.cd0.png b/src/main/resources/assets/hbm/textures/blocks/plant_flower.cd0.png new file mode 100644 index 000000000..013a08860 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/plant_flower.cd0.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/plant_flower.cd1.png b/src/main/resources/assets/hbm/textures/blocks/plant_flower.cd1.png new file mode 100644 index 000000000..e92e6e1c4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/plant_flower.cd1.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/plant_tall.cd2.lower.png b/src/main/resources/assets/hbm/textures/blocks/plant_tall.cd2.lower.png new file mode 100644 index 000000000..ade83cd7c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/plant_tall.cd2.lower.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/plant_tall.cd2.upper.png b/src/main/resources/assets/hbm/textures/blocks/plant_tall.cd2.upper.png new file mode 100644 index 000000000..8710c2ab1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/plant_tall.cd2.upper.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/plant_tall.cd3.lower.png b/src/main/resources/assets/hbm/textures/blocks/plant_tall.cd3.lower.png new file mode 100644 index 000000000..ec379257b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/plant_tall.cd3.lower.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/plant_tall.cd3.upper.png b/src/main/resources/assets/hbm/textures/blocks/plant_tall.cd3.upper.png new file mode 100644 index 000000000..ca7bae5cb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/plant_tall.cd3.upper.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/plant_tall.cd4.lower.png b/src/main/resources/assets/hbm/textures/blocks/plant_tall.cd4.lower.png new file mode 100644 index 000000000..c07e7566b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/plant_tall.cd4.lower.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/plant_tall.cd4.upper.png b/src/main/resources/assets/hbm/textures/blocks/plant_tall.cd4.upper.png new file mode 100644 index 000000000..f0017aaca Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/plant_tall.cd4.upper.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_cadmium.png b/src/main/resources/assets/hbm/textures/items/ingot_cadmium.png new file mode 100644 index 000000000..c6ee4aa74 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_cadmium.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_cdalloy.png b/src/main/resources/assets/hbm/textures/items/ingot_cdalloy.png new file mode 100644 index 000000000..f800696a3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_cdalloy.png differ diff --git a/src/main/resources/assets/hbm/textures/items/plant_item.mustardwillow.png b/src/main/resources/assets/hbm/textures/items/plant_item.mustardwillow.png new file mode 100644 index 000000000..8753d1d29 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/plant_item.mustardwillow.png differ diff --git a/src/main/resources/assets/hbm/textures/items/powder_cadmium.png b/src/main/resources/assets/hbm/textures/items/powder_cadmium.png new file mode 100644 index 000000000..932433876 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/powder_cadmium.png differ diff --git a/src/main/resources/assets/hbm/textures/items/powder_fertilizer.png b/src/main/resources/assets/hbm/textures/items/powder_fertilizer.png new file mode 100644 index 000000000..08f24fcbd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/powder_fertilizer.png differ