Hey, Ive created a crop that should do:
1 : Growing to AGE 7 when placed... THEN: Placing the same crop Y+1 | Starting to grow up from 0 to 8
2 : When second block reached AGE 8 => should place a crop on Y+2 | Starting to grow up from 0 to 9
THEN it should be ready
BUT : It starts at stage 0, growths to stage 7 and then, it does nothing...
I dont know what Im doing wrong, can you look @ my "void grow", there should be the error
Thank you very much
package com.beastle9end.legendconstruction.blocks.crop;
/**
* Created by Le9enD on 10.02.2016.
*/
import java.util.ArrayList;
import java.util.Random;
import com.beastle9end.legendconstruction.LegendConstruction;
import com.beastle9end.legendconstruction.network.ChatTextHandler;
import com.sun.javafx.charts.Legend;
import net.minecraft.block.Block;
import net.minecraft.block.BlockAir;
import net.minecraft.block.BlockBush;
import net.minecraft.block.BlockCrops;
import net.minecraft.block.BlockFarmland;
import net.minecraft.block.IGrowable;
import net.minecraft.block.properties.PropertyInteger;
import net.minecraft.block.state.BlockState;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.BlockPos;
import net.minecraft.util.ChatComponentText;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.EnumPlantType;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraft.block.BlockPotato;
public class BlockCropAbsorbation extends BlockCropsMain implements IGrowable {
private IBlockState air = Blocks.air.getDefaultState();
public BlockCropAbsorbation(String unlocalName)
{
this.setUnlocalizedName(unlocalName);
this.setHardness(0.0f);
this.setResistance(0.0f);
this.setTickRandomly(true);
this.setBlockBounds(0.0f, 0.0f, 0.0f, 1.0f, 0.25f, 0.0f);
this.setCreativeTab(LegendConstruction.tabLegendEngineering);
//this.setCreativeTab((CreativeTabs) null);
this.setStepSound(soundTypeGrass);
this.disableStats();
GameRegistry.registerBlock(this, "cropAbsorbation");
}
@Override
public void setBlockBoundsBasedOnState(IBlockAccess world, BlockPos pos)
{
IBlockState state = world.getBlockState(pos);
int l = ((Integer)((IBlockState) state).getValue(AGE)).intValue();
if (l <= 2) {
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.25F, 1.0F);
} else if (l <= 4) {
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
} else if (l <= 6) {
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.75F, 1.0F);
} else {
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
}
}
@Override
public void onBlockHarvested(World world, BlockPos pos, IBlockState state, EntityPlayer player)
{
if(world.getBlockState(pos).getBlock() instanceof BlockCropAbsorbation)
{
if(world.getBlockState(pos).getValue(AGE).intValue() == 9)//THIRD BLOCK
{
world.setBlockState(new BlockPos(pos.getX(), pos.getY() - 1, pos.getZ()), air);
world.setBlockState(new BlockPos(pos.getX(), pos.getY() -2 , pos.getZ()), (IBlockState) AGE, 5);
}
if(world.getBlockState(pos).getValue(AGE).intValue() == 8)//SECOND BLOCK
{
world.setBlockState(new BlockPos(pos.getX(), pos.getY() -1 , pos.getZ()), (IBlockState) AGE, 5);
}
}
}
public void fertilize(World world, BlockPos pos)
{
int meta = world.getBlockState(pos).getValue(AGE).intValue();
if(world.getBlockState(pos).getBlock() instanceof BlockAir)
{
if(meta < 5)
{
world.setBlockState(new BlockPos(pos.getX(), pos.getY()-1, pos.getZ()), (IBlockState) AGE, 7);
world.setBlockState(new BlockPos(pos.getX(), pos.getY() , pos.getZ()), LegendConstruction.cropAbsorbation.getDefaultState());
return;
}
return;
}
else
{
if(meta < 5)
{
world.setBlockState(pos, (IBlockState) AGE, 5);
}
}
}
@Override
protected Item getSeed()
{
return LegendConstruction.absorbationSeeds;
}
@Override
protected Item getCrop()
{
return Items.string;
}
@Override
protected boolean canPlaceBlockOn(Block block) {
return block == Blocks.farmland;
}
@Override
public void updateTick(World world,BlockPos pos, IBlockState state, Random random)
{
super.updateTick(world, pos, state, random);
if(world.getBlockState(pos).getBlock().getLightValue() >= 9)
{
//Testet ob Block oben frei und unten farmland ist
if((world.getBlockState(new BlockPos(pos.getX(), pos.getY() - 1, pos.getZ())).getBlock() == Blocks.farmland || world.getBlockState(new BlockPos(pos.getX(), pos.getY()-1, pos.getZ())).getBlock() == LegendConstruction.cropAbsorbation)&& world.getBlockState(new BlockPos(pos.getX() , pos.getY() +1 , pos.getZ())) == Blocks.air)
{
}
else
{
//Block ist falsch
return;
}
}
if(world.getBlockState(pos).getBlock().getLightValue() < 9)//if lightvalue ist kleiner wie 9
{
return;
}
}
@Override
public void grow(World world, BlockPos pos, IBlockState state)
{
int currentMeta = world.getBlockState(pos).getValue(AGE).intValue();
if(world.getBlockState(new BlockPos(pos.getX() ,pos.getY() - 1, pos.getZ())).getBlock() == Blocks.farmland)
{
//Erster Block
if(currentMeta < 7)
{
System.out.println("Updating growth state");
world.setBlockState(pos, (IBlockState) AGE, world.getBlockState(pos).getValue(AGE).intValue() + 1);
}
if(currentMeta >= 7)
{
System.out.println("Setting block above");
world.setBlockState(new BlockPos(pos.getX(), pos.getY() + 1, pos.getZ()), LegendConstruction.cropAbsorbation.getDefaultState());
}
}
if(world.getBlockState(new BlockPos(pos.getX() , pos.getY() - 1 , pos.getZ())).getBlock() == LegendConstruction.cropAbsorbation
&& world.getBlockState(new BlockPos(pos.getX(), pos.getY() - 2, pos.getZ())).getBlock() == Blocks.farmland)
{
//Zweiter Block
if(currentMeta <
{
world.setBlockState(pos, (IBlockState) AGE, world.getBlockState(pos).getValue(AGE).intValue() + 1);
}
if(currentMeta >=
{
world.setBlockState(new BlockPos(pos.getX(), pos.getY() + 1, pos.getZ()), LegendConstruction.cropAbsorbation.getDefaultState());
}
}
if(world.getBlockState(new BlockPos(pos.getX(), pos.getY() - 1, pos.getZ())).getBlock() == LegendConstruction.cropAbsorbation
&& world.getBlockState(new BlockPos(pos.getX(), pos.getY() - 2, pos.getZ())).getBlock() == LegendConstruction.cropAbsorbation
&& world.getBlockState(new BlockPos(pos.getX(), pos.getY() - 3, pos.getZ())).getBlock() == Blocks.farmland)
{
if(currentMeta < 9)
{
world.setBlockState(pos, (IBlockState) AGE, world.getBlockState(pos).getValue(AGE).intValue() + 1);
}
if(currentMeta == 9)
{
//Crop ready grown
}
}
}
@Override
public void dropBlockAsItemWithChance(World world, BlockPos pos, IBlockState state, float chance, int fortune)
{
super.dropBlockAsItemWithChance(world, pos, state, chance, 0);
}
@Override
public Item getItemDropped(IBlockState state, Random rand, int fortune)
{
return ((Integer)state.getValue(AGE)).intValue() == 8 ? this.getCrop() : this.getSeed();
}
@Override
public int quantityDropped(Random random) {
return random.nextInt(2);
}
@Override
public boolean canGrow(World worldIn, BlockPos pos, IBlockState state, boolean isClient)
{
return ((Integer)state.getValue(AGE)).intValue() != 7;
}
@Override
public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos, IBlockState state)
{
return true;
}
@Override
@SideOnly(Side.CLIENT)
public Item getItem(World worldIn, BlockPos pos)
{
return this.getSeed();
}
@Override
public java.util.List<ItemStack> getDrops(net.minecraft.world.IBlockAccess world, BlockPos pos, IBlockState state, int fortune)
{
ArrayList<ItemStack> ret = (ArrayList<ItemStack>) super.getDrops(world, pos, state, fortune);
int metadata = this.getMetaFromState(state);
Random rand = world instanceof World ? ((World)world).rand : new Random();
if (metadata >= {
for (int i = 0; i < 3 + fortune; ++i) {
if (rand.nextInt(15) <= metadata) {
ret.add(new ItemStack(this.getCrop(), 1, 0));
}
}
}
return ret;
}
@Override
public boolean canPlaceBlockAt(World world, BlockPos pos) {
return true;
}
@Override
protected void checkAndDropBlock(World world, BlockPos pos, IBlockState state) {
if (!this.canBlockStay(world, pos, state)) {
int l = this.getMetaFromState(state);
this.dropBlockAsItem(world, pos, state, 0);
world.setBlockState(pos, Blocks.air.getDefaultState());
}
}
@Override
public boolean canBlockStay(World world, BlockPos pos, IBlockState state)
{
if (world.getBlockState(pos).getBlock() != this) return super.canBlockStay(world, pos, state);
return (world.getBlockState(getPos(pos.getX(), pos.getY()- 1, pos.getZ())).getBlock() instanceof BlockFarmland) || (world.getBlockState(getPos(pos.getX(), pos.getY()- 1, pos.getZ())).getBlock() instanceof BlockCropAbsorbation);
}
public BlockPos getPos(int x, int y, int z)
{
return new BlockPos(x,y,z);
}
}