package com.minecreatr.cliffsgoos.src; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class Tier3Taint extends Tier2Taint { /** * Private texture file. */ private String tex; /** * Gaseous and normal at the same type, this is very bad! * This WILL kill you. Spreads through air, and onto non-bedrock and non-forcefield type blocks. * This is a Lv. 3 / nearly end of the world taint. * @param id * @param material * @param texture */ public Tier3Taint(int id, Material material, String texture) { super(id, material, texture); this.tex = texture; this.setTickRandomly(true); setBlockTextureName("CliffiesTaints:" + texture); } public int idDropped(int par1, Random par2Random, int par3) { return 0; } public boolean shouldSideBeRendered(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) { Block i1 = par1IBlockAccess.getBlock(par2, par3, par4); return i1 == this ? false : super.shouldSideBeRendered(par1IBlockAccess, par2, par3, par4, par5); } public AxisAlignedBB getSelectedBoundingBoxFromPool(World par1World, int par2, int par3, int par4) { return AxisAlignedBB.getAABBPool().getAABB((double)par2 + 0, (double)par3 + 0, (double)par4 + 0, (double)par2 + 0, (double)par3 + 0, (double)par4 + 0); } /** * Is this com.minecreatr.cliffieswars.block (a) opaque and (b) a full 1m cube? This determines whether or not to render the shared face of two * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this com.minecreatr.cliffieswars.block. */ public boolean isOpaqueCube() { return false; } public int getRenderBlockPass() { return 1; } /** * Block update. */ public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random) { if (!par1World.isRemote) { { for (int l = 0; l < 4; ++l) { int i1 = par2 + par5Random.nextInt(3) - 1; int j1 = par3 + par5Random.nextInt(3) - 1; int k1 = par4 + par5Random.nextInt(3) - 1; //Spread onto all blocks that aren't bedrock, or force fields/airlocks. if (par1World.getBlock(i1, j1, k1) != Blocks.bedrock && !((par1World.getBlock(i1, j1, k1) instanceof AntiTaintTransp) || (par1World.getBlock(i1, j1, k1) instanceof AirlockType))) { //System.out.println("Cliffie's Taints: Taint taking over on x: "+i1+" y: "+j1+" z: "+k1); par1World.setBlock(i1, j1, k1, this); if(par5Random.nextInt(5)==0) par1World.setBlock(par2, par3, par4, Blocks.air); } } } } } /** * Returns a bounding box from the pool of bounding boxes (this means this box can change after the pool has been * cleared to be reused) */ public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) { return null; } /** * Triggered whenever an com.minecreatr.cliffieswars.com.minecreatr.cliffieswars.com.minecreatr.cliffieswars.entity collides with this com.minecreatr.cliffieswars.block (enters into the com.minecreatr.cliffieswars.block). Args: world, x, y, z, com.minecreatr.cliffieswars.com.minecreatr.cliffieswars.com.minecreatr.cliffieswars.entity */ public void onEntityCollidedWithBlock(World par1World, int par2, int par3, int par4, Entity par5Entity) { if(par5Entity instanceof EntityLivingBase && par5Entity.worldObj.isRemote==false) { EntityLivingBase living = (EntityLivingBase)par5Entity; par5Entity.motionX*=0.25F; par5Entity.motionY*=0.25F; par5Entity.motionZ*=0.25F; par5Entity.fallDistance=0; living.addPotionEffect(new PotionEffect(Potion.blindness.id, 60, 2, true)); if(par1World.rand.nextInt(100)==0) { ItemStack helm = living.getEquipmentInSlot(4); Item temp = null; if(helm!=null) temp=helm.getItem(); if(!(temp instanceof CustomArmor)) living.addPotionEffect(new PotionEffect(Potion.poison.id, 60, 0, true)); } } } }