BlockSpikes.java 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package me.km.blocks;
  2. import net.minecraft.block.Block;
  3. import net.minecraft.block.BlockState;
  4. import net.minecraft.block.Blocks;
  5. import net.minecraft.entity.Entity;
  6. import net.minecraft.util.BlockRenderLayer;
  7. import net.minecraft.util.DamageSource;
  8. import net.minecraft.util.Direction;
  9. import net.minecraft.util.math.BlockPos;
  10. import net.minecraft.util.math.shapes.ISelectionContext;
  11. import net.minecraft.util.math.shapes.VoxelShape;
  12. import net.minecraft.world.IBlockReader;
  13. import net.minecraft.world.IWorld;
  14. import net.minecraft.world.IWorldReader;
  15. import net.minecraft.world.World;
  16. public class BlockSpikes extends Block
  17. {
  18. private static final VoxelShape SHAPE = Block.makeCuboidShape(0.0, 0.0, 0.0, 16.0, 1.0, 16.0);
  19. public BlockSpikes(String name, Properties properties)
  20. {
  21. super(properties);
  22. super.setRegistryName(name);
  23. }
  24. @Override
  25. public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context)
  26. {
  27. return SHAPE;
  28. }
  29. @Override
  30. public boolean isValidPosition(BlockState state, IWorldReader w, BlockPos pos)
  31. {
  32. return func_220064_c(w, pos.down()); // from RedstoneDiodeBlock
  33. }
  34. @Override
  35. public void onEntityCollision(BlockState state, World w, BlockPos pos, Entity ent)
  36. {
  37. if(!ent.isSneaking())
  38. {
  39. ent.attackEntityFrom(DamageSource.CACTUS, 1.0F);
  40. }
  41. }
  42. @Override
  43. public boolean isSolid(BlockState state)
  44. {
  45. return false;
  46. }
  47. @Override
  48. public boolean isNormalCube(BlockState state, IBlockReader worldIn, BlockPos pos)
  49. {
  50. return false;
  51. }
  52. @Override
  53. public BlockState updatePostPlacement(BlockState stateIn, Direction facing, BlockState facingState, IWorld w, BlockPos currentPos, BlockPos facingPos)
  54. {
  55. return !stateIn.isValidPosition(w, currentPos) ? Blocks.AIR.getDefaultState() :
  56. super.updatePostPlacement(stateIn, facing, facingState, w, currentPos, facingPos);
  57. }
  58. @Override
  59. public BlockRenderLayer getRenderLayer()
  60. {
  61. return BlockRenderLayer.CUTOUT;
  62. }
  63. }