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.
190 lines
6.0 KiB
Java
190 lines
6.0 KiB
Java
package net.minecraft.block;
|
|
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
import java.util.List;
|
|
import java.util.Random;
|
|
import net.minecraft.block.material.Material;
|
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
|
import net.minecraft.creativetab.CreativeTabs;
|
|
import net.minecraft.entity.monster.EntitySilverfish;
|
|
import net.minecraft.init.Blocks;
|
|
import net.minecraft.item.Item;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.util.IIcon;
|
|
import net.minecraft.world.World;
|
|
import org.apache.commons.lang3.tuple.ImmutablePair;
|
|
|
|
public class BlockSilverfish extends Block
|
|
{
|
|
public static final String[] field_150198_a = new String[] {"stone", "cobble", "brick", "mossybrick", "crackedbrick", "chiseledbrick"};
|
|
private static final String __OBFID = "CL_00000271";
|
|
|
|
public BlockSilverfish()
|
|
{
|
|
super(Material.clay);
|
|
this.setHardness(0.0F);
|
|
this.setCreativeTab(CreativeTabs.tabDecorations);
|
|
}
|
|
|
|
/**
|
|
* Gets the block's texture. Args: side, meta
|
|
*/
|
|
@SideOnly(Side.CLIENT)
|
|
public IIcon getIcon(int side, int meta)
|
|
{
|
|
switch (meta)
|
|
{
|
|
case 1:
|
|
return Blocks.cobblestone.getBlockTextureFromSide(side);
|
|
case 2:
|
|
return Blocks.stonebrick.getBlockTextureFromSide(side);
|
|
case 3:
|
|
return Blocks.stonebrick.getIcon(side, 1);
|
|
case 4:
|
|
return Blocks.stonebrick.getIcon(side, 2);
|
|
case 5:
|
|
return Blocks.stonebrick.getIcon(side, 3);
|
|
default:
|
|
return Blocks.stone.getBlockTextureFromSide(side);
|
|
}
|
|
}
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public void registerBlockIcons(IIconRegister reg) {}
|
|
|
|
/**
|
|
* Called right before the block is destroyed by a player. Args: world, x, y, z, metaData
|
|
*/
|
|
public void onBlockDestroyedByPlayer(World worldIn, int x, int y, int z, int meta)
|
|
{
|
|
if (!worldIn.isRemote)
|
|
{
|
|
EntitySilverfish entitysilverfish = new EntitySilverfish(worldIn);
|
|
entitysilverfish.setLocationAndAngles((double)x + 0.5D, (double)y, (double)z + 0.5D, 0.0F, 0.0F);
|
|
worldIn.spawnEntityInWorld(entitysilverfish);
|
|
entitysilverfish.spawnExplosionParticle();
|
|
}
|
|
|
|
super.onBlockDestroyedByPlayer(worldIn, x, y, z, meta);
|
|
}
|
|
|
|
/**
|
|
* Returns the quantity of items to drop on block destruction.
|
|
*/
|
|
public int quantityDropped(Random random)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
public static boolean func_150196_a(Block p_150196_0_)
|
|
{
|
|
return p_150196_0_ == Blocks.stone || p_150196_0_ == Blocks.cobblestone || p_150196_0_ == Blocks.stonebrick;
|
|
}
|
|
|
|
public static int func_150195_a(Block p_150195_0_, int p_150195_1_)
|
|
{
|
|
if (p_150195_1_ == 0)
|
|
{
|
|
if (p_150195_0_ == Blocks.cobblestone)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if (p_150195_0_ == Blocks.stonebrick)
|
|
{
|
|
return 2;
|
|
}
|
|
}
|
|
else if (p_150195_0_ == Blocks.stonebrick)
|
|
{
|
|
switch (p_150195_1_)
|
|
{
|
|
case 1:
|
|
return 3;
|
|
case 2:
|
|
return 4;
|
|
case 3:
|
|
return 5;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
public static ImmutablePair func_150197_b(int p_150197_0_)
|
|
{
|
|
switch (p_150197_0_)
|
|
{
|
|
case 1:
|
|
return new ImmutablePair(Blocks.cobblestone, Integer.valueOf(0));
|
|
case 2:
|
|
return new ImmutablePair(Blocks.stonebrick, Integer.valueOf(0));
|
|
case 3:
|
|
return new ImmutablePair(Blocks.stonebrick, Integer.valueOf(1));
|
|
case 4:
|
|
return new ImmutablePair(Blocks.stonebrick, Integer.valueOf(2));
|
|
case 5:
|
|
return new ImmutablePair(Blocks.stonebrick, Integer.valueOf(3));
|
|
default:
|
|
return new ImmutablePair(Blocks.stone, Integer.valueOf(0));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 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 meta)
|
|
{
|
|
switch (meta)
|
|
{
|
|
case 1:
|
|
return new ItemStack(Blocks.cobblestone);
|
|
case 2:
|
|
return new ItemStack(Blocks.stonebrick);
|
|
case 3:
|
|
return new ItemStack(Blocks.stonebrick, 1, 1);
|
|
case 4:
|
|
return new ItemStack(Blocks.stonebrick, 1, 2);
|
|
case 5:
|
|
return new ItemStack(Blocks.stonebrick, 1, 3);
|
|
default:
|
|
return new ItemStack(Blocks.stone);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Drops the block items with a specified chance of dropping the specified items
|
|
*/
|
|
public void dropBlockAsItemWithChance(World worldIn, int x, int y, int z, int meta, float chance, int fortune)
|
|
{
|
|
if (!worldIn.isRemote)
|
|
{
|
|
EntitySilverfish entitysilverfish = new EntitySilverfish(worldIn);
|
|
entitysilverfish.setLocationAndAngles((double)x + 0.5D, (double)y, (double)z + 0.5D, 0.0F, 0.0F);
|
|
worldIn.spawnEntityInWorld(entitysilverfish);
|
|
entitysilverfish.spawnExplosionParticle();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get the block's damage value (for use with pick block).
|
|
*/
|
|
public int getDamageValue(World worldIn, int x, int y, int z)
|
|
{
|
|
return worldIn.getBlockMetadata(x, y, z);
|
|
}
|
|
|
|
/**
|
|
* returns a list of blocks with the same ID, but different meta (eg: wood returns 4 blocks)
|
|
*/
|
|
@SideOnly(Side.CLIENT)
|
|
public void getSubBlocks(Item itemIn, CreativeTabs tab, List list)
|
|
{
|
|
for (int i = 0; i < field_150198_a.length; ++i)
|
|
{
|
|
list.add(new ItemStack(itemIn, 1, i));
|
|
}
|
|
}
|
|
} |