mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-12 00:07:45 +00:00
Replace AdvancementProvider patch with Forge helper (#9188)
This commit is contained in:
1 parent
2ea16d89ca
commit
4802ceeccc
4 files changed
+86
-65
No files matched your search
@@ -1,53 +1,14 @@
|
||||
--- a/net/minecraft/data/advancements/AdvancementProvider.java
|
||||
+++ b/net/minecraft/data/advancements/AdvancementProvider.java
|
||||
@@ -18,8 +_,19 @@
|
||||
@@ -14,6 +_,11 @@
|
||||
import net.minecraft.data.PackOutput;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
|
||||
+/**
|
||||
+ * @deprecated Forge: Use {@link net.minecraftforge.common.data.ForgeAdvancementProvider} instead,
|
||||
+ * provides ease of access for the {@link net.minecraftforge.common.data.ExistingFileHelper} in the generator
|
||||
+ */
|
||||
+@Deprecated
|
||||
public class AdvancementProvider implements DataProvider {
|
||||
private final PackOutput.PathProvider f_236156_;
|
||||
private final List<AdvancementSubProvider> f_244266_;
|
||||
private final CompletableFuture<HolderLookup.Provider> f_254664_;
|
||||
+ @org.jetbrains.annotations.Nullable
|
||||
+ protected final net.minecraftforge.common.data.ExistingFileHelper existingFileHelper;
|
||||
|
||||
+ /**
|
||||
+ * @deprecated Forge: Use the {@linkplain #AdvancementProvider(PackOutput, CompletableFuture, List, net.minecraftforge.common.data.ExistingFileHelper) existing file helper variant}
|
||||
+ */
|
||||
+ @Deprecated
|
||||
public AdvancementProvider(PackOutput p_256529_, CompletableFuture<HolderLookup.Provider> p_255722_, List<AdvancementSubProvider> p_255883_) {
|
||||
+ this(p_256529_, p_255722_, p_255883_, null);
|
||||
+ }
|
||||
+
|
||||
+ public AdvancementProvider(PackOutput p_256529_, CompletableFuture<HolderLookup.Provider> p_255722_, List<AdvancementSubProvider> p_255883_, @org.jetbrains.annotations.Nullable net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) {
|
||||
+ this.existingFileHelper = existingFileHelper;
|
||||
this.f_236156_ = p_256529_.m_245269_(PackOutput.Target.DATA_PACK, "advancements");
|
||||
this.f_244266_ = p_255883_;
|
||||
this.f_254664_ = p_255722_;
|
||||
@@ -38,14 +_,27 @@
|
||||
}
|
||||
};
|
||||
|
||||
- for(AdvancementSubProvider advancementsubprovider : this.f_244266_) {
|
||||
- advancementsubprovider.m_245571_(p_255484_, consumer);
|
||||
- }
|
||||
+ // Forge: Allow mods to take control of advancement registration
|
||||
+ this.registerAdvancements(p_255484_, consumer, this.existingFileHelper);
|
||||
|
||||
return CompletableFuture.allOf(list.toArray((p_253393_) -> {
|
||||
return new CompletableFuture[p_253393_];
|
||||
}));
|
||||
});
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Registers all {@linkplain Advancement advancements}.
|
||||
+ *
|
||||
+ * @param registries the registries available for lookup including all registries in {@link net.minecraft.core.registries.Registries}
|
||||
+ * @param saver a {@link Consumer} which saves any advancements provided
|
||||
+ * @param existingFileHelper the existing file helper to check for the existence of files like parent advancements
|
||||
+ * @see Advancement.Builder#save(Consumer, ResourceLocation, net.minecraftforge.common.data.ExistingFileHelper)
|
||||
+ */
|
||||
+ protected void registerAdvancements(HolderLookup.Provider registries, Consumer<Advancement> saver, net.minecraftforge.common.data.ExistingFileHelper existingFileHelper) {
|
||||
+ for (AdvancementSubProvider subProvider : this.f_244266_) {
|
||||
+ subProvider.m_245571_(registries, saver);
|
||||
+ }
|
||||
}
|
||||
|
||||
public final String m_6055_() {
|
||||
@@ -0,0 +1,67 @@
|
||||
/*
|
||||
* Copyright (c) Forge Development LLC and contributors
|
||||
* SPDX-License-Identifier: LGPL-2.1-only
|
||||
*/
|
||||
|
||||
package net.minecraftforge.common.data;
|
||||
|
||||
import net.minecraft.advancements.Advancement;
|
||||
import net.minecraft.core.HolderLookup;
|
||||
import net.minecraft.data.PackOutput;
|
||||
import net.minecraft.data.advancements.AdvancementProvider;
|
||||
import net.minecraft.data.advancements.AdvancementSubProvider;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
/**
|
||||
* An extension of the {@link AdvancementProvider} to provide a feature-complete
|
||||
* experience to generate modded advancements.
|
||||
*/
|
||||
public abstract class ForgeAdvancementProvider extends AdvancementProvider
|
||||
{
|
||||
/**
|
||||
* Default constructor.
|
||||
*
|
||||
* @param output the target directory of the data generator
|
||||
* @param registries a future of a lookup for registries and their objects
|
||||
* @param existingFileHelper a helper used to find whether a file exists
|
||||
* @param subProviders the generators used to create the advancements
|
||||
*/
|
||||
public ForgeAdvancementProvider(PackOutput output, CompletableFuture<HolderLookup.Provider> registries, ExistingFileHelper existingFileHelper, List<AdvancementGenerator> subProviders)
|
||||
{
|
||||
super(output, registries, subProviders.stream().map(generator -> generator.toSubProvider(existingFileHelper)).toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* An interface used to generated modded advancements. This is parallel to
|
||||
* vanilla's {@link AdvancementSubProvider} with access to the {@link ExistingFileHelper}.
|
||||
*
|
||||
* @see AdvancementSubProvider
|
||||
*/
|
||||
public interface AdvancementGenerator
|
||||
{
|
||||
/**
|
||||
* A method used to generate advancements for a mod. Advancements should be
|
||||
* built via {@link net.minecraftforge.common.extensions.IForgeAdvancementBuilder#save(Consumer, ResourceLocation, ExistingFileHelper)}.
|
||||
*
|
||||
* @param registries a lookup for registries and their objects
|
||||
* @param saver a consumer used to write advancements to a file
|
||||
* @param existingFileHelper a helper used to find whether a file exists
|
||||
*/
|
||||
void generate(HolderLookup.Provider registries, Consumer<Advancement> saver, ExistingFileHelper existingFileHelper);
|
||||
|
||||
/**
|
||||
* Creates an {@link AdvancementSubProvider} from this generator.
|
||||
*
|
||||
* @param existingFileHelper a helper used to find whether a file exists
|
||||
* @return a sub provider wrapping this generator
|
||||
*/
|
||||
default AdvancementSubProvider toSubProvider(ExistingFileHelper existingFileHelper)
|
||||
{
|
||||
return (registries, saver) -> this.generate(registries, saver, existingFileHelper);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -31,7 +31,6 @@ net/minecraft/client/resources/model/MultiPartBakedModel.getQuads(Lnet/minecraft
|
||||
net/minecraft/client/resources/model/SimpleBakedModel$Builder.build(Lnet/minecraftforge/client/RenderTypeGroup;)Lnet/minecraft/client/resources/model/BakedModel;=|renderTypes
|
||||
net/minecraft/client/resources/model/SimpleBakedModel.<init>(Ljava/util/List;Ljava/util/Map;ZZZLnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/client/renderer/block/model/ItemTransforms;Lnet/minecraft/client/renderer/block/model/ItemOverrides;Lnet/minecraftforge/client/RenderTypeGroup;)V=|p_119489_,p_119490_,p_119491_,p_119492_,p_119493_,p_119494_,p_119495_,p_119496_,renderTypes
|
||||
net/minecraft/client/resources/model/WeightedBakedModel.getQuads(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/Direction;Lnet/minecraft/util/RandomSource;Lnet/minecraftforge/client/model/data/ModelData;Lnet/minecraft/client/renderer/RenderType;)Ljava/util/List;=|p_235058_,p_235059_,p_235060_,modelData,renderType
|
||||
net/minecraft/data/advancements/AdvancementProvider.<init>(Lnet/minecraft/data/PackOutput;Ljava/util/concurrent/CompletableFuture;Ljava/util/List;Lnet/minecraftforge/common/data/ExistingFileHelper;)V=|p_256529_,p_255722_,p_255883_,existingFileHelper
|
||||
net/minecraft/data/tags/BannerPatternTagsProvider.<init>(Lnet/minecraft/data/PackOutput;Ljava/util/concurrent/CompletableFuture;Ljava/lang/String;Lnet/minecraftforge/common/data/ExistingFileHelper;)V=|p_256451_,p_256420_,modId,existingFileHelper
|
||||
net/minecraft/data/tags/BiomeTagsProvider.<init>(Lnet/minecraft/data/PackOutput;Ljava/util/concurrent/CompletableFuture;Ljava/lang/String;Lnet/minecraftforge/common/data/ExistingFileHelper;)V=|p_255800_,p_256205_,modId,existingFileHelper
|
||||
net/minecraft/data/tags/CatVariantTagsProvider.<init>(Lnet/minecraft/data/PackOutput;Ljava/util/concurrent/CompletableFuture;Ljava/lang/String;Lnet/minecraftforge/common/data/ExistingFileHelper;)V=|p_256547_,p_256090_,modId,existingFileHelper
|
||||
|
||||
@@ -1016,25 +1016,19 @@ public class DataGeneratorTest
|
||||
}
|
||||
}
|
||||
|
||||
public static class Advancements extends AdvancementProvider
|
||||
public static class Advancements extends ForgeAdvancementProvider
|
||||
{
|
||||
|
||||
|
||||
public Advancements(PackOutput output, CompletableFuture<HolderLookup.Provider> providerCompletableFuture, ExistingFileHelper existingFileHelper)
|
||||
{
|
||||
super(output, providerCompletableFuture, List.of(new Provider(existingFileHelper)));
|
||||
super(output, providerCompletableFuture, existingFileHelper, List.of(new Provider()));
|
||||
}
|
||||
|
||||
private static class Provider implements AdvancementSubProvider {
|
||||
|
||||
private final ExistingFileHelper fileHelper;
|
||||
|
||||
private Provider(ExistingFileHelper fileHelper) {
|
||||
this.fileHelper = fileHelper;
|
||||
}
|
||||
private static class Provider implements AdvancementGenerator {
|
||||
|
||||
@Override
|
||||
public void generate(HolderLookup.Provider registries, Consumer<Advancement> consumer) {
|
||||
public void generate(HolderLookup.Provider registries, Consumer<Advancement> saver, ExistingFileHelper existingFileHelper) {
|
||||
Advancement.Builder.advancement().display(Items.DIRT,
|
||||
Component.translatable(Items.DIRT.getDescriptionId()),
|
||||
Component.translatable("dirt_description"),
|
||||
@@ -1044,7 +1038,7 @@ public class DataGeneratorTest
|
||||
true,
|
||||
false)
|
||||
.addCriterion("has_dirt", InventoryChangeTrigger.TriggerInstance.hasItems(Items.DIRT))
|
||||
.save(consumer, new ResourceLocation(MODID, "obtain_dirt"), fileHelper);
|
||||
.save(saver, new ResourceLocation(MODID, "obtain_dirt"), existingFileHelper);
|
||||
|
||||
Advancement.Builder.advancement().display(Items.DIAMOND_BLOCK,
|
||||
Component.translatable(Items.DIAMOND_BLOCK.getDescriptionId()),
|
||||
@@ -1055,7 +1049,7 @@ public class DataGeneratorTest
|
||||
true,
|
||||
false)
|
||||
.addCriterion("obtained_diamond_block", InventoryChangeTrigger.TriggerInstance.hasItems(Items.DIAMOND_BLOCK))
|
||||
.save(consumer, new ResourceLocation("obtain_diamond_block"), fileHelper);
|
||||
.save(saver, new ResourceLocation("obtain_diamond_block"), existingFileHelper);
|
||||
|
||||
Advancement.Builder.advancement()
|
||||
.display(Blocks.GRASS_BLOCK,
|
||||
@@ -1067,7 +1061,7 @@ public class DataGeneratorTest
|
||||
false,
|
||||
false)
|
||||
.addCriterion("crafting_table", InventoryChangeTrigger.TriggerInstance.hasItems(Blocks.CRAFTING_TABLE))
|
||||
.save(consumer, new ResourceLocation("story/root"), fileHelper);
|
||||
.save(saver, new ResourceLocation("story/root"), existingFileHelper);
|
||||
|
||||
// This should cause an error because of the parent not existing
|
||||
/* Advancement.Builder.advancement().display(Blocks.COBBLESTONE,
|
||||
@@ -1092,7 +1086,7 @@ public class DataGeneratorTest
|
||||
false)
|
||||
.addCriterion("get_cobbleStone", InventoryChangeTrigger.TriggerInstance.hasItems(Items.COBBLESTONE))
|
||||
.parent(new ResourceLocation("forge", "dummy_parent"))
|
||||
.save(consumer, new ResourceLocation("good_parent"), fileHelper);
|
||||
.save(saver, new ResourceLocation("good_parent"), existingFileHelper);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1161,4 +1155,4 @@ public class DataGeneratorTest
|
||||
// So remove modid to match
|
||||
return model.replaceAll("^\\w+:", "minecraft:");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user