package com.jaquadro.minecraft.gardentrees.block;
import com.jaquadro.minecraft.gardentrees.GardenTrees;
import com.jaquadro.minecraft.gardentrees.core.ModCreativeTabs;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.BlockSapling;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import net.minecraft.world.gen.feature.WorldGenForest;
import net.minecraft.world.gen.feature.WorldGenSwamp;
import net.minecraft.world.gen.feature.WorldGenTaiga1;
import net.minecraft.world.gen.feature.WorldGenerator;
import java.util.List;
import java.util.Random;
public class BlockGTSapling extends BlockSapling
{
public static final String[] types = new String[] { "pine", "swamp", "tallbirch" };
@SideOnly(Side.CLIENT)
private static IIcon[] icons;
public BlockGTSapling (String name) {
setBlockName(name);
setBlockTextureName("sapling");
setStepSound(Block.soundTypeGrass);
setCreativeTab(ModCreativeTabs.tabGardenTrees);
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon (int side, int meta) {
meta &= 7;
return icons[MathHelper.clamp_int(meta, 0, types.length - 1)];
}
// Generate Tree
@Override
public void func_149878_d (World world, int x, int y, int z, Random random) {
if (!net.minecraftforge.event.terraingen.TerrainGen.saplingGrowTree(world, random, x, y, z))
return;
int id = world.getBlockMetadata(x, y, z) & 7;
WorldGenerator generator = null;
switch (id) {
case 0:
generator = new WorldGenTaiga1() {
@Override
protected void setBlockAndNotifyAdequately (World world, int x, int y, int z, Block block, int meta) {
world.setBlock(x, y, z, block, meta, 3);
}
};
break;
case 1:
generator = new WorldGenSwamp() {
@Override
protected void setBlockAndNotifyAdequately (World world, int x, int y, int z, Block block, int meta) {
world.setBlock(x, y, z, block, meta, 3);
}
};
break;
case 2:
generator = new WorldGenForest(true, true);
break;
default:
return;
}
world.setBlock(x, y, z, Blocks.air, 0, 4);
if (!(generator.generate(world, random, x, y, z)))
world.setBlock(x, y, z, this, id, 4);
}
@Override
public int damageDropped (int meta) {
return MathHelper.clamp_int(meta & 7, 0, types.length);
}
@Override
@SideOnly(Side.CLIENT)
public void getSubBlocks (Item item, CreativeTabs creativeTabs, List list) {
list.add(new ItemStack(item, 1, 0));
list.add(new ItemStack(item, 1, 1));
list.add(new ItemStack(item, 1, 2));
}
@Override
public void registerBlockIcons (IIconRegister register) {
icons = new IIcon[types.length];
for (int i = 0; i < types.length; i++)
icons[i] = register.registerIcon(GardenTrees.MOD_ID + ":" + getTextureName() + "_" + types[i]);
}
}