Advertisement
Guest User

Untitled

a guest
Jul 16th, 2022
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.10 KB | None | 0 0
  1. package com.mrbradlerz.moar.block;
  2.  
  3. import net.minecraftforge.registries.ObjectHolder;
  4. import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
  5. import net.minecraftforge.common.ToolType;
  6. import net.minecraftforge.api.distmarker.OnlyIn;
  7. import net.minecraftforge.api.distmarker.Dist;
  8.  
  9. import net.minecraft.world.IBlockReader;
  10. import net.minecraft.util.math.BlockPos;
  11. import net.minecraft.util.Rotation;
  12. import net.minecraft.util.Mirror;
  13. import net.minecraft.util.Direction;
  14. import net.minecraft.state.StateContainer;
  15. import net.minecraft.state.DirectionProperty;
  16. import net.minecraft.loot.LootContext;
  17. import net.minecraft.item.ItemStack;
  18. import net.minecraft.item.Item;
  19. import net.minecraft.item.BlockItemUseContext;
  20. import net.minecraft.item.BlockItem;
  21. import net.minecraft.client.renderer.RenderTypeLookup;
  22. import net.minecraft.client.renderer.RenderType;
  23. import net.minecraft.block.material.Material;
  24. import net.minecraft.block.SoundType;
  25. import net.minecraft.block.HorizontalBlock;
  26. import net.minecraft.block.BlockState;
  27. import net.minecraft.block.Block;
  28. import java.util.List;
  29. import java.util.Collections;
  30.  
  31. import com.mrbradlerz.moar.itemgroup.MOARTabItemGroup;
  32. import com.mrbradlerz.moar.MoarModElements;
  33. import net.minecraft.state.EnumProperty;
  34.  
  35. import com.mrbradlerz.moar.TableType;
  36.  
  37. @MoarModElements.ModElement.Tag
  38. public class BuffetTableBlock extends MoarModElements.ModElement {
  39. @ObjectHolder("moar:buffet_table")
  40. public static final Block block = null;
  41.  
  42. public BuffetTableBlock(MoarModElements instance) {
  43. super(instance, 1042);
  44. }
  45.  
  46. @Override
  47. public void initElements() {
  48. elements.blocks.add(() -> new CustomBlock());
  49. elements.items.add(() -> new BlockItem(block, new Item.Properties().group(MOARTabItemGroup.tab)).setRegistryName(block.getRegistryName()));
  50. }
  51.  
  52. @Override
  53. @OnlyIn(Dist.CLIENT)
  54. public void clientLoad(FMLClientSetupEvent event) {
  55. RenderTypeLookup.setRenderLayer(block, RenderType.getCutout());
  56. }
  57.  
  58. public static class CustomBlock extends Block {
  59. public static final DirectionProperty FACING = HorizontalBlock.HORIZONTAL_FACING;
  60. public static final EnumProperty TYPE = EnumProperty.create("type", TableType.class);
  61.  
  62. public CustomBlock() {
  63. super(Block.Properties.create(Material.WOOD).sound(SoundType.WOOD).hardnessAndResistance(1f, 10f).setLightLevel(s -> 0).harvestLevel(1)
  64. .harvestTool(ToolType.AXE).setRequiresTool().notSolid().setOpaque((hogwash, br, bp) -> false));
  65. this.setDefaultState(this.stateContainer.getBaseState().with(FACING, Direction.NORTH));
  66. this.setDefaultState(new BlockStateEnum());
  67.  
  68. setRegistryName("buffet_table");
  69. }
  70.  
  71. @Override
  72. public boolean propagatesSkylightDown(BlockState state, IBlockReader reader, BlockPos pos) {
  73. return true;
  74. }
  75.  
  76. @Override
  77. public int getOpacity(BlockState state, IBlockReader worldIn, BlockPos pos) {
  78. return 0;
  79. }
  80.  
  81. @Override
  82. protected void fillStateContainer(StateContainer.Builder<Block, BlockState> builder) {
  83. builder.add(FACING);
  84. }
  85.  
  86. public BlockState rotate(BlockState state, Rotation rot) {
  87. return state.with(FACING, rot.rotate(state.get(FACING)));
  88. }
  89.  
  90. public BlockState mirror(BlockState state, Mirror mirrorIn) {
  91. return state.rotate(mirrorIn.toRotation(state.get(FACING)));
  92. }
  93.  
  94. @Override
  95. public BlockState getStateForPlacement(BlockItemUseContext context) {
  96. ;
  97. return this.getDefaultState().with(FACING, context.getPlacementHorizontalFacing().getOpposite());
  98. }
  99.  
  100. @Override
  101. public List<ItemStack> getDrops(BlockState state, LootContext.Builder builder) {
  102. List<ItemStack> dropsOriginal = super.getDrops(state, builder);
  103. if (!dropsOriginal.isEmpty())
  104. return dropsOriginal;
  105. return Collections.singletonList(new ItemStack(this, 1));
  106. }
  107. }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement