Advertisement
ModMCdl

BlockPestle.java

Nov 2nd, 2017
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.17 KB | None | 0 0
  1. package com.modmcdl.magitech.blocks;
  2.  
  3. import java.util.List;
  4. import java.util.Random;
  5.  
  6. import com.modmcdl.magitech.Magitech;
  7. import com.modmcdl.magitech.Reference;
  8. import com.modmcdl.magitech.gui.GuiHandler;
  9. import com.modmcdl.magitech.init.ModBlocks;
  10. import com.modmcdl.magitech.tileenitity.TileEntityPestle;
  11.  
  12. import net.minecraft.block.Block;
  13. import net.minecraft.block.BlockDirectional;
  14. import net.minecraft.block.BlockHorizontal;
  15. import net.minecraft.block.ITileEntityProvider;
  16. import net.minecraft.block.material.Material;
  17. import net.minecraft.block.properties.IProperty;
  18. import net.minecraft.block.properties.PropertyDirection;
  19. import net.minecraft.block.state.BlockStateContainer;
  20. import net.minecraft.block.state.IBlockState;
  21. import net.minecraft.entity.Entity;
  22. import net.minecraft.entity.EntityLivingBase;
  23. import net.minecraft.entity.player.EntityPlayer;
  24. import net.minecraft.entity.player.InventoryPlayer;
  25. import net.minecraft.init.Blocks;
  26. import net.minecraft.inventory.Container;
  27. import net.minecraft.inventory.ContainerWorkbench;
  28. import net.minecraft.inventory.InventoryHelper;
  29. import net.minecraft.item.Item;
  30. import net.minecraft.item.ItemBlock;
  31. import net.minecraft.item.ItemStack;
  32. import net.minecraft.stats.StatList;
  33. import net.minecraft.tileentity.TileEntity;
  34. import net.minecraft.tileentity.TileEntityFurnace;
  35. import net.minecraft.util.BlockRenderLayer;
  36. import net.minecraft.util.EnumFacing;
  37. import net.minecraft.util.EnumHand;
  38. import net.minecraft.util.Mirror;
  39. import net.minecraft.util.Rotation;
  40. import net.minecraft.util.math.AxisAlignedBB;
  41. import net.minecraft.util.math.BlockPos;
  42. import net.minecraft.util.text.ITextComponent;
  43. import net.minecraft.util.text.TextComponentTranslation;
  44. import net.minecraft.world.IBlockAccess;
  45. import net.minecraft.world.IInteractionObject;
  46. import net.minecraft.world.World;
  47.  
  48. public class BlockPestle extends Block {
  49.  
  50.     private static final AxisAlignedBB PESTLE_BOX = new AxisAlignedBB(0, 0, 0, 1, .0625 * 7, 1);
  51.    
  52.     public static final PropertyDirection FACING = BlockHorizontal.FACING;
  53.    
  54.     public BlockPestle() {
  55.         super(Material.PISTON);
  56.         setUnlocalizedName(Reference.MagitechBlocks.PESTLE.getUnlocalizedName());
  57.         setRegistryName(Reference.MagitechBlocks.PESTLE.getRegistryName());
  58.         this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
  59.         setCreativeTab(Magitech.tabMagitech);
  60.         setHardness(0.5F);
  61.  
  62.        
  63.     }
  64.     public Item getItemDropped(IBlockState state, Random rand, int fortune) {
  65.         return Item.getItemFromBlock(ModBlocks.pestle);    
  66.     }
  67.    
  68.     @Override //drops items from block's inventory
  69.     public void breakBlock(World worldIn, BlockPos pos, IBlockState state) {
  70.         TileEntityPestle tileentity = (TileEntityPestle)worldIn.getTileEntity(pos);
  71.         InventoryHelper.dropInventoryItems(worldIn, pos, tileentity);
  72.        
  73.         super.breakBlock(worldIn, pos, state);
  74.     }
  75.    
  76.     //Crafting: Open GUI, etc.
  77.         @Override
  78.         public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
  79.             if(!worldIn.isRemote)
  80.                 playerIn.openGui(Reference.MOD_ID, GuiHandler.PESTLE_GUI, worldIn, pos.getX(), pos.getY(), pos.getZ());
  81.             return true;
  82.         }
  83.        
  84.         public static void setState(boolean active, World worldIn, BlockPos pos) {
  85.             IBlockState state = worldIn.getBlockState(pos);
  86.             TileEntity tileentity = worldIn.getTileEntity(pos);
  87.            
  88.             if(tileentity != null) {
  89.                 tileentity.validate();
  90.                 worldIn.setTileEntity(pos, tileentity);
  91.             }
  92.         }
  93.        
  94.         @Override
  95.         public TileEntity createTileEntity(World world, IBlockState state) {
  96.             return new TileEntityPestle();
  97.         }
  98.        
  99.     //Everything Under: Positioning Overrides
  100.  
  101.      public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state)
  102.         {
  103.             this.setDefaultFacing(worldIn, pos, state);
  104.         }
  105.    
  106.     private void setDefaultFacing(World worldIn, BlockPos pos, IBlockState state)
  107.     {
  108.         if (!worldIn.isRemote)
  109.         {
  110.             IBlockState iblockstate = worldIn.getBlockState(pos.north());
  111.             IBlockState iblockstate1 = worldIn.getBlockState(pos.south());
  112.             IBlockState iblockstate2 = worldIn.getBlockState(pos.west());
  113.             IBlockState iblockstate3 = worldIn.getBlockState(pos.east());
  114.             EnumFacing enumfacing = (EnumFacing)state.getValue(FACING);
  115.  
  116.             if (enumfacing == EnumFacing.NORTH && iblockstate.isFullBlock() && !iblockstate1.isFullBlock())
  117.             {
  118.                 enumfacing = EnumFacing.SOUTH;
  119.             }
  120.             else if (enumfacing == EnumFacing.SOUTH && iblockstate1.isFullBlock() && !iblockstate.isFullBlock())
  121.             {
  122.                 enumfacing = EnumFacing.NORTH;
  123.             }
  124.             else if (enumfacing == EnumFacing.WEST && iblockstate2.isFullBlock() && !iblockstate3.isFullBlock())
  125.             {
  126.                 enumfacing = EnumFacing.EAST;
  127.             }
  128.             else if (enumfacing == EnumFacing.EAST && iblockstate3.isFullBlock() && !iblockstate2.isFullBlock())
  129.             {
  130.                 enumfacing = EnumFacing.WEST;
  131.             }
  132.  
  133.             worldIn.setBlockState(pos, state.withProperty(FACING, enumfacing), 2);
  134.         }
  135.     }
  136.    
  137.      public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
  138.         {
  139.             return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
  140.         }
  141.      
  142.      public IBlockState getStateFromMeta(int meta)
  143.         {
  144.             EnumFacing enumfacing = EnumFacing.getFront(meta);
  145.  
  146.             if (enumfacing.getAxis() == EnumFacing.Axis.Y)
  147.             {
  148.                 enumfacing = EnumFacing.NORTH;
  149.             }
  150.  
  151.             return this.getDefaultState().withProperty(FACING, enumfacing);
  152.         }
  153.      
  154.      public int getMetaFromState(IBlockState state)
  155.         {
  156.             return ((EnumFacing)state.getValue(FACING)).getIndex();
  157.         }
  158.      
  159.      public IBlockState withRotation(IBlockState state, Rotation rot)
  160.         {
  161.             return state.withProperty(FACING, rot.rotate((EnumFacing)state.getValue(FACING)));
  162.         }
  163.      
  164.      public IBlockState withMirror(IBlockState state, Mirror mirrorIn)
  165.         {
  166.             return state.withRotation(mirrorIn.toRotation((EnumFacing)state.getValue(FACING)));
  167.         }
  168.  
  169.      protected BlockStateContainer createBlockState()
  170.         {
  171.             return new BlockStateContainer(this, new IProperty[] {FACING});
  172.         }
  173.    
  174.     //Everything Under: Model Overrides
  175.     @Override
  176.         public boolean isFullCube(IBlockState state) {
  177.             return false;
  178.     }
  179.    
  180.     @Override
  181.         public boolean isOpaqueCube(IBlockState state) {
  182.             return false;
  183.     }
  184.    
  185.     @Override
  186.         public BlockRenderLayer getBlockLayer() {
  187.             return BlockRenderLayer.CUTOUT;
  188.     }
  189.    
  190.     @Override //Bounding box
  191.     public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) {
  192.         return PESTLE_BOX;
  193.     }
  194.    
  195.     @Override //Collision box
  196.     public void addCollisionBoxToList(IBlockState state, World worldIn, BlockPos pos, AxisAlignedBB entityBox, List<AxisAlignedBB> collidingBoxes, Entity entityIn, boolean p_185477_7_) {
  197.         super.addCollisionBoxToList(pos, entityBox, collidingBoxes, PESTLE_BOX);
  198.     }
  199.  
  200.    
  201.    
  202.  
  203. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement