From d16567444c4b2fd5265ffdf24c39f8f21b9f830d Mon Sep 17 00:00:00 2001 From: LatvianModder <latvianmodder@gmail.com> Date: Thu, 27 Jun 2024 20:01:31 +0300 Subject: [PATCH] Added EMI category removing support --- .../integration/emi/KubeJSEMIPlugin.java | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/main/java/dev/latvian/mods/kubejs/integration/emi/KubeJSEMIPlugin.java b/src/main/java/dev/latvian/mods/kubejs/integration/emi/KubeJSEMIPlugin.java index 0160a31bb..1ed676eaf 100644 --- a/src/main/java/dev/latvian/mods/kubejs/integration/emi/KubeJSEMIPlugin.java +++ b/src/main/java/dev/latvian/mods/kubejs/integration/emi/KubeJSEMIPlugin.java @@ -10,8 +10,11 @@ import dev.latvian.mods.kubejs.recipe.viewer.RecipeViewerEvents; import dev.latvian.mods.kubejs.recipe.viewer.server.RecipeViewerData; import dev.latvian.mods.kubejs.script.ScriptType; +import net.minecraft.resources.ResourceLocation; +import java.util.HashMap; import java.util.List; +import java.util.Set; @EmiEntrypoint public class KubeJSEMIPlugin implements EmiPlugin { @@ -19,7 +22,35 @@ public class KubeJSEMIPlugin implements EmiPlugin { public void register(EmiRegistry registry) { var remote = RecipeViewerData.remote; - registry.removeRecipes(r -> remote.removedGlobalRecipes().contains(r.getId())); + if (remote != null) { + var removedCategories = Set.copyOf(remote.removedCategories()); + var globalRemovedRecipes = Set.copyOf(remote.removedGlobalRecipes()); + var removedRecipes = new HashMap<ResourceLocation, Set<ResourceLocation>>(); + + for (var data : remote.categoryData()) { + removedRecipes.put(data.category(), Set.copyOf(data.removedRecipes())); + } + + registry.removeRecipes(r -> { + var cat = r.getCategory().getId(); + + if (cat == null) { + return false; + } + + if (removedCategories.contains(cat)) { + return true; + } + + var id = r.getId(); + + if (id == null) { + return false; + } + + return globalRemovedRecipes.contains(id) || removedRecipes.getOrDefault(cat, Set.of()).contains(id); + }); + } for (var type : RecipeViewerEntryType.ALL_TYPES.get()) { if (RecipeViewerEvents.REMOVE_ENTRIES.hasListeners(type)) {