diff --git a/gradle.properties b/gradle.properties index 83554fe..32e5540 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx4G maven_group = plus.dragons.createdragonlib -mod_version = 1.4.0 +mod_version = 1.5.0 # https://fabricmc.net/develop minecraft_version = 1.20.1 diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/src/main/java/plus/dragons/createdragonlib/advancement/AdvancementFactory.java b/src/main/java/plus/dragons/createdragonlib/advancement/AdvancementFactory.java index c05a077..8b4f8fa 100644 --- a/src/main/java/plus/dragons/createdragonlib/advancement/AdvancementFactory.java +++ b/src/main/java/plus/dragons/createdragonlib/advancement/AdvancementFactory.java @@ -1,20 +1,22 @@ package plus.dragons.createdragonlib.advancement; import com.simibubi.create.foundation.advancement.AllAdvancements; -import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; -import net.minecraft.data.PackOutput; +import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator.Pack; +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import plus.dragons.createdragonlib.advancement.critereon.TriggerFactory; public class AdvancementFactory { private final String modid; - private final AdvancementGen advancementGen; private final TriggerFactory triggerFactory = new TriggerFactory(); private final Runnable preTask; + private final String name; + private final AdvancementGen advancementGen; private AdvancementFactory(String name, String modid, Runnable preTask) { + this.name = name; this.modid = modid; - this.advancementGen = new AdvancementGen(name, modid); this.preTask = preTask; + this.advancementGen = new AdvancementGen(name, modid); } public static AdvancementFactory create(String name, String modid, Runnable preTask) { @@ -29,11 +31,12 @@ public TriggerFactory getTriggerFactory() { return triggerFactory; } - public void datagen(final FabricDataGenerator datagen) { + public void datagen(final Pack pack) { preTask.run(); - advancementGen.generator = datagen; - FabricDataGenerator.Pack pack = datagen.createPack(); - pack.addProvider((PackOutput output) -> advancementGen); + pack.addProvider((FabricDataOutput output) -> { + advancementGen.output = output; + return advancementGen; + }); } public void register() { diff --git a/src/main/java/plus/dragons/createdragonlib/advancement/AdvancementGen.java b/src/main/java/plus/dragons/createdragonlib/advancement/AdvancementGen.java index 6eb2a3c..c10ccc0 100644 --- a/src/main/java/plus/dragons/createdragonlib/advancement/AdvancementGen.java +++ b/src/main/java/plus/dragons/createdragonlib/advancement/AdvancementGen.java @@ -1,15 +1,17 @@ package plus.dragons.createdragonlib.advancement; import com.google.common.collect.Sets; +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.minecraft.advancements.Advancement; import net.minecraft.data.CachedOutput; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; +import net.minecraft.data.PackOutput.PathProvider; import net.minecraft.data.DataProvider; import net.minecraft.resources.ResourceLocation; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.jetbrains.annotations.ApiStatus; -import plus.dragons.createdragonlib.mixin.DataGeneratorAccessor; import java.nio.file.Path; import java.util.Set; @@ -21,7 +23,7 @@ class AdvancementGen implements DataProvider { private static final Logger LOGGER = LogManager.getLogger(); private final String name; private final String modid; - DataGenerator generator; + FabricDataOutput output; AdvancementGen(String name, String modid) { this.name = name; @@ -30,17 +32,15 @@ class AdvancementGen implements DataProvider { @Override public CompletableFuture run(CachedOutput cache) { - Path path = ((DataGeneratorAccessor) this.generator).getRootOutputFolder(); + PathProvider pathProvider = output.createPathProvider(PackOutput.Target.DATA_PACK, "advancements"); return CompletableFuture.runAsync(() -> { Set set = Sets.newHashSet(); Consumer consumer = advancement -> { - if (!set.add(advancement.getId())) + var id = advancement.getId(); + if (!set.add(id)) throw new IllegalStateException("Duplicate advancement " + advancement.getId()); - Path advancementPath = path.resolve("data/" - + advancement.getId().getNamespace() + "/advancements/" - + advancement.getId().getPath() + ".json" - ); + Path advancementPath = pathProvider.json(id); DataProvider.saveStable(cache, advancement.deconstruct().serializeToJson(), advancementPath); }; var advancements = AdvancementHolder.ENTRIES_MAP.get(modid); diff --git a/src/main/java/plus/dragons/createdragonlib/lang/LangFactory.java b/src/main/java/plus/dragons/createdragonlib/lang/LangFactory.java index 8e0897b..5219672 100644 --- a/src/main/java/plus/dragons/createdragonlib/lang/LangFactory.java +++ b/src/main/java/plus/dragons/createdragonlib/lang/LangFactory.java @@ -2,8 +2,8 @@ import com.google.gson.JsonObject; import com.simibubi.create.foundation.ponder.PonderLocalization; -import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; -import net.minecraft.data.PackOutput; +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator.Pack; import plus.dragons.createdragonlib.advancement.AdvancementHolder; import java.util.Collections; @@ -26,10 +26,11 @@ public static LangFactory create(String name, String modid) { * Register the {@link LangMerger} instance to {@link FabricDataGenerator}.
* Should be called in the mod's main class' constructor.
*/ - public void datagen(final FabricDataGenerator datagen) { - langMerger.dataGenerator = datagen; - FabricDataGenerator.Pack pack = datagen.createPack(); - pack.addProvider((PackOutput output) -> langMerger); + public void datagen(final Pack pack) { + pack.addProvider((FabricDataOutput output) -> { + langMerger.output = output; + return langMerger; + }); } /** diff --git a/src/main/java/plus/dragons/createdragonlib/lang/LangMerger.java b/src/main/java/plus/dragons/createdragonlib/lang/LangMerger.java index 0812040..8dfece4 100644 --- a/src/main/java/plus/dragons/createdragonlib/lang/LangMerger.java +++ b/src/main/java/plus/dragons/createdragonlib/lang/LangMerger.java @@ -9,9 +9,12 @@ import com.simibubi.create.foundation.ponder.PonderScene; import com.simibubi.create.foundation.utility.FilesHelper; import net.minecraft.data.CachedOutput; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; +import net.minecraft.data.PackOutput.PathProvider; import net.minecraft.data.DataProvider; import net.minecraft.util.GsonHelper; +import net.minecraft.resources.ResourceLocation; +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import org.apache.commons.lang3.mutable.MutableBoolean; import org.apache.commons.lang3.mutable.MutableInt; import org.apache.commons.lang3.mutable.MutableObject; @@ -19,7 +22,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.jetbrains.annotations.ApiStatus; -import plus.dragons.createdragonlib.mixin.DataGeneratorAccessor; import java.io.*; import java.nio.charset.StandardCharsets; @@ -76,7 +78,7 @@ class LangMerger implements DataProvider { private final Map existingButActuallyMissingTranslationTally = new HashMap<>(); final List partials = new ArrayList<>(); - DataGenerator dataGenerator; + FabricDataOutput output; List ignore = new ArrayList<>(); LangMerger(String name, String modid) { @@ -91,9 +93,8 @@ public String getName() { @Override public CompletableFuture run(CachedOutput cache) { - Path path = ((DataGeneratorAccessor) this.dataGenerator).getRootOutputFolder() - .resolve("assets/" + modid + "/lang/" + "en_us.json"); - + Path path = output.createPathProvider(PackOutput.Target.RESOURCE_PACK, "lang") + .json(new ResourceLocation(modid, "en_us")); return CompletableFuture.runAsync(() -> { for(Pair pair : getAllLocalizationFiles()) { @@ -129,8 +130,8 @@ public CompletableFuture run(CachedOutput cache) { save(cache, mergedLangData, -1, path, "Merging en_us.json with hand-written lang entries..."); for(Entry> localization : populatedLangData.entrySet()) { String key = localization.getKey(); - Path populatedLangPath = ((DataGeneratorAccessor) this.dataGenerator).getRootOutputFolder() - .resolve("assets/" + modid + "/lang/unfinished/" + key); + Path populatedLangPath = output.createPathProvider(PackOutput.Target.RESOURCE_PACK, "lang/unfinished") + .json(new ResourceLocation(modid, key.substring(0, key.lastIndexOf(".")))); save(cache, localization.getValue(), missingTranslationTally.get(key).intValue() + existingButActuallyMissingTranslationTally.get(key).intValue(), populatedLangPath, "Populating " + key + " with missing entries...");