Advertisement
Guest User

Block Class

a guest
Apr 4th, 2020
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.41 KB | None | 0 0
  1. package flyingperson.ecaa.block.neutron;
  2.  
  3. import codechicken.lib.util.ItemUtils;
  4. import flyingperson.ecaa.ECAA;
  5. import net.minecraft.block.BlockContainer;
  6. import net.minecraft.block.SoundType;
  7. import net.minecraft.block.material.Material;
  8. import net.minecraft.block.properties.PropertyDirection;
  9. import net.minecraft.block.state.BlockStateContainer;
  10. import net.minecraft.block.state.IBlockState;
  11. import net.minecraft.client.renderer.block.model.ModelResourceLocation;
  12. import net.minecraft.creativetab.CreativeTabs;
  13. import net.minecraft.entity.EntityLivingBase;
  14. import net.minecraft.entity.player.EntityPlayer;
  15. import net.minecraft.item.Item;
  16. import net.minecraft.item.ItemStack;
  17. import net.minecraft.tileentity.TileEntity;
  18. import net.minecraft.util.EnumBlockRenderType;
  19. import net.minecraft.util.EnumFacing;
  20. import net.minecraft.util.EnumHand;
  21. import net.minecraft.util.math.BlockPos;
  22. import net.minecraft.world.IBlockAccess;
  23. import net.minecraft.world.World;
  24. import net.minecraftforge.client.model.ModelLoader;
  25. import net.minecraftforge.fml.relauncher.Side;
  26. import net.minecraftforge.fml.relauncher.SideOnly;
  27.  
  28. public class NeutronBlock extends BlockContainer {
  29.  
  30. public static final PropertyDirection FACING = PropertyDirection.create("facing");
  31.  
  32.  
  33. public NeutronBlock() {
  34. super(Material.IRON);
  35. setSoundType(SoundType.METAL);
  36. setHardness(10);
  37. setResistance(9);
  38. setUnlocalizedName("neutron");
  39. setHarvestLevel("pickaxe", 3);
  40. setCreativeTab(CreativeTabs.REDSTONE);
  41. setRegistryName("neutron");
  42. setDefaultState(blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
  43. }
  44.  
  45. @Override
  46. public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos) {
  47. TileEntity tileEntity = worldIn.getTileEntity(pos);
  48. if (tileEntity instanceof NeutronTileEntity) {
  49. NeutronTileEntity machine = (NeutronTileEntity) tileEntity;
  50. state = state.withProperty(FACING, machine.getFacing());
  51. }
  52. return super.getActualState(state, worldIn, pos);
  53. }
  54.  
  55. @Override
  56. public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
  57. if (world.isRemote) {
  58. return true;
  59. }
  60. TileEntity te = world.getTileEntity(pos);
  61. if (!(te instanceof NeutronTileEntity)) {
  62. return false;
  63. }
  64. player.openGui(ECAA.instance, 1, world, pos.getX(), pos.getY(), pos.getZ());
  65. return true;
  66. }
  67.  
  68. @Override
  69. public TileEntity createNewTileEntity(World world, int meta) {
  70. return new NeutronTileEntity();
  71. }
  72.  
  73.  
  74.  
  75. @Override
  76. public void breakBlock(World world, BlockPos pos, IBlockState state) {
  77. NeutronTileEntity collector = (NeutronTileEntity) world.getTileEntity(pos);
  78.  
  79. if (collector != null) {
  80. ItemUtils.dropInventory(world, pos, collector);
  81. }
  82.  
  83. super.breakBlock(world, pos, state);
  84. }
  85.  
  86. @Override
  87. public EnumBlockRenderType getRenderType(IBlockState state) {
  88. return EnumBlockRenderType.MODEL;
  89. }
  90.  
  91. @SideOnly(Side.CLIENT)
  92. public void initModel() {
  93. ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(this), 0, new ModelResourceLocation(getRegistryName(), "inventory"));
  94. }
  95.  
  96. @Override
  97. public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) {
  98. world.setBlockState(pos, state.withProperty(FACING, getFacingFromEntity(pos, placer)), 2);
  99. }
  100.  
  101. public static EnumFacing getFacingFromEntity(BlockPos clickedBlock, EntityLivingBase entity) {
  102. return EnumFacing.getFacingFromVector(
  103. (float) (entity.posX - clickedBlock.getX()),
  104. (float) (entity.posY - clickedBlock.getY()),
  105. (float) (entity.posZ - clickedBlock.getZ()));
  106. }
  107.  
  108. @Override
  109. public IBlockState getStateFromMeta(int meta) {
  110. return getDefaultState().withProperty(FACING, EnumFacing.getFront(meta & 7));
  111. }
  112.  
  113. @Override
  114. public int getMetaFromState(IBlockState state) {
  115. return state.getValue(FACING).getIndex();
  116. }
  117.  
  118. @Override
  119. protected BlockStateContainer createBlockState() {
  120. return new BlockStateContainer(this, FACING);
  121. }
  122.  
  123.  
  124.  
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement