From 982f0bbbd7564b6f292a0890dd862149d9f710a9 Mon Sep 17 00:00:00 2001 From: Uko Kokņevičs Date: Wed, 10 Jan 2024 00:26:04 +0100 Subject: Some refactoring --- .../enes/mc/eris_alchemy/ErisAlchemyRegistry.java | 147 +++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 src/main/java/lv/enes/mc/eris_alchemy/ErisAlchemyRegistry.java (limited to 'src/main/java/lv/enes/mc/eris_alchemy/ErisAlchemyRegistry.java') diff --git a/src/main/java/lv/enes/mc/eris_alchemy/ErisAlchemyRegistry.java b/src/main/java/lv/enes/mc/eris_alchemy/ErisAlchemyRegistry.java new file mode 100644 index 0000000..c02a1e6 --- /dev/null +++ b/src/main/java/lv/enes/mc/eris_alchemy/ErisAlchemyRegistry.java @@ -0,0 +1,147 @@ +package lv.enes.mc.eris_alchemy; + +import lv.enes.mc.eris_alchemy.block.AlchemicalChestBlock; +import lv.enes.mc.eris_alchemy.block.entity.AlchemicalChestBlockEntity; +import lv.enes.mc.eris_alchemy.menu.AlchemicalChestMenu; +import lv.enes.mc.eris_alchemy.recipe.CovalenceRepair; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.flag.FeatureFlags; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import org.quiltmc.qsl.block.entity.api.QuiltBlockEntityTypeBuilder; +import org.quiltmc.qsl.block.extensions.api.QuiltBlockSettings; +import org.quiltmc.qsl.item.setting.api.QuiltItemSettings; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.function.BiConsumer; + +import static net.minecraft.world.level.block.Blocks.ENDER_CHEST; + +public final class ErisAlchemyRegistry { + private ErisAlchemyRegistry() {} + + public static final class BlockEntities { + private BlockEntities() {} + + private static final Map> data = new LinkedHashMap<>(); + + public static final BlockEntityType ALCHEMICAL_CHEST = register( + "alchemical_chest", + QuiltBlockEntityTypeBuilder.create(AlchemicalChestBlockEntity::new, Blocks.ALCHEMICAL_CHEST) + .build() + ); + + public static void consume(BiConsumer> consumer) { + data.forEach(consumer); + } + + private static BlockEntityType register(String id, BlockEntityType type) { + data.put(new ResourceLocation(ErisAlchemy.ID, id), type); + return type; + } + } + + public static final class Blocks { + private Blocks() {} + + private static final Map data = new LinkedHashMap<>(); + + public static final AlchemicalChestBlock ALCHEMICAL_CHEST = register( + "alchemical_chest", + new AlchemicalChestBlock(QuiltBlockSettings.copy(ENDER_CHEST)) + ); + + public static void consume(BiConsumer consumer) { + data.forEach(consumer); + } + + private static T register(String id, T block) { + data.put(new ResourceLocation(ErisAlchemy.ID, id), block); + return block; + } + } + + public static final class Items { + private Items() {} + + private static final Map data = new LinkedHashMap<>(); + + public static final Item ALCHEMICAL_CHEST = + register(Blocks.ALCHEMICAL_CHEST, new QuiltItemSettings().rarity(Rarity.RARE)); + public static final Item LOW_COVALENCE_DUST = + register("low_covalence_dust", new Item(new QuiltItemSettings().rarity(Rarity.COMMON))); + @SuppressWarnings("unused") + public static final Item MEDIUM_COVALENCE_DUST = + register("medium_covalence_dust", new Item(new QuiltItemSettings().rarity(Rarity.UNCOMMON))); + @SuppressWarnings("unused") + public static final Item HIGH_COVALENCE_DUST = + register("high_covalence_dust", new Item(new QuiltItemSettings().rarity(Rarity.RARE))); + + public static void consume(BiConsumer consumer) { + data.forEach(consumer); + } + + private static BlockItem register(Block block, QuiltItemSettings settings) { + return register(BuiltInRegistries.BLOCK.getKey(block), new BlockItem(block, settings)); + } + + private static T register(String id, T item) { + return register(new ResourceLocation(ErisAlchemy.ID, id), item); + } + + private static T register(ResourceLocation id, T item) { + data.put(id, item); + return item; + } + } + + public static final class Menus { + private Menus() {} + + private static final Map> data = new LinkedHashMap<>(); + + public static final MenuType ALCHEMICAL_CHEST = + register("alchemy_chest", AlchemicalChestMenu::new); + + public static void consume(BiConsumer> consumer) { + data.forEach(consumer); + } + + private static MenuType register( + String id, + MenuType.MenuSupplier supplier + ) { + var menuType = new MenuType<>(supplier, FeatureFlags.VANILLA_SET); + data.put(new ResourceLocation(ErisAlchemy.ID, id), menuType); + return menuType; + } + } + + public static final class RecipeSerializers { + private RecipeSerializers() {} + + private static final Map> data = new LinkedHashMap<>(); + + public static final RecipeSerializer COVALENCE_REPAIR = + register("covalence_repair", new CovalenceRepair.Serializer()); + + public static void consume(BiConsumer> consumer) { + data.forEach(consumer); + } + + private static > RecipeSerializer register(String id, RecipeSerializer serializer) { + data.put(new ResourceLocation(ErisAlchemy.ID, id), serializer); + return serializer; + } + } +} -- cgit v1.2.3