From 1af59a87290a85355cc118f0f6189eb0e80c7a44 Mon Sep 17 00:00:00 2001 From: lcy0x1 Date: Mon, 9 Sep 2024 11:40:58 +0800 Subject: [PATCH] add holder lookup provider to adavncement and loot table provider --- .../providers/RegistrateAdvancementProvider.java | 10 ++++++++++ .../loot/RegistrateLootTableProvider.java | 14 ++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/main/java/com/tterrag/registrate/providers/RegistrateAdvancementProvider.java b/src/main/java/com/tterrag/registrate/providers/RegistrateAdvancementProvider.java index dc02d3a..b00b712 100644 --- a/src/main/java/com/tterrag/registrate/providers/RegistrateAdvancementProvider.java +++ b/src/main/java/com/tterrag/registrate/providers/RegistrateAdvancementProvider.java @@ -4,15 +4,18 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.tterrag.registrate.AbstractRegistrate; +import lombok.Getter; import lombok.extern.log4j.Log4j2; import net.minecraft.advancements.Advancement; import net.minecraft.advancements.AdvancementHolder; +import net.minecraft.core.Holder; import net.minecraft.core.HolderLookup; import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; import net.minecraft.network.chat.MutableComponent; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.neoforged.fml.LogicalSide; import net.neoforged.neoforge.common.conditions.ICondition; @@ -37,6 +40,8 @@ public class RegistrateAdvancementProvider implements RegistrateProvider, Consum private final PackOutput packOutput; private final CompletableFuture registriesLookup; private final List> advancementsToSave = Lists.newArrayList(); + @Getter + private HolderLookup.Provider provider; public RegistrateAdvancementProvider(AbstractRegistrate owner, PackOutput packOutputIn, CompletableFuture registriesLookupIn) { this.owner = owner; @@ -44,6 +49,10 @@ public RegistrateAdvancementProvider(AbstractRegistrate owner, PackOutput pac this.registriesLookup = registriesLookupIn; } + public Holder resolve(ResourceKey key) { + return provider.lookupOrThrow(key.registryKey()).getOrThrow(key); + } + @Override public LogicalSide getSide() { return LogicalSide.SERVER; @@ -63,6 +72,7 @@ public MutableComponent desc(String category, String name, String desc) { @Override public CompletableFuture run(CachedOutput cache) { return registriesLookup.thenCompose(lookup -> { + this.provider = lookup; advancementsToSave.clear(); try { diff --git a/src/main/java/com/tterrag/registrate/providers/loot/RegistrateLootTableProvider.java b/src/main/java/com/tterrag/registrate/providers/loot/RegistrateLootTableProvider.java index 698a1de..7adafd2 100644 --- a/src/main/java/com/tterrag/registrate/providers/loot/RegistrateLootTableProvider.java +++ b/src/main/java/com/tterrag/registrate/providers/loot/RegistrateLootTableProvider.java @@ -10,8 +10,11 @@ import com.tterrag.registrate.util.nullness.NonNullBiFunction; import com.tterrag.registrate.util.nullness.NonNullConsumer; +import lombok.Getter; +import net.minecraft.core.Holder; import net.minecraft.core.HolderLookup; import net.minecraft.core.WritableRegistry; +import net.minecraft.data.CachedOutput; import net.minecraft.data.PackOutput; import net.minecraft.data.loot.LootTableProvider; import net.minecraft.data.loot.LootTableSubProvider; @@ -69,9 +72,20 @@ public LootContextParamSet getLootSet() { private final Multimap, LootTable.Builder>>> lootActions = HashMultimap.create(); private final Set currentLootCreators = new HashSet<>(); + private CompletableFuture provider; + public RegistrateLootTableProvider(AbstractRegistrate parent, PackOutput packOutput, CompletableFuture provider) { super(packOutput, Set.of(), VanillaLootTableProvider.create(packOutput, provider).getTables(), provider); this.parent = parent; + this.provider = provider; + } + + public HolderLookup.Provider getProvider(){ + return provider.getNow(null); + } + + public Holder resolve(ResourceKey key) { + return getProvider().lookupOrThrow(key.registryKey()).getOrThrow(key); } @Override