base mod created
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
package net.minecraft.block;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import net.minecraft.block.material.MapColor;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.enchantment.EnchantmentHelper;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Enchantments;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.stats.StatList;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumBlockRenderType;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.IWorldNameable;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public abstract class BlockContainer extends Block implements ITileEntityProvider
|
||||
{
|
||||
protected BlockContainer(Material materialIn)
|
||||
{
|
||||
this(materialIn, materialIn.getMaterialMapColor());
|
||||
}
|
||||
|
||||
protected BlockContainer(Material materialIn, MapColor color)
|
||||
{
|
||||
super(materialIn, color);
|
||||
this.hasTileEntity = true;
|
||||
}
|
||||
|
||||
protected boolean isInvalidNeighbor(World worldIn, BlockPos pos, EnumFacing facing)
|
||||
{
|
||||
return worldIn.getBlockState(pos.offset(facing)).getMaterial() == Material.CACTUS;
|
||||
}
|
||||
|
||||
protected boolean hasInvalidNeighbor(World worldIn, BlockPos pos)
|
||||
{
|
||||
return this.isInvalidNeighbor(worldIn, pos, EnumFacing.NORTH) || this.isInvalidNeighbor(worldIn, pos, EnumFacing.SOUTH) || this.isInvalidNeighbor(worldIn, pos, EnumFacing.WEST) || this.isInvalidNeighbor(worldIn, pos, EnumFacing.EAST);
|
||||
}
|
||||
|
||||
/**
|
||||
* The type of render function called. MODEL for mixed tesr and static model, MODELBLOCK_ANIMATED for TESR-only,
|
||||
* LIQUID for vanilla liquids, INVISIBLE to skip all rendering
|
||||
*/
|
||||
public EnumBlockRenderType getRenderType(IBlockState state)
|
||||
{
|
||||
return EnumBlockRenderType.INVISIBLE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called serverside after this block is replaced with another in Chunk, but before the Tile Entity is updated
|
||||
*/
|
||||
public void breakBlock(World worldIn, BlockPos pos, IBlockState state)
|
||||
{
|
||||
super.breakBlock(worldIn, pos, state);
|
||||
worldIn.removeTileEntity(pos);
|
||||
}
|
||||
|
||||
/**
|
||||
* Spawns the block's drops in the world. By the time this is called the Block has possibly been set to air via
|
||||
* Block.removedByPlayer
|
||||
*/
|
||||
public void harvestBlock(World worldIn, EntityPlayer player, BlockPos pos, IBlockState state, @Nullable TileEntity te, ItemStack stack)
|
||||
{
|
||||
if (te instanceof IWorldNameable && ((IWorldNameable)te).hasCustomName())
|
||||
{
|
||||
player.addStat(StatList.getBlockStats(this));
|
||||
player.addExhaustion(0.005F);
|
||||
|
||||
if (worldIn.isRemote)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
int i = EnchantmentHelper.getEnchantmentLevel(Enchantments.FORTUNE, stack);
|
||||
Item item = this.getItemDropped(state, worldIn.rand, i);
|
||||
|
||||
if (item == Items.AIR)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ItemStack itemstack = new ItemStack(item, this.quantityDropped(worldIn.rand));
|
||||
itemstack.setStackDisplayName(((IWorldNameable)te).getName());
|
||||
spawnAsEntity(worldIn, pos, itemstack);
|
||||
}
|
||||
else
|
||||
{
|
||||
super.harvestBlock(worldIn, player, pos, state, (TileEntity)null, stack);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called on server when World#addBlockEvent is called. If server returns true, then also called on the client. On
|
||||
* the Server, this may perform additional changes to the world, like pistons replacing the block with an extended
|
||||
* base. On the client, the update may involve replacing tile entities or effects such as sounds or particles
|
||||
*/
|
||||
public boolean eventReceived(IBlockState state, World worldIn, BlockPos pos, int id, int param)
|
||||
{
|
||||
super.eventReceived(state, worldIn, pos, id, param);
|
||||
TileEntity tileentity = worldIn.getTileEntity(pos);
|
||||
return tileentity == null ? false : tileentity.receiveClientEvent(id, param);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user