Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package flyingperson.ecaa.block.neutron;
- import codechicken.lib.util.ItemUtils;
- import flyingperson.ecaa.ECAA;
- import net.minecraft.block.BlockContainer;
- import net.minecraft.block.SoundType;
- import net.minecraft.block.material.Material;
- import net.minecraft.block.properties.PropertyDirection;
- import net.minecraft.block.state.BlockStateContainer;
- import net.minecraft.block.state.IBlockState;
- import net.minecraft.client.renderer.block.model.ModelResourceLocation;
- import net.minecraft.creativetab.CreativeTabs;
- import net.minecraft.entity.EntityLivingBase;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.item.Item;
- import net.minecraft.item.ItemStack;
- import net.minecraft.tileentity.TileEntity;
- import net.minecraft.util.EnumBlockRenderType;
- import net.minecraft.util.EnumFacing;
- import net.minecraft.util.EnumHand;
- import net.minecraft.util.math.BlockPos;
- import net.minecraft.world.IBlockAccess;
- import net.minecraft.world.World;
- import net.minecraftforge.client.model.ModelLoader;
- import net.minecraftforge.fml.relauncher.Side;
- import net.minecraftforge.fml.relauncher.SideOnly;
- public class NeutronBlock extends BlockContainer {
- public static final PropertyDirection FACING = PropertyDirection.create("facing");
- public NeutronBlock() {
- super(Material.IRON);
- setSoundType(SoundType.METAL);
- setHardness(10);
- setResistance(9);
- setUnlocalizedName("neutron");
- setHarvestLevel("pickaxe", 3);
- setCreativeTab(CreativeTabs.REDSTONE);
- setRegistryName("neutron");
- setDefaultState(blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
- }
- @Override
- public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos) {
- TileEntity tileEntity = worldIn.getTileEntity(pos);
- if (tileEntity instanceof NeutronTileEntity) {
- NeutronTileEntity machine = (NeutronTileEntity) tileEntity;
- state = state.withProperty(FACING, machine.getFacing());
- }
- return super.getActualState(state, worldIn, pos);
- }
- @Override
- public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
- if (world.isRemote) {
- return true;
- }
- TileEntity te = world.getTileEntity(pos);
- if (!(te instanceof NeutronTileEntity)) {
- return false;
- }
- player.openGui(ECAA.instance, 1, world, pos.getX(), pos.getY(), pos.getZ());
- return true;
- }
- @Override
- public TileEntity createNewTileEntity(World world, int meta) {
- return new NeutronTileEntity();
- }
- @Override
- public void breakBlock(World world, BlockPos pos, IBlockState state) {
- NeutronTileEntity collector = (NeutronTileEntity) world.getTileEntity(pos);
- if (collector != null) {
- ItemUtils.dropInventory(world, pos, collector);
- }
- super.breakBlock(world, pos, state);
- }
- @Override
- public EnumBlockRenderType getRenderType(IBlockState state) {
- return EnumBlockRenderType.MODEL;
- }
- @SideOnly(Side.CLIENT)
- public void initModel() {
- ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(this), 0, new ModelResourceLocation(getRegistryName(), "inventory"));
- }
- @Override
- public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) {
- world.setBlockState(pos, state.withProperty(FACING, getFacingFromEntity(pos, placer)), 2);
- }
- public static EnumFacing getFacingFromEntity(BlockPos clickedBlock, EntityLivingBase entity) {
- return EnumFacing.getFacingFromVector(
- (float) (entity.posX - clickedBlock.getX()),
- (float) (entity.posY - clickedBlock.getY()),
- (float) (entity.posZ - clickedBlock.getZ()));
- }
- @Override
- public IBlockState getStateFromMeta(int meta) {
- return getDefaultState().withProperty(FACING, EnumFacing.getFront(meta & 7));
- }
- @Override
- public int getMetaFromState(IBlockState state) {
- return state.getValue(FACING).getIndex();
- }
- @Override
- protected BlockStateContainer createBlockState() {
- return new BlockStateContainer(this, FACING);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement