From 30610e36b1b6d3896b6fc3e3800e9c75d30af882 Mon Sep 17 00:00:00 2001 From: Dani The Skunk Date: Sat, 22 Oct 2022 04:47:09 +0000 Subject: [PATCH] abstracted away block registering --- .../danitheskunk/skunkstuff/BlockBuilder.java | 34 +++++++++++++++++ .../com/danitheskunk/skunkstuff/Blocks.java | 38 ++++++++++++++++++- .../danitheskunk/skunkstuff/SkunkStuff.java | 24 ++---------- 3 files changed, 74 insertions(+), 22 deletions(-) create mode 100644 src/main/java/com/danitheskunk/skunkstuff/BlockBuilder.java diff --git a/src/main/java/com/danitheskunk/skunkstuff/BlockBuilder.java b/src/main/java/com/danitheskunk/skunkstuff/BlockBuilder.java new file mode 100644 index 0000000..d074694 --- /dev/null +++ b/src/main/java/com/danitheskunk/skunkstuff/BlockBuilder.java @@ -0,0 +1,34 @@ +package com.danitheskunk.skunkstuff; + + +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.material.Material; +import org.quiltmc.qsl.block.extensions.api.QuiltBlockSettings; + +public class BlockBuilder extends QuiltBlockSettings { + public String name; + public CreativeModeTab creativeModeTab = CreativeModeTab.TAB_MISC; + public Block block; + public BlockBuilder() { + super(QuiltBlockSettings.of(Material.WOOD)); + strength(2); + opaque(false); + } + + public BlockBuilder name(String name) { + this.name = name; + return this; + } + + public BlockBuilder creativeModeTab(CreativeModeTab creativeModeTab) { + this.creativeModeTab = creativeModeTab; + return this; + } + + public Block build() { + block = new Block(this); + Blocks.addToDeffered(this); + return block; + } +} diff --git a/src/main/java/com/danitheskunk/skunkstuff/Blocks.java b/src/main/java/com/danitheskunk/skunkstuff/Blocks.java index 1e48952..78917ac 100644 --- a/src/main/java/com/danitheskunk/skunkstuff/Blocks.java +++ b/src/main/java/com/danitheskunk/skunkstuff/Blocks.java @@ -1,5 +1,41 @@ package com.danitheskunk.skunkstuff; -public class Blocks { +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.CreativeModeTab; +import org.quiltmc.qsl.item.setting.api.QuiltItemSettings; +import java.util.ArrayList; +import java.util.List; + +public class Blocks { + private static final List deferred = new ArrayList<>(); + private static final String namespace = "skunkstuff"; + + public static BlockBuilder register() { + return new BlockBuilder(); + } + + public static void addToDeffered(BlockBuilder builder) { + deferred.add(builder); + } + + public static void registerAll() { + for(var block : deferred) { + Registry.register( + Registry.BLOCK, + new ResourceLocation(namespace, block.name), + block.block + ); + Registry.register( + Registry.ITEM, + new ResourceLocation(namespace, block.name), + new BlockItem( + block.block, + new QuiltItemSettings().group(block.creativeModeTab) + ) + ); + } + } } diff --git a/src/main/java/com/danitheskunk/skunkstuff/SkunkStuff.java b/src/main/java/com/danitheskunk/skunkstuff/SkunkStuff.java index 0d0a6c7..de7be1c 100644 --- a/src/main/java/com/danitheskunk/skunkstuff/SkunkStuff.java +++ b/src/main/java/com/danitheskunk/skunkstuff/SkunkStuff.java @@ -1,37 +1,19 @@ package com.danitheskunk.skunkstuff; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.material.Material; import org.quiltmc.loader.api.ModContainer; import org.quiltmc.qsl.base.api.entrypoint.ModInitializer; -import org.quiltmc.qsl.block.extensions.api.QuiltBlockSettings; -import org.quiltmc.qsl.item.setting.api.QuiltItemSettings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class SkunkStuff implements ModInitializer { public static final Logger LOGGER = LoggerFactory.getLogger("SkunkStuff"); - public static final Block GOBAN_BLOCK = new Block(QuiltBlockSettings.of( - Material.WOOD).strength(2).opaque(false)); + public static final Block GOBAN_BLOCK = + Blocks.register().name("goban").build(); @Override public void onInitialize(ModContainer mod) { - Registry.register(Registry.BLOCK, - new ResourceLocation("skunkstuff", "goban"), - GOBAN_BLOCK - ); - Registry.register( - Registry.ITEM, - new ResourceLocation("skunkstuff", "goban"), - new BlockItem(GOBAN_BLOCK, - new QuiltItemSettings().group(CreativeModeTab.TAB_MISC) - ) - ); - LOGGER.info("Hello Quilt world from {}!", mod.metadata().name()); + Blocks.registerAll(); } }