diff --git a/src/main/java/com/danitheskunk/skunkstuff/BlockBuilder.java b/src/main/java/com/danitheskunk/skunkstuff/BlockBuilder.java index 3ad51f0..7010d21 100644 --- a/src/main/java/com/danitheskunk/skunkstuff/BlockBuilder.java +++ b/src/main/java/com/danitheskunk/skunkstuff/BlockBuilder.java @@ -1,22 +1,26 @@ package com.danitheskunk.skunkstuff; +import com.danitheskunk.skunkstuff.Blocks.Blocks; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.SlabBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.material.Material; import org.quiltmc.qsl.block.extensions.api.QuiltBlockSettings; +import java.lang.reflect.InvocationTargetException; + public class BlockBuilder extends QuiltBlockSettings { public String name; public CreativeModeTab creativeModeTab = CreativeModeTab.TAB_MISC; - public BlockType blockType; + public Class blockClass; public Block block; + public BlockBuilder() { super(QuiltBlockSettings.of(Material.WOOD)); strength(2); opaque(false); - blockType = BlockType.Full; + blockClass = Block.class; } public BlockBuilder name(String name) { @@ -29,19 +33,24 @@ public class BlockBuilder extends QuiltBlockSettings { return this; } - public BlockBuilder slab() { - blockType = BlockType.Slab; + public BlockBuilder type(Class blockClass) { + this.blockClass = blockClass; return this; } public Block build() { - block = switch(blockType) { - case Full -> new Block(this); - case Slab -> new SlabBlock(this); - }; + try { + var constructor = + blockClass.getDeclaredConstructor(BlockBehaviour.Properties.class); + block = constructor.newInstance(this); + } catch(NoSuchMethodException | InvocationTargetException | + InstantiationException | IllegalAccessException e) { + throw new RuntimeException(e); + } Blocks.addToDeffered(this); return block; } + private enum BlockType { Full, Slab } diff --git a/src/main/java/com/danitheskunk/skunkstuff/Blocks/BlockGoban.java b/src/main/java/com/danitheskunk/skunkstuff/Blocks/BlockGoban.java new file mode 100644 index 0000000..a29defd --- /dev/null +++ b/src/main/java/com/danitheskunk/skunkstuff/Blocks/BlockGoban.java @@ -0,0 +1,27 @@ +package com.danitheskunk.skunkstuff.Blocks; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class BlockGoban extends Block { + private static final VoxelShape AABB = Block.box(0.0, + 0.0, + 0.0, + 16.0, + 8.0, + 16.0 + ); + + public BlockGoban(Properties properties) { + super(properties); + } + + @Override + public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) { + return AABB; + } +} diff --git a/src/main/java/com/danitheskunk/skunkstuff/Blocks.java b/src/main/java/com/danitheskunk/skunkstuff/Blocks/Blocks.java similarity index 91% rename from src/main/java/com/danitheskunk/skunkstuff/Blocks.java rename to src/main/java/com/danitheskunk/skunkstuff/Blocks/Blocks.java index 78917ac..9c9e779 100644 --- a/src/main/java/com/danitheskunk/skunkstuff/Blocks.java +++ b/src/main/java/com/danitheskunk/skunkstuff/Blocks/Blocks.java @@ -1,5 +1,6 @@ -package com.danitheskunk.skunkstuff; +package com.danitheskunk.skunkstuff.Blocks; +import com.danitheskunk.skunkstuff.BlockBuilder; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.BlockItem; diff --git a/src/main/java/com/danitheskunk/skunkstuff/SkunkStuff.java b/src/main/java/com/danitheskunk/skunkstuff/SkunkStuff.java index 8f7d221..5b959e1 100644 --- a/src/main/java/com/danitheskunk/skunkstuff/SkunkStuff.java +++ b/src/main/java/com/danitheskunk/skunkstuff/SkunkStuff.java @@ -1,5 +1,7 @@ package com.danitheskunk.skunkstuff; +import com.danitheskunk.skunkstuff.Blocks.BlockGoban; +import com.danitheskunk.skunkstuff.Blocks.Blocks; import net.minecraft.world.level.block.Block; import org.quiltmc.loader.api.ModContainer; import org.quiltmc.qsl.base.api.entrypoint.ModInitializer; @@ -10,23 +12,23 @@ public class SkunkStuff implements ModInitializer { public static final Logger LOGGER = LoggerFactory.getLogger("SkunkStuff"); public static final Block OAK_GOBAN_BLOCK = Blocks.register().name( - "oak_goban").build(); + "oak_goban").type(BlockGoban.class).build(); public static final Block SPRUCE_GOBAN_BLOCK = Blocks.register().name( - "spruce_goban").build(); + "spruce_goban").type(BlockGoban.class).build(); public static final Block BIRCH_GOBAN_BLOCK = Blocks.register().name( - "birch_goban").build(); + "birch_goban").type(BlockGoban.class).build(); public static final Block JUNGLE_GOBAN_BLOCK = Blocks.register().name( - "jungle_goban").build(); + "jungle_goban").type(BlockGoban.class).build(); public static final Block ACACIA_GOBAN_BLOCK = Blocks.register().name( - "acacia_goban").build(); + "acacia_goban").type(BlockGoban.class).build(); public static final Block DARK_OAK_GOBAN_BLOCK = Blocks.register().name( - "dark_oak_goban").build(); + "dark_oak_goban").type(BlockGoban.class).build(); public static final Block WARPED_GOBAN_BLOCK = Blocks.register().name( - "warped_goban").build(); + "warped_goban").type(BlockGoban.class).build(); public static final Block CRIMSON_GOBAN_BLOCK = Blocks.register().name( - "crimson_goban").build(); + "crimson_goban").type(BlockGoban.class).build(); public static final Block MANGROVE_GOBAN_BLOCK = Blocks.register().name( - "mangrove_goban").build(); + "mangrove_goban").type(BlockGoban.class).build(); @Override public void onInitialize(ModContainer mod) {