|
30 | 30 |
|
31 | 31 | import net.minecraft.block.AbstractBlock; |
32 | 32 | import net.minecraft.block.Block; |
| 33 | +import net.minecraft.block.Blocks; |
33 | 34 | import net.minecraft.block.MapColor; |
34 | | -import net.minecraft.block.Material; |
35 | 35 | import net.minecraft.block.entity.BlockEntity; |
36 | 36 | import net.minecraft.block.entity.BlockEntityType; |
| 37 | +import net.minecraft.block.piston.PistonBehavior; |
37 | 38 | import net.minecraft.registry.Registries; |
38 | 39 | import net.minecraft.registry.Registry; |
39 | 40 | import net.minecraft.sound.BlockSoundGroup; |
@@ -70,64 +71,73 @@ public class NetheritePlusBlocks { |
70 | 71 | public static BlockEntityType<NetheriteBeaconBlockEntity> NETHERITE_BEACON_BLOCK_ENTITY; |
71 | 72 |
|
72 | 73 | static { |
73 | | - if (NetheritePlusMod.CONFIG.enabled.shulker_boxes) { |
| 74 | + if (NetheritePlusMod.CONFIG.enabled.shulker_boxes.value()) { |
74 | 75 | registerShulkerBoxBlocks(); |
75 | 76 | } |
76 | 77 |
|
77 | | - if (NetheritePlusMod.CONFIG.enabled.fake_netherite_blocks) { |
78 | | - FAKE_NETHERITE_BLOCK = register("fake_netherite_block", new FakeNetheriteBlock(AbstractBlock.Settings.of(Material.METAL, MapColor.BLACK).requiresTool().strength(5.0F, 6.0F).sounds(BlockSoundGroup.NETHERITE))); |
| 78 | + if (NetheritePlusMod.CONFIG.enabled.fake_netherite_blocks.value()) { |
| 79 | + FAKE_NETHERITE_BLOCK = register("fake_netherite_block", new FakeNetheriteBlock(AbstractBlock.Settings.copy(Blocks.IRON_BLOCK).mapColor(MapColor.BLACK).sounds(BlockSoundGroup.NETHERITE))); |
79 | 80 | } |
80 | 81 |
|
81 | | - if (NetheritePlusMod.CONFIG.enabled.anvils) { |
82 | | - NETHERITE_ANVIL_BLOCK = register("netherite_anvil", new NetheriteAnvilBlock(AbstractBlock.Settings.of(Material.REPAIR_STATION, MapColor.IRON_GRAY).requiresTool().strength(5.0F, 1200.0F).sounds(BlockSoundGroup.ANVIL))); |
| 82 | + if (NetheritePlusMod.CONFIG.enabled.anvils.value()) { |
| 83 | + NETHERITE_ANVIL_BLOCK = register("netherite_anvil", new NetheriteAnvilBlock(AbstractBlock.Settings.copy(Blocks.ANVIL))); |
83 | 84 | } |
84 | 85 |
|
85 | | - if (NetheritePlusMod.CONFIG.enabled.beacon) { |
86 | | - NETHERITE_BEACON = register("netherite_beacon", new NetheriteBeaconBlock(AbstractBlock.Settings.of(Material.GLASS, MapColor.DIAMOND_BLUE).strength(3.0F).luminance((state) -> 15).nonOpaque())); |
| 86 | + if (NetheritePlusMod.CONFIG.enabled.beacon.value()) { |
| 87 | + NETHERITE_BEACON = register("netherite_beacon", new NetheriteBeaconBlock(AbstractBlock.Settings.copy(Blocks.BEACON))); |
87 | 88 |
|
88 | 89 | NETHERITE_BEACON_BLOCK_ENTITY = Registry.register(Registries.BLOCK_ENTITY_TYPE, id("netherite_beacon"), |
89 | 90 | BlockEntityType.Builder.create(NetheriteBeaconBlockEntity::new, NETHERITE_BEACON).build(null)); |
90 | 91 | } |
91 | 92 | } |
92 | 93 |
|
93 | | - private static NetheriteShulkerBoxBlock createShulkerBoxBlock(DyeColor color, AbstractBlock.Settings settings) { |
94 | | - AbstractBlock.ContextPredicate contextPredicate = (blockState, blockView, blockPos) -> { |
95 | | - BlockEntity blockEntity = blockView.getBlockEntity(blockPos); |
96 | | - if (!(blockEntity instanceof NetheriteShulkerBoxBlockEntity shulkerBoxBlockEntity)) { |
97 | | - return true; |
98 | | - } |
99 | | - return shulkerBoxBlockEntity.suffocates(); |
100 | | - }; |
101 | | - return new NetheriteShulkerBoxBlock(color, settings.strength(2.0F).dynamicBounds().nonOpaque().suffocates(contextPredicate).blockVision(contextPredicate)); |
102 | | - } |
103 | | - |
104 | 94 | private static Block register(String id, Block block) { |
105 | 95 | return Registry.register(Registries.BLOCK, id(id), block); |
106 | 96 | } |
107 | 97 |
|
108 | 98 | private static void registerShulkerBoxBlocks() { |
109 | | - NETHERITE_SHULKER_BOX = register("netherite_shulker_box", createShulkerBoxBlock(null, AbstractBlock.Settings.of(Material.SHULKER_BOX).strength(2f, 1200f))); |
110 | | - NETHERITE_WHITE_SHULKER_BOX = register("netherite_white_shulker_box", createShulkerBoxBlock(DyeColor.WHITE, AbstractBlock.Settings.of(Material.SHULKER_BOX, MapColor.WHITE))); |
111 | | - NETHERITE_ORANGE_SHULKER_BOX = register("netherite_orange_shulker_box", createShulkerBoxBlock(DyeColor.ORANGE, AbstractBlock.Settings.of(Material.SHULKER_BOX, MapColor.ORANGE))); |
112 | | - NETHERITE_MAGENTA_SHULKER_BOX = register("netherite_magenta_shulker_box", createShulkerBoxBlock(DyeColor.MAGENTA, AbstractBlock.Settings.of(Material.SHULKER_BOX, MapColor.MAGENTA))); |
113 | | - NETHERITE_LIGHT_BLUE_SHULKER_BOX = register("netherite_light_blue_shulker_box", createShulkerBoxBlock(DyeColor.LIGHT_BLUE, AbstractBlock.Settings.of(Material.SHULKER_BOX, MapColor.LIGHT_BLUE))); |
114 | | - NETHERITE_YELLOW_SHULKER_BOX = register("netherite_yellow_shulker_box", createShulkerBoxBlock(DyeColor.YELLOW, AbstractBlock.Settings.of(Material.SHULKER_BOX, MapColor.YELLOW))); |
115 | | - NETHERITE_LIME_SHULKER_BOX = register("netherite_lime_shulker_box", createShulkerBoxBlock(DyeColor.LIME, AbstractBlock.Settings.of(Material.SHULKER_BOX, MapColor.LIME))); |
116 | | - NETHERITE_PINK_SHULKER_BOX = register("netherite_pink_shulker_box", createShulkerBoxBlock(DyeColor.PINK, AbstractBlock.Settings.of(Material.SHULKER_BOX, MapColor.PINK))); |
117 | | - NETHERITE_GRAY_SHULKER_BOX = register("netherite_gray_shulker_box", createShulkerBoxBlock(DyeColor.GRAY, AbstractBlock.Settings.of(Material.SHULKER_BOX, MapColor.GRAY))); |
118 | | - NETHERITE_LIGHT_GRAY_SHULKER_BOX = register("netherite_light_gray_shulker_box", createShulkerBoxBlock(DyeColor.LIGHT_GRAY, AbstractBlock.Settings.of(Material.SHULKER_BOX, MapColor.LIGHT_GRAY))); |
119 | | - NETHERITE_CYAN_SHULKER_BOX = register("netherite_cyan_shulker_box", createShulkerBoxBlock(DyeColor.CYAN, AbstractBlock.Settings.of(Material.SHULKER_BOX, MapColor.CYAN))); |
120 | | - NETHERITE_PURPLE_SHULKER_BOX = register("netherite_purple_shulker_box", createShulkerBoxBlock(DyeColor.PURPLE, AbstractBlock.Settings.of(Material.SHULKER_BOX, MapColor.TERRACOTTA_PURPLE))); |
121 | | - NETHERITE_BLUE_SHULKER_BOX = register("netherite_blue_shulker_box", createShulkerBoxBlock(DyeColor.BLUE, AbstractBlock.Settings.of(Material.SHULKER_BOX, MapColor.BLUE))); |
122 | | - NETHERITE_BROWN_SHULKER_BOX = register("netherite_brown_shulker_box", createShulkerBoxBlock(DyeColor.BROWN, AbstractBlock.Settings.of(Material.SHULKER_BOX, MapColor.BROWN))); |
123 | | - NETHERITE_GREEN_SHULKER_BOX = register("netherite_green_shulker_box", createShulkerBoxBlock(DyeColor.GREEN, AbstractBlock.Settings.of(Material.SHULKER_BOX, MapColor.GREEN))); |
124 | | - NETHERITE_RED_SHULKER_BOX = register("netherite_red_shulker_box", createShulkerBoxBlock(DyeColor.RED, AbstractBlock.Settings.of(Material.SHULKER_BOX, MapColor.RED))); |
125 | | - NETHERITE_BLACK_SHULKER_BOX = register("netherite_black_shulker_box", createShulkerBoxBlock(DyeColor.BLACK, AbstractBlock.Settings.of(Material.SHULKER_BOX, MapColor.BLACK))); |
| 99 | + NETHERITE_SHULKER_BOX = register("netherite_shulker_box", createShulkerBoxBlock(null, AbstractBlock.Settings.create().mapColor(MapColor.GRAY))); |
| 100 | + NETHERITE_WHITE_SHULKER_BOX = register("netherite_white_shulker_box", createShulkerBoxBlock(DyeColor.WHITE, AbstractBlock.Settings.create().mapColor(MapColor.SNOW))); |
| 101 | + NETHERITE_ORANGE_SHULKER_BOX = register("netherite_orange_shulker_box", createShulkerBoxBlock(DyeColor.ORANGE, AbstractBlock.Settings.create().mapColor(MapColor.ORANGE))); |
| 102 | + NETHERITE_MAGENTA_SHULKER_BOX = register("netherite_magenta_shulker_box", createShulkerBoxBlock(DyeColor.MAGENTA, AbstractBlock.Settings.create().mapColor(MapColor.MAGENTA))); |
| 103 | + NETHERITE_LIGHT_BLUE_SHULKER_BOX = register("netherite_light_blue_shulker_box", createShulkerBoxBlock(DyeColor.LIGHT_BLUE, AbstractBlock.Settings.create().mapColor(MapColor.LIGHT_BLUE))); |
| 104 | + NETHERITE_YELLOW_SHULKER_BOX = register("netherite_yellow_shulker_box", createShulkerBoxBlock(DyeColor.YELLOW, AbstractBlock.Settings.create().mapColor(MapColor.YELLOW))); |
| 105 | + NETHERITE_LIME_SHULKER_BOX = register("netherite_lime_shulker_box", createShulkerBoxBlock(DyeColor.LIME, AbstractBlock.Settings.create().mapColor(MapColor.LIME))); |
| 106 | + NETHERITE_PINK_SHULKER_BOX = register("netherite_pink_shulker_box", createShulkerBoxBlock(DyeColor.PINK, AbstractBlock.Settings.create().mapColor(MapColor.PINK))); |
| 107 | + NETHERITE_GRAY_SHULKER_BOX = register("netherite_gray_shulker_box", createShulkerBoxBlock(DyeColor.GRAY, AbstractBlock.Settings.create().mapColor(MapColor.GRAY))); |
| 108 | + NETHERITE_LIGHT_GRAY_SHULKER_BOX = register("netherite_light_gray_shulker_box", createShulkerBoxBlock(DyeColor.LIGHT_GRAY, AbstractBlock.Settings.create().mapColor(MapColor.LIGHT_GRAY))); |
| 109 | + NETHERITE_CYAN_SHULKER_BOX = register("netherite_cyan_shulker_box", createShulkerBoxBlock(DyeColor.CYAN, AbstractBlock.Settings.create().mapColor(MapColor.CYAN))); |
| 110 | + NETHERITE_PURPLE_SHULKER_BOX = register("netherite_purple_shulker_box", createShulkerBoxBlock(DyeColor.PURPLE, AbstractBlock.Settings.create().mapColor(MapColor.PURPLE))); |
| 111 | + NETHERITE_BLUE_SHULKER_BOX = register("netherite_blue_shulker_box", createShulkerBoxBlock(DyeColor.BLUE, AbstractBlock.Settings.create().mapColor(MapColor.BLUE))); |
| 112 | + NETHERITE_BROWN_SHULKER_BOX = register("netherite_brown_shulker_box", createShulkerBoxBlock(DyeColor.BROWN, AbstractBlock.Settings.create().mapColor(MapColor.BROWN))); |
| 113 | + NETHERITE_GREEN_SHULKER_BOX = register("netherite_green_shulker_box", createShulkerBoxBlock(DyeColor.GREEN, AbstractBlock.Settings.create().mapColor(MapColor.GREEN))); |
| 114 | + NETHERITE_RED_SHULKER_BOX = register("netherite_red_shulker_box", createShulkerBoxBlock(DyeColor.RED, AbstractBlock.Settings.create().mapColor(MapColor.RED))); |
| 115 | + NETHERITE_BLACK_SHULKER_BOX = register("netherite_black_shulker_box", createShulkerBoxBlock(DyeColor.BLACK, AbstractBlock.Settings.create().mapColor(MapColor.BLACK))); |
126 | 116 |
|
127 | 117 | NETHERITE_SHULKER_BOX_ENTITY = Registry.register(Registries.BLOCK_ENTITY_TYPE, id("netherite_shulker_box"), |
128 | 118 | BlockEntityType.Builder.create(NetheriteShulkerBoxBlockEntity::new, |
129 | 119 | NETHERITE_SHULKER_BOX, NETHERITE_BLACK_SHULKER_BOX, NETHERITE_BLUE_SHULKER_BOX, NETHERITE_BROWN_SHULKER_BOX, NETHERITE_CYAN_SHULKER_BOX, NETHERITE_GRAY_SHULKER_BOX, NETHERITE_GREEN_SHULKER_BOX, NETHERITE_LIGHT_BLUE_SHULKER_BOX, NETHERITE_LIGHT_GRAY_SHULKER_BOX, NETHERITE_LIME_SHULKER_BOX, NETHERITE_MAGENTA_SHULKER_BOX, NETHERITE_ORANGE_SHULKER_BOX, NETHERITE_PINK_SHULKER_BOX, NETHERITE_PURPLE_SHULKER_BOX, NETHERITE_RED_SHULKER_BOX, NETHERITE_WHITE_SHULKER_BOX, NETHERITE_YELLOW_SHULKER_BOX) |
130 | 120 | .build(null)); |
131 | 121 | } |
132 | 122 |
|
| 123 | + private static NetheriteShulkerBoxBlock createShulkerBoxBlock(DyeColor color, AbstractBlock.Settings settings) { |
| 124 | + AbstractBlock.ContextPredicate contextPredicate = (state, world, pos) -> { |
| 125 | + BlockEntity blockEntity = world.getBlockEntity(pos); |
| 126 | + return !(blockEntity instanceof NetheriteShulkerBoxBlockEntity shulkerBoxBlockEntity) || shulkerBoxBlockEntity.suffocates(); |
| 127 | + }; |
| 128 | + |
| 129 | + return new NetheriteShulkerBoxBlock( |
| 130 | + color, |
| 131 | + settings.solid() |
| 132 | + .strength(2.0F) |
| 133 | + .resistance(1200.0F) |
| 134 | + .dynamicBounds() |
| 135 | + .nonOpaque() |
| 136 | + .suffocates(contextPredicate) |
| 137 | + .blockVision(contextPredicate) |
| 138 | + .pistonBehavior(PistonBehavior.DESTROY) |
| 139 | + .solidBlock(Blocks::always) |
| 140 | + ); |
| 141 | + } |
| 142 | + |
133 | 143 | } |
0 commit comments