funny flowers

This commit is contained in:
Bob 2023-03-18 22:09:14 +01:00
parent b762d23a2a
commit 9145ac6e6d
55 changed files with 987 additions and 117 deletions

View File

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

View File

@ -19,7 +19,7 @@ public class BlockEnumMulti extends BlockMulti {
this.multiTexture = multiTexture;
}
private IIcon[] icons;
protected IIcon[] icons;
@Override
@SideOnly(Side.CLIENT)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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<ItemStack[]> moldRecipes = new ArrayList();
private static List<ItemStack[]> moldRecipes = new ArrayList();
public static void registerMoldsForNEI() {
public static List<ItemStack[]> getMoldRecipes() {
if(moldRecipes.isEmpty()) {
registerMoldsForNEI();
}
return moldRecipes;
}
private static void registerMoldsForNEI() {
for(NTMMaterial material : Mats.orderedList) {

View File

@ -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<Pair, CrystallizerRecipe> rec = (Entry<Pair, CrystallizerRecipe>) recipe;
CrystallizerRecipe cRecipe = rec.getValue();
Pair<Object, FluidType> 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.";
}
}

View File

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

View File

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

View File

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

View File

@ -36,6 +36,7 @@ public class ItemEnums {
public static enum EnumPlantType {
TOBACCO,
ROPE
ROPE,
MUSTARDWILLOW
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 433 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 499 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 480 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 465 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 410 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 438 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 480 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B