diff --git a/common/src/main/java/dev/latvian/mods/kubejs/core/mixin/common/inject_resources/MinecraftServerMixin.java b/common/src/main/java/dev/latvian/mods/kubejs/core/mixin/common/inject_resources/MinecraftServerMixin.java index cdab558a8..7eac187c6 100644 --- a/common/src/main/java/dev/latvian/mods/kubejs/core/mixin/common/inject_resources/MinecraftServerMixin.java +++ b/common/src/main/java/dev/latvian/mods/kubejs/core/mixin/common/inject_resources/MinecraftServerMixin.java @@ -19,7 +19,6 @@ public abstract class MinecraftServerMixin { @ModifyVariable(method = {"*"}, at = @At("STORE"), remap = false) public CloseableResourceManager wrapResourceManager(CloseableResourceManager original) { - ServerScriptManager.instance = new ServerScriptManager(); - return ServerScriptManager.instance.wrapResourceManager(original); + return (ServerScriptManager.instance = new ServerScriptManager()).wrapResourceManager(original); } } diff --git a/common/src/main/java/dev/latvian/mods/kubejs/recipe/RecipeJS.java b/common/src/main/java/dev/latvian/mods/kubejs/recipe/RecipeJS.java index 284f04d35..71b4cadc6 100644 --- a/common/src/main/java/dev/latvian/mods/kubejs/recipe/RecipeJS.java +++ b/common/src/main/java/dev/latvian/mods/kubejs/recipe/RecipeJS.java @@ -477,7 +477,7 @@ public final RecipeJS keepIngredient(IngredientActionFilter filter) { public final RecipeJS modifyResult(ModifyRecipeResultCallback callback) { UUID id = UUID.randomUUID(); - RecipesEventJS.modifyResultCallbackMap.put(id, callback); + RecipesEventJS.MODIFY_RESULT_CALLBACKS.put(id, callback); json.addProperty("kubejs:modify_result", UUIDTypeAdapter.fromUUID(id)); save(); return this; diff --git a/common/src/main/java/dev/latvian/mods/kubejs/recipe/RecipesEventJS.java b/common/src/main/java/dev/latvian/mods/kubejs/recipe/RecipesEventJS.java index 4b039b4b8..ae555b19f 100644 --- a/common/src/main/java/dev/latvian/mods/kubejs/recipe/RecipesEventJS.java +++ b/common/src/main/java/dev/latvian/mods/kubejs/recipe/RecipesEventJS.java @@ -59,17 +59,19 @@ public class RecipesEventJS extends EventJS { private static final Pattern SKIP_ERROR = Pattern.compile("at\\s+dev\\.latvian\\.mods\\.kubejs\\.recipe\\.RecipesEventJS\\.post"); + + public static final Map MODIFY_RESULT_CALLBACKS = new HashMap<>(); + public static Map customIngredientMap = null; - public static Map modifyResultCallbackMap = null; public static RecipesEventJS instance; public final Map originalRecipes; public final Collection addedRecipes; public final Collection removedRecipes; - final Map recipeFunctions; public final AtomicInteger failedCount; + private final Map recipeFunctions; public final RecipeTypeFunction shaped; public final RecipeTypeFunction shapeless; public final RecipeTypeFunction smelting; @@ -79,7 +81,7 @@ public class RecipesEventJS extends EventJS { public final RecipeTypeFunction stonecutting; public final RecipeTypeFunction smithing; - RecipeSerializer stageSerializer; + final RecipeSerializer stageSerializer; public RecipesEventJS() { ConsoleJS.SERVER.info("Scanning recipes..."); diff --git a/common/src/main/java/dev/latvian/mods/kubejs/recipe/special/ShapedKubeJSRecipe.java b/common/src/main/java/dev/latvian/mods/kubejs/recipe/special/ShapedKubeJSRecipe.java index 184934d60..e380a2b49 100644 --- a/common/src/main/java/dev/latvian/mods/kubejs/recipe/special/ShapedKubeJSRecipe.java +++ b/common/src/main/java/dev/latvian/mods/kubejs/recipe/special/ShapedKubeJSRecipe.java @@ -116,7 +116,7 @@ public ShapedKubeJSRecipe fromJson(ResourceLocation id, JsonObject json) { ModifyRecipeResultCallback modifyResult = null; if (json.has("kubejs:modify_result")) { - modifyResult = RecipesEventJS.modifyResultCallbackMap.get(UUIDTypeAdapter.fromString(json.get("kubejs:modify_result").getAsString())); + modifyResult = RecipesEventJS.MODIFY_RESULT_CALLBACKS.get(UUIDTypeAdapter.fromString(json.get("kubejs:modify_result").getAsString())); } var stage = GsonHelper.getAsString(json, "kubejs:stage", ""); diff --git a/common/src/main/java/dev/latvian/mods/kubejs/recipe/special/ShapelessKubeJSRecipe.java b/common/src/main/java/dev/latvian/mods/kubejs/recipe/special/ShapelessKubeJSRecipe.java index 206898057..01c88c12b 100644 --- a/common/src/main/java/dev/latvian/mods/kubejs/recipe/special/ShapelessKubeJSRecipe.java +++ b/common/src/main/java/dev/latvian/mods/kubejs/recipe/special/ShapelessKubeJSRecipe.java @@ -76,7 +76,7 @@ public ShapelessKubeJSRecipe fromJson(ResourceLocation id, JsonObject json) { var ingredientActions = IngredientAction.parseList(json.get("kubejs:actions")); ModifyRecipeResultCallback modifyResult = null; if (json.has("kubejs:modify_result")) { - modifyResult = RecipesEventJS.modifyResultCallbackMap.get(UUIDTypeAdapter.fromString(json.get("kubejs:modify_result").getAsString())); + modifyResult = RecipesEventJS.MODIFY_RESULT_CALLBACKS.get(UUIDTypeAdapter.fromString(json.get("kubejs:modify_result").getAsString())); } var stage = GsonHelper.getAsString(json, "kubejs:stage", ""); diff --git a/common/src/main/java/dev/latvian/mods/kubejs/server/ServerScriptManager.java b/common/src/main/java/dev/latvian/mods/kubejs/server/ServerScriptManager.java index f36bc78d2..5fe3c45fa 100644 --- a/common/src/main/java/dev/latvian/mods/kubejs/server/ServerScriptManager.java +++ b/common/src/main/java/dev/latvian/mods/kubejs/server/ServerScriptManager.java @@ -1,7 +1,7 @@ package dev.latvian.mods.kubejs.server; -import dev.architectury.platform.Platform; import dev.latvian.mods.kubejs.KubeJSPaths; +import dev.latvian.mods.kubejs.KubeJSPlugin; import dev.latvian.mods.kubejs.bindings.event.ServerEvents; import dev.latvian.mods.kubejs.platform.RecipePlatformHelper; import dev.latvian.mods.kubejs.recipe.RecipesEventJS; @@ -13,6 +13,7 @@ import dev.latvian.mods.kubejs.script.data.KubeJSFolderPackResources; import dev.latvian.mods.kubejs.script.data.VirtualKubeJSDataPack; import dev.latvian.mods.kubejs.util.ConsoleJS; +import dev.latvian.mods.kubejs.util.KubeJSPlugins; import net.minecraft.server.ReloadableServerResources; import net.minecraft.server.packs.FilePackResources; import net.minecraft.server.packs.PackType; @@ -81,13 +82,10 @@ public MultiPackResourceManager wrapResourceManager(CloseableResourceManager ori ConsoleJS.SERVER.info("Scripts loaded"); - // Currently custom ingredients are only supported on Forge - if (Platform.isForge()) { - RecipesEventJS.customIngredientMap = new HashMap<>(); - } - - RecipesEventJS.modifyResultCallbackMap = new HashMap<>(); + // note we only set this map on the logical server, it'll be null on the client! + RecipesEventJS.customIngredientMap = new HashMap<>(); + RecipesEventJS.MODIFY_RESULT_CALLBACKS.clear(); CustomIngredientAction.MAP.clear(); SpecialRecipeSerializerManager.INSTANCE.reset();