You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
6.2 KiB
Java
144 lines
6.2 KiB
Java
package net.minecraft.block;
|
|
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
import net.minecraft.block.material.Material;
|
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
|
import net.minecraft.creativetab.CreativeTabs;
|
|
import net.minecraft.entity.EntityLivingBase;
|
|
import net.minecraft.entity.monster.EntityIronGolem;
|
|
import net.minecraft.entity.monster.EntitySnowman;
|
|
import net.minecraft.init.Blocks;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.util.IIcon;
|
|
import net.minecraft.util.MathHelper;
|
|
import net.minecraft.world.World;
|
|
|
|
public class BlockPumpkin extends BlockDirectional
|
|
{
|
|
private boolean field_149985_a;
|
|
@SideOnly(Side.CLIENT)
|
|
private IIcon field_149984_b;
|
|
@SideOnly(Side.CLIENT)
|
|
private IIcon field_149986_M;
|
|
private static final String __OBFID = "CL_00000291";
|
|
|
|
protected BlockPumpkin(boolean p_i45419_1_)
|
|
{
|
|
super(Material.gourd);
|
|
this.setTickRandomly(true);
|
|
this.field_149985_a = p_i45419_1_;
|
|
this.setCreativeTab(CreativeTabs.tabBlock);
|
|
}
|
|
|
|
/**
|
|
* Gets the block's texture. Args: side, meta
|
|
*/
|
|
@SideOnly(Side.CLIENT)
|
|
public IIcon getIcon(int side, int meta)
|
|
{
|
|
return side == 1 ? this.field_149984_b : (side == 0 ? this.field_149984_b : (meta == 2 && side == 2 ? this.field_149986_M : (meta == 3 && side == 5 ? this.field_149986_M : (meta == 0 && side == 3 ? this.field_149986_M : (meta == 1 && side == 4 ? this.field_149986_M : this.blockIcon)))));
|
|
}
|
|
|
|
/**
|
|
* Called whenever the block is added into the world. Args: world, x, y, z
|
|
*/
|
|
public void onBlockAdded(World worldIn, int x, int y, int z)
|
|
{
|
|
super.onBlockAdded(worldIn, x, y, z);
|
|
|
|
if (worldIn.getBlock(x, y - 1, z) == Blocks.snow && worldIn.getBlock(x, y - 2, z) == Blocks.snow)
|
|
{
|
|
if (!worldIn.isRemote)
|
|
{
|
|
worldIn.setBlock(x, y, z, getBlockById(0), 0, 2);
|
|
worldIn.setBlock(x, y - 1, z, getBlockById(0), 0, 2);
|
|
worldIn.setBlock(x, y - 2, z, getBlockById(0), 0, 2);
|
|
EntitySnowman entitysnowman = new EntitySnowman(worldIn);
|
|
entitysnowman.setLocationAndAngles((double)x + 0.5D, (double)y - 1.95D, (double)z + 0.5D, 0.0F, 0.0F);
|
|
worldIn.spawnEntityInWorld(entitysnowman);
|
|
worldIn.notifyBlockChange(x, y, z, getBlockById(0));
|
|
worldIn.notifyBlockChange(x, y - 1, z, getBlockById(0));
|
|
worldIn.notifyBlockChange(x, y - 2, z, getBlockById(0));
|
|
}
|
|
|
|
for (int i1 = 0; i1 < 120; ++i1)
|
|
{
|
|
worldIn.spawnParticle("snowshovel", (double)x + worldIn.rand.nextDouble(), (double)(y - 2) + worldIn.rand.nextDouble() * 2.5D, (double)z + worldIn.rand.nextDouble(), 0.0D, 0.0D, 0.0D);
|
|
}
|
|
}
|
|
else if (worldIn.getBlock(x, y - 1, z) == Blocks.iron_block && worldIn.getBlock(x, y - 2, z) == Blocks.iron_block)
|
|
{
|
|
boolean flag = worldIn.getBlock(x - 1, y - 1, z) == Blocks.iron_block && worldIn.getBlock(x + 1, y - 1, z) == Blocks.iron_block;
|
|
boolean flag1 = worldIn.getBlock(x, y - 1, z - 1) == Blocks.iron_block && worldIn.getBlock(x, y - 1, z + 1) == Blocks.iron_block;
|
|
|
|
if (flag || flag1)
|
|
{
|
|
worldIn.setBlock(x, y, z, getBlockById(0), 0, 2);
|
|
worldIn.setBlock(x, y - 1, z, getBlockById(0), 0, 2);
|
|
worldIn.setBlock(x, y - 2, z, getBlockById(0), 0, 2);
|
|
|
|
if (flag)
|
|
{
|
|
worldIn.setBlock(x - 1, y - 1, z, getBlockById(0), 0, 2);
|
|
worldIn.setBlock(x + 1, y - 1, z, getBlockById(0), 0, 2);
|
|
}
|
|
else
|
|
{
|
|
worldIn.setBlock(x, y - 1, z - 1, getBlockById(0), 0, 2);
|
|
worldIn.setBlock(x, y - 1, z + 1, getBlockById(0), 0, 2);
|
|
}
|
|
|
|
EntityIronGolem entityirongolem = new EntityIronGolem(worldIn);
|
|
entityirongolem.setPlayerCreated(true);
|
|
entityirongolem.setLocationAndAngles((double)x + 0.5D, (double)y - 1.95D, (double)z + 0.5D, 0.0F, 0.0F);
|
|
worldIn.spawnEntityInWorld(entityirongolem);
|
|
|
|
for (int l = 0; l < 120; ++l)
|
|
{
|
|
worldIn.spawnParticle("snowballpoof", (double)x + worldIn.rand.nextDouble(), (double)(y - 2) + worldIn.rand.nextDouble() * 3.9D, (double)z + worldIn.rand.nextDouble(), 0.0D, 0.0D, 0.0D);
|
|
}
|
|
|
|
worldIn.notifyBlockChange(x, y, z, getBlockById(0));
|
|
worldIn.notifyBlockChange(x, y - 1, z, getBlockById(0));
|
|
worldIn.notifyBlockChange(x, y - 2, z, getBlockById(0));
|
|
|
|
if (flag)
|
|
{
|
|
worldIn.notifyBlockChange(x - 1, y - 1, z, getBlockById(0));
|
|
worldIn.notifyBlockChange(x + 1, y - 1, z, getBlockById(0));
|
|
}
|
|
else
|
|
{
|
|
worldIn.notifyBlockChange(x, y - 1, z - 1, getBlockById(0));
|
|
worldIn.notifyBlockChange(x, y - 1, z + 1, getBlockById(0));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Checks to see if its valid to put this block at the specified coordinates. Args: world, x, y, z
|
|
*/
|
|
public boolean canPlaceBlockAt(World worldIn, int x, int y, int z)
|
|
{
|
|
return worldIn.getBlock(x, y, z).isReplaceable(worldIn, x, y, z) && World.doesBlockHaveSolidTopSurface(worldIn, x, y - 1, z);
|
|
}
|
|
|
|
/**
|
|
* Called when the block is placed in the world.
|
|
*/
|
|
public void onBlockPlacedBy(World worldIn, int x, int y, int z, EntityLivingBase placer, ItemStack itemIn)
|
|
{
|
|
int l = MathHelper.floor_double((double)(placer.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3;
|
|
worldIn.setBlockMetadataWithNotify(x, y, z, l, 2);
|
|
}
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public void registerBlockIcons(IIconRegister reg)
|
|
{
|
|
this.field_149986_M = reg.registerIcon(this.getTextureName() + "_face_" + (this.field_149985_a ? "on" : "off"));
|
|
this.field_149984_b = reg.registerIcon(this.getTextureName() + "_top");
|
|
this.blockIcon = reg.registerIcon(this.getTextureName() + "_side");
|
|
}
|
|
} |