From 10eff32f2c1dbb100b52d7121eec92cb787ec0b5 Mon Sep 17 00:00:00 2001 From: Leclowndu93150 Date: Sat, 5 Oct 2024 23:22:29 +0200 Subject: [PATCH] hell --- .../data/moreplates/recipe/bronze_plate.json | 20 --- .../data/moreplates/recipe/copper_plate.json | 20 --- .../data/moreplates/recipe/gold_plate.json | 20 --- .../data/moreplates/recipe/iron_plate.json | 20 --- .../data/moreplates/recipe/lead_plate.json | 20 --- .../moreplates/recipe/netherite_plate.json | 20 --- .../data/moreplates/recipe/osmium_plate.json | 20 --- .../recipe/refined_glowstone_plate.json | 20 --- .../recipe/refined_obsidian_plate.json | 20 --- .../data/moreplates/recipe/steel_plate.json | 20 --- .../data/moreplates/recipe/tin_plate.json | 20 --- .../data/moreplates/recipe/uranium_plate.json | 20 --- .../moreplates/MorePlatesMod.java | 2 + .../moreplates/datagen/DynamicDataPack.java | 121 ++++++++++++++++++ .../moreplates/datagen/RecipesProvider.java | 2 +- 15 files changed, 124 insertions(+), 241 deletions(-) delete mode 100644 src/generated/resources/data/moreplates/recipe/bronze_plate.json delete mode 100644 src/generated/resources/data/moreplates/recipe/copper_plate.json delete mode 100644 src/generated/resources/data/moreplates/recipe/gold_plate.json delete mode 100644 src/generated/resources/data/moreplates/recipe/iron_plate.json delete mode 100644 src/generated/resources/data/moreplates/recipe/lead_plate.json delete mode 100644 src/generated/resources/data/moreplates/recipe/netherite_plate.json delete mode 100644 src/generated/resources/data/moreplates/recipe/osmium_plate.json delete mode 100644 src/generated/resources/data/moreplates/recipe/refined_glowstone_plate.json delete mode 100644 src/generated/resources/data/moreplates/recipe/refined_obsidian_plate.json delete mode 100644 src/generated/resources/data/moreplates/recipe/steel_plate.json delete mode 100644 src/generated/resources/data/moreplates/recipe/tin_plate.json delete mode 100644 src/generated/resources/data/moreplates/recipe/uranium_plate.json create mode 100644 src/main/java/com/portingdeadmods/moreplates/datagen/DynamicDataPack.java diff --git a/src/generated/resources/data/moreplates/recipe/bronze_plate.json b/src/generated/resources/data/moreplates/recipe/bronze_plate.json deleted file mode 100644 index 3f3217f..0000000 --- a/src/generated/resources/data/moreplates/recipe/bronze_plate.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "A": { - "item": "minecraft:stick" - }, - "B": { - "item": "mekanism:ingot_bronze" - } - }, - "pattern": [ - "AB ", - "A " - ], - "result": { - "count": 1, - "id": "moreplates:bronze_plate" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/moreplates/recipe/copper_plate.json b/src/generated/resources/data/moreplates/recipe/copper_plate.json deleted file mode 100644 index 12f3a7a..0000000 --- a/src/generated/resources/data/moreplates/recipe/copper_plate.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "A": { - "item": "minecraft:stick" - }, - "B": { - "item": "minecraft:copper_ingot" - } - }, - "pattern": [ - "AB ", - "A " - ], - "result": { - "count": 1, - "id": "moreplates:copper_plate" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/moreplates/recipe/gold_plate.json b/src/generated/resources/data/moreplates/recipe/gold_plate.json deleted file mode 100644 index cdead4b..0000000 --- a/src/generated/resources/data/moreplates/recipe/gold_plate.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "A": { - "item": "minecraft:stick" - }, - "B": { - "item": "minecraft:gold_ingot" - } - }, - "pattern": [ - "AB ", - "A " - ], - "result": { - "count": 1, - "id": "moreplates:gold_plate" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/moreplates/recipe/iron_plate.json b/src/generated/resources/data/moreplates/recipe/iron_plate.json deleted file mode 100644 index 885ddb9..0000000 --- a/src/generated/resources/data/moreplates/recipe/iron_plate.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "A": { - "item": "minecraft:stick" - }, - "B": { - "item": "minecraft:iron_ingot" - } - }, - "pattern": [ - "AB ", - "A " - ], - "result": { - "count": 1, - "id": "moreplates:iron_plate" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/moreplates/recipe/lead_plate.json b/src/generated/resources/data/moreplates/recipe/lead_plate.json deleted file mode 100644 index 5480814..0000000 --- a/src/generated/resources/data/moreplates/recipe/lead_plate.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "A": { - "item": "minecraft:stick" - }, - "B": { - "item": "mekanism:ingot_lead" - } - }, - "pattern": [ - "AB ", - "A " - ], - "result": { - "count": 1, - "id": "moreplates:lead_plate" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/moreplates/recipe/netherite_plate.json b/src/generated/resources/data/moreplates/recipe/netherite_plate.json deleted file mode 100644 index 9c98df8..0000000 --- a/src/generated/resources/data/moreplates/recipe/netherite_plate.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "A": { - "item": "minecraft:stick" - }, - "B": { - "item": "minecraft:netherite_ingot" - } - }, - "pattern": [ - "AB ", - "A " - ], - "result": { - "count": 1, - "id": "moreplates:netherite_plate" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/moreplates/recipe/osmium_plate.json b/src/generated/resources/data/moreplates/recipe/osmium_plate.json deleted file mode 100644 index c747027..0000000 --- a/src/generated/resources/data/moreplates/recipe/osmium_plate.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "A": { - "item": "minecraft:stick" - }, - "B": { - "item": "mekanism:ingot_osmium" - } - }, - "pattern": [ - "AB ", - "A " - ], - "result": { - "count": 1, - "id": "moreplates:osmium_plate" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/moreplates/recipe/refined_glowstone_plate.json b/src/generated/resources/data/moreplates/recipe/refined_glowstone_plate.json deleted file mode 100644 index 6e63da6..0000000 --- a/src/generated/resources/data/moreplates/recipe/refined_glowstone_plate.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "A": { - "item": "minecraft:stick" - }, - "B": { - "item": "mekanism:ingot_refined_glowstone" - } - }, - "pattern": [ - "AB ", - "A " - ], - "result": { - "count": 1, - "id": "moreplates:refined_glowstone_plate" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/moreplates/recipe/refined_obsidian_plate.json b/src/generated/resources/data/moreplates/recipe/refined_obsidian_plate.json deleted file mode 100644 index 900fe2d..0000000 --- a/src/generated/resources/data/moreplates/recipe/refined_obsidian_plate.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "A": { - "item": "minecraft:stick" - }, - "B": { - "item": "mekanism:ingot_refined_obsidian" - } - }, - "pattern": [ - "AB ", - "A " - ], - "result": { - "count": 1, - "id": "moreplates:refined_obsidian_plate" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/moreplates/recipe/steel_plate.json b/src/generated/resources/data/moreplates/recipe/steel_plate.json deleted file mode 100644 index 4625007..0000000 --- a/src/generated/resources/data/moreplates/recipe/steel_plate.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "A": { - "item": "minecraft:stick" - }, - "B": { - "item": "mekanism:ingot_steel" - } - }, - "pattern": [ - "AB ", - "A " - ], - "result": { - "count": 1, - "id": "moreplates:steel_plate" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/moreplates/recipe/tin_plate.json b/src/generated/resources/data/moreplates/recipe/tin_plate.json deleted file mode 100644 index c9a621e..0000000 --- a/src/generated/resources/data/moreplates/recipe/tin_plate.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "A": { - "item": "minecraft:stick" - }, - "B": { - "item": "mekanism:ingot_tin" - } - }, - "pattern": [ - "AB ", - "A " - ], - "result": { - "count": 1, - "id": "moreplates:tin_plate" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/moreplates/recipe/uranium_plate.json b/src/generated/resources/data/moreplates/recipe/uranium_plate.json deleted file mode 100644 index a7e38dd..0000000 --- a/src/generated/resources/data/moreplates/recipe/uranium_plate.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "A": { - "item": "minecraft:stick" - }, - "B": { - "item": "mekanism:ingot_uranium" - } - }, - "pattern": [ - "AB ", - "A " - ], - "result": { - "count": 1, - "id": "moreplates:uranium_plate" - } -} \ No newline at end of file diff --git a/src/main/java/com/portingdeadmods/moreplates/MorePlatesMod.java b/src/main/java/com/portingdeadmods/moreplates/MorePlatesMod.java index acf99fe..92a7b5b 100644 --- a/src/main/java/com/portingdeadmods/moreplates/MorePlatesMod.java +++ b/src/main/java/com/portingdeadmods/moreplates/MorePlatesMod.java @@ -1,5 +1,6 @@ package com.portingdeadmods.moreplates; +import com.portingdeadmods.moreplates.datagen.DynamicDataPack; import com.portingdeadmods.moreplates.datagen.DynamicPack; import com.portingdeadmods.moreplates.registries.MPCreativeTabs; import com.portingdeadmods.moreplates.registries.MPItems; @@ -23,6 +24,7 @@ public MorePlatesMod(IEventBus modEventBus, ModContainer modContainer) { MPCreativeTabs.CREATIVE_MODE_TABS.register(modEventBus); modEventBus.addListener(MorePlatesMod::onCreativeTab); DynamicPack.init(); + DynamicDataPack.INSTANCE.register(); } public static void onCreativeTab(BuildCreativeModeTabContentsEvent event) { diff --git a/src/main/java/com/portingdeadmods/moreplates/datagen/DynamicDataPack.java b/src/main/java/com/portingdeadmods/moreplates/datagen/DynamicDataPack.java new file mode 100644 index 0000000..0ae0602 --- /dev/null +++ b/src/main/java/com/portingdeadmods/moreplates/datagen/DynamicDataPack.java @@ -0,0 +1,121 @@ +package com.portingdeadmods.moreplates.datagen; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.portingdeadmods.moreplates.MorePlatesMod; +import com.portingdeadmods.moreplates.config.MPConfig; +import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; +import net.mehvahdjukaar.moonlight.api.resources.pack.DynServerResourcesGenerator; +import net.mehvahdjukaar.moonlight.api.resources.pack.DynamicTexturePack; +import net.minecraft.advancements.Advancement; +import net.minecraft.advancements.AdvancementHolder; +import net.minecraft.advancements.critereon.InventoryChangeTrigger; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.data.recipes.RecipeCategory; +import net.minecraft.data.recipes.RecipeOutput; +import net.minecraft.data.recipes.ShapedRecipeBuilder; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.repository.Pack; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.Recipe; +import net.neoforged.neoforge.common.conditions.ICondition; +import org.apache.logging.log4j.Logger; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class DynamicDataPack extends DynServerResourcesGenerator { + + public static final DynamicDataPack INSTANCE = new DynamicDataPack(); + + public DynamicDataPack() { + super(new net.mehvahdjukaar.moonlight.api.resources.pack.DynamicDataPack(ResourceLocation.fromNamespaceAndPath(MorePlatesMod.MODID,"generated_pack"), Pack.Position.TOP, false, false)); + this.dynamicPack.setGenerateDebugResources(PlatHelper.isDev()); + } + + @Override + public Logger getLogger() { + return MorePlatesMod.LOGGER; + } + + @Override + public boolean dependsOnLoadedPacks() { + return true; + } + + @Override + public void regenerateDynamicAssets(ResourceManager manager) { + BuiltInRegistries.ITEM.forEach((item) -> { + if (item.getDescriptionId().contains(MorePlatesMod.MODID)) { + // Get the raw item name without prefixes + String rawName = item.getDescriptionId() + .replace("item.", "") + .replace(MorePlatesMod.MODID + ":", "") + .replace("moreplates.", ""); + + String fullName = MorePlatesMod.MODID + ":" + rawName; + String fullNameOutput = MorePlatesMod.MODID+":"+rawName; + String fullNameInput = MPConfig.getIngotFromPlate(fullNameOutput); + if(fullNameInput == null) return; + String namespace = fullNameInput.split(":")[0]; + String path = fullNameInput.split(":")[1]; + + ItemStack inputItem = BuiltInRegistries.ITEM.get(ResourceLocation.fromNamespaceAndPath(namespace,path)).getDefaultInstance(); + + Item ingot = inputItem.getItem(); + ShapedRecipeBuilder recipeBuilder = ShapedRecipeBuilder.shaped(RecipeCategory.MISC, item) + .pattern("AB") + .pattern("A ") + .define('A', Items.STICK) + .define('B', ingot) + .unlockedBy("has_item", InventoryChangeTrigger.TriggerInstance.hasItems(ingot)); + + recipeBuilder.save(new RecipeOutput() { + @Override + public Advancement.@NotNull Builder advancement() { + return Advancement.Builder.advancement(); + } + + @Override + public void accept(ResourceLocation resourceLocation, Recipe recipe, @Nullable AdvancementHolder advancementHolder, ICondition... iConditions) { + dynamicPack.addRecipe(recipe); + } + }); + + } + }); + } + + + private static void removeNullEntries(JsonObject jsonObject) { + jsonObject.entrySet().removeIf(entry -> entry.getValue().isJsonNull()); + + jsonObject.entrySet().forEach(entry -> { + JsonElement element = entry.getValue(); + if (element.isJsonObject()) { + removeNullEntries(element.getAsJsonObject()); + } else if (element.isJsonArray()) { + removeNullEntries(element.getAsJsonArray()); + } + }); + } + + private static void removeNullEntries(JsonArray jsonArray) { + JsonArray newArray = new JsonArray(); + jsonArray.forEach(element -> { + if (!element.isJsonNull()) { + if (element.isJsonObject()) { + removeNullEntries(element.getAsJsonObject().getAsJsonArray()); + } else if (element.isJsonArray()) { + removeNullEntries(element.getAsJsonArray()); + } + newArray.add(element); + } + }); + for (int i = 0; i < jsonArray.size(); i++) jsonArray.remove(i); + jsonArray.addAll(newArray); + } +} diff --git a/src/main/java/com/portingdeadmods/moreplates/datagen/RecipesProvider.java b/src/main/java/com/portingdeadmods/moreplates/datagen/RecipesProvider.java index 2465acb..dc220ea 100644 --- a/src/main/java/com/portingdeadmods/moreplates/datagen/RecipesProvider.java +++ b/src/main/java/com/portingdeadmods/moreplates/datagen/RecipesProvider.java @@ -41,7 +41,7 @@ protected void buildRecipes(@NotNull RecipeOutput pRecipeOutput) { ShapedRecipeBuilder.shaped(RecipeCategory.MISC, outputItem) .pattern("AB ") - .pattern("A ") + .pattern("B ") .define('A', Items.STICK) .define('B', inputItem.getItem()) .unlockedBy("has_item", has(inputItem.getItem()))