From 7c8f1c3565939d106595e3d5ea52cf9eae38b58a Mon Sep 17 00:00:00 2001 From: WakelessSloth56 Date: Sat, 17 Sep 2022 23:43:37 +0800 Subject: [PATCH] feat(utils): OrderedForgeRegistries uses LazyObjectHolder --- .../function/SetRandomPotionFunction.java | 10 +-- .../arnicalib/utils/game/EffectUtils.java | 2 +- .../utils/game/OrderedForgeRegistries.java | 82 ++++--------------- 3 files changed, 21 insertions(+), 73 deletions(-) diff --git a/src/main/java/org/auioc/mcmod/arnicalib/server/loot/function/SetRandomPotionFunction.java b/src/main/java/org/auioc/mcmod/arnicalib/server/loot/function/SetRandomPotionFunction.java index 148c03e0..6c840eed 100644 --- a/src/main/java/org/auioc/mcmod/arnicalib/server/loot/function/SetRandomPotionFunction.java +++ b/src/main/java/org/auioc/mcmod/arnicalib/server/loot/function/SetRandomPotionFunction.java @@ -2,15 +2,15 @@ import java.util.ArrayList; import java.util.List; +import org.auioc.mcmod.arnicalib.server.loot.AHLootItemFunctions; +import org.auioc.mcmod.arnicalib.utils.game.OrderedForgeRegistries; +import org.auioc.mcmod.arnicalib.utils.java.RandomUtils; +import org.auioc.mcmod.arnicalib.utils.java.Validate; import com.google.gson.JsonArray; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonSerializationContext; -import org.auioc.mcmod.arnicalib.server.loot.AHLootItemFunctions; -import org.auioc.mcmod.arnicalib.utils.game.OrderedForgeRegistries; -import org.auioc.mcmod.arnicalib.utils.java.RandomUtils; -import org.auioc.mcmod.arnicalib.utils.java.Validate; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.GsonHelper; import net.minecraft.world.item.ItemStack; @@ -58,7 +58,7 @@ protected ItemStack run(ItemStack stack, LootContext ctx) { } private static Potion getRandomPotion() { - return RandomUtils.pickOneFromList(OrderedForgeRegistries.Potions.get()).getValue(); + return RandomUtils.pickOneFromList(OrderedForgeRegistries.POTIONS.get()).getValue(); } diff --git a/src/main/java/org/auioc/mcmod/arnicalib/utils/game/EffectUtils.java b/src/main/java/org/auioc/mcmod/arnicalib/utils/game/EffectUtils.java index 1feffb28..8025668e 100644 --- a/src/main/java/org/auioc/mcmod/arnicalib/utils/game/EffectUtils.java +++ b/src/main/java/org/auioc/mcmod/arnicalib/utils/game/EffectUtils.java @@ -82,7 +82,7 @@ static List getAllEffects() { static MobEffect getRandomEffect(boolean useOrderedRegestry) { if (useOrderedRegestry) { - return RandomUtils.pickOneFromList(OrderedForgeRegistries.MobEffects.get()).getValue(); + return RandomUtils.pickOneFromList(OrderedForgeRegistries.MOB_EFFECTS.get()).getValue(); } return RandomUtils.pickOneFromCollection(ForgeRegistries.MOB_EFFECTS.getValues()); } diff --git a/src/main/java/org/auioc/mcmod/arnicalib/utils/game/OrderedForgeRegistries.java b/src/main/java/org/auioc/mcmod/arnicalib/utils/game/OrderedForgeRegistries.java index 70be9889..d043f7cf 100644 --- a/src/main/java/org/auioc/mcmod/arnicalib/utils/game/OrderedForgeRegistries.java +++ b/src/main/java/org/auioc/mcmod/arnicalib/utils/game/OrderedForgeRegistries.java @@ -7,6 +7,7 @@ import java.util.Map; import java.util.Map.Entry; import org.apache.logging.log4j.Marker; +import org.auioc.mcmod.arnicalib.api.java.holder.LazyObjectHolder; import org.auioc.mcmod.arnicalib.utils.LogUtil; import org.auioc.mcmod.arnicalib.utils.java.Validate; import net.minecraft.core.particles.ParticleType; @@ -19,6 +20,7 @@ import net.minecraft.world.item.alchemy.Potion; import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.material.Fluid; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.IForgeRegistry; @@ -30,13 +32,24 @@ public class OrderedForgeRegistries { private static final Marker MARKER = LogUtil.getMarker("OrderedForgeRegistries"); + public static final LazyObjectHolder>> BLOCKS = new LazyObjectHolder<>(() -> createEntryList(ForgeRegistries.BLOCKS)); + public static final LazyObjectHolder>> FLUIDS = new LazyObjectHolder<>(() -> createEntryList(ForgeRegistries.FLUIDS)); + public static final LazyObjectHolder>> ITEMS = new LazyObjectHolder<>(() -> createEntryList(ForgeRegistries.ITEMS)); + public static final LazyObjectHolder>> SOUND_EVENTS = new LazyObjectHolder<>(() -> createEntryList(ForgeRegistries.SOUND_EVENTS)); + public static final LazyObjectHolder>> MOB_EFFECTS = new LazyObjectHolder<>(() -> createEntryList(ForgeRegistries.MOB_EFFECTS)); + public static final LazyObjectHolder>> POTIONS = new LazyObjectHolder<>(() -> createEntryList(ForgeRegistries.POTIONS)); + public static final LazyObjectHolder>> ENCHANTMENTS = new LazyObjectHolder<>(() -> createEntryList(ForgeRegistries.ENCHANTMENTS)); + public static final LazyObjectHolder>>> ENTITIES = new LazyObjectHolder<>(() -> createEntryList(ForgeRegistries.ENTITIES)); + public static final LazyObjectHolder>>> BLOCK_ENTITIES = new LazyObjectHolder<>(() -> createEntryList(ForgeRegistries.BLOCK_ENTITIES)); + public static final LazyObjectHolder>>> PARTICLE_TYPES = new LazyObjectHolder<>(() -> createEntryList(ForgeRegistries.PARTICLE_TYPES)); + private static > List> createEntryList(IForgeRegistry iRegistry) { Validate.isTrue(iRegistry instanceof IForgeRegistryModifiable, "Only supports IForgeRegistryModifiable"); IForgeRegistryModifiable registry = (IForgeRegistryModifiable) iRegistry; ResourceLocation name = registry.getRegistryName(); - LOGGER.info(MARKER, "Creating entry list of registry " + name); + LOGGER.info(MARKER, "Creating entry list of registry '" + name + "'"); Validate.isTrue(registry.isLocked(), "The entry list can only be created from a frozen registry"); @@ -48,73 +61,8 @@ private static > List> ENTRIES = createEntryList(ForgeRegistries.BLOCKS); - - public static List> get() { - return ENTRIES; - } - } - public static class Fluids { - private static final List> ENTRIES = createEntryList(ForgeRegistries.FLUIDS); - - public static List> get() { - return ENTRIES; - } - } - public static class Items { - private static final List> ENTRIES = createEntryList(ForgeRegistries.ITEMS); - - public static List> get() { - return ENTRIES; - } - } - public static class MobEffects { - private static final List> ENTRIES = createEntryList(ForgeRegistries.MOB_EFFECTS); - - public static List> get() { - return ENTRIES; - } - } - public static class SoundEvents { - private static final List> ENTRIES = createEntryList(ForgeRegistries.SOUND_EVENTS); - - public static List> get() { - return ENTRIES; - } - } - public static class Potions { - private static final List> ENTRIES = createEntryList(ForgeRegistries.POTIONS); - - public static List> get() { - return ENTRIES; - } - } - public static class Enchantments { - private static final List> ENTRIES = createEntryList(ForgeRegistries.ENCHANTMENTS); - - public static List> get() { - return ENTRIES; - } - } - public static class Entities { - private static final List>> ENTRIES = createEntryList(ForgeRegistries.ENTITIES); - - public static List>> get() { - return ENTRIES; - } - } - public static class ParticleTypes { - private static final List>> ENTRIES = createEntryList(ForgeRegistries.PARTICLE_TYPES); - - public static List>> get() { - return ENTRIES; - } - } - }