NetheriteAnvil.java 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package com.hexdragon.blacksmithre.block.anvil;
  2. import com.hexdragon.blacksmithre.registry.RegMain;
  3. import net.minecraft.block.*;
  4. import net.minecraft.block.material.Material;
  5. import net.minecraft.block.material.MaterialColor;
  6. import net.minecraft.inventory.container.Container;
  7. import net.minecraft.item.BlockItem;
  8. import net.minecraft.item.Item;
  9. import net.minecraft.item.ItemGroup;
  10. import net.minecraft.item.ItemStack;
  11. import net.minecraft.state.DirectionProperty;
  12. import net.minecraft.util.Direction;
  13. import net.minecraft.util.math.BlockPos;
  14. import net.minecraft.util.math.MathHelper;
  15. import net.minecraft.util.math.shapes.ISelectionContext;
  16. import net.minecraft.util.math.shapes.VoxelShape;
  17. import net.minecraft.util.math.shapes.VoxelShapes;
  18. import net.minecraft.world.IBlockReader;
  19. import net.minecraft.world.World;
  20. import net.minecraftforge.common.ToolType;
  21. public class NetheriteAnvil extends AnvilBlock {
  22. public static final DirectionProperty FACING = HorizontalBlock.HORIZONTAL_FACING;
  23. private static final VoxelShape PART_BASE = Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 3.0D, 13.0D);
  24. private static final VoxelShape PART_LOWER = Block.makeCuboidShape(4.0D, 3.0D, 4.0D, 12.0D, 5.0D, 12.0D);
  25. private static final VoxelShape PART_MID_X = Block.makeCuboidShape(5.0D, 5.0D, 6.0D, 11.0D, 9.0D, 10.0D);
  26. private static final VoxelShape PART_UPPER_X = Block.makeCuboidShape(3.0D, 9.0D, 5.0D, 13.0D, 10.0D, 11.0D);
  27. private static final VoxelShape PART_TOP_X = Block.makeCuboidShape(0.0D, 10.0D, 3.0D, 16.0D, 15.0D, 13.0D);
  28. private static final VoxelShape PART_MID_Z = Block.makeCuboidShape(6.0D, 5.0D, 5.0D, 10.0D, 9.0D, 11.0D);
  29. private static final VoxelShape PART_UPPER_Z = Block.makeCuboidShape(5.0D, 9.0D, 3.0D, 11.0D, 10.0D, 13.0D);
  30. private static final VoxelShape PART_TOP_Z = Block.makeCuboidShape(3.0D, 10.0D, 0.0D, 13.0D, 15.0D, 16.0D);
  31. private static final VoxelShape X_AXIS_AABB = VoxelShapes.or(PART_BASE, PART_LOWER, PART_MID_X, PART_UPPER_X, PART_TOP_X);
  32. private static final VoxelShape Z_AXIS_AABB = VoxelShapes.or(PART_BASE, PART_LOWER, PART_MID_Z, PART_UPPER_Z, PART_TOP_Z);
  33. public NetheriteAnvil() {
  34. super(AbstractBlock.Properties.create(Material.ANVIL, MaterialColor.IRON).setRequiresTool().hardnessAndResistance(50F, 1200.0F).harvestTool(ToolType.PICKAXE).harvestLevel(3).sound(SoundType.ANVIL));
  35. this.setDefaultState(this.stateContainer.getBaseState().with(FACING, Direction.NORTH).with(RegMain.blockStateMaterial, 1));
  36. }
  37. public static class NetheriteAnvilItem extends BlockItem {
  38. public NetheriteAnvilItem(Block blockIn) {
  39. super(blockIn, new Item.Properties().group(ItemGroup.DECORATIONS));
  40. }
  41. }
  42. //设置碰撞箱
  43. public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) {
  44. Direction direction = state.get(FACING);
  45. return direction.getAxis() == Direction.Axis.X ? X_AXIS_AABB : Z_AXIS_AABB;
  46. }
  47. // 设置红石比较器输出
  48. public boolean hasComparatorInputOverride(BlockState state) {return true;}
  49. public int getComparatorInputOverride(BlockState blockState, World worldIn, BlockPos pos) {return Container.calcRedstone(worldIn.getTileEntity(pos));}
  50. }