Skip to content

Commit

Permalink
Fixed datagen for MI cable recipes
Browse files Browse the repository at this point in the history
  • Loading branch information
shartte committed Jan 28, 2024
1 parent fbdf7de commit ce32bcd
Show file tree
Hide file tree
Showing 11 changed files with 33 additions and 13 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"result":{"count":4,"item":"moderndynamics:ev_cable"},"ingredients":[{"item":"modern_industrialization:annealed_copper_cable"}],"type":"minecraft:crafting_shapeless","neoforge:conditions":[{"modid":"modern_industrialization","type":"neoforge:mod_loaded"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"type":"minecraft:crafting_shaped","pattern":["cc","cc"],"key":{"c":{"item":"moderndynamics:ev_cable"}},"result":{"item":"modern_industrialization:annealed_copper_cable"},"neoforge:conditions":[{"modid":"modern_industrialization","type":"neoforge:mod_loaded"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"result":{"count":4,"item":"moderndynamics:hv_cable"},"ingredients":[{"item":"modern_industrialization:aluminum_cable"}],"type":"minecraft:crafting_shapeless","neoforge:conditions":[{"modid":"modern_industrialization","type":"neoforge:mod_loaded"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"type":"minecraft:crafting_shaped","pattern":["cc","cc"],"key":{"c":{"item":"moderndynamics:hv_cable"}},"result":{"item":"modern_industrialization:aluminum_cable"},"neoforge:conditions":[{"modid":"modern_industrialization","type":"neoforge:mod_loaded"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"result":{"count":4,"item":"moderndynamics:lv_cable"},"ingredients":[{"item":"modern_industrialization:tin_cable"}],"type":"minecraft:crafting_shapeless","neoforge:conditions":[{"modid":"modern_industrialization","type":"neoforge:mod_loaded"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"type":"minecraft:crafting_shaped","pattern":["cc","cc"],"key":{"c":{"item":"moderndynamics:lv_cable"}},"result":{"item":"modern_industrialization:tin_cable"},"neoforge:conditions":[{"modid":"modern_industrialization","type":"neoforge:mod_loaded"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"result":{"count":4,"item":"moderndynamics:mv_cable"},"ingredients":[{"item":"modern_industrialization:electrum_cable"}],"type":"minecraft:crafting_shapeless","neoforge:conditions":[{"modid":"modern_industrialization","type":"neoforge:mod_loaded"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"type":"minecraft:crafting_shaped","pattern":["cc","cc"],"key":{"c":{"item":"moderndynamics:mv_cable"}},"result":{"item":"modern_industrialization:electrum_cable"},"neoforge:conditions":[{"modid":"modern_industrialization","type":"neoforge:mod_loaded"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"result":{"count":4,"item":"moderndynamics:superconductor_cable"},"ingredients":[{"item":"modern_industrialization:superconductor_cable"}],"type":"minecraft:crafting_shapeless","neoforge:conditions":[{"modid":"modern_industrialization","type":"neoforge:mod_loaded"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"type":"minecraft:crafting_shaped","pattern":["cc","cc"],"key":{"c":{"item":"moderndynamics:superconductor_cable"}},"result":{"item":"modern_industrialization:superconductor_cable"},"neoforge:conditions":[{"modid":"modern_industrialization","type":"neoforge:mod_loaded"}]}
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,15 @@
*/
package dev.technici4n.moderndynamics.data;

import com.google.common.hash.HashCode;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.mojang.serialization.JsonOps;
import dev.technici4n.moderndynamics.init.MdItems;
import dev.technici4n.moderndynamics.util.MdId;
import net.minecraft.core.HolderLookup;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.data.CachedOutput;
import net.minecraft.data.PackOutput;
import net.minecraft.data.recipes.RecipeCategory;
import net.minecraft.data.recipes.RecipeOutput;
Expand All @@ -39,7 +41,6 @@
import java.io.IOException;
import java.io.UncheckedIOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -129,19 +130,28 @@ protected void buildRecipes(RecipeOutput exporter) {
.unlockedBy("has_item_pipe", has(MdItems.ITEM_PIPE))
.unlockedBy("has_fluid_pipe", has(MdItems.FLUID_PIPE))
.save(exporter);
}

@Override
public CompletableFuture<?> run(CachedOutput output) {
generateMiCableRecipes(output);

generateMiCableRecipes("lv", "tin_cable");
generateMiCableRecipes("mv", "electrum_cable");
generateMiCableRecipes("hv", "aluminum_cable");
generateMiCableRecipes("ev", "annealed_copper_cable");
generateMiCableRecipes("superconductor", "superconductor_cable");
return super.run(output);
}

private void generateMiCableRecipes(String cableName, String miCable) {
private void generateMiCableRecipes(CachedOutput output) {
generateMiCableRecipes("lv", "tin_cable", output);
generateMiCableRecipes("mv", "electrum_cable", output);
generateMiCableRecipes("hv", "aluminum_cable", output);
generateMiCableRecipes("ev", "annealed_copper_cable", output);
generateMiCableRecipes("superconductor", "superconductor_cable", output);
}

private void generateMiCableRecipes(String cableName, String miCable, CachedOutput output) {
String mdCableItemId = MdId.of(cableName + "_cable").toString();
String miCableItemId = "modern_industrialization:" + miCable;
var condition = new ModLoadedCondition("modern_industrialization");
writeRawRecipe(MdId.of("cable/%s_from_mi".formatted(cableName)), Map.of(
writeRawRecipe(output, MdId.of("cable/%s_from_mi".formatted(cableName)), Map.of(
"type", getRecipeTypeId(RecipeSerializer.SHAPELESS_RECIPE),
"ingredients", List.of(
Map.of(
Expand All @@ -154,7 +164,7 @@ private void generateMiCableRecipes(String cableName, String miCable) {
)
), condition);

writeRawRecipe(MdId.of("cable/%s_to_mi".formatted(cableName)), Map.of(
writeRawRecipe(output, MdId.of("cable/%s_to_mi".formatted(cableName)), Map.of(
"type", getRecipeTypeId(RecipeSerializer.SHAPED_RECIPE),
"pattern", List.of("cc", "cc"),
"key", Map.of(
Expand All @@ -166,21 +176,21 @@ private void generateMiCableRecipes(String cableName, String miCable) {
), condition);
}

private void writeRawRecipe(ResourceLocation id, Map<String, Object> recipe, ICondition... conditions) {
private void writeRawRecipe(CachedOutput output, ResourceLocation id, Map<String, Object> recipe, ICondition... conditions) {
var path = recipePathProvider.json(id);
var outputFile = packOutput.getOutputFolder(PackOutput.Target.DATA_PACK).resolve(path);

var gson = new Gson();
var jsonObject = (JsonObject) gson.toJsonTree(recipe);
ICondition.writeConditions(JsonOps.INSTANCE, jsonObject, Arrays.asList(conditions));

var content = gson.toJson(jsonObject).getBytes(StandardCharsets.UTF_8);

try {
Files.createDirectories(outputFile.getParent());
Files.writeString(outputFile, gson.toJson(jsonObject), StandardCharsets.UTF_8);
output.writeIfNeeded(outputFile, content, HashCode.fromBytes(content));
} catch (IOException e) {
throw new UncheckedIOException(e);
}

}

private static String getRecipeTypeId(RecipeSerializer<?> serializer) {
Expand Down

0 comments on commit ce32bcd

Please sign in to comment.