package com.jared.mysticaltrinkets.blocks.trees; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import com.jared.mysticaltrinkets.ModInfo; import com.jared.mysticaltrinkets.blocks.MysticalBlocks; import com.jared.mysticaltrinkets.client.render.RenderParticles; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class BlockInfusedOakLog extends Block { @SideOnly(Side.CLIENT) private IIcon topIcon; @SideOnly(Side.CLIENT) private IIcon botIcon; @SideOnly(Side.CLIENT) private IIcon sideIcons; public BlockInfusedOakLog() { super(Material.wood); this.setCreativeTab(CreativeTabs.tabBlock); this.setStepSound(soundTypeWood); } /** * The type of render function that is called for this block */ @Override public int getRenderType() { return 31; } /** * Returns the quantity of items to drop on block destruction. */ @Override public int quantityDropped(Random par1Random) { return 1; } /** * ejects contained items into the world, and notifies neighbours of an * update, as appropriate */ public void breakBlock(World par1World, int par2, int par3, int par4, int par5, int par6) { byte b0 = 4; int j1 = b0 + 1; if (par1World.checkChunksExist(par2 - j1, par3 - j1, par4 - j1, par2 + j1, par3 + j1, par4 + j1)) { for (int k1 = -b0; k1 <= b0; ++k1) { for (int l1 = -b0; l1 <= b0; ++l1) { for (int i2 = -b0; i2 <= b0; ++i2) { Block j2 = par1World.getBlock(par2 + k1, par3 + l1, par4 + i2); if (j2 != null) { j2.beginLeavesDecay(par1World, par2 + k1, par3 + l1, par4 + i2); } } } } } } /** * Called when a block is placed using its ItemBlock. Args: World, X, Y, Z, * side, hitX, hitY, hitZ, block metadata */ // public int onBlockPlaced(World par1World, int par2, int par3, int par4, // int par5, float par6, float par7, float par8, int par9) { // int j1 = par9 & 3; // byte b0 = 0; // // switch (par5) { // case 0: // case 1: // b0 = 0; // break; // case 2: // case 3: // b0 = 8; // break; // case 4: // case 5: // b0 = 4; // } // // return j1 | b0; // } @Override @SideOnly(Side.CLIENT) /** * Determines the damage on the item the block drops. Used in cloth and wood. */ public int damageDropped(int par1) { return par1 & 3; } /** * returns a number between 0 and 3 */ public static int limitToValidMetadata(int par0) { return par0 & 3; } @Override @SideOnly(Side.CLIENT) /** * Returns an item stack containing a single instance of the current block type. 'i' is the block's subtype/damage * and is ignored for blocks which do not support subtypes. Blocks which cannot be harvested should return null. */ protected ItemStack createStackedBlock(int par1) { return new ItemStack(this, 1, limitToValidMetadata(par1)); } @Override public boolean canSustainLeaves(IBlockAccess world, int x, int y, int z) { return true; } // @Override // public boolean isWood(IBlockAccess world, int x, int y, int z) { // return true; // } @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister par1IconRegister) { this.topIcon = par1IconRegister.registerIcon(ModInfo.modid + ":" + "Infused_Oak_Log_Top"); this.sideIcons = par1IconRegister.registerIcon(ModInfo.modid + ":" + "Infused_Oak_Log"); this.botIcon = par1IconRegister.registerIcon(ModInfo.modid + ":" + "Infused_Oak_Log_Top"); } @SideOnly(Side.CLIENT) public IIcon getBlockTexture(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) { if (par5 == 1) { return this.topIcon; } if (par5 == 0) { return this.sideIcons; } return sideIcons; } @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int par1, int par2) { return par1 == 1 ? this.topIcon : (par1 == 0 ? this.topIcon : this.sideIcons); } @Override public void randomDisplayTick(World world, int x, int y, int z, Random random) { if (world.getBlock(x, y - 2, z) == MysticalBlocks.mysticalBrick) { if (world.getBlock(x, y - 1, z) == MysticalBlocks.mysticalBrick) { if (world.getBlock(x + 2, y - 2, z + 2) == MysticalBlocks.ritualBlock) { RenderParticles.spawnParticle("leaf", x + 1, y, z + 1, 0.1, -0.1, 0.1); } else if (world.getBlock(x - 2, y - 2, z - 2) == MysticalBlocks.ritualBlock) { RenderParticles.spawnParticle("leaf", x, y, z, -0.1, -0.1, -0.1); } else if (world.getBlock(x - 2, y - 2, z + 2) == MysticalBlocks.ritualBlock) { RenderParticles.spawnParticle("leaf", x, y, z + 1, -0.1, -0.1, 0.1); } else if (world.getBlock(x + 2, y - 2, z - 2) == MysticalBlocks.ritualBlock) { RenderParticles.spawnParticle("leaf", x + 1, y, z, 0.1, -0.1, -0.1); } } } } }