package storagecraft.block; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyInteger; import net.minecraft.block.state.BlockState; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraft.world.World; import storagecraft.StorageCraft; import storagecraft.StorageCraftGUI; import storagecraft.tile.TileController; public class BlockController extends BlockBase implements ITileEntityProvider { public static final PropertyInteger ENERGY = PropertyInteger.create("energy", 0, 15); public BlockController() { super("controller"); } @Override protected BlockState createBlockState() { return new BlockState(this, new IProperty[] { ENERGY }); } @Override public IBlockState getStateFromMeta(int meta) { return getDefaultState().withProperty(ENERGY, meta); } @Override public int getMetaFromState(IBlockState state) { return ((Integer) state.getValue(ENERGY)); } @Override public TileEntity createNewTileEntity(World world, int meta) { return new TileController(); } @Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float hitX, float hitY, float hitZ) { if (!world.isRemote) { player.openGui(StorageCraft.INSTANCE, StorageCraftGUI.CONTROLLER, world, pos.getX(), pos.getY(), pos.getZ()); } return true; } @Override public void onBlockDestroyedByPlayer(World world, BlockPos pos, IBlockState state) // @TODO: What about explosions? { ((TileController) world.getTileEntity(pos)).onDestroyed(); super.onBlockDestroyedByPlayer(world, pos, state); } @Override public boolean hasComparatorInputOverride() { return true; } @Override public int getComparatorInputOverride(World world, BlockPos pos) { TileController tile = (TileController) world.getTileEntity(pos); return tile.getEnergyScaled(15); } }