From ca0e8fa615a1ab0c1a8320844fc9068c451b39d3 Mon Sep 17 00:00:00 2001 From: WakelessSloth56 Date: Mon, 4 Apr 2022 18:07:05 +0800 Subject: [PATCH] refactor(loot): register condition types using deferred register --- .../org/auioc/mods/arnicalib/Initialization.java | 2 +- .../arnicalib/server/loot/AHLootItemConditions.java | 13 ++++++++----- .../server/loot/predicate/ModLoadedCondition.java | 2 +- src/main/resources/META-INF/mods.toml | 2 +- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/auioc/mods/arnicalib/Initialization.java b/src/main/java/org/auioc/mods/arnicalib/Initialization.java index 83443bfd..b4e288ec 100644 --- a/src/main/java/org/auioc/mods/arnicalib/Initialization.java +++ b/src/main/java/org/auioc/mods/arnicalib/Initialization.java @@ -55,10 +55,10 @@ private void modSetup() { AHPacketHandler.init(); AHCommandArguments.init(); modEventBus.register(AHGlobalLootModifiers.class); + AHLootItemConditions.LOOT_CONDITION_TYPES.register(modEventBus); modEventBus.addGenericListener( GlobalLootModifierSerializer.class, // It works within any RegistryEvent.Register (RegistryEvent.Register event) -> { - AHLootItemConditions.init(); AHLootItemFunctions.init(); } ); diff --git a/src/main/java/org/auioc/mods/arnicalib/server/loot/AHLootItemConditions.java b/src/main/java/org/auioc/mods/arnicalib/server/loot/AHLootItemConditions.java index 581942a8..4f51568d 100644 --- a/src/main/java/org/auioc/mods/arnicalib/server/loot/AHLootItemConditions.java +++ b/src/main/java/org/auioc/mods/arnicalib/server/loot/AHLootItemConditions.java @@ -1,20 +1,23 @@ package org.auioc.mods.arnicalib.server.loot; +import java.util.function.Supplier; import org.auioc.mods.arnicalib.ArnicaLib; import org.auioc.mods.arnicalib.server.loot.predicate.ModLoadedCondition; import net.minecraft.core.Registry; import net.minecraft.world.level.storage.loot.Serializer; import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; import net.minecraft.world.level.storage.loot.predicates.LootItemConditionType; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.RegistryObject; public final class AHLootItemConditions { - public static void init() {} + public static final DeferredRegister LOOT_CONDITION_TYPES = DeferredRegister.create(Registry.LOOT_ITEM_REGISTRY, ArnicaLib.MOD_ID); - public static final LootItemConditionType MOD_LOADED = register("mod_loaded", new ModLoadedCondition.SerializerX()); - - private static LootItemConditionType register(String id, Serializer serializer) { - return Registry.register(Registry.LOOT_CONDITION_TYPE, ArnicaLib.id(id), new LootItemConditionType(serializer)); + private static RegistryObject register(String id, Supplier> serializerSup) { + return LOOT_CONDITION_TYPES.register(id, () -> new LootItemConditionType(serializerSup.get())); } + public static final RegistryObject MOD_LOADED = register("mod_loaded", ModLoadedCondition.SerializerX::new); + } diff --git a/src/main/java/org/auioc/mods/arnicalib/server/loot/predicate/ModLoadedCondition.java b/src/main/java/org/auioc/mods/arnicalib/server/loot/predicate/ModLoadedCondition.java index 02e80c59..94370991 100644 --- a/src/main/java/org/auioc/mods/arnicalib/server/loot/predicate/ModLoadedCondition.java +++ b/src/main/java/org/auioc/mods/arnicalib/server/loot/predicate/ModLoadedCondition.java @@ -26,7 +26,7 @@ public boolean test(LootContext ctx) { @Override public LootItemConditionType getType() { - return AHLootItemConditions.MOD_LOADED; + return AHLootItemConditions.MOD_LOADED.get(); } diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 43f5c446..87b6b376 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -18,7 +18,7 @@ Shared library for AH's Minecraft mods. [[dependencies.arnicalib]] modId="forge" mandatory=true - versionRange="[40,)" + versionRange="[40.0.35,)" ordering="NONE" side="BOTH" [[dependencies.arnicalib]]