aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/xmod/bop/blocks/base/SaplingBase.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/bop/blocks/base/SaplingBase.java')
-rw-r--r--src/main/java/gtPlusPlus/xmod/bop/blocks/base/SaplingBase.java198
1 files changed, 198 insertions, 0 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/bop/blocks/base/SaplingBase.java b/src/main/java/gtPlusPlus/xmod/bop/blocks/base/SaplingBase.java
new file mode 100644
index 0000000000..c039e1ebac
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/bop/blocks/base/SaplingBase.java
@@ -0,0 +1,198 @@
+package gtPlusPlus.xmod.bop.blocks.base;
+
+import java.util.List;
+import java.util.Random;
+
+import cpw.mods.fml.common.registry.GameRegistry;
+import cpw.mods.fml.common.registry.LanguageRegistry;
+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.ItemBlock;
+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.WorldGenBigTree;
+import net.minecraft.world.gen.feature.WorldGenTrees;
+import net.minecraft.world.gen.feature.WorldGenerator;
+
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.creative.AddToCreativeTab;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+
+public class SaplingBase extends BlockSapling
+{
+ protected String[] saplingTypes = new String[] {};
+ protected IIcon[] saplingTextures = new IIcon[] {};
+
+ //Sapling types - field_149882_a
+ //Iicons - field_149881_b
+
+ protected SaplingBase(String blockNameLocalized, String blockNameUnlocalized, String[] saplingTypes){
+ float f = 0.4F;
+ this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, f * 2.0F, 0.5F + f);
+ this.saplingTypes = saplingTypes;
+ this.saplingTextures = new IIcon[saplingTypes.length];
+ String blockName = "block"+Utils.sanitizeString(blockNameLocalized);
+ GameRegistry.registerBlock(this, ItemBlock.class, blockName);
+ this.setBlockName(blockName);
+ ItemUtils.addItemToOreDictionary(ItemUtils.getSimpleStack(this), "treeSapling", true);
+ this.setCreativeTab(AddToCreativeTab.tabBOP);
+ LanguageRegistry.addName(this, blockNameLocalized);
+ }
+
+ private final void setVanillaVariable(Object toSet, Object value){
+ toSet = value;
+ }
+
+ /**
+ * Gets the block's texture. Args: side, meta
+ */
+ @Override
+ @SideOnly(Side.CLIENT)
+ public IIcon getIcon(int someInt, int meta){
+ /* p_149691_2_ &= 7;
+ return saplingTextures[MathHelper.clamp_int(p_149691_2_, 0, 5)];*/
+ //return this.saplingTextures[meta % this.saplingTextures.length];
+ try {
+ return this.saplingTextures[meta];
+ }catch(Throwable T){
+ Logger.WARNING("Invalid Sapling meta is "+meta);
+ return this.saplingTextures[0];
+ }
+ }
+
+ /**
+ * Ticks the block if it's been scheduled
+ */
+ @Override
+ public void updateTick(World world, int x, int y, int z, Random rand){
+ if (!world.isRemote){
+ super.updateTick(world, x, y, z, rand);
+ if (world.getBlockLightValue(x, y + 1, z) >= 9 && rand.nextInt(7) == 0){
+ Logger.WARNING("Update Tick");
+ this.updateMeta(world, x, y, z, rand);
+ }
+ else {
+ Logger.WARNING("Tried to Tick.");
+ }
+ }
+ }
+
+ //Dunno - Think it is doGrow || doGrowthTick
+ @Override
+ public void func_149853_b(World world, Random rand, int x, int y, int z){
+ Logger.WARNING("Please find what calls me - func_149853_b");
+ this.updateMeta(world, x, y, z, rand);
+ }
+
+ public void updateMeta(World world, int x, int y, int z, Random rand){
+ func_149879_c(world, x, y, z, rand);
+ }
+
+ @Override
+ public void func_149879_c(World world, int x, int y, int z, Random rand){
+ Logger.WARNING("func_149879_c - 1");
+ int l = world.getBlockMetadata(x, y, z);
+
+ if ((l & 8) == 0){
+ Logger.WARNING("func_149879_c - 2");
+ world.setBlockMetadataWithNotify(x, y, z, l | 8, 4);
+ }
+ else{
+ Logger.WARNING("func_149879_c - 3");
+ this.func_149878_d(world, x, y, z, rand);
+ }
+ }
+
+ @Override
+ public void func_149878_d(World world, int x, int y, int z, Random rand){
+ Logger.WARNING("func_149878_d - 1");
+ if (!net.minecraftforge.event.terraingen.TerrainGen.saplingGrowTree(world, rand, x, y, z)) return;
+ int l = world.getBlockMetadata(x, y, z) & 7;
+ Object object = rand.nextInt(10) == 0 ? new WorldGenBigTree(true) : new WorldGenTrees(true);
+ int i1 = 0;
+ int j1 = 0;
+ boolean flag = false;
+
+ switch (l)
+ {
+ case 0:
+ default:
+ Logger.WARNING("Case 0 - Grow Tree");
+ break;
+
+ }
+
+ Block block = Blocks.air;
+
+ if (flag)
+ {
+ world.setBlock(x + i1, y, z + j1, block, 0, 4);
+ world.setBlock(x + i1 + 1, y, z + j1, block, 0, 4);
+ world.setBlock(x + i1, y, z + j1 + 1, block, 0, 4);
+ world.setBlock(x + i1 + 1, y, z + j1 + 1, block, 0, 4);
+ }
+ else
+ {
+ world.setBlock(x, y, z, block, 0, 4);
+ }
+
+ if (!((WorldGenerator)object).generate(world, rand, x + i1, y, z + j1))
+ {
+ if (flag)
+ {
+ world.setBlock(x + i1, y, z + j1, this, l, 4);
+ world.setBlock(x + i1 + 1, y, z + j1, this, l, 4);
+ world.setBlock(x + i1, y, z + j1 + 1, this, l, 4);
+ world.setBlock(x + i1 + 1, y, z + j1 + 1, this, l, 4);
+ }
+ else
+ {
+ world.setBlock(x, y, z, this, l, 4);
+ }
+ }
+ }
+
+ @Override
+ public boolean func_149880_a(World world, int p_149880_2_, int p_149880_3_, int p_149880_4_, int p_149880_5_){
+ return world.getBlock(p_149880_2_, p_149880_3_, p_149880_4_) == this && (world.getBlockMetadata(p_149880_2_, p_149880_3_, p_149880_4_) & 7) == p_149880_5_;
+ }
+
+ /**
+ * Determines the damage on the item the block drops. Used in cloth and wood.
+ */
+ @Override
+ public int damageDropped(int meta){
+ return MathHelper.clamp_int(meta & 7, 0, 5);
+ }
+
+ /**
+ * returns a list of blocks with the same ID, but different meta (eg: wood returns 4 blocks)
+ */
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void getSubBlocks(Item item, CreativeTabs tab, List metaList){
+ for (int i = 0; i < this.saplingTextures.length; ++i){
+ metaList.add(new ItemStack(item, 1, i));
+ }
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void registerBlockIcons(IIconRegister iIcon){
+ for (int i = 0; i < saplingTextures.length; ++i){
+ saplingTextures[i] = iIcon.registerIcon(CORE.MODID + ":" + "trees/" + "saplings/" + "sapling_" + saplingTypes[i]);
+ }
+ }
+
+} \ No newline at end of file