From 6c9a6979aab5c99a8749e31eda28acbe56e4e0c9 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 25 Jul 2024 14:58:05 -0700 Subject: [PATCH 01/47] extract ReloadKey to separate file --- .../groovyscript/GroovyScript.java | 44 +++---- .../keybind/GroovyScriptKeybinds.java | 124 ++++++++++++++++++ .../groovyscript/keybind/ReloadKey.java | 35 +++++ 3 files changed, 176 insertions(+), 27 deletions(-) create mode 100644 src/main/java/com/cleanroommc/groovyscript/keybind/GroovyScriptKeybinds.java create mode 100644 src/main/java/com/cleanroommc/groovyscript/keybind/ReloadKey.java diff --git a/src/main/java/com/cleanroommc/groovyscript/GroovyScript.java b/src/main/java/com/cleanroommc/groovyscript/GroovyScript.java index 0b617c989..ab818917f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/GroovyScript.java +++ b/src/main/java/com/cleanroommc/groovyscript/GroovyScript.java @@ -14,11 +14,10 @@ import com.cleanroommc.groovyscript.documentation.linkgenerator.LinkGeneratorHooks; import com.cleanroommc.groovyscript.event.EventHandler; import com.cleanroommc.groovyscript.helper.JsonHelper; +import com.cleanroommc.groovyscript.keybind.GroovyScriptKeybinds; import com.cleanroommc.groovyscript.mapper.ObjectMapper; import com.cleanroommc.groovyscript.mapper.ObjectMapperManager; -import com.cleanroommc.groovyscript.network.CReload; import com.cleanroommc.groovyscript.network.NetworkHandler; -import com.cleanroommc.groovyscript.network.NetworkUtils; import com.cleanroommc.groovyscript.registry.ReloadableRegistryManager; import com.cleanroommc.groovyscript.sandbox.*; import com.cleanroommc.groovyscript.sandbox.mapper.GroovyDeobfMapper; @@ -29,19 +28,15 @@ import groovy.lang.GroovySystem; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; -import net.minecraft.client.settings.KeyBinding; import net.minecraft.command.ICommandSender; import net.minecraft.item.Item; import net.minecraft.util.text.Style; import net.minecraft.util.text.TextComponentString; import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.util.text.TextFormatting; -import net.minecraftforge.client.settings.KeyConflictContext; -import net.minecraftforge.client.settings.KeyModifier; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.ModContainer; @@ -51,13 +46,13 @@ import net.minecraftforge.fml.common.event.FMLServerStartingEvent; import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import net.minecraftforge.fml.common.gameevent.InputEvent; import net.minecraftforge.fml.relauncher.FMLLaunchHandler; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; -import org.lwjgl.input.Keyboard; import java.io.File; import java.io.IOException; @@ -95,9 +90,6 @@ public class GroovyScript { private static ModContainer scriptMod; private static Thread languageServerThread; - private static KeyBinding reloadKey; - private static long timeSinceLastUse; - public static final Random RND = new Random(); @Mod.EventHandler @@ -116,17 +108,18 @@ public void onConstruction(FMLConstructionEvent event) { } ModSupport.INSTANCE.setup(event.getASMHarvestedData()); - if (NetworkUtils.isDedicatedClient()) { - // this resource pack must be added in construction - ((DefaultResourcePackAccessor) Minecraft.getMinecraft()).get().add(new GroovyResourcePack()); - reloadKey = new KeyBinding("key.groovyscript.reload", KeyConflictContext.IN_GAME, KeyModifier.CONTROL, Keyboard.KEY_R, "key.categories.groovyscript"); - ClientRegistry.registerKeyBinding(reloadKey); - } - FluidRegistry.enableUniversalBucket(); getRunConfig().initPackmode(); } + @Mod.EventHandler + @SideOnly(Side.CLIENT) + public void onClientConstruction(FMLConstructionEvent event) { + MinecraftForge.EVENT_BUS.register(GroovyScriptKeybinds.class); + // this resource pack must be added in construction + ((DefaultResourcePackAccessor) Minecraft.getMinecraft()).get().add(new GroovyResourcePack()); + } + @Mod.EventHandler public void onInit(FMLInitializationEvent event) { if (ModSupport.TINKERS_CONSTRUCT.isLoaded()) TinkersConstruct.init(); @@ -135,6 +128,12 @@ public void onInit(FMLInitializationEvent event) { } } + @Mod.EventHandler + @SideOnly(Side.CLIENT) + public void onClientInit(FMLInitializationEvent event) { + GroovyScriptKeybinds.initialize(); + } + @SubscribeEvent(priority = EventPriority.LOWEST) public void onRegisterItem(RegistryEvent.Register event) { if (ModSupport.TINKERS_CONSTRUCT.isLoaded()) TinkersConstruct.preInit(); @@ -207,15 +206,6 @@ public void onServerLoad(FMLServerStartingEvent event) { event.registerServerCommand(new GSCommand()); } - @SubscribeEvent - public static void onInput(InputEvent.KeyInputEvent event) { - long time = Minecraft.getSystemTime(); - if (Minecraft.getMinecraft().isIntegratedServerRunning() && reloadKey.isPressed() && time - timeSinceLastUse >= 1000 && Minecraft.getMinecraft().player.getPermissionLevel() >= 4) { - NetworkHandler.sendToServer(new CReload()); - timeSinceLastUse = time; - } - } - @NotNull public static String getScriptPath() { return getScriptFile().getPath(); diff --git a/src/main/java/com/cleanroommc/groovyscript/keybind/GroovyScriptKeybinds.java b/src/main/java/com/cleanroommc/groovyscript/keybind/GroovyScriptKeybinds.java new file mode 100644 index 000000000..7b31448ff --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/keybind/GroovyScriptKeybinds.java @@ -0,0 +1,124 @@ +package com.cleanroommc.groovyscript.keybind; + +import com.cleanroommc.groovyscript.GroovyScript; +import net.minecraft.client.settings.KeyBinding; +import net.minecraftforge.client.event.GuiScreenEvent; +import net.minecraftforge.client.settings.IKeyConflictContext; +import net.minecraftforge.client.settings.KeyConflictContext; +import net.minecraftforge.client.settings.KeyModifier; +import net.minecraftforge.fml.client.registry.ClientRegistry; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.InputEvent; +import net.minecraftforge.fml.relauncher.Side; +import org.lwjgl.input.Keyboard; + +import java.util.ArrayList; +import java.util.List; + +@Mod.EventBusSubscriber(modid = GroovyScript.ID, value = Side.CLIENT) +public class GroovyScriptKeybinds extends KeyBinding { + + private static final List keys = new ArrayList<>(); + + protected GroovyScriptKeybinds(GroovyScriptKeybinds.Key key) { + super(key.getDescription(), key.getKeyConflictContext(), key.getKeyModifier(), key.getKeyCode(), GroovyScript.NAME); + ClientRegistry.registerKeyBinding(this); + } + + public static void addKey(GroovyScriptKeybinds.Key key) { + keys.add(key); + } + + public static void initialize() { + ReloadKey.createKeybind(); + + for (Key key : keys) { + key.getKey(); + } + } + + @SubscribeEvent + public static void onKeyInput(InputEvent.KeyInputEvent event) { + for (Key key : keys) { + if (key.isPressed()) key.handleKeybind(); + } + } + + @SubscribeEvent + public static void onGuiKeyInput(GuiScreenEvent.KeyboardInputEvent.Pre event) { + char typedChar = Keyboard.getEventCharacter(); + int eventKey = Keyboard.getEventKey(); + + for (Key key : keys) { + if (key.isPressed(typedChar, eventKey)) key.handleKeybind(); + } + } + + public abstract static class Key { + + private final String name; + private final IKeyConflictContext keyConflictContext; + private final KeyModifier keyModifier; + private final int keyCode; + + private KeyBinding key; + + public Key(String name, int keyCode) { + this(name, KeyConflictContext.UNIVERSAL, keyCode); + } + + public Key(String name, IKeyConflictContext keyConflictContext, int keyCode) { + this(name, keyConflictContext, KeyModifier.NONE, keyCode); + } + + public Key(String name, IKeyConflictContext keyConflictContext, KeyModifier keyModifier, int keyCode) { + this.name = name; + this.keyConflictContext = keyConflictContext; + this.keyModifier = keyModifier; + this.keyCode = keyCode; + } + + public abstract boolean isValid(); + + public abstract void handleKeybind(); + + public String getName() { + return name; + } + + public IKeyConflictContext getKeyConflictContext() { + return keyConflictContext; + } + + public KeyModifier getKeyModifier() { + return keyModifier; + } + + public int getKeyCode() { + return keyCode; + } + + public KeyBinding getKey() { + if (key == null) key = new GroovyScriptKeybinds(this); + return key; + } + + public void setKey(KeyBinding key) { + this.key = key; + } + + public boolean isPressed() { + return isValid() && getKey().isPressed(); + } + + public boolean isPressed(char typedChar, int keyCode) { + return isValid() && getKey().isActiveAndMatches(keyCode); + } + + public String getDescription() { + return String.format("keybind.%s.%s", GroovyScript.ID, name); + } + } + +} diff --git a/src/main/java/com/cleanroommc/groovyscript/keybind/ReloadKey.java b/src/main/java/com/cleanroommc/groovyscript/keybind/ReloadKey.java new file mode 100644 index 000000000..5a9f29f43 --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/keybind/ReloadKey.java @@ -0,0 +1,35 @@ +package com.cleanroommc.groovyscript.keybind; + +import com.cleanroommc.groovyscript.network.CReload; +import com.cleanroommc.groovyscript.network.NetworkHandler; +import net.minecraft.client.Minecraft; +import net.minecraftforge.client.settings.KeyConflictContext; +import net.minecraftforge.client.settings.KeyModifier; +import org.lwjgl.input.Keyboard; + +public class ReloadKey extends GroovyScriptKeybinds.Key { + + private long timeSinceLastUse; + + public ReloadKey() { + super("reload", KeyConflictContext.IN_GAME, KeyModifier.CONTROL, Keyboard.KEY_R); + } + + public static void createKeybind() { + GroovyScriptKeybinds.addKey(new ReloadKey()); + } + + @Override + public boolean isValid() { + return Minecraft.getMinecraft().currentScreen == null && Minecraft.getMinecraft().inGameHasFocus; + } + + @Override + public void handleKeybind() { + long time = Minecraft.getSystemTime(); + if (Minecraft.getMinecraft().isIntegratedServerRunning() && time - timeSinceLastUse >= 1000 && Minecraft.getMinecraft().player.getPermissionLevel() >= 4) { + NetworkHandler.sendToServer(new CReload()); + timeSinceLastUse = time; + } + } +} From 801c881dc2b0ec8bb075b3a723c6d66a96c3efcc Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 25 Jul 2024 15:19:47 -0700 Subject: [PATCH 02/47] add some jei accessors --- .../mixin/jei/RecipeGuiLogicAccessor.java | 14 +++++++++++++ .../core/mixin/jei/RecipeLayoutAccessor.java | 21 +++++++++++++++++++ .../core/mixin/jei/RecipesGuiAccessor.java | 20 ++++++++++++++++++ .../resources/mixin.groovyscript.jei.json | 5 ++++- 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipeGuiLogicAccessor.java create mode 100644 src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipeLayoutAccessor.java create mode 100644 src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipesGuiAccessor.java diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipeGuiLogicAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipeGuiLogicAccessor.java new file mode 100644 index 000000000..3fb421989 --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipeGuiLogicAccessor.java @@ -0,0 +1,14 @@ +package com.cleanroommc.groovyscript.core.mixin.jei; + +import mezz.jei.gui.ingredients.IngredientLookupState; +import mezz.jei.gui.recipes.RecipeGuiLogic; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(value = RecipeGuiLogic.class, remap = false) +public interface RecipeGuiLogicAccessor { + + @Accessor("state") + IngredientLookupState getState(); + +} diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipeLayoutAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipeLayoutAccessor.java new file mode 100644 index 000000000..0bafffe6c --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipeLayoutAccessor.java @@ -0,0 +1,21 @@ +package com.cleanroommc.groovyscript.core.mixin.jei; + +import mezz.jei.api.recipe.IIngredientType; +import mezz.jei.api.recipe.IRecipeWrapper; +import mezz.jei.gui.ingredients.GuiIngredientGroup; +import mezz.jei.gui.recipes.RecipeLayout; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(value = RecipeLayout.class, remap = false) +public interface RecipeLayoutAccessor { + + @Accessor("recipeWrapper") + IRecipeWrapper getRecipeWrapper(); + + @Accessor("guiIngredientGroups") + Map getGuiIngredientGroups(); + +} diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipesGuiAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipesGuiAccessor.java new file mode 100644 index 000000000..9a4e7464f --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipesGuiAccessor.java @@ -0,0 +1,20 @@ +package com.cleanroommc.groovyscript.core.mixin.jei; + +import mezz.jei.gui.recipes.IRecipeGuiLogic; +import mezz.jei.gui.recipes.RecipeLayout; +import mezz.jei.gui.recipes.RecipesGui; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.List; + +@Mixin(value = RecipesGui.class, remap = false) +public interface RecipesGuiAccessor { + + @Accessor("recipeLayouts") + List getRecipeLayouts(); + + @Accessor("logic") + IRecipeGuiLogic getLogic(); + +} diff --git a/src/main/resources/mixin.groovyscript.jei.json b/src/main/resources/mixin.groovyscript.jei.json index 2b32b5c24..759842fe4 100644 --- a/src/main/resources/mixin.groovyscript.jei.json +++ b/src/main/resources/mixin.groovyscript.jei.json @@ -8,6 +8,9 @@ "IngredientInfoRecipeAccessor", "JeiProxyAccessor", "JeiStarterMixin", - "ModRegistryAccessor" + "ModRegistryAccessor", + "RecipeGuiLogicAccessor", + "RecipeLayoutAccessor", + "RecipesGuiAccessor" ] } \ No newline at end of file From f50fc56cab0b1429ad88ba980243daded913612d Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 25 Jul 2024 15:43:44 -0700 Subject: [PATCH 03/47] add IJEIRemoval interface --- .../compat/mods/jei/IJEIRemoval.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/IJEIRemoval.java diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/IJEIRemoval.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/IJEIRemoval.java new file mode 100644 index 000000000..ddfc12913 --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/IJEIRemoval.java @@ -0,0 +1,17 @@ +package com.cleanroommc.groovyscript.compat.mods.jei; + +import mezz.jei.api.gui.IGuiIngredientGroup; +import mezz.jei.api.recipe.IIngredientType; +import org.jetbrains.annotations.NotNull; + +import java.util.Map; + +public interface IJEIRemoval { + + @NotNull + String getCategory(); + + @NotNull + String getRemoval(Map map); + +} From 1eca5cbd8da3cc6f8b486a454f955f665c793d21 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 25 Jul 2024 15:44:37 -0700 Subject: [PATCH 04/47] add class to remove target --- .../compat/mods/jei/JeiRemovalHelper.java | 134 ++++++++++++++++++ .../core/mixin/jei/RecipeLayoutAccessor.java | 7 +- 2 files changed, 136 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiRemovalHelper.java diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiRemovalHelper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiRemovalHelper.java new file mode 100644 index 000000000..b403d73a2 --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiRemovalHelper.java @@ -0,0 +1,134 @@ +package com.cleanroommc.groovyscript.compat.mods.jei; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.INamed; +import com.cleanroommc.groovyscript.compat.mods.GroovyContainer; +import com.cleanroommc.groovyscript.compat.mods.GroovyPropertyContainer; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.core.mixin.jei.RecipeGuiLogicAccessor; +import com.cleanroommc.groovyscript.core.mixin.jei.RecipeLayoutAccessor; +import com.cleanroommc.groovyscript.core.mixin.jei.RecipesGuiAccessor; +import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; +import mezz.jei.api.gui.IGuiIngredient; +import mezz.jei.api.gui.IGuiIngredientGroup; +import mezz.jei.api.ingredients.VanillaTypes; +import mezz.jei.api.recipe.IIngredientType; +import mezz.jei.gui.ingredients.IngredientLookupState; +import mezz.jei.gui.recipes.RecipeLayout; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.item.ItemStack; +import net.minecraft.util.text.TextComponentString; +import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; +import org.lwjgl.input.Mouse; + +import java.util.List; +import java.util.Map; + +public class JeiRemovalHelper { + + /** + * uses the focused category uid to filter + */ + public static void getRemovalMethod() { + IngredientLookupState state = ((RecipeGuiLogicAccessor) ((RecipesGuiAccessor) JeiPlugin.jeiRuntime.getRecipesGui()).getLogic()).getState(); + if (state == null) return; + String recipeCategoryUid = state.getRecipeCategories().get(state.getRecipeCategoryIndex()).getUid(); + getRemovalMethod(recipeCategoryUid); + } + + /** + * generates a method to remove the targeted recipe in JEI and prints the via {@link #say(String)}. + * TODO doesnt work with vanilla, or anything not a mod container. + * + * @param uid the id of the targeted JEI category + */ + private static void getRemovalMethod(String uid) { + Map output = getUnderMouse(); + if (output == null) return; + + for (GroovyContainer groovyContainer : ModSupport.getAllContainers()) { + if (!groovyContainer.isLoaded()) continue; + for (INamed registry : groovyContainer.get().getRegistries()) { + if (registry.isEnabled() && registry instanceof IJEIRemoval removal && removal.getCategory().equals(uid)) { + String operation = removal.getRemoval(output); + if (operation.isEmpty()) continue; + String message = String.format("mods.%s.%s.%s", groovyContainer.getModId(), registry.getName(), operation); + say(message); + return; + } + } + } + } + + + /** + * Get the recipe layout being hovered and return the ingredient groups for further parsing + * + * @return ingredient groups attached to targeted recipe layout + */ + private static Map getUnderMouse() { + List recipeLayouts = ((RecipesGuiAccessor) JeiPlugin.jeiRuntime.getRecipesGui()).getRecipeLayouts(); + if (recipeLayouts == null) return null; + ScaledResolution scaledresolution = new ScaledResolution(Minecraft.getMinecraft()); + int mouseX = Mouse.getX() * scaledresolution.getScaledWidth() / Minecraft.getMinecraft().displayWidth; + int mouseY = scaledresolution.getScaledHeight() - Mouse.getY() * scaledresolution.getScaledHeight() / Minecraft.getMinecraft().displayHeight - 1; + + for (RecipeLayout recipeLayout : recipeLayouts) { + if (recipeLayout.isMouseOver(mouseX, mouseY)) { + return ((RecipeLayoutAccessor) recipeLayout).getGuiIngredientGroups(); + } + } + return null; + } + + /** + * Currently prints the message to the log and to chat, but perhaps this should be reworked to support appending to a specific file? + * TODO this + * + * @param message message to get printed to the log + */ + private static void say(String message) { + GroovyLog.get().warn(message); + Minecraft.getMinecraft().player.sendMessage(new TextComponentString(message)); + } + + /** + * Converts the RecipeLayout ingredient groups into an output method for a GroovyScript script. + * Removes by input {@link ItemStack}, and the input should be unique. + * + * @param map ingredients in the RecipeLayout to convert + * @return a string representing a GrS method to remove the recipe by input + */ + public static @NotNull String getFromSingleUniqueItemInput(Map map) { + Map> ingredientMap = map.get(VanillaTypes.ITEM).getGuiIngredients(); + for (IGuiIngredient slot : ingredientMap.values()) { + if (slot.isInput() && !slot.getAllIngredients().isEmpty()) { + ItemStack stack = (ItemStack) slot.getAllIngredients().get(0); + return String.format("removeByInput(%s)", GroovyScriptCodeConverter.asGroovyCode(stack, false, false)); + } + } + return ""; + } + + + /** + * Converts the RecipeLayout ingredient groups into an output method for a GroovyScript script. + * Removes by input {@link FluidStack}, and the input should be unique. + * + * @param map ingredients in the RecipeLayout to convert + * @return a string representing a GrS method to remove the recipe by input + */ + public static @NotNull String getFromSingleUniqueFluidInput(Map map) { + Map> ingredientMap = map.get(VanillaTypes.FLUID).getGuiIngredients(); + for (IGuiIngredient slot : ingredientMap.values()) { + if (slot.isInput() && !slot.getAllIngredients().isEmpty()) { + FluidStack stack = (FluidStack) slot.getAllIngredients().get(0); + return String.format("removeByInput(%s)", GroovyScriptCodeConverter.asGroovyCode(stack, false, false)); + } + } + return ""; + } + +} diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipeLayoutAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipeLayoutAccessor.java index 0bafffe6c..d29d292bb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipeLayoutAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipeLayoutAccessor.java @@ -1,8 +1,8 @@ package com.cleanroommc.groovyscript.core.mixin.jei; +import mezz.jei.api.gui.IGuiIngredientGroup; import mezz.jei.api.recipe.IIngredientType; import mezz.jei.api.recipe.IRecipeWrapper; -import mezz.jei.gui.ingredients.GuiIngredientGroup; import mezz.jei.gui.recipes.RecipeLayout; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; @@ -12,10 +12,7 @@ @Mixin(value = RecipeLayout.class, remap = false) public interface RecipeLayoutAccessor { - @Accessor("recipeWrapper") - IRecipeWrapper getRecipeWrapper(); - @Accessor("guiIngredientGroups") - Map getGuiIngredientGroups(); + Map getGuiIngredientGroups(); } From e375d0b6e78058751c5daad1e54a557e7383148e Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 25 Jul 2024 15:44:47 -0700 Subject: [PATCH 05/47] add keybind to target --- .../keybind/GroovyScriptKeybinds.java | 1 + .../groovyscript/keybind/RemoveRecipeKey.java | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java diff --git a/src/main/java/com/cleanroommc/groovyscript/keybind/GroovyScriptKeybinds.java b/src/main/java/com/cleanroommc/groovyscript/keybind/GroovyScriptKeybinds.java index 7b31448ff..e77037c05 100644 --- a/src/main/java/com/cleanroommc/groovyscript/keybind/GroovyScriptKeybinds.java +++ b/src/main/java/com/cleanroommc/groovyscript/keybind/GroovyScriptKeybinds.java @@ -32,6 +32,7 @@ public static void addKey(GroovyScriptKeybinds.Key key) { public static void initialize() { ReloadKey.createKeybind(); + RemoveRecipeKey.createKeybind(); for (Key key : keys) { key.getKey(); diff --git a/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java b/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java new file mode 100644 index 000000000..93d840f17 --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java @@ -0,0 +1,31 @@ +package com.cleanroommc.groovyscript.keybind; + +import com.cleanroommc.groovyscript.compat.mods.jei.JeiPlugin; +import com.cleanroommc.groovyscript.compat.mods.jei.JeiRemovalHelper; +import mezz.jei.api.IRecipesGui; +import net.minecraft.client.Minecraft; +import net.minecraftforge.client.settings.KeyConflictContext; +import net.minecraftforge.client.settings.KeyModifier; +import net.minecraftforge.fml.common.Loader; +import org.lwjgl.input.Keyboard; + +public class RemoveRecipeKey extends GroovyScriptKeybinds.Key { + + public RemoveRecipeKey() { + super("remove_recipe_from_jei", KeyConflictContext.GUI, KeyModifier.CONTROL, Keyboard.KEY_X); + } + + public static void createKeybind() { + if (Loader.isModLoaded("jei")) GroovyScriptKeybinds.addKey(new RemoveRecipeKey()); + } + + @Override + public boolean isValid() { + return Minecraft.getMinecraft().currentScreen instanceof IRecipesGui && !JeiPlugin.jeiRuntime.getIngredientListOverlay().hasKeyboardFocus(); + } + + @Override + public void handleKeybind() { + JeiRemovalHelper.getRemovalMethod(); + } +} From 492d5f904af9a5c8c039f66b1f5c065ab0a743d9 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 25 Jul 2024 16:10:28 -0700 Subject: [PATCH 06/47] allow multiple categories --- .../groovyscript/compat/mods/jei/IJEIRemoval.java | 7 +++++++ .../groovyscript/compat/mods/jei/JeiRemovalHelper.java | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/IJEIRemoval.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/IJEIRemoval.java index ddfc12913..b1dee981f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/IJEIRemoval.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/IJEIRemoval.java @@ -1,9 +1,11 @@ package com.cleanroommc.groovyscript.compat.mods.jei; +import com.google.common.collect.Lists; import mezz.jei.api.gui.IGuiIngredientGroup; import mezz.jei.api.recipe.IIngredientType; import org.jetbrains.annotations.NotNull; +import java.util.List; import java.util.Map; public interface IJEIRemoval { @@ -11,6 +13,11 @@ public interface IJEIRemoval { @NotNull String getCategory(); + @NotNull + default List getCategories() { + return Lists.newArrayList(getCategory()); + } + @NotNull String getRemoval(Map map); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiRemovalHelper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiRemovalHelper.java index b403d73a2..33872a913 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiRemovalHelper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiRemovalHelper.java @@ -51,7 +51,7 @@ private static void getRemovalMethod(String uid) { for (GroovyContainer groovyContainer : ModSupport.getAllContainers()) { if (!groovyContainer.isLoaded()) continue; for (INamed registry : groovyContainer.get().getRegistries()) { - if (registry.isEnabled() && registry instanceof IJEIRemoval removal && removal.getCategory().equals(uid)) { + if (registry.isEnabled() && registry instanceof IJEIRemoval removal && removal.getCategories().contains(uid)) { String operation = removal.getRemoval(output); if (operation.isEmpty()) continue; String message = String.format("mods.%s.%s.%s", groovyContainer.getModId(), registry.getName(), operation); From 689a189520b6c4ebc9ca97d532141e3bff69f302 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 25 Jul 2024 16:10:41 -0700 Subject: [PATCH 07/47] note a failure to find a recipe --- .../groovyscript/compat/mods/jei/JeiRemovalHelper.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiRemovalHelper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiRemovalHelper.java index 33872a913..4a2e93dd8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiRemovalHelper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiRemovalHelper.java @@ -60,6 +60,7 @@ private static void getRemovalMethod(String uid) { } } } + say("Couldn't find a way to remove the targeted recipe"); } From 7ec0c8112e0c2d83d3e3450bf4e6bd69cf042fec Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 25 Jul 2024 16:11:30 -0700 Subject: [PATCH 08/47] use cached loaded --- .../com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java b/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java index 93d840f17..0764629c9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java +++ b/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java @@ -1,12 +1,12 @@ package com.cleanroommc.groovyscript.keybind; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.JeiPlugin; import com.cleanroommc.groovyscript.compat.mods.jei.JeiRemovalHelper; import mezz.jei.api.IRecipesGui; import net.minecraft.client.Minecraft; import net.minecraftforge.client.settings.KeyConflictContext; import net.minecraftforge.client.settings.KeyModifier; -import net.minecraftforge.fml.common.Loader; import org.lwjgl.input.Keyboard; public class RemoveRecipeKey extends GroovyScriptKeybinds.Key { @@ -16,7 +16,7 @@ public RemoveRecipeKey() { } public static void createKeybind() { - if (Loader.isModLoaded("jei")) GroovyScriptKeybinds.addKey(new RemoveRecipeKey()); + if (ModSupport.JEI.isLoaded()) GroovyScriptKeybinds.addKey(new RemoveRecipeKey()); } @Override From 3576436e3dd383e5d77ddca6f7a5a0122d34252f Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Fri, 26 Jul 2024 17:35:36 -0700 Subject: [PATCH 09/47] add asGroovyCode resource location --- .../helper/ingredient/GroovyScriptCodeConverter.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java b/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java index cc8fdafa4..46bfeadff 100644 --- a/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java +++ b/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java @@ -90,6 +90,10 @@ public static String formatNBTTag(NBTTagCompound tag, boolean colored, boolean p return builder.toString(); } + public static String asGroovyCode(ResourceLocation resourceLocation, boolean colored) { + return formatResourceLocation("resource", resourceLocation, colored); + } + private static String getSingleItemStack(ItemStack itemStack, boolean colored) { StringBuilder builder = new StringBuilder(); if (colored) builder.append(TextFormatting.DARK_GREEN); From 6518f2c73580847117f170b5c69e533d677248b3 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Fri, 26 Jul 2024 17:36:57 -0700 Subject: [PATCH 10/47] improve base removal operations --- .../compat/mods/jei/IJEIRemoval.java | 82 +++++++- .../compat/mods/jei/JeiRemovalHelper.java | 177 +++++++++++++----- .../core/mixin/jei/RecipeLayoutAccessor.java | 3 + 3 files changed, 206 insertions(+), 56 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/IJEIRemoval.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/IJEIRemoval.java index b1dee981f..751d157ba 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/IJEIRemoval.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/IJEIRemoval.java @@ -1,24 +1,86 @@ package com.cleanroommc.groovyscript.compat.mods.jei; -import com.google.common.collect.Lists; -import mezz.jei.api.gui.IGuiIngredientGroup; -import mezz.jei.api.recipe.IIngredientType; +import mezz.jei.api.gui.IRecipeLayout; import org.jetbrains.annotations.NotNull; -import java.util.List; -import java.util.Map; +import java.util.Collection; public interface IJEIRemoval { + /** + * A list containing any number of strings which + * are the UIDs of a JEI recipe category {@link mezz.jei.api.recipe.IRecipeCategory#getUid()}. + *
+ * This list is typically immutable. + * + * @return a list of all UIDs associated with the target recipe category + */ @NotNull - String getCategory(); + Collection getCategories(); + /** + * Generates the removal method for the targeted recipe, + * using the information from JEI to do so. + *
+ * Should only remove a single recipe, although this may not be guaranteed. + *
+ * The path to the recipe will automatically be generated, only the method name and its parameters should be returned. + * + * @param layout a map of type to group of slots displayed in JEI + * @return the method to remove the specific recipe + */ @NotNull - default List getCategories() { - return Lists.newArrayList(getCategory()); + String getRemoval(IRecipeLayout layout); + + @Deprecated + interface Direct extends IJEIRemoval { + // TODO removeme } - @NotNull - String getRemoval(Map map); + /** + * Has a default removal method, {@link #getRemoval(IRecipeLayout)}, which returns a method to remove by all input ingredients. + */ + interface IJEIRemoveByAllInput extends IJEIRemoval { + + /** + * @see JeiRemovalHelper#getFromInput + */ + @Override + default @NotNull String getRemoval(IRecipeLayout layout) { + return JeiRemovalHelper.getFromInput(layout); + } + + } + + /** + * Has a default removal method, {@link #getRemoval(IRecipeLayout)}, which returns a method to remove by the first {@link net.minecraft.item.ItemStack} input. + * Should only be used if there is only a single input, and there is only a single input -> recipe entry. + */ + interface IJEIRemoveByItemInput extends IJEIRemoval { + /** + * @see JeiRemovalHelper#getFromSingleUniqueItemInput + */ + @Override + default @NotNull String getRemoval(IRecipeLayout layout) { + return JeiRemovalHelper.getFromSingleUniqueItemInput(layout); + } + + } + + /** + * Has a default removal method, {@link #getRemoval(IRecipeLayout)}, which returns a method to remove by the first {@link net.minecraftforge.fluids.FluidStack} input. + * Should only be used if there is only a single input, and there is only a single input -> recipe entry. + */ + interface IJEIRemoveByFluidInput extends IJEIRemoval.Direct { + + /** + * @see JeiRemovalHelper#getFromSingleUniqueFluidInput + */ + @Override + default @NotNull String getRemoval(IRecipeLayout layout) { + return JeiRemovalHelper.getFromSingleUniqueFluidInput(layout); + } + + } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiRemovalHelper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiRemovalHelper.java index 4a2e93dd8..f620d6d0d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiRemovalHelper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiRemovalHelper.java @@ -2,19 +2,14 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.INamed; -import com.cleanroommc.groovyscript.compat.mods.GroovyContainer; -import com.cleanroommc.groovyscript.compat.mods.GroovyPropertyContainer; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.core.mixin.jei.RecipeGuiLogicAccessor; -import com.cleanroommc.groovyscript.core.mixin.jei.RecipeLayoutAccessor; import com.cleanroommc.groovyscript.core.mixin.jei.RecipesGuiAccessor; import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; +import com.google.common.collect.Lists; import mezz.jei.api.gui.IGuiIngredient; -import mezz.jei.api.gui.IGuiIngredientGroup; -import mezz.jei.api.ingredients.VanillaTypes; -import mezz.jei.api.recipe.IIngredientType; -import mezz.jei.gui.ingredients.IngredientLookupState; -import mezz.jei.gui.recipes.RecipeLayout; +import mezz.jei.api.gui.IRecipeLayout; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.item.ItemStack; @@ -23,8 +18,8 @@ import org.jetbrains.annotations.NotNull; import org.lwjgl.input.Mouse; +import java.util.ArrayList; import java.util.List; -import java.util.Map; public class JeiRemovalHelper { @@ -32,9 +27,9 @@ public class JeiRemovalHelper { * uses the focused category uid to filter */ public static void getRemovalMethod() { - IngredientLookupState state = ((RecipeGuiLogicAccessor) ((RecipesGuiAccessor) JeiPlugin.jeiRuntime.getRecipesGui()).getLogic()).getState(); + var state = ((RecipeGuiLogicAccessor) ((RecipesGuiAccessor) JeiPlugin.jeiRuntime.getRecipesGui()).getLogic()).getState(); if (state == null) return; - String recipeCategoryUid = state.getRecipeCategories().get(state.getRecipeCategoryIndex()).getUid(); + var recipeCategoryUid = state.getRecipeCategories().get(state.getRecipeCategoryIndex()).getUid(); getRemovalMethod(recipeCategoryUid); } @@ -45,22 +40,50 @@ public static void getRemovalMethod() { * @param uid the id of the targeted JEI category */ private static void getRemovalMethod(String uid) { - Map output = getUnderMouse(); + var output = getUnderMouse(); if (output == null) return; - for (GroovyContainer groovyContainer : ModSupport.getAllContainers()) { + // TODO why does vanilla have to be special cased, can that be changed? + for (INamed registry : Lists.newArrayList(VanillaModule.crafting, VanillaModule.furnace)) { + if (registry.isEnabled() && registry instanceof IJEIRemoval removal && removal.getCategories().contains(uid)) { + var operation = removal.getRemoval(output); + if (operation.isEmpty()) continue; + var message = String.format("%s.%s", registry.getName(), operation); + say(message); + return; + } + } + + // TODO implode + for (INamed registry : Lists.newArrayList( + VanillaModule.inWorldCrafting.fluidToFluid, + VanillaModule.inWorldCrafting.fluidToItem, + VanillaModule.inWorldCrafting.fluidToBlock, + VanillaModule.inWorldCrafting.explosion, + VanillaModule.inWorldCrafting.burning, + VanillaModule.inWorldCrafting.pistonPush)) { + if (registry.isEnabled() && registry instanceof IJEIRemoval removal && removal.getCategories().contains(uid)) { + var operation = removal.getRemoval(output); + if (operation.isEmpty()) continue; + var message = String.format("inWorldCrafting.%s.%s", registry.getName(), operation); + say(message); + return; + } + } + + for (var groovyContainer : ModSupport.getAllContainers()) { if (!groovyContainer.isLoaded()) continue; - for (INamed registry : groovyContainer.get().getRegistries()) { + for (var registry : groovyContainer.get().getRegistries()) { if (registry.isEnabled() && registry instanceof IJEIRemoval removal && removal.getCategories().contains(uid)) { - String operation = removal.getRemoval(output); + var operation = removal.getRemoval(output); if (operation.isEmpty()) continue; - String message = String.format("mods.%s.%s.%s", groovyContainer.getModId(), registry.getName(), operation); + var message = String.format("mods.%s.%s.%s", groovyContainer.getModId(), registry.getName(), operation); say(message); return; } } } - say("Couldn't find a way to remove the targeted recipe"); + say(String.format("Couldn't find a way to remove the targeted recipe in category %s", uid)); } @@ -69,16 +92,16 @@ private static void getRemovalMethod(String uid) { * * @return ingredient groups attached to targeted recipe layout */ - private static Map getUnderMouse() { - List recipeLayouts = ((RecipesGuiAccessor) JeiPlugin.jeiRuntime.getRecipesGui()).getRecipeLayouts(); - if (recipeLayouts == null) return null; - ScaledResolution scaledresolution = new ScaledResolution(Minecraft.getMinecraft()); - int mouseX = Mouse.getX() * scaledresolution.getScaledWidth() / Minecraft.getMinecraft().displayWidth; - int mouseY = scaledresolution.getScaledHeight() - Mouse.getY() * scaledresolution.getScaledHeight() / Minecraft.getMinecraft().displayHeight - 1; - - for (RecipeLayout recipeLayout : recipeLayouts) { - if (recipeLayout.isMouseOver(mouseX, mouseY)) { - return ((RecipeLayoutAccessor) recipeLayout).getGuiIngredientGroups(); + private static IRecipeLayout getUnderMouse() { + var layouts = ((RecipesGuiAccessor) JeiPlugin.jeiRuntime.getRecipesGui()).getRecipeLayouts(); + if (layouts == null) return null; + var scaledresolution = new ScaledResolution(Minecraft.getMinecraft()); + var mouseX = Mouse.getX() * scaledresolution.getScaledWidth() / Minecraft.getMinecraft().displayWidth; + var mouseY = scaledresolution.getScaledHeight() - Mouse.getY() * scaledresolution.getScaledHeight() / Minecraft.getMinecraft().displayHeight - 1; + + for (var layout : layouts) { + if (layout.isMouseOver(mouseX, mouseY)) { + return layout; } } return null; @@ -96,40 +119,102 @@ private static void say(String message) { } /** - * Converts the RecipeLayout ingredient groups into an output method for a GroovyScript script. + * Converts the RecipeLayout into an output method for a GroovyScript script. * Removes by input {@link ItemStack}, and the input should be unique. * - * @param map ingredients in the RecipeLayout to convert + * @param layout the RecipeLayout to convert * @return a string representing a GrS method to remove the recipe by input */ - public static @NotNull String getFromSingleUniqueItemInput(Map map) { - Map> ingredientMap = map.get(VanillaTypes.ITEM).getGuiIngredients(); - for (IGuiIngredient slot : ingredientMap.values()) { - if (slot.isInput() && !slot.getAllIngredients().isEmpty()) { - ItemStack stack = (ItemStack) slot.getAllIngredients().get(0); - return String.format("removeByInput(%s)", GroovyScriptCodeConverter.asGroovyCode(stack, false, false)); - } - } - return ""; + public static @NotNull String getFromSingleUniqueItemInput(IRecipeLayout layout) { + var stack = getFirstItemStack(layout); + return stack.isEmpty() ? "" : formatRemovalString("removeByInput", stack); } /** - * Converts the RecipeLayout ingredient groups into an output method for a GroovyScript script. + * Converts the RecipeLayout into an output method for a GroovyScript script. * Removes by input {@link FluidStack}, and the input should be unique. * - * @param map ingredients in the RecipeLayout to convert + * @param layout the RecipeLayout to convert * @return a string representing a GrS method to remove the recipe by input */ - public static @NotNull String getFromSingleUniqueFluidInput(Map map) { - Map> ingredientMap = map.get(VanillaTypes.FLUID).getGuiIngredients(); - for (IGuiIngredient slot : ingredientMap.values()) { - if (slot.isInput() && !slot.getAllIngredients().isEmpty()) { - FluidStack stack = (FluidStack) slot.getAllIngredients().get(0); - return String.format("removeByInput(%s)", GroovyScriptCodeConverter.asGroovyCode(stack, false, false)); + public static @NotNull String getFromSingleUniqueFluidInput(IRecipeLayout layout) { + var stack = getFirstFluidStack(layout); + return stack.isEmpty() ? "" : formatRemovalString("removeByInput", stack); + } + + /** + * Converts the RecipeLayout into an output method for a GroovyScript script. + * Gathers all inputs that are either {@link ItemStack} or {@link FluidStack} and generates a function for that. + *
+ * If an input that is not either an {@link ItemStack} or a {@link FluidStack} is required, a custom method should be created. + * + * @param layout the RecipeLayout to convert + * @return a string representing a GrS method to remove the recipe by input + */ + public static @NotNull String getFromInput(IRecipeLayout layout) { + List removing = new ArrayList<>(); + for (IGuiIngredient slot : layout.getItemStacks().getGuiIngredients().values()) { + if (slot.isInput() && !slot.getAllIngredients().isEmpty() && slot.getAllIngredients().get(0) instanceof ItemStack stack) { + removing.add(GroovyScriptCodeConverter.asGroovyCode(stack, false, false)); + } + } + for (IGuiIngredient slot : layout.getFluidStacks().getGuiIngredients().values()) { + if (slot.isInput() && !slot.getAllIngredients().isEmpty() && slot.getAllIngredients().get(0) instanceof FluidStack stack) { + removing.add(GroovyScriptCodeConverter.asGroovyCode(stack, false, false)); + } + } + // While there are occasionally other types of ingredients, such as Thaumcraft Aspects + // or Mekanism Gases, those are rare and should be handled by those specific compats. + // 99% of all recipes will either an ItemStack or a FluidStack. + + if (removing.isEmpty()) return ""; + return formatRemovalString("removeByInput", removing); + } + + private static @NotNull String getFirstItemStack(IRecipeLayout layout) { + if (layout.getItemStacks().getGuiIngredients().values().stream().filter(IGuiIngredient::isInput).filter(x -> !x.getAllIngredients().isEmpty()).count() > 1) { + say("found too many input itemstacks!"); + return ""; + } + for (IGuiIngredient slot : layout.getItemStacks().getGuiIngredients().values()) { + if (slot.isInput() && !slot.getAllIngredients().isEmpty() && slot.getAllIngredients().get(0) instanceof ItemStack stack) { + return GroovyScriptCodeConverter.asGroovyCode(stack, false, false); } } return ""; } + private static @NotNull String getFirstFluidStack(IRecipeLayout layout) { + if (layout.getFluidStacks().getGuiIngredients().values().stream().filter(IGuiIngredient::isInput).filter(x -> !x.getAllIngredients().isEmpty()).count() > 1) { + say("found too many input fluidstacks!"); + return ""; + } + for (IGuiIngredient slot : layout.getFluidStacks().getGuiIngredients().values()) { + if (slot.isInput() && !slot.getAllIngredients().isEmpty() && slot.getAllIngredients().get(0) instanceof FluidStack stack) { + return GroovyScriptCodeConverter.asGroovyCode(stack, false, false); + } + } + return ""; + } + + /** + * @param method name of the method to call + * @param params one or more parameters of the method + * @return a string representing a GrS method + * @see #formatRemovalString(String, List) + */ + public static @NotNull String formatRemovalString(String method, String... params) { + return String.format("%s(%s)", method, String.join(", ", params)); + } + + /** + * @param method name of the method to call + * @param params one or more parameters of the method + * @return a string representing a GrS method + */ + public static @NotNull String formatRemovalString(String method, List params) { + return String.format("%s(%s)", method, String.join(", ", params)); + } + } diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipeLayoutAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipeLayoutAccessor.java index d29d292bb..d9ae2dec6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipeLayoutAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipeLayoutAccessor.java @@ -15,4 +15,7 @@ public interface RecipeLayoutAccessor { @Accessor("guiIngredientGroups") Map getGuiIngredientGroups(); + @Accessor("recipeWrapper") + IRecipeWrapper getRecipeWrapper(); + } From b022314b6c76386517df08d2ef440e16d1815c59 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Mon, 29 Jul 2024 18:06:04 -0700 Subject: [PATCH 11/47] set keybind interval to static final --- .../java/com/cleanroommc/groovyscript/keybind/ReloadKey.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/keybind/ReloadKey.java b/src/main/java/com/cleanroommc/groovyscript/keybind/ReloadKey.java index 5a9f29f43..b4e7513e3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/keybind/ReloadKey.java +++ b/src/main/java/com/cleanroommc/groovyscript/keybind/ReloadKey.java @@ -9,6 +9,8 @@ public class ReloadKey extends GroovyScriptKeybinds.Key { + private static final int INTERVAL = 1000; + private long timeSinceLastUse; public ReloadKey() { @@ -27,7 +29,7 @@ public boolean isValid() { @Override public void handleKeybind() { long time = Minecraft.getSystemTime(); - if (Minecraft.getMinecraft().isIntegratedServerRunning() && time - timeSinceLastUse >= 1000 && Minecraft.getMinecraft().player.getPermissionLevel() >= 4) { + if (Minecraft.getMinecraft().isIntegratedServerRunning() && time - timeSinceLastUse >= INTERVAL && Minecraft.getMinecraft().player.getPermissionLevel() >= 4) { NetworkHandler.sendToServer(new CReload()); timeSinceLastUse = time; } From 856f424cf109ee7d445dfd54895f7d4a05f28262 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Mon, 29 Jul 2024 18:06:57 -0700 Subject: [PATCH 12/47] only check on keyboard downpress --- .../cleanroommc/groovyscript/keybind/RemoveRecipeKey.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java b/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java index 0764629c9..da94eb3f2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java +++ b/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java @@ -26,6 +26,9 @@ public boolean isValid() { @Override public void handleKeybind() { - JeiRemovalHelper.getRemovalMethod(); + // only actually check if this is the downpress + if (Keyboard.getEventKeyState()) { + JeiRemovalHelper.getRemovalMethod(); + } } } From 31470e43f6b496b44eb73446843c61c9236163df Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Mon, 29 Jul 2024 18:07:29 -0700 Subject: [PATCH 13/47] add new GSCC methods to get fluid/item without size --- .../helper/ingredient/GroovyScriptCodeConverter.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java b/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java index 46bfeadff..ff6572fea 100644 --- a/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java +++ b/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java @@ -94,7 +94,7 @@ public static String asGroovyCode(ResourceLocation resourceLocation, boolean col return formatResourceLocation("resource", resourceLocation, colored); } - private static String getSingleItemStack(ItemStack itemStack, boolean colored) { + public static String getSingleItemStack(ItemStack itemStack, boolean colored) { StringBuilder builder = new StringBuilder(); if (colored) builder.append(TextFormatting.DARK_GREEN); builder.append("item"); @@ -130,12 +130,16 @@ public static String asGroovyCode(ItemStack itemStack, boolean colored, boolean return getSingleItemStack(itemStack, colored) + formatNBTTag(itemStack.getTagCompound(), colored, prettyNbt) + formatMultiple(itemStack.getCount(), colored); } + public static String getSingleFluidStack(FluidStack fluidStack, boolean colored) { + return formatGenericHandler("fluid", fluidStack.getFluid().getName(), colored); + } + public static String asGroovyCode(FluidStack fluidStack, boolean colored) { - return formatGenericHandler("fluid", fluidStack.getFluid().getName(), colored) + formatMultiple(fluidStack.amount, colored); + return getSingleFluidStack(fluidStack, colored) + formatMultiple(fluidStack.amount, colored); } public static String asGroovyCode(FluidStack fluidStack, boolean colored, boolean prettyNbt) { - return formatGenericHandler("fluid", fluidStack.getFluid().getName(), colored) + formatNBTTag(fluidStack.tag, colored, prettyNbt) + formatMultiple(fluidStack.amount, colored); + return getSingleFluidStack(fluidStack, colored) + formatNBTTag(fluidStack.tag, colored, prettyNbt) + formatMultiple(fluidStack.amount, colored); } public static String asGroovyCode(String oreDict, boolean colored) { From 8b3638323e3c766ef8b468b7a1a8d186e04da8f6 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Wed, 31 Jul 2024 21:42:22 -0700 Subject: [PATCH 14/47] add nbt tag option to single stack --- .../helper/ingredient/GroovyScriptCodeConverter.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java b/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java index ff6572fea..c49debd41 100644 --- a/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java +++ b/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java @@ -126,6 +126,10 @@ public static String asGroovyCode(ItemStack itemStack, boolean colored) { return getSingleItemStack(itemStack, colored) + formatMultiple(itemStack.getCount(), colored); } + public static String getSingleItemStack(ItemStack itemStack, boolean colored, boolean prettyNbt) { + return getSingleItemStack(itemStack, colored) + formatNBTTag(itemStack.getTagCompound(), colored, prettyNbt); + } + public static String asGroovyCode(ItemStack itemStack, boolean colored, boolean prettyNbt) { return getSingleItemStack(itemStack, colored) + formatNBTTag(itemStack.getTagCompound(), colored, prettyNbt) + formatMultiple(itemStack.getCount(), colored); } @@ -138,6 +142,10 @@ public static String asGroovyCode(FluidStack fluidStack, boolean colored) { return getSingleFluidStack(fluidStack, colored) + formatMultiple(fluidStack.amount, colored); } + public static String getSingleFluidStack(FluidStack fluidStack, boolean colored, boolean prettyNbt) { + return getSingleFluidStack(fluidStack, colored) + formatNBTTag(fluidStack.tag, colored, prettyNbt); + } + public static String asGroovyCode(FluidStack fluidStack, boolean colored, boolean prettyNbt) { return getSingleFluidStack(fluidStack, colored) + formatNBTTag(fluidStack.tag, colored, prettyNbt) + formatMultiple(fluidStack.amount, colored); } From f9c605cb5e0d3dba1a87f2c29cdcc6be093cadb3 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Wed, 31 Jul 2024 21:45:43 -0700 Subject: [PATCH 15/47] move jei removal to subfolder, rework, and document --- .../compat/mods/jei/IJEIRemoval.java | 86 ---- .../compat/mods/jei/JeiRemovalHelper.java | 220 --------- .../compat/mods/jei/removal/IJEIRemoval.java | 107 +++++ .../mods/jei/removal/JeiRemovalHelper.java | 161 +++++++ .../mods/jei/removal/OperationHandler.java | 427 ++++++++++++++++++ .../groovyscript/keybind/RemoveRecipeKey.java | 2 +- 6 files changed, 696 insertions(+), 307 deletions(-) delete mode 100644 src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/IJEIRemoval.java delete mode 100644 src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiRemovalHelper.java create mode 100644 src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/IJEIRemoval.java create mode 100644 src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/JeiRemovalHelper.java create mode 100644 src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/IJEIRemoval.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/IJEIRemoval.java deleted file mode 100644 index 751d157ba..000000000 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/IJEIRemoval.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.cleanroommc.groovyscript.compat.mods.jei; - -import mezz.jei.api.gui.IRecipeLayout; -import org.jetbrains.annotations.NotNull; - -import java.util.Collection; - -public interface IJEIRemoval { - - /** - * A list containing any number of strings which - * are the UIDs of a JEI recipe category {@link mezz.jei.api.recipe.IRecipeCategory#getUid()}. - *
- * This list is typically immutable. - * - * @return a list of all UIDs associated with the target recipe category - */ - @NotNull - Collection getCategories(); - - /** - * Generates the removal method for the targeted recipe, - * using the information from JEI to do so. - *
- * Should only remove a single recipe, although this may not be guaranteed. - *
- * The path to the recipe will automatically be generated, only the method name and its parameters should be returned. - * - * @param layout a map of type to group of slots displayed in JEI - * @return the method to remove the specific recipe - */ - @NotNull - String getRemoval(IRecipeLayout layout); - - @Deprecated - interface Direct extends IJEIRemoval { - // TODO removeme - } - - /** - * Has a default removal method, {@link #getRemoval(IRecipeLayout)}, which returns a method to remove by all input ingredients. - */ - interface IJEIRemoveByAllInput extends IJEIRemoval { - - /** - * @see JeiRemovalHelper#getFromInput - */ - @Override - default @NotNull String getRemoval(IRecipeLayout layout) { - return JeiRemovalHelper.getFromInput(layout); - } - - } - - /** - * Has a default removal method, {@link #getRemoval(IRecipeLayout)}, which returns a method to remove by the first {@link net.minecraft.item.ItemStack} input. - * Should only be used if there is only a single input, and there is only a single input -> recipe entry. - */ - interface IJEIRemoveByItemInput extends IJEIRemoval { - - /** - * @see JeiRemovalHelper#getFromSingleUniqueItemInput - */ - @Override - default @NotNull String getRemoval(IRecipeLayout layout) { - return JeiRemovalHelper.getFromSingleUniqueItemInput(layout); - } - - } - - /** - * Has a default removal method, {@link #getRemoval(IRecipeLayout)}, which returns a method to remove by the first {@link net.minecraftforge.fluids.FluidStack} input. - * Should only be used if there is only a single input, and there is only a single input -> recipe entry. - */ - interface IJEIRemoveByFluidInput extends IJEIRemoval.Direct { - - /** - * @see JeiRemovalHelper#getFromSingleUniqueFluidInput - */ - @Override - default @NotNull String getRemoval(IRecipeLayout layout) { - return JeiRemovalHelper.getFromSingleUniqueFluidInput(layout); - } - - } -} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiRemovalHelper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiRemovalHelper.java deleted file mode 100644 index f620d6d0d..000000000 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/JeiRemovalHelper.java +++ /dev/null @@ -1,220 +0,0 @@ -package com.cleanroommc.groovyscript.compat.mods.jei; - -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.api.INamed; -import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; -import com.cleanroommc.groovyscript.core.mixin.jei.RecipeGuiLogicAccessor; -import com.cleanroommc.groovyscript.core.mixin.jei.RecipesGuiAccessor; -import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; -import com.google.common.collect.Lists; -import mezz.jei.api.gui.IGuiIngredient; -import mezz.jei.api.gui.IRecipeLayout; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.ScaledResolution; -import net.minecraft.item.ItemStack; -import net.minecraft.util.text.TextComponentString; -import net.minecraftforge.fluids.FluidStack; -import org.jetbrains.annotations.NotNull; -import org.lwjgl.input.Mouse; - -import java.util.ArrayList; -import java.util.List; - -public class JeiRemovalHelper { - - /** - * uses the focused category uid to filter - */ - public static void getRemovalMethod() { - var state = ((RecipeGuiLogicAccessor) ((RecipesGuiAccessor) JeiPlugin.jeiRuntime.getRecipesGui()).getLogic()).getState(); - if (state == null) return; - var recipeCategoryUid = state.getRecipeCategories().get(state.getRecipeCategoryIndex()).getUid(); - getRemovalMethod(recipeCategoryUid); - } - - /** - * generates a method to remove the targeted recipe in JEI and prints the via {@link #say(String)}. - * TODO doesnt work with vanilla, or anything not a mod container. - * - * @param uid the id of the targeted JEI category - */ - private static void getRemovalMethod(String uid) { - var output = getUnderMouse(); - if (output == null) return; - - // TODO why does vanilla have to be special cased, can that be changed? - for (INamed registry : Lists.newArrayList(VanillaModule.crafting, VanillaModule.furnace)) { - if (registry.isEnabled() && registry instanceof IJEIRemoval removal && removal.getCategories().contains(uid)) { - var operation = removal.getRemoval(output); - if (operation.isEmpty()) continue; - var message = String.format("%s.%s", registry.getName(), operation); - say(message); - return; - } - } - - // TODO implode - for (INamed registry : Lists.newArrayList( - VanillaModule.inWorldCrafting.fluidToFluid, - VanillaModule.inWorldCrafting.fluidToItem, - VanillaModule.inWorldCrafting.fluidToBlock, - VanillaModule.inWorldCrafting.explosion, - VanillaModule.inWorldCrafting.burning, - VanillaModule.inWorldCrafting.pistonPush)) { - if (registry.isEnabled() && registry instanceof IJEIRemoval removal && removal.getCategories().contains(uid)) { - var operation = removal.getRemoval(output); - if (operation.isEmpty()) continue; - var message = String.format("inWorldCrafting.%s.%s", registry.getName(), operation); - say(message); - return; - } - } - - for (var groovyContainer : ModSupport.getAllContainers()) { - if (!groovyContainer.isLoaded()) continue; - for (var registry : groovyContainer.get().getRegistries()) { - if (registry.isEnabled() && registry instanceof IJEIRemoval removal && removal.getCategories().contains(uid)) { - var operation = removal.getRemoval(output); - if (operation.isEmpty()) continue; - var message = String.format("mods.%s.%s.%s", groovyContainer.getModId(), registry.getName(), operation); - say(message); - return; - } - } - } - say(String.format("Couldn't find a way to remove the targeted recipe in category %s", uid)); - } - - - /** - * Get the recipe layout being hovered and return the ingredient groups for further parsing - * - * @return ingredient groups attached to targeted recipe layout - */ - private static IRecipeLayout getUnderMouse() { - var layouts = ((RecipesGuiAccessor) JeiPlugin.jeiRuntime.getRecipesGui()).getRecipeLayouts(); - if (layouts == null) return null; - var scaledresolution = new ScaledResolution(Minecraft.getMinecraft()); - var mouseX = Mouse.getX() * scaledresolution.getScaledWidth() / Minecraft.getMinecraft().displayWidth; - var mouseY = scaledresolution.getScaledHeight() - Mouse.getY() * scaledresolution.getScaledHeight() / Minecraft.getMinecraft().displayHeight - 1; - - for (var layout : layouts) { - if (layout.isMouseOver(mouseX, mouseY)) { - return layout; - } - } - return null; - } - - /** - * Currently prints the message to the log and to chat, but perhaps this should be reworked to support appending to a specific file? - * TODO this - * - * @param message message to get printed to the log - */ - private static void say(String message) { - GroovyLog.get().warn(message); - Minecraft.getMinecraft().player.sendMessage(new TextComponentString(message)); - } - - /** - * Converts the RecipeLayout into an output method for a GroovyScript script. - * Removes by input {@link ItemStack}, and the input should be unique. - * - * @param layout the RecipeLayout to convert - * @return a string representing a GrS method to remove the recipe by input - */ - public static @NotNull String getFromSingleUniqueItemInput(IRecipeLayout layout) { - var stack = getFirstItemStack(layout); - return stack.isEmpty() ? "" : formatRemovalString("removeByInput", stack); - } - - - /** - * Converts the RecipeLayout into an output method for a GroovyScript script. - * Removes by input {@link FluidStack}, and the input should be unique. - * - * @param layout the RecipeLayout to convert - * @return a string representing a GrS method to remove the recipe by input - */ - public static @NotNull String getFromSingleUniqueFluidInput(IRecipeLayout layout) { - var stack = getFirstFluidStack(layout); - return stack.isEmpty() ? "" : formatRemovalString("removeByInput", stack); - } - - /** - * Converts the RecipeLayout into an output method for a GroovyScript script. - * Gathers all inputs that are either {@link ItemStack} or {@link FluidStack} and generates a function for that. - *
- * If an input that is not either an {@link ItemStack} or a {@link FluidStack} is required, a custom method should be created. - * - * @param layout the RecipeLayout to convert - * @return a string representing a GrS method to remove the recipe by input - */ - public static @NotNull String getFromInput(IRecipeLayout layout) { - List removing = new ArrayList<>(); - for (IGuiIngredient slot : layout.getItemStacks().getGuiIngredients().values()) { - if (slot.isInput() && !slot.getAllIngredients().isEmpty() && slot.getAllIngredients().get(0) instanceof ItemStack stack) { - removing.add(GroovyScriptCodeConverter.asGroovyCode(stack, false, false)); - } - } - for (IGuiIngredient slot : layout.getFluidStacks().getGuiIngredients().values()) { - if (slot.isInput() && !slot.getAllIngredients().isEmpty() && slot.getAllIngredients().get(0) instanceof FluidStack stack) { - removing.add(GroovyScriptCodeConverter.asGroovyCode(stack, false, false)); - } - } - // While there are occasionally other types of ingredients, such as Thaumcraft Aspects - // or Mekanism Gases, those are rare and should be handled by those specific compats. - // 99% of all recipes will either an ItemStack or a FluidStack. - - if (removing.isEmpty()) return ""; - return formatRemovalString("removeByInput", removing); - } - - private static @NotNull String getFirstItemStack(IRecipeLayout layout) { - if (layout.getItemStacks().getGuiIngredients().values().stream().filter(IGuiIngredient::isInput).filter(x -> !x.getAllIngredients().isEmpty()).count() > 1) { - say("found too many input itemstacks!"); - return ""; - } - for (IGuiIngredient slot : layout.getItemStacks().getGuiIngredients().values()) { - if (slot.isInput() && !slot.getAllIngredients().isEmpty() && slot.getAllIngredients().get(0) instanceof ItemStack stack) { - return GroovyScriptCodeConverter.asGroovyCode(stack, false, false); - } - } - return ""; - } - - private static @NotNull String getFirstFluidStack(IRecipeLayout layout) { - if (layout.getFluidStacks().getGuiIngredients().values().stream().filter(IGuiIngredient::isInput).filter(x -> !x.getAllIngredients().isEmpty()).count() > 1) { - say("found too many input fluidstacks!"); - return ""; - } - for (IGuiIngredient slot : layout.getFluidStacks().getGuiIngredients().values()) { - if (slot.isInput() && !slot.getAllIngredients().isEmpty() && slot.getAllIngredients().get(0) instanceof FluidStack stack) { - return GroovyScriptCodeConverter.asGroovyCode(stack, false, false); - } - } - return ""; - } - - /** - * @param method name of the method to call - * @param params one or more parameters of the method - * @return a string representing a GrS method - * @see #formatRemovalString(String, List) - */ - public static @NotNull String formatRemovalString(String method, String... params) { - return String.format("%s(%s)", method, String.join(", ", params)); - } - - /** - * @param method name of the method to call - * @param params one or more parameters of the method - * @return a string representing a GrS method - */ - public static @NotNull String formatRemovalString(String method, List params) { - return String.format("%s(%s)", method, String.join(", ", params)); - } - -} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/IJEIRemoval.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/IJEIRemoval.java new file mode 100644 index 000000000..8c4fe0a59 --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/IJEIRemoval.java @@ -0,0 +1,107 @@ +package com.cleanroommc.groovyscript.compat.mods.jei.removal; + +import mezz.jei.api.gui.IRecipeLayout; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.List; + +/** + * Interface that should be implemented on {@link com.cleanroommc.groovyscript.api.INamed} registries, + * primarily those that would be iterated through as part of {@link com.cleanroommc.groovyscript.compat.mods.ModSupport#getAllContainers()}, + * and contains methods indicating what JEI Categories the given registry represents + * and how to remove those recipes. + *

+ * Primarily interacted with by {@link JeiRemovalHelper#getRemovalMethod(String, IRecipeLayout)}. + *

+ * In most cases, classes should implement {@link Default} instead of directly implementing {@link IJEIRemoval}. + * + * @see Default + */ +public interface IJEIRemoval { + + /** + * A list containing any number of strings which + * are the UIDs of a JEI recipe category {@link mezz.jei.api.recipe.IRecipeCategory#getUid()}. + *
+ * This list is typically immutable. + * + * @return a list of all UIDs associated with the target recipe category + */ + @NotNull + Collection getCategories(); + + /** + * Generates one or more removal methods for the targeted recipe, if possible, + * using the information from JEI to do so. + *

+ * If possible, the first removal method should only remove a single recipe, + * but this is not required and may not be possible. + *

+ * The path to the recipe will automatically be generated before each entry, only the method name and its parameters should be returned. + *

+ * Any empty list should be returned if generating a removal method is not possible. + * + * @param layout a map of type to group of slots displayed in JEI + * @return a collection of all generated method to remove the targeted recipe + */ + @NotNull + List getRemoval(IRecipeLayout layout); + + /** + * Has a default removal method, {@link #getRemoval(IRecipeLayout)}, + * which returns a method to remove the recipe for each input and output. + *

+ * If changing the operations interacted with is required, implementations should generally override + * the {@link #getJEIOperations()} method instead of {@link #getRemoval(IRecipeLayout)}. + */ + interface Default extends IJEIRemoval { + + /** + * A shorthand method that modifies the default operations so each + * of the default operations excludes the provided slots. + *

+ * Should be used inside {@link #getJEIOperations()} to provide the return value. + * + * @param excluded all slots to be excluded + * @return a list if operations with the given slots excluded + * @see OperationHandler#defaultOperations() + */ + static List excludeSlots(int... excluded) { + var operations = OperationHandler.defaultOperations(); + for (var operation : operations) { + if (operation instanceof OperationHandler.ISlotOperation op) op.exclude(excluded); + } + return operations; + } + + /** + * Calls {@link OperationHandler#removalOptions(IRecipeLayout, List)} with the output of {@link #getJEIOperations()}.\ + *

+ * In almost all cases, this should not be overridden and + * {@link #getJEIOperations()} should be manipulated instead. + * + * @see OperationHandler#removalOptions(IRecipeLayout, List) + */ + @Override + default @NotNull List getRemoval(IRecipeLayout layout) { + return OperationHandler.removalOptions(layout, getJEIOperations()); + } + + /** + * Gets the desired operations that will be parsed through with the target {@link IRecipeLayout}. + *

+ * Should be overridden to modify the excluded slots, override incorrectly labeled input or output slots, + * or to override the names of the methods. + * + * @return a list of operations to process + * @see OperationHandler#defaultOperations() + * @see OperationHandler#removalOptions(IRecipeLayout, List) + */ + default @NotNull List getJEIOperations() { + return OperationHandler.defaultOperations(); + } + + } + +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/JeiRemovalHelper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/JeiRemovalHelper.java new file mode 100644 index 000000000..4ea7de1c1 --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/JeiRemovalHelper.java @@ -0,0 +1,161 @@ +package com.cleanroommc.groovyscript.compat.mods.jei.removal; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.INamed; +import com.cleanroommc.groovyscript.command.TextCopyable; +import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.JeiPlugin; +import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; +import com.cleanroommc.groovyscript.core.mixin.jei.RecipeGuiLogicAccessor; +import com.cleanroommc.groovyscript.core.mixin.jei.RecipesGuiAccessor; +import com.google.common.collect.Lists; +import mezz.jei.api.gui.IRecipeLayout; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.ScaledResolution; +import org.jetbrains.annotations.NotNull; +import org.lwjgl.input.Mouse; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class JeiRemovalHelper { + + /** + * uses the focused category uid to filter + */ + public static List getRemovalMethod() { + return getRemovalMethod(getUid()); + } + + /** + * generates a method to remove the targeted recipe in JEI and prints the via {@link #say(String)}. + * + * @param uid the id of the targeted JEI category + */ + public static List getRemovalMethod(String uid) { + var output = getUnderMouse(); + if (output == null) return Collections.emptyList(); + return getRemovalMethod(uid, output); + } + + /** + * generates a method to remove the targeted recipe in JEI and prints the via {@link #say(String)}. + * + * @param uid the id of the targeted JEI category + */ + public static List getRemovalMethod(String uid, IRecipeLayout output) { + var list = new ArrayList(); + + + // TODO JEI why does vanilla have to be special cased, can that be changed? + for (INamed registry : Lists.newArrayList(VanillaModule.crafting, VanillaModule.furnace)) { + if (registry.isEnabled() && registry instanceof IJEIRemoval removal && removal.getCategories().contains(uid)) { + var operation = removal.getRemoval(output); + if (operation.isEmpty()) continue; + for (var s : operation) { + var message = String.format("%s.%s", registry.getName(), s); + list.add(message); + say(message); + } + return list; + } + } + + // TODO implode + for (INamed registry : Lists.newArrayList( + VanillaModule.inWorldCrafting.fluidToFluid, + VanillaModule.inWorldCrafting.fluidToItem, + VanillaModule.inWorldCrafting.fluidToBlock, + VanillaModule.inWorldCrafting.explosion, + VanillaModule.inWorldCrafting.burning, + VanillaModule.inWorldCrafting.pistonPush)) { + if (registry.isEnabled() && registry instanceof IJEIRemoval removal && removal.getCategories().contains(uid)) { + var operation = removal.getRemoval(output); + if (operation.isEmpty()) continue; + for (var s : operation) { + var message = String.format("%s.%s", registry.getName(), s); + list.add(message); + say(message); + } + return list; + } + } + + for (var groovyContainer : ModSupport.getAllContainers()) { + if (!groovyContainer.isLoaded()) continue; + for (var registry : groovyContainer.get().getRegistries()) { + if (registry.isEnabled() && registry instanceof IJEIRemoval removal && removal.getCategories().contains(uid)) { + var operation = removal.getRemoval(output); + if (operation.isEmpty()) continue; + for (var s : operation) { + var message = String.format("mods.%s.%s.%s", groovyContainer.getModId(), registry.getName(), s); + list.add(message); + say(message); + } + return list; + } + } + } + say(String.format("Couldn't find a way to remove the targeted recipe in category %s", uid)); + return list; + } + + + public static String getUid() { + var state = ((RecipeGuiLogicAccessor) ((RecipesGuiAccessor) JeiPlugin.jeiRuntime.getRecipesGui()).getLogic()).getState(); + if (state == null) return ""; + return state.getRecipeCategories().get(state.getRecipeCategoryIndex()).getUid(); + } + + /** + * Get the recipe layout being hovered and return the ingredient groups for further parsing + * + * @return ingredient groups attached to targeted recipe layout + */ + public static IRecipeLayout getUnderMouse() { + var layouts = ((RecipesGuiAccessor) JeiPlugin.jeiRuntime.getRecipesGui()).getRecipeLayouts(); + if (layouts == null) return null; + var scaledresolution = new ScaledResolution(Minecraft.getMinecraft()); + var mouseX = Mouse.getX() * scaledresolution.getScaledWidth() / Minecraft.getMinecraft().displayWidth; + var mouseY = scaledresolution.getScaledHeight() - Mouse.getY() * scaledresolution.getScaledHeight() / Minecraft.getMinecraft().displayHeight - 1; + + for (var layout : layouts) { + if (layout.isMouseOver(mouseX, mouseY)) { + return layout; + } + } + return null; + } + + /** + * Currently prints the message to the log and to chat, but perhaps this should be reworked to support appending to a specific file? + * TODO JEI this + * + * @param message message to get printed to the log + */ + public static void say(String message) { + GroovyLog.get().warn(message); + Minecraft.getMinecraft().player.sendMessage(TextCopyable.string(message, message).build()); + } + + /** + * @param method name of the method to call + * @param params one or more parameters of the method + * @return a string representing a GrS method + * @see #format(String, List) + */ + public static @NotNull String format(String method, String... params) { + return String.format("%s(%s)", method, String.join(", ", params)); + } + + /** + * @param method name of the method to call + * @param params one or more parameters of the method + * @return a string representing a GrS method + */ + public static @NotNull String format(String method, List params) { + return String.format("%s(%s)", method, String.join(", ", params)); + } + +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java new file mode 100644 index 000000000..46e2fdfd3 --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java @@ -0,0 +1,427 @@ +package com.cleanroommc.groovyscript.compat.mods.jei.removal; + +import com.cleanroommc.groovyscript.compat.mods.jei.JeiPlugin; +import com.cleanroommc.groovyscript.core.mixin.jei.RecipeLayoutAccessor; +import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; +import com.google.common.collect.ImmutableList; +import mezz.jei.api.gui.IGuiIngredient; +import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.ingredients.VanillaTypes; +import mezz.jei.api.recipe.IIngredientType; +import mezz.jei.startup.StackHelper; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.ParametersAreNonnullByDefault; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.function.BiFunction; +import java.util.function.Function; +import java.util.stream.Collectors; + +@ParametersAreNonnullByDefault +public class OperationHandler { + + private static final String EXACT_METHOD_NAME = "removeByExactInput"; + + /** + * Varargs variant of {@link #removalOptions(IRecipeLayout, List)}. + * + * @see #removalOptions(IRecipeLayout, List) + */ + public static List removalOptions(IRecipeLayout layout, IOperation... operations) { + return removalOptions(layout, Arrays.asList(operations)); + } + + /** + * Iterates through the provided list of {@link IOperation}s and calls the {@link IOperation#parse(IRecipeLayout, List, List)} + * method with local lists before sorting them and returning a new immutable list constructed from the temporary lists. + * + * @param layout the recipe layout to be parsed + * @param operations a list of operations to perform to generate the removal methods + * @return an immutable list of strings, with each one being a removal method for the given recipe contained by the recipe layout + */ + public static List removalOptions(IRecipeLayout layout, List operations) { + var removing = new ArrayList(); + var exactInput = new ArrayList(); + + for (var operation : operations) operation.parse(layout, removing, exactInput); + + var builder = ImmutableList.builder(); + if (exactInput.size() > 1) builder.add(JeiRemovalHelper.format(EXACT_METHOD_NAME, exactInput)); + builder.addAll(removing.stream().distinct().sorted().collect(Collectors.toList())); + return builder.build(); + } + + /** + * @return the default operations to be used, which will get all item and fluid stacks + * @see ItemOperation#defaultItemOperation() + * @see FluidOperation#defaultFluidOperation() + */ + public static List defaultOperations() { + return ImmutableList.of(ItemOperation.defaultItemOperation(), FluidOperation.defaultFluidOperation()); + } + + /** + * Base operations requirement, merely requires that the implementing classes contain a {@link #parse(IRecipeLayout, List, List)} method. + */ + public interface IOperation { + + /** + * @param layout the recipe layout to be parsed + * @param removing a list of strings which should be modified, and any removal methods should be added to + * @param exactInput if the implementing class gathers input ingredients, an addition list to manage them for a separate method + */ + void parse(IRecipeLayout layout, List removing, List exactInput); + + } + + /** + * Interface for a {@link BaseSlotOperation}, requiring the ability to + * block specific slots from appearing, + * override the input or output state of a slot (due to the slot being incorrectly listed) + * set the method name for the input or output. + * + * @param the operation class + */ + public interface ISlotOperation extends IOperation { + + /** + * Excludes all provided slot numbers from being evaluated. + * Some slots cannot be parsed properly, are superfluous, contain helper items unrelated to the recipe, + * or otherwise should be ignored when generating methods to remove the recipe. + * + * @param ints all slots to be excluded + */ + ISlotOperation exclude(int... ints); + + /** + * Sets all provided slot numbers as an input slot. + * Some slots incorrectly list themselves as an input or an output. + * + * @param ints all slots to be set as an input + */ + ISlotOperation input(int... ints); + + /** + * Sets all provided slot numbers as an output slot. + * Some slots incorrectly list themselves as an input or an output. + * + * @param ints all slots to be set as an output + */ + ISlotOperation output(int... ints); + + /** + * @param name the name of the method used to remove inputs + */ + ISlotOperation input(String name); + + /** + * @param name the name of the method used to remove outputs + */ + ISlotOperation output(String name); + + } + + /** + * Checks that the wrapper is an instance of the given class, then calls the provided function parameter + * to generate a list of methods to remove the recipe based on the recipe wrapper. + *

+ * Note that in most cases, using {@link BaseSlotOperation} and some combination of the + * {@link ISlotOperation#exclude(int...)}, {@link ISlotOperation#input(int...)}, and {@link ISlotOperation#output(int...)} + * methods will be able to generate all the removal methods needed. + *

+ * {@link WrapperOperation} should generally only be used if it isn't possible to access + * the desired information through a {@link BaseSlotOperation}. + * + * @param wrapper type + */ + public static class WrapperOperation implements IOperation { + + private final Class wrapperClass; + private final Function> function; + + /** + * @param wrapperClass the wrapper class that is being parsed + * @param function a function that accepts an instance of the wrapper class and returns a list of strings + * to generate output methods for the given recipe + */ + public WrapperOperation(Class wrapperClass, Function> function) { + this.wrapperClass = wrapperClass; + this.function = function; + } + + protected List function(T wrapper) { + return this.function.apply(wrapper); + } + + @Override + public void parse(IRecipeLayout layout, List removing, List exactInput) { + var wrapper = ((RecipeLayoutAccessor) layout).getRecipeWrapper(); + if (wrapperClass.isInstance(wrapper)) { + removing.addAll(function(wrapperClass.cast(wrapper))); + } + } + + } + + /** + * Abstract class containing the basic logic for input and output slots, what slots are excluded, + * and what method name should be used for a given slot. + */ + public abstract static class BaseSlotOperation implements ISlotOperation> { + + private static final String DEFAULT_INPUT_METHOD_NAME = "removeByInput"; + private static final String DEFAULT_OUTPUT_METHOD_NAME = "removeByOutput"; + + protected final List excluded = new ArrayList<>(); + protected final List reallyInputs = new ArrayList<>(); + protected final List reallyOutputs = new ArrayList<>(); + protected String inputMethodName = DEFAULT_INPUT_METHOD_NAME; + protected String outputMethodName = DEFAULT_OUTPUT_METHOD_NAME; + + @Override + public BaseSlotOperation exclude(int... ints) { + for (var i : ints) this.excluded.add(i); + return this; + } + + @Override + public BaseSlotOperation input(int... ints) { + for (var i : ints) this.reallyInputs.add(i); + return this; + } + + @Override + public BaseSlotOperation output(int... ints) { + for (var i : ints) this.reallyOutputs.add(i); + return this; + } + + @Override + public BaseSlotOperation input(String name) { + this.inputMethodName = name; + return this; + } + + @Override + public BaseSlotOperation output(String name) { + this.outputMethodName = name; + return this; + } + + /** + * Checks if the slot should be skipped. + * By default, checks the {@link #excluded} list and if the slot contains no ingredients. + * + * @param slot the entry slot being parsed + * @return if the slot should be ignored + */ + protected boolean isIgnored(Map.Entry> slot) { + return this.excluded.contains(slot.getKey()) || slot.getValue().getAllIngredients().isEmpty(); + } + + /** + * Checks if the slot should be considered an input slot. + * By default, checks the {@link #reallyInputs} list for overrides, then if the slot is marked as an input. + * + * @param slot the entry slot being parsed + * @return if the slot is an input + */ + protected boolean isInput(Map.Entry> slot) { + if (this.reallyInputs.contains(slot.getKey())) return true; + return slot.getValue().isInput(); + } + + + /** + * Checks if the slot should be considered an output slot. + * By default, checks the {@link #reallyOutputs} list for overrides, then if the slot is an input via {@link #isInput(Map.Entry)}. + * + * @param slot the entry slot being parsed + * @return if the slot is an output + */ + protected boolean isOutput(Map.Entry> slot) { + if (this.reallyOutputs.contains(slot.getKey())) return true; + return !isInput(slot); + } + + /** + * @param slot the entry slot being parsed + * @return the method name used to represent the slot + */ + protected String getMethod(Map.Entry> slot) { + return isOutput(slot) ? this.outputMethodName : this.inputMethodName; + } + + } + + /** + * Abstract class containing the core logic of the operation, + * parsing the provided gui ingredients through a provided function. + */ + public abstract static class SlotOperation extends BaseSlotOperation { + + protected final boolean hasExactInput; + protected final BiFunction, String> function; + + /** + * @param hasExactInput if slots marked as an input should add to the exactInput list in {@link #parse(IRecipeLayout, List, List)}. + * @param function a bifunction taking the primary ingredient in the slot and all ingredients in the slot and returning + * a String to represent that slot, typically via an {@link com.cleanroommc.groovyscript.mapper.ObjectMapper ObjectMapper}. + */ + public SlotOperation(boolean hasExactInput, BiFunction, String> function) { + this.hasExactInput = hasExactInput; + this.function = function; + } + + /** + * @param layout the recipe layout being parsed + * @return the ingredients for the target recipe layout + */ + abstract Map> getGuiIngredients(IRecipeLayout layout); + + protected String function(T stack, List list) { + return this.function.apply(stack, list); + } + + @Override + public void parse(IRecipeLayout layout, List removing, List exactInput) { + for (var slot : getGuiIngredients(layout).entrySet()) { + if (isIgnored(slot)) continue; + + // check the displayed ingredient first, otherwise try to use the first of all ingredients. + var stack = slot.getValue().getDisplayedIngredient(); + if (stack == null) { + stack = slot.getValue().getAllIngredients().get(0); + if (stack == null) continue; + } + + var identity = function(stack, slot.getValue().getAllIngredients()); + if (this.hasExactInput && !isOutput(slot)) exactInput.add(identity); + removing.add(JeiRemovalHelper.format(getMethod(slot), identity)); + } + } + } + + /** + * Class for ingredient groups obtained via {@link IRecipeLayout#getIngredientsGroup(IIngredientType)}. + *

+ * Used to read the gui ingredients added via the modern format. + * + * @see ClassSlotOperation + */ + public static class IngredientSlotOperation extends SlotOperation { + + private final IIngredientType type; + + /** + * @param type the {@link IIngredientType} that is used to get the gui ingredients from the recipe layout + * @param hasExactInput if slots marked as an input should add to the exactInput list in {@link #parse(IRecipeLayout, List, List)}. + * @param function a bifunction taking the primary ingredient in the slot and all ingredients in the slot and returning + * a String to represent that slot, typically via an {@link com.cleanroommc.groovyscript.mapper.ObjectMapper ObjectMapper}. + */ + public IngredientSlotOperation(IIngredientType type, boolean hasExactInput, BiFunction, String> function) { + super(hasExactInput, function); + this.type = type; + } + + @Override + protected Map> getGuiIngredients(IRecipeLayout layout) { + return layout.getIngredientsGroup(type).getGuiIngredients(); + } + + } + + /** + * Class for ingredient groups obtained via the deprecated {@link IRecipeLayout#getIngredientsGroup(Class)} method.\ + *

+ * Used to read the gui ingredients added via the deprecated format. + * + * @see IngredientSlotOperation + */ + @SuppressWarnings("deprecation") + public static class ClassSlotOperation extends SlotOperation { + + private final Class clazz; + + /** + * @param clazz the class that is used to get the gui ingredients from the recipe layout through the deprecated format + * @param hasExactInput if slots marked as an input should add to the exactInput list in {@link #parse(IRecipeLayout, List, List)}. + * @param function a bifunction taking the primary ingredient in the slot and all ingredients in the slot and returning + * a String to represent that slot, typically via an {@link com.cleanroommc.groovyscript.mapper.ObjectMapper ObjectMapper}. + */ + public ClassSlotOperation(Class clazz, boolean hasExactInput, BiFunction, String> function) { + super(hasExactInput, function); + this.clazz = clazz; + } + + @Override + protected Map> getGuiIngredients(IRecipeLayout layout) { + return layout.getIngredientsGroup(clazz).getGuiIngredients(); + } + + } + + public static class ItemOperation extends IngredientSlotOperation { + + protected ItemOperation() { + super(VanillaTypes.ITEM, true, + (stack, all) -> { + var oreDict = convertToOreDict(all); + return oreDict.isEmpty() ? GroovyScriptCodeConverter.getSingleItemStack(stack, false, false) : oreDict; + }); + } + + /** + * @param ingredients a list of itemstacks to check + * @return if the list of itemstacks are an oredict, represent them as an oredict + */ + protected static String convertToOreDict(List ingredients) { + if (JeiPlugin.jeiHelpers.getStackHelper() instanceof StackHelper stackHelper) { + var dict = stackHelper.getOreDictEquivalent(ingredients); + return dict == null ? "" : GroovyScriptCodeConverter.asGroovyCode(dict, false); + } + return ""; + } + + /** + * @return the base {@link ItemOperation} + */ + public static ISlotOperation defaultItemOperation() { + return new ItemOperation(); + } + + /** + * @return an {@link ItemOperation} that ignores all input slots. + */ + public static IOperation outputItemOperation() { + return new ItemOperation() { + @Override + public boolean isIgnored(@NotNull Map.Entry> slot) { + return slot.getValue().isInput(); + } + }; + } + + } + + public static class FluidOperation extends IngredientSlotOperation { + + protected FluidOperation() { + super(VanillaTypes.FLUID, true, (stack, all) -> GroovyScriptCodeConverter.getSingleFluidStack(stack, false, false)); + } + + /** + * @return the base {@link FluidOperation} + */ + public static ISlotOperation defaultFluidOperation() { + return new FluidOperation(); + } + + } + +} diff --git a/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java b/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java index da94eb3f2..b63edfb0f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java +++ b/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java @@ -2,7 +2,7 @@ import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.JeiPlugin; -import com.cleanroommc.groovyscript.compat.mods.jei.JeiRemovalHelper; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; import mezz.jei.api.IRecipesGui; import net.minecraft.client.Minecraft; import net.minecraftforge.client.settings.KeyConflictContext; From 58d9580b652679ff99a7051884a6afedf703c6ae Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Wed, 31 Jul 2024 21:46:17 -0700 Subject: [PATCH 16/47] add BetterWithMods jei removal --- .../mods/betterwithmods/AnvilCrafting.java | 30 ++++++++++++++++++- .../mods/betterwithmods/BetterWithMods.java | 12 ++++++++ .../compat/mods/betterwithmods/Cauldron.java | 14 +++++++-- .../compat/mods/betterwithmods/Crucible.java | 14 +++++++-- .../compat/mods/betterwithmods/Hopper.java | 18 ++++++++++- .../betterwithmods/IJEIRemovalIOutput.java | 25 ++++++++++++++++ .../compat/mods/betterwithmods/Kiln.java | 13 +++++++- .../compat/mods/betterwithmods/MillStone.java | 11 ++++++- .../compat/mods/betterwithmods/Saw.java | 13 ++++++-- .../compat/mods/betterwithmods/Turntable.java | 20 +++++++++++-- 10 files changed, 158 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/IJEIRemovalIOutput.java diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilCrafting.java index 91a4fa617..32c34ea40 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilCrafting.java @@ -1,25 +1,44 @@ package com.cleanroommc.groovyscript.compat.mods.betterwithmods; import betterwithmods.common.registry.anvil.AnvilCraftingManager; +import betterwithmods.module.compat.jei.category.SteelAnvilRecipeCategory; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RecipeBuilderDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; +import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; +import mezz.jei.api.recipe.wrapper.ICraftingRecipeWrapper; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraft.item.crafting.Ingredient; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; @RegistryDescription -public class AnvilCrafting extends VirtualizedRegistry { +public class AnvilCrafting extends VirtualizedRegistry implements IJEIRemoval.Default { public AnvilCrafting() { super(Alias.generateOfClass(AnvilCrafting.class).andGenerate("SoulforgedSteelAnvil")); } + private static OperationHandler.IOperation registryNameOperation() { + return new OperationHandler.WrapperOperation<>(ICraftingRecipeWrapper.class, wrapper -> + wrapper.getRegistryName() == null + ? Collections.emptyList() + : Collections.singletonList(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.asGroovyCode(wrapper.getRegistryName(), false)))); + } + @RecipeBuilderDescription(example = { @Example(".output(item('minecraft:diamond') * 32).matrix([[item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),null],[item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),null],[item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),null],[null,null,null,item('minecraft:gold_ingot').transform({ _ -> item('minecraft:diamond') })]])"), @Example(".output(item('minecraft:diamond')).matrix('BXXX').mirrored().key('B', item('minecraft:stone')).key('X', item('minecraft:gold_ingot'))") @@ -92,4 +111,13 @@ public void removeAll() { AnvilCraftingManager.ANVIL_CRAFTING.clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(SteelAnvilRecipeCategory.UID); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(registryNameOperation(), OperationHandler.ItemOperation.outputItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation()); + } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/BetterWithMods.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/BetterWithMods.java index f2033d46c..33f5993f0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/BetterWithMods.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/BetterWithMods.java @@ -15,4 +15,16 @@ public class BetterWithMods extends GroovyPropertyContainer { public final Hopper hopper = new Hopper(); public final HopperFilters hopperFilters = new HopperFilters(); + + /** + * Used to obtain the JEI category UIDs for categories with multiple levels of heat. + * + * @see betterwithmods.module.compat.jei.JEI#getHeatUID(String, int) + */ + public static String getHeatUID(String base, int heat) { + if (heat == 1) return base; + if (heat == 2) return String.format("%s.%s", base, "stoked"); + return String.format("%s.%s", base, heat); + } + } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Cauldron.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Cauldron.java index 56f7f7621..6c9360e56 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Cauldron.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Cauldron.java @@ -2,6 +2,8 @@ import betterwithmods.common.BWRegistry; import betterwithmods.common.registry.bulk.recipes.CookingPotRecipe; +import betterwithmods.common.registry.heat.BWMHeatRegistry; +import betterwithmods.module.compat.jei.category.CookingPotRecipeCategory; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; @@ -11,18 +13,21 @@ import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Arrays; +import java.util.Collection; import java.util.stream.Collectors; @RegistryDescription -public class Cauldron extends VirtualizedRegistry { +public class Cauldron extends VirtualizedRegistry implements IJEIRemovalIOutput { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay')).output(item('minecraft:diamond')).heat(2)"), @Example(".input(item('minecraft:diamond')).output(item('minecraft:gold_ingot') * 16).ignoreHeat()") }) - @RecipeBuilderMethodDescription + @RecipeBuilderMethodDescription public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); } @@ -88,6 +93,11 @@ public void removeAll() { BWRegistry.CAULDRON.getRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Arrays.stream(BWMHeatRegistry.allHeatLevels()).mapToObj(i -> BetterWithMods.getHeatUID(CookingPotRecipeCategory.CAULDRON_UID, i)).collect(Collectors.toList()); + } + @Property(property = "input", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "9", type = Comp.Type.LTE)}) @Property(property = "output", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "9", type = Comp.Type.LTE)}) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Crucible.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Crucible.java index 0c40d42b5..17e36e7e6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Crucible.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Crucible.java @@ -2,6 +2,8 @@ import betterwithmods.common.BWRegistry; import betterwithmods.common.registry.bulk.recipes.CookingPotRecipe; +import betterwithmods.common.registry.heat.BWMHeatRegistry; +import betterwithmods.module.compat.jei.category.CookingPotRecipeCategory; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; @@ -13,18 +15,21 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; import net.minecraftforge.items.ItemHandlerHelper; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Arrays; +import java.util.Collection; import java.util.stream.Collectors; @RegistryDescription -public class Crucible extends VirtualizedRegistry { +public class Crucible extends VirtualizedRegistry implements IJEIRemovalIOutput { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay')).output(item('minecraft:diamond')).heat(2)"), @Example(".input(item('minecraft:diamond')).output(item('minecraft:gold_ingot') * 16).ignoreHeat()") }) - @RecipeBuilderMethodDescription + @RecipeBuilderMethodDescription public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); } @@ -93,6 +98,11 @@ public void removeAll() { BWRegistry.CRUCIBLE.getRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Arrays.stream(BWMHeatRegistry.allHeatLevels()).mapToObj(i -> BetterWithMods.getHeatUID(CookingPotRecipeCategory.CRUCIBLE_UID, i)).collect(Collectors.toList()); + } + @Property(property = "input", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "9", type = Comp.Type.LTE)}) @Property(property = "output", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "9", type = Comp.Type.LTE)}) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Hopper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Hopper.java index 7b06ae6ab..c2f87c172 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Hopper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Hopper.java @@ -1,21 +1,27 @@ package com.cleanroommc.groovyscript.compat.mods.betterwithmods; import betterwithmods.common.registry.HopperInteractions; +import betterwithmods.module.compat.jei.category.HopperRecipeCategory; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.ItemStackList; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; +import java.util.Collections; +import java.util.List; @RegistryDescription -public class Hopper extends VirtualizedRegistry { +public class Hopper extends VirtualizedRegistry implements IJEIRemovalIOutput { @RecipeBuilderDescription(example = { @Example(".name('betterwithmods:iron_bar').input(ore('sand')).output(item('minecraft:clay')).inWorldItemOutput(item('minecraft:gold_ingot'))"), @@ -84,6 +90,16 @@ public void removeAll() { HopperInteractions.RECIPES.clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(HopperRecipeCategory.UID); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(IJEIRemovalIOutput.getDefaultIOutput(), OperationHandler.ItemOperation.defaultItemOperation().exclude(7)); + } + @Property(property = "name", value = "groovyscript.wiki.betterwithmods.hopper.name.value", valid = @Comp(value = "null", type = Comp.Type.NOT)) @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = {@Comp(value = "0", type = Comp.Type.GTE), @Comp(value = "2", type = Comp.Type.LTE)}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/IJEIRemovalIOutput.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/IJEIRemovalIOutput.java new file mode 100644 index 000000000..243babc1d --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/IJEIRemovalIOutput.java @@ -0,0 +1,25 @@ +package com.cleanroommc.groovyscript.compat.mods.betterwithmods; + +import betterwithmods.api.recipe.IOutput; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; +import com.google.common.collect.ImmutableList; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public interface IJEIRemovalIOutput extends IJEIRemoval.Default { + + static OperationHandler.SlotOperation getDefaultIOutput() { + return new OperationHandler.ClassSlotOperation<>( + IOutput.class, true, + (stack, all) -> GroovyScriptCodeConverter.getSingleItemStack(stack.getOutput(), false, false)); + } + + @Override + default @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation(), getDefaultIOutput()); + } + +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Kiln.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Kiln.java index 58d5be489..526dd6791 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Kiln.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Kiln.java @@ -3,6 +3,8 @@ import betterwithmods.common.BWRegistry; import betterwithmods.common.registry.block.recipe.BlockIngredient; import betterwithmods.common.registry.block.recipe.KilnRecipe; +import betterwithmods.common.registry.heat.BWMHeatRegistry; +import betterwithmods.module.compat.jei.category.KilnRecipeCategory; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; @@ -11,12 +13,16 @@ import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Arrays; +import java.util.Collection; import java.util.List; +import java.util.stream.Collectors; @RegistryDescription -public class Kiln extends VirtualizedRegistry { +public class Kiln extends VirtualizedRegistry implements IJEIRemovalIOutput { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay')).output(item('minecraft:diamond')).heat(2)"), @@ -85,6 +91,11 @@ public void removeAll() { BWRegistry.KILN.getRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Arrays.stream(BWMHeatRegistry.allHeatLevels()).mapToObj(i -> BetterWithMods.getHeatUID(KilnRecipeCategory.UID, i)).collect(Collectors.toList()); + } + @Property(property = "output", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "3", type = Comp.Type.LTE)}) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/MillStone.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/MillStone.java index 6f951cf6f..33aea1710 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/MillStone.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/MillStone.java @@ -2,6 +2,7 @@ import betterwithmods.common.BWRegistry; import betterwithmods.common.registry.bulk.recipes.MillRecipe; +import betterwithmods.module.compat.jei.category.MillRecipeCategory; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; @@ -13,12 +14,15 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; import net.minecraft.util.SoundEvent; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.stream.Collectors; @RegistryDescription -public class MillStone extends VirtualizedRegistry { +public class MillStone extends VirtualizedRegistry implements IJEIRemovalIOutput { public MillStone() { super(Alias.generateOfClass(MillStone.class).andGenerate("Mill")); @@ -93,6 +97,11 @@ public void removeAll() { BWRegistry.MILLSTONE.getRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(MillRecipeCategory.UID); + } + @Property(property = "input", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "3", type = Comp.Type.LTE)}) @Property(property = "output", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "3", type = Comp.Type.LTE)}) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Saw.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Saw.java index 67d2cf54c..45a81f5f1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Saw.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Saw.java @@ -3,6 +3,7 @@ import betterwithmods.common.BWRegistry; import betterwithmods.common.registry.block.recipe.BlockIngredient; import betterwithmods.common.registry.block.recipe.SawRecipe; +import betterwithmods.module.compat.jei.category.SawRecipeCategory; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; @@ -11,15 +12,18 @@ import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class Saw extends VirtualizedRegistry { +public class Saw extends VirtualizedRegistry implements IJEIRemovalIOutput { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:diamond_block')).output(item('minecraft:gold_ingot') * 16)")) - @RecipeBuilderMethodDescription + @RecipeBuilderMethodDescription public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); } @@ -83,6 +87,11 @@ public void removeAll() { BWRegistry.WOOD_SAW.getRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(SawRecipeCategory.UID); + } + @Property(property = "output", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "9", type = Comp.Type.LTE)}) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Turntable.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Turntable.java index 12ed8a8ba..c659b50b0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Turntable.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Turntable.java @@ -3,28 +3,34 @@ import betterwithmods.common.BWRegistry; import betterwithmods.common.registry.block.recipe.BlockIngredient; import betterwithmods.common.registry.block.recipe.TurntableRecipe; +import betterwithmods.module.compat.jei.category.TurntableRecipeCategory; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.block.state.IBlockState; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class Turntable extends VirtualizedRegistry { +public class Turntable extends VirtualizedRegistry implements IJEIRemovalIOutput { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:gold_block')).outputBlock(blockstate('minecraft:clay')).output(item('minecraft:gold_ingot') * 5).rotations(5)"), @Example(".input(item('minecraft:clay')).output(item('minecraft:gold_ingot')).rotations(2)") }) - @RecipeBuilderMethodDescription + @RecipeBuilderMethodDescription public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); } @@ -88,6 +94,16 @@ public void removeAll() { BWRegistry.TURNTABLE.getRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(TurntableRecipeCategory.UID); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(IJEIRemovalIOutput.getDefaultIOutput(), OperationHandler.ItemOperation.defaultItemOperation().exclude(4)); + } + @Property(property = "output", valid = {@Comp(value = "0", type = Comp.Type.GTE), @Comp(value = "2", type = Comp.Type.LTE)}) public static class RecipeBuilder extends AbstractRecipeBuilder { From f86429bcdb6b605ecd3076547a79da1786b50ec5 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Wed, 31 Jul 2024 21:46:42 -0700 Subject: [PATCH 17/47] add Mekanism jei removal --- .../mods/mekanism/InjectionChamber.java | 11 ++++++++ .../compat/mods/mekanism/Mekanism.java | 9 ++++++- .../mods/mekanism/MetallurgicInfuser.java | 18 +++++++++++++ .../mods/mekanism/OsmiumCompressor.java | 11 ++++++++ .../mods/mekanism/PurificationChamber.java | 11 ++++++++ .../compat/mods/mekanism/Washer.java | 11 ++++++++ .../mods/mekanism/recipe/IJEIRemovalGas.java | 25 +++++++++++++++++++ .../recipe/VirtualizedMekanismRegistry.java | 10 +++++++- 8 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/IJEIRemovalGas.java diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/InjectionChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/InjectionChamber.java index 7293b60c5..65d5c9e80 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/InjectionChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/InjectionChamber.java @@ -4,17 +4,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.GasRecipeBuilder; +import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.IJEIRemovalGas; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.VirtualizedMekanismRegistry; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; +import com.google.common.collect.ImmutableList; import mekanism.api.gas.GasStack; import mekanism.common.recipe.RecipeHandler; import mekanism.common.recipe.inputs.AdvancedMachineInput; import mekanism.common.recipe.machines.InjectionRecipe; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.List; + @RegistryDescription public class InjectionChamber extends VirtualizedMekanismRegistry { @@ -53,6 +59,11 @@ public boolean removeByInput(IIngredient ingredient, GasStack gasInput) { return found; } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(2), OperationHandler.FluidOperation.defaultFluidOperation(), IJEIRemovalGas.getDefaultGas()); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) @Property(property = "gasInput", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Mekanism.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Mekanism.java index 0fcf32742..10c46544b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Mekanism.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Mekanism.java @@ -40,6 +40,8 @@ public class Mekanism extends GroovyPropertyContainer { public final ThermalEvaporationPlant thermalEvaporationPlant = new ThermalEvaporationPlant(); public final Washer washer = new Washer(); + // TODO The Rotary Condensentrator does not have compat currently. This should be added. + @Optional.Method(modid = "mekanism") public static String asGroovyCode(Gas gasStack, boolean colored) { @@ -56,9 +58,14 @@ public static boolean isEmpty(@Nullable GasStack gasStack) { return gasStack == null || gasStack.getGas() == null || gasStack.amount <= 0; } + @Optional.Method(modid = "mekanism") + public static String getSingleGasStack(GasStack gasStack, boolean colored) { + return asGroovyCode(gasStack.getGas(), colored); + } + @Optional.Method(modid = "mekanism") public static String asGroovyCode(GasStack gasStack, boolean colored) { - return asGroovyCode(gasStack.getGas(), colored) + GroovyScriptCodeConverter.formatMultiple(gasStack.amount, colored); + return getSingleGasStack(gasStack, colored) + GroovyScriptCodeConverter.formatMultiple(gasStack.amount, colored); } @Optional.Method(modid = "mekanism") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/MetallurgicInfuser.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/MetallurgicInfuser.java index 9bc7caecb..3dd775af9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/MetallurgicInfuser.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/MetallurgicInfuser.java @@ -4,20 +4,33 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.IJEIRemovalGas; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.VirtualizedMekanismRegistry; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; +import com.google.common.collect.ImmutableList; import mekanism.api.infuse.InfuseRegistry; import mekanism.api.infuse.InfuseType; +import mekanism.client.jei.machine.other.MetallurgicInfuserRecipeWrapper; import mekanism.common.recipe.RecipeHandler; import mekanism.common.recipe.inputs.InfusionInput; import mekanism.common.recipe.machines.MetallurgicInfuserRecipe; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collections; +import java.util.List; + @RegistryDescription public class MetallurgicInfuser extends VirtualizedMekanismRegistry { + private static OperationHandler.IOperation infuseTypeOperation() { + return new OperationHandler.WrapperOperation<>(MetallurgicInfuserRecipeWrapper.class, wrapper -> Collections.singletonList(JeiRemovalHelper.format("removeByInput", Mekanism.asGroovyCode(((MetallurgicInfuserRecipe) wrapper.getRecipe()).getInput().infuse.getType(), false)))); + } + public MetallurgicInfuser() { super(RecipeHandler.Recipe.METALLURGIC_INFUSER); } @@ -59,6 +72,11 @@ public boolean removeByInput(IIngredient ingredient, InfuseType infuseType) { return found; } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(infuseTypeOperation(), OperationHandler.ItemOperation.defaultItemOperation().exclude(2), OperationHandler.FluidOperation.defaultFluidOperation(), IJEIRemovalGas.getDefaultGas()); + } + public boolean removeByInput(IIngredient ingredient, String infuseType) { return removeByInput(ingredient, InfuseRegistry.get(infuseType)); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/OsmiumCompressor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/OsmiumCompressor.java index 941376970..230aa0336 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/OsmiumCompressor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/OsmiumCompressor.java @@ -4,9 +4,12 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.GasRecipeBuilder; +import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.IJEIRemovalGas; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.VirtualizedMekanismRegistry; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; +import com.google.common.collect.ImmutableList; import mekanism.api.gas.Gas; import mekanism.api.gas.GasStack; import mekanism.common.MekanismFluids; @@ -15,8 +18,11 @@ import mekanism.common.recipe.machines.OsmiumCompressorRecipe; import mekanism.common.recipe.outputs.ItemStackOutput; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.List; + @RegistryDescription public class OsmiumCompressor extends VirtualizedMekanismRegistry { @@ -55,6 +61,11 @@ public boolean removeByInput(IIngredient ingredient, GasStack gasInput) { return found; } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(2), OperationHandler.FluidOperation.defaultFluidOperation(), IJEIRemovalGas.getDefaultGas()); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) @Property(property = "gasInput", defaultValue = "MekanismFluids.LiquidOsmium", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/PurificationChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/PurificationChamber.java index 81f393648..764d6eb6b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/PurificationChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/PurificationChamber.java @@ -4,18 +4,24 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.GasRecipeBuilder; +import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.IJEIRemovalGas; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.VirtualizedMekanismRegistry; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; +import com.google.common.collect.ImmutableList; import mekanism.api.gas.GasStack; import mekanism.common.recipe.RecipeHandler; import mekanism.common.recipe.inputs.AdvancedMachineInput; import mekanism.common.recipe.machines.PurificationRecipe; import mekanism.common.recipe.outputs.ItemStackOutput; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.List; + @RegistryDescription public class PurificationChamber extends VirtualizedMekanismRegistry { @@ -54,6 +60,11 @@ public boolean removeByInput(IIngredient ingredient, GasStack gasInput) { return found; } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(2), OperationHandler.FluidOperation.defaultFluidOperation(), IJEIRemovalGas.getDefaultGas()); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) @Property(property = "gasInput", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Washer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Washer.java index 93303a116..954440607 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Washer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Washer.java @@ -3,15 +3,21 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.GasRecipeBuilder; +import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.IJEIRemovalGas; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.VirtualizedMekanismRegistry; import com.cleanroommc.groovyscript.helper.Alias; +import com.google.common.collect.ImmutableList; import mekanism.api.gas.GasStack; import mekanism.common.recipe.RecipeHandler; import mekanism.common.recipe.inputs.GasInput; import mekanism.common.recipe.machines.WasherRecipe; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.List; + @RegistryDescription public class Washer extends VirtualizedMekanismRegistry { @@ -69,4 +75,9 @@ public void validate(GroovyLog.Msg msg) { return recipe; } } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation().exclude(0), IJEIRemovalGas.getDefaultGas()); + } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/IJEIRemovalGas.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/IJEIRemovalGas.java new file mode 100644 index 000000000..3a1de9bb3 --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/IJEIRemovalGas.java @@ -0,0 +1,25 @@ +package com.cleanroommc.groovyscript.compat.mods.mekanism.recipe; + +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.compat.mods.mekanism.Mekanism; +import com.google.common.collect.ImmutableList; +import mekanism.client.jei.MekanismJEI; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public interface IJEIRemovalGas extends IJEIRemoval.Default { + + static OperationHandler.SlotOperation getDefaultGas() { + return new OperationHandler.IngredientSlotOperation<>( + MekanismJEI.TYPE_GAS, true, + (stack, all) -> Mekanism.getSingleGasStack(stack, false)); + } + + @Override + default @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation(), getDefaultGas()); + } + +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/VirtualizedMekanismRegistry.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/VirtualizedMekanismRegistry.java index f9a12cfa5..8d14b8e4f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/VirtualizedMekanismRegistry.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/VirtualizedMekanismRegistry.java @@ -9,11 +9,13 @@ import mekanism.common.recipe.RecipeHandler; import mekanism.common.recipe.machines.MachineRecipe; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; +import java.util.Collections; -public abstract class VirtualizedMekanismRegistry> extends VirtualizedRegistry { +public abstract class VirtualizedMekanismRegistry> extends VirtualizedRegistry implements IJEIRemovalGas { protected final RecipeHandler.Recipe recipeRegistry; @@ -66,4 +68,10 @@ public void removeError(String reason, Object... data) { .error() .post(); } + + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(recipeRegistry.getJEICategory()); + } + } From 213cbed4ca35c175971323b606b393ca4bc3063b Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Wed, 31 Jul 2024 21:47:02 -0700 Subject: [PATCH 18/47] add Thaumcraft jei removal --- .../compat/mods/thaumcraft/Crucible.java | 8 +++- .../mods/thaumcraft/IJEIRemovalAspect.java | 24 ++++++++++++ .../mods/thaumcraft/InfusionCrafting.java | 13 ++++--- .../thaumcraft/arcane/ArcaneWorkbench.java | 37 ++++++++++++++++++- 4 files changed, 75 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/IJEIRemovalAspect.java diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java index 97ed901e5..6d5be93ed 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java @@ -13,6 +13,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import thaumcraft.api.ThaumcraftApi; import thaumcraft.api.aspects.Aspect; @@ -25,7 +26,7 @@ import java.util.stream.Collectors; @RegistryDescription -public class Crucible extends VirtualizedRegistry { +public class Crucible extends VirtualizedRegistry implements IJEIRemovalAspect { @RecipeBuilderDescription(example = @Example(".researchKey('UNLOCKALCHEMY@3').catalyst(item('minecraft:rotten_flesh')).output(item('minecraft:gold_ingot')).aspect(aspect('metallum') * 10)")) public RecipeBuilder recipeBuilder() { @@ -121,6 +122,11 @@ public void removeAll() { } } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(com.buuz135.thaumicjei.category.CrucibleCategory.UUID); + } + public static class RecipeBuilder extends AbstractRecipeBuilder { @Property diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/IJEIRemovalAspect.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/IJEIRemovalAspect.java new file mode 100644 index 000000000..a2a9f2d88 --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/IJEIRemovalAspect.java @@ -0,0 +1,24 @@ +package com.cleanroommc.groovyscript.compat.mods.thaumcraft; + +import com.buuz135.thaumicjei.ThaumcraftJEIPlugin; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.google.common.collect.ImmutableList; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public interface IJEIRemovalAspect extends IJEIRemoval.Default { + + static OperationHandler.SlotOperation getDefaultAspect() { + return new OperationHandler.IngredientSlotOperation<>( + ThaumcraftJEIPlugin.ASPECT_LIST, false, + (stack, all) -> stack.size() == 0 ? "" : Thaumcraft.asGroovyCode(stack.getAspects()[0], false)); + } + + @Override + default @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation(), getDefaultAspect()); + } + +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfusionCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfusionCrafting.java index 735ecee86..77e0700b7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfusionCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfusionCrafting.java @@ -15,6 +15,7 @@ import net.minecraft.util.ResourceLocation; import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import thaumcraft.api.ThaumcraftApi; import thaumcraft.api.aspects.Aspect; @@ -22,16 +23,13 @@ import thaumcraft.api.crafting.IThaumcraftRecipe; import thaumcraft.api.crafting.InfusionRecipe; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import static thaumcraft.common.config.ConfigRecipes.compileGroups; @RegistryDescription -public class InfusionCrafting extends VirtualizedRegistry> { +public class InfusionCrafting extends VirtualizedRegistry> implements IJEIRemovalAspect { @RecipeBuilderDescription(example = @Example(".researchKey('UNLOCKALCHEMY@3').mainInput(item('minecraft:gunpowder')).output(item('minecraft:gold_ingot')).aspect(aspect('terra') * 20).aspect('ignis', 30).input(crystal('aer')).input(crystal('ignis')).input(crystal('aqua')).input(crystal('terra')).input(crystal('ordo')).instability(10)")) public RecipeBuilder recipeBuilder() { @@ -127,6 +125,11 @@ public void removeAll() { } } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(com.buuz135.thaumicjei.category.InfusionCategory.UUID); + } + public static class RecipeBuilder extends AbstractRecipeBuilder { @Property(valid = @Comp(value = "null", type = Comp.Type.NOT)) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java index fbdb781e1..ea661158f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java @@ -5,19 +5,34 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RecipeBuilderDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; +import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; import com.cleanroommc.groovyscript.registry.NamedRegistry; import com.cleanroommc.groovyscript.registry.ReloadableRegistryManager; +import com.google.common.collect.ImmutableList; import net.minecraft.item.crafting.IRecipe; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.registry.ForgeRegistries; +import org.jetbrains.annotations.NotNull; import thaumcraft.api.crafting.IArcaneRecipe; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class ArcaneWorkbench extends NamedRegistry { +public class ArcaneWorkbench extends NamedRegistry implements IJEIRemoval.Default { + + private static OperationHandler.IOperation registryNameOperation() { + return new OperationHandler.WrapperOperation<>(com.buuz135.thaumicjei.category.ArcaneWorkbenchCategory.ArcaneWorkbenchWrapper.class, wrapper -> + wrapper.getRecipe().getRegistryName() == null + ? Collections.emptyList() + : Collections.singletonList(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.asGroovyCode(wrapper.getRecipe().getRegistryName(), false)))); + } public static final ResourceLocation DEFAULT = new ResourceLocation(""); @@ -59,5 +74,25 @@ public void removeAll() { ReloadableRegistryManager.removeRegistryEntry(ForgeRegistries.RECIPES, recipe.getRegistryName()); } } + + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(com.buuz135.thaumicjei.category.ArcaneWorkbenchCategory.UUID); + } + +// @Override +// public @NotNull List getRemoval(IRecipeLayout layout) { +// var list = new ArrayList(); +// if (((RecipeLayoutAccessor) layout).getRecipeWrapper() instanceof com.buuz135.thaumicjei.category.ArcaneWorkbenchCategory.ArcaneWorkbenchWrapper wrapper) { +// list.add(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.asGroovyCode(wrapper.getRecipe().getRegistryName(), false))); +// } +// return list; +// } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(registryNameOperation(), OperationHandler.ItemOperation.outputItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation()); + } + } From bde4a664ddcc1384505171c0253f227f00277dc1 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Wed, 31 Jul 2024 21:52:27 -0700 Subject: [PATCH 19/47] implement basics --- .../compat/inworldcrafting/Burning.java | 14 ++++-- .../compat/inworldcrafting/Explosion.java | 11 ++++- .../compat/inworldcrafting/FluidToBlock.java | 13 ++++- .../compat/inworldcrafting/FluidToFluid.java | 13 ++++- .../compat/inworldcrafting/FluidToItem.java | 14 +++++- .../compat/inworldcrafting/PistonPush.java | 11 ++++- .../AtomicReconstructor.java | 13 ++++- .../mods/actuallyadditions/Compost.java | 13 ++++- .../mods/actuallyadditions/Crusher.java | 13 ++++- .../mods/actuallyadditions/Empowerer.java | 19 ++++++- .../compat/mods/advancedmortars/Mortar.java | 23 +++++++-- .../compat/mods/aetherlegacy/Enchanter.java | 15 +++++- .../compat/mods/aetherlegacy/Freezer.java | 15 +++++- .../compat/mods/alchemistry/Atomizer.java | 13 ++++- .../compat/mods/alchemistry/Combiner.java | 12 ++++- .../compat/mods/alchemistry/Dissolver.java | 15 ++++-- .../compat/mods/alchemistry/Electrolyzer.java | 11 ++++- .../compat/mods/alchemistry/Evaporator.java | 13 ++++- .../compat/mods/alchemistry/Liquifier.java | 21 +++++++- .../mods/appliedenergistics2/Grinder.java | 13 ++++- .../mods/appliedenergistics2/Inscriber.java | 11 ++++- .../mods/arcanearchives/GemCuttingTable.java | 12 ++++- .../compat/mods/astralsorcery/Grindstone.java | 13 ++++- .../mods/astralsorcery/InfusionAltar.java | 13 ++++- .../astralsorcery/LightTransmutation.java | 12 ++++- .../compat/mods/astralsorcery/Lightwell.java | 12 ++++- .../groovyscript/compat/mods/atum/Kiln.java | 13 ++++- .../groovyscript/compat/mods/atum/Quern.java | 13 ++++- .../compat/mods/atum/SpinningWheel.java | 13 ++++- .../compat/mods/avaritia/Compressor.java | 11 ++++- .../compat/mods/avaritia/ExtremeCrafting.java | 20 +++++++- .../compat/mods/bloodmagic/AlchemyArray.java | 13 ++++- .../compat/mods/bloodmagic/AlchemyTable.java | 17 ++++++- .../compat/mods/bloodmagic/BloodAltar.java | 13 ++++- .../compat/mods/bloodmagic/TartaricForge.java | 16 +++++- .../compat/mods/botania/Apothecary.java | 18 ++++++- .../compat/mods/botania/BrewRecipe.java | 12 ++++- .../compat/mods/botania/ElvenTrade.java | 11 ++++- .../compat/mods/botania/ManaInfusion.java | 22 ++++++++- .../compat/mods/botania/Orechid.java | 19 ++++++- .../compat/mods/botania/OrechidIgnem.java | 10 ++++ .../compat/mods/botania/PureDaisy.java | 20 +++++++- .../compat/mods/botania/RuneAltar.java | 18 ++++++- .../mods/calculator/AlgorithmSeparator.java | 11 ++++- .../mods/calculator/AnalysingChamber.java | 13 ++++- .../mods/calculator/AtomicCalculator.java | 11 ++++- .../mods/calculator/BasicCalculator.java | 11 ++++- .../compat/mods/calculator/ConductorMast.java | 11 ++++- .../mods/calculator/ExtractionChamber.java | 11 ++++- .../mods/calculator/FabricationChamber.java | 13 +++-- .../mods/calculator/FlawlessCalculator.java | 11 ++++- .../mods/calculator/GlowstoneExtractor.java | 11 ++++- .../mods/calculator/HealthProcessor.java | 11 ++++- .../mods/calculator/PrecisionChamber.java | 11 ++++- .../mods/calculator/ProcessingChamber.java | 11 ++++- .../mods/calculator/ReassemblyChamber.java | 11 ++++- .../mods/calculator/RedstoneExtractor.java | 11 ++++- .../mods/calculator/RestorationChamber.java | 11 ++++- .../mods/calculator/ScientificCalculator.java | 11 ++++- .../mods/calculator/StarchExtractor.java | 11 ++++- .../mods/calculator/StoneSeparator.java | 11 ++++- .../compat/mods/cyclic/Dehydrator.java | 23 ++++++++- .../compat/mods/cyclic/Hydrator.java | 21 +++++++- .../compat/mods/cyclic/Melter.java | 19 ++++++- .../compat/mods/cyclic/Packager.java | 14 +++++- .../compat/mods/cyclic/Solidifier.java | 12 ++++- .../compat/mods/enderio/AlloySmelter.java | 10 +++- .../compat/mods/enderio/Enchanter.java | 11 ++++- .../compat/mods/enderio/SagMill.java | 20 +++++++- .../compat/mods/enderio/SagMillGrinding.java | 13 ++++- .../compat/mods/enderio/SliceNSplice.java | 24 ++++++--- .../compat/mods/enderio/SoulBinder.java | 11 ++++- .../compat/mods/enderio/Tank.java | 11 ++++- .../groovyscript/compat/mods/enderio/Vat.java | 12 ++++- .../essentialcraft/DemonTradeManager.java | 20 +++++++- .../mods/essentialcraft/MagicianTable.java | 12 ++++- .../essentialcraft/MithrilineFurnace.java | 11 ++++- .../mods/essentialcraft/RadiatingChamber.java | 12 ++++- .../compat/mods/essentialcraft/WindRune.java | 12 ++++- .../compat/mods/evilcraft/BloodInfuser.java | 20 +++++++- .../evilcraft/EnvironmentalAccumulator.java | 13 ++++- .../extendedcrafting/CombinationCrafting.java | 11 ++++- .../extendedcrafting/CompressionCrafting.java | 13 ++++- .../mods/extendedcrafting/EnderCrafting.java | 20 +++++++- .../mods/extendedcrafting/TableCrafting.java | 22 ++++++++- .../compat/mods/extrabotany/Pedestal.java | 20 +++++++- .../compat/mods/extrautils2/Crusher.java | 16 ++++-- .../compat/mods/extrautils2/Enchanter.java | 16 ++++-- .../compat/mods/extrautils2/Furnace.java | 16 ++++-- .../compat/mods/extrautils2/Generator.java | 16 ++++-- .../compat/mods/extrautils2/Resonator.java | 11 ++++- .../mods/immersiveengineering/AlloyKiln.java | 21 +++++++- .../mods/immersiveengineering/ArcFurnace.java | 16 ++++-- .../immersiveengineering/BlastFurnace.java | 14 +++++- .../BlastFurnaceFuel.java | 14 +++++- .../BlueprintCrafting.java | 13 ++++- .../immersiveengineering/BottlingMachine.java | 14 +++++- .../mods/immersiveengineering/CokeOven.java | 21 +++++++- .../mods/immersiveengineering/Crusher.java | 14 +++++- .../mods/immersiveengineering/Fermenter.java | 14 +++++- .../mods/immersiveengineering/MetalPress.java | 14 +++++- .../mods/immersiveengineering/Mixer.java | 14 +++++- .../mods/immersiveengineering/Refinery.java | 14 +++++- .../mods/immersiveengineering/Squeezer.java | 14 +++++- .../mods/immersivepetroleum/Distillation.java | 18 ++++++- .../mods/industrialforegoing/BioReactor.java | 22 ++++++++- .../mods/industrialforegoing/Extractor.java | 12 ++++- .../industrialforegoing/FluidDictionary.java | 14 +++++- .../mods/industrialforegoing/LaserDrill.java | 13 ++++- .../industrialforegoing/OreFermenter.java | 11 ++++- .../mods/industrialforegoing/OreRaw.java | 13 ++++- .../mods/industrialforegoing/OreSieve.java | 11 ++++- .../industrialforegoing/ProteinReactor.java | 22 ++++++++- .../industrialforegoing/SludgeRefiner.java | 22 ++++++++- .../mods/inspirations/AnvilSmashing.java | 12 ++++- .../mods/integrateddynamics/DryingBasin.java | 13 ++++- .../MechanicalDryingBasin.java | 13 ++++- .../MechanicalSqueezer.java | 13 ++++- .../mods/integrateddynamics/Squeezer.java | 12 ++++- .../compat/mods/jei/Description.java | 9 +++- .../compat/mods/lazyae2/Aggregator.java | 11 ++++- .../compat/mods/lazyae2/Centrifuge.java | 11 ++++- .../compat/mods/lazyae2/Energizer.java | 11 ++++- .../compat/mods/lazyae2/Etcher.java | 11 ++++- .../mods/mysticalagriculture/Reprocessor.java | 13 ++++- .../compat/mods/naturesaura/Altar.java | 20 +++++++- .../compat/mods/naturesaura/Offering.java | 12 ++++- .../compat/mods/naturesaura/Ritual.java | 12 ++++- .../compat/mods/naturesaura/Spawning.java | 12 ++++- .../compat/mods/pneumaticcraft/Amadron.java | 14 +++++- .../pneumaticcraft/AssemblyController.java | 23 +++++++-- .../compat/mods/pneumaticcraft/Explosion.java | 15 +++++- .../mods/pneumaticcraft/HeatFrameCooling.java | 15 +++++- .../mods/pneumaticcraft/PressureChamber.java | 13 ++++- .../compat/mods/pneumaticcraft/Refinery.java | 14 +++++- .../ThermopneumaticProcessingPlant.java | 15 +++++- .../compat/mods/primaltech/ClayKiln.java | 20 +++++++- .../compat/mods/primaltech/StoneAnvil.java | 20 +++++++- .../compat/mods/primaltech/WaterSaw.java | 20 +++++++- .../compat/mods/primaltech/WoodenBasin.java | 17 ++++++- .../mods/prodigytech/AtomicReshaper.java | 11 ++++- .../mods/prodigytech/ExplosionFurnace.java | 13 ++++- .../ExplosionFurnaceAdditives.java | 14 +++++- .../mods/prodigytech/PrimordialisReactor.java | 12 ++++- .../compat/mods/prodigytech/Solderer.java | 13 ++++- .../compat/mods/projecte/Transmutation.java | 13 ++++- .../compat/mods/pyrotech/Anvil.java | 14 +++++- .../compat/mods/pyrotech/Barrel.java | 13 ++++- .../compat/mods/pyrotech/Campfire.java | 13 ++++- .../compat/mods/pyrotech/ChoppingBlock.java | 13 ++++- .../compat/mods/pyrotech/CompactingBin.java | 13 ++++- .../compat/mods/pyrotech/CompostBin.java | 13 ++++- .../compat/mods/pyrotech/CrudeDryingRack.java | 13 ++++- .../compat/mods/pyrotech/DryingRack.java | 13 ++++- .../compat/mods/pyrotech/Kiln.java | 13 ++++- .../compat/mods/pyrotech/SoakingPot.java | 21 +++++++- .../compat/mods/pyrotech/TanningRack.java | 13 ++++- .../compat/mods/roots/BarkCarving.java | 12 ++++- .../compat/mods/roots/Chrysopoeia.java | 12 ++++- .../compat/mods/roots/FeyCrafter.java | 12 ++++- .../compat/mods/roots/Mortar.java | 12 ++++- .../groovyscript/compat/mods/roots/Moss.java | 19 ++++++- .../groovyscript/compat/mods/roots/Pyre.java | 12 ++++- .../compat/mods/roots/Rituals.java | 11 ++++- .../compat/mods/roots/RunicShearBlock.java | 12 ++++- .../compat/mods/roots/RunicShearEntity.java | 19 +++++-- .../compat/mods/roots/SummonCreature.java | 12 ++++- .../compat/mods/roots/Transmutation.java | 11 ++++- .../compat/mods/rustic/Alchemy.java | 13 ++++- .../compat/mods/rustic/BrewingBarrel.java | 15 +++++- .../compat/mods/rustic/CrushingTub.java | 15 +++++- .../compat/mods/rustic/EvaporatingBasin.java | 15 +++++- .../compat/mods/tcomplement/HighOven.java | 49 +++++++++++++++++-- .../compat/mods/tcomplement/Melter.java | 22 ++++++++- .../mods/theaurorian/MoonlightForge.java | 13 ++++- .../compat/mods/theaurorian/Scrapper.java | 13 ++++- .../mods/thermalexpansion/device/Coolant.java | 13 ++++- .../thermalexpansion/device/Factorizer.java | 11 ++++- .../mods/thermalexpansion/device/Tapper.java | 19 ++++++- .../thermalexpansion/dynamo/Compression.java | 13 ++++- .../thermalexpansion/dynamo/Enervation.java | 13 ++++- .../thermalexpansion/dynamo/Lapidary.java | 13 ++++- .../thermalexpansion/dynamo/Magmatic.java | 13 ++++- .../thermalexpansion/dynamo/Numismatic.java | 13 ++++- .../thermalexpansion/dynamo/Reactant.java | 12 ++++- .../mods/thermalexpansion/dynamo/Steam.java | 13 ++++- .../mods/thermalexpansion/machine/Brewer.java | 12 ++++- .../thermalexpansion/machine/Centrifuge.java | 14 ++++-- .../machine/CentrifugeMobs.java | 14 ++++-- .../thermalexpansion/machine/Charger.java | 13 ++++- .../thermalexpansion/machine/Compactor.java | 11 ++++- .../thermalexpansion/machine/Crucible.java | 12 ++++- .../thermalexpansion/machine/Enchanter.java | 18 ++++++- .../thermalexpansion/machine/Extruder.java | 18 ++++++- .../thermalexpansion/machine/Furnace.java | 13 ++++- .../machine/FurnacePyrolysis.java | 21 +++++++- .../thermalexpansion/machine/Insolator.java | 19 ++++++- .../machine/Precipitator.java | 12 ++++- .../thermalexpansion/machine/Pulverizer.java | 13 ++++- .../thermalexpansion/machine/Refinery.java | 13 ++++- .../machine/RefineryPotion.java | 13 ++++- .../thermalexpansion/machine/Sawmill.java | 13 ++++- .../thermalexpansion/machine/Smelter.java | 12 ++++- .../machine/TransposerExtract.java | 12 ++++- .../machine/TransposerFill.java | 12 ++++- .../mods/tinkersconstruct/Alloying.java | 12 ++++- .../mods/tinkersconstruct/CastingTable.java | 21 +++++++- .../compat/mods/tinkersconstruct/Drying.java | 13 ++++- .../compat/mods/tinkersconstruct/Melting.java | 21 +++++++- .../groovyscript/compat/vanilla/Furnace.java | 14 ++++-- 210 files changed, 2751 insertions(+), 262 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Burning.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Burning.java index 36d68de9b..8ed830a9a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Burning.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Burning.java @@ -4,6 +4,7 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.compat.inworldcrafting.jei.BurningRecipeCategory; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -13,15 +14,13 @@ import net.minecraft.entity.item.EntityItem; import net.minecraft.item.ItemStack; import net.minecraftforge.fml.common.Optional; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; -public class Burning extends VirtualizedRegistry { +public class Burning extends VirtualizedRegistry implements IJEIRemoval.Default { private static final Map runningRecipes = new Object2ObjectOpenHashMap<>(); @@ -62,6 +61,11 @@ public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(BurningRecipeCategory.UID); + } + public static class BurningRecipe { private final IIngredient input; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Explosion.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Explosion.java index c933057fe..19d5b7b8e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Explosion.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Explosion.java @@ -5,6 +5,7 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.compat.inworldcrafting.jei.ExplosionRecipeCategory; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -14,13 +15,16 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.math.MathHelper; import net.minecraftforge.fml.common.Optional; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; -public class Explosion extends VirtualizedRegistry { +public class Explosion extends VirtualizedRegistry implements IJEIRemoval.Default { private final List explosionRecipes = new ArrayList<>(); @@ -53,6 +57,11 @@ public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(ExplosionRecipeCategory.UID); + } + public static class ExplosionRecipe { private final IIngredient input; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToBlock.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToBlock.java index c9d9ef08c..61aca1494 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToBlock.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToBlock.java @@ -2,6 +2,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.compat.inworldcrafting.jei.FluidRecipeCategory; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -16,9 +18,13 @@ import net.minecraft.world.World; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class FluidToBlock extends VirtualizedRegistry { +import java.util.Collection; +import java.util.Collections; + +public class FluidToBlock extends VirtualizedRegistry implements IJEIRemoval.Default { @Override public void onReload() { @@ -87,6 +93,11 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(FluidRecipe.findRecipesOfType(Recipe.class)).setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(FluidRecipeCategory.UID); + } + public static class Recipe extends FluidRecipe { private final IBlockState output; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToFluid.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToFluid.java index 64b4bf1ae..ee76481de 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToFluid.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToFluid.java @@ -2,6 +2,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.compat.inworldcrafting.jei.FluidRecipeCategory; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -14,9 +16,13 @@ import net.minecraft.world.World; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class FluidToFluid extends VirtualizedRegistry { +import java.util.Collection; +import java.util.Collections; + +public class FluidToFluid extends VirtualizedRegistry implements IJEIRemoval.Default { @Override public void onReload() { @@ -85,6 +91,11 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(FluidRecipe.findRecipesOfType(Recipe.class)).setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(FluidRecipeCategory.UID); + } + public static class Recipe extends FluidRecipe { private final Fluid output; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToItem.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToItem.java index 8c51d2b26..921ac55c1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToItem.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToItem.java @@ -3,6 +3,8 @@ import com.cleanroommc.groovyscript.GroovyScript; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.compat.inworldcrafting.jei.FluidRecipeCategory; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -16,9 +18,13 @@ import net.minecraft.world.World; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class FluidToItem extends VirtualizedRegistry { +import java.util.Collection; +import java.util.Collections; + +public class FluidToItem extends VirtualizedRegistry implements IJEIRemoval.Default { @Override public void onReload() { @@ -87,6 +93,12 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(FluidRecipe.findRecipesOfType(Recipe.class)).setRemover(this::remove); } + + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(FluidRecipeCategory.UID); + } + public static class Recipe extends FluidRecipe { private final ItemStack output; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/PistonPush.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/PistonPush.java index 57d447070..3545325ef 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/PistonPush.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/PistonPush.java @@ -4,6 +4,7 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.compat.inworldcrafting.jei.PistonPushRecipeCategory; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -14,14 +15,17 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.math.MathHelper; import net.minecraftforge.fml.common.Optional; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.function.Consumer; import java.util.stream.Collectors; -public class PistonPush extends VirtualizedRegistry { +public class PistonPush extends VirtualizedRegistry implements IJEIRemoval.Default { private final List pistonPushRecipes = new ArrayList<>(); @@ -54,6 +58,11 @@ public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(PistonPushRecipeCategory.UID); + } + public static class PistonPushRecipe { private final IIngredient input; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/AtomicReconstructor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/AtomicReconstructor.java index 86a25d56b..1734b91b2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/AtomicReconstructor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/AtomicReconstructor.java @@ -5,6 +5,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -12,11 +13,16 @@ import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; import de.ellpeck.actuallyadditions.api.lens.Lens; import de.ellpeck.actuallyadditions.api.recipe.LensConversionRecipe; +import de.ellpeck.actuallyadditions.mod.jei.reconstructor.ReconstructorRecipeCategory; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class AtomicReconstructor extends VirtualizedRegistry { +public class AtomicReconstructor extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay')).output(item('minecraft:diamond')).energyUse(1000)"), @@ -90,6 +96,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(ReconstructorRecipeCategory.NAME); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Compost.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Compost.java index b93891fac..4714d8e7c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Compost.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Compost.java @@ -5,20 +5,26 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; import de.ellpeck.actuallyadditions.api.recipe.CompostRecipe; +import de.ellpeck.actuallyadditions.mod.jei.compost.CompostRecipeCategory; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class Compost extends VirtualizedRegistry { +public class Compost extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:clay')).output(item('minecraft:diamond')).inputDisplay(blockstate('minecraft:clay')).outputDisplay(blockstate('minecraft:diamond_block'))")) public RecipeBuilder recipeBuilder() { @@ -89,6 +95,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(CompostRecipeCategory.NAME); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Crusher.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Crusher.java index af4f977f1..cda7ff6de 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Crusher.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Crusher.java @@ -5,18 +5,24 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; import de.ellpeck.actuallyadditions.api.recipe.CrusherRecipe; +import de.ellpeck.actuallyadditions.mod.jei.crusher.CrusherRecipeCategory; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class Crusher extends VirtualizedRegistry { +public class Crusher extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay')).output(item('minecraft:diamond'), item('minecraft:diamond')).chance(100)"), @@ -90,6 +96,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(CrusherRecipeCategory.NAME); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "2")}) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Empowerer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Empowerer.java index 4926f94ef..1b9400d5a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Empowerer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Empowerer.java @@ -5,20 +5,28 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; import de.ellpeck.actuallyadditions.api.recipe.EmpowererRecipe; +import de.ellpeck.actuallyadditions.mod.jei.empowerer.EmpowererRecipeCategory; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.awt.*; +import java.util.Collection; +import java.util.Collections; +import java.util.List; @RegistryDescription -public class Empowerer extends VirtualizedRegistry { +public class Empowerer extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".mainInput(item('minecraft:clay')).input(item('minecraft:clay'),item('minecraft:clay'),item('minecraft:clay'),item('minecraft:clay')).output(item('minecraft:diamond')).time(50).energy(1000).red(0.5).green(0.3).blue(0.2)"), @@ -90,6 +98,15 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(EmpowererRecipeCategory.NAME); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(1, 2, 3, 4)); + } @Property(property = "input", valid = {@Comp(value = "4", type = Comp.Type.GTE), @Comp(value = "5", type = Comp.Type.LTE)}) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedmortars/Mortar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedmortars/Mortar.java index e8deea556..6d83cee50 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedmortars/Mortar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedmortars/Mortar.java @@ -4,6 +4,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.advancedmortars.RegistryRecipeMortarAccessor; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -11,17 +13,16 @@ import com.codetaylor.mc.advancedmortars.modules.mortar.api.MortarAPI; import com.codetaylor.mc.advancedmortars.modules.mortar.recipe.RecipeMortar; import com.codetaylor.mc.advancedmortars.modules.mortar.reference.EnumMortarType; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @RegistryDescription -public class Mortar extends VirtualizedRegistry { +public class Mortar extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".type('stone').duration(2).output(item('minecraft:grass')).input(item('minecraft:dirt'))"), @@ -87,6 +88,18 @@ public static List getTypes(RecipeMortar recipe) { .collect(Collectors.toList()); } + /** + * @see com.codetaylor.mc.advancedmortars.modules.mortar.integration.jei.PluginJEI#createUID + */ + @Override + public @NotNull Collection getCategories() { + return Arrays.stream(EnumMortarType.values()).map(Enum::name).map(x -> "advancedmortars_" + x).collect(Collectors.toList()); + } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(); // TODO add removal methods to this compat + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "8")}) @Property(property = "output", valid = @Comp("1")) public class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Enchanter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Enchanter.java index cb95f1985..17496634b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Enchanter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Enchanter.java @@ -4,15 +4,20 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.gildedgames.the_aether.api.enchantments.AetherEnchantment; import net.minecraft.item.ItemStack; import net.minecraftforge.fml.common.registry.GameRegistry; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class Enchanter extends ForgeRegistryWrapper { +public class Enchanter extends ForgeRegistryWrapper implements IJEIRemoval.Default { public Enchanter() { super(GameRegistry.findRegistry(AetherEnchantment.class)); @@ -38,6 +43,14 @@ public void removeByOutput(IIngredient output) { }); } + /** + * @see com.gildedgames.the_aether.universal.jei.AetherJEIPlugin + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("aether_legacy.enchantment"); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Freezer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Freezer.java index 5ce5a9a6c..17518d635 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Freezer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Freezer.java @@ -4,15 +4,20 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.gildedgames.the_aether.api.freezables.AetherFreezable; import net.minecraft.item.ItemStack; import net.minecraftforge.fml.common.registry.GameRegistry; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class Freezer extends ForgeRegistryWrapper { +public class Freezer extends ForgeRegistryWrapper implements IJEIRemoval.Default { public Freezer() { super(GameRegistry.findRegistry(AetherFreezable.class)); @@ -38,6 +43,14 @@ public void removeByOutput(IIngredient output) { }); } + /** + * @see com.gildedgames.the_aether.universal.jei.AetherJEIPlugin + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("aether_legacy.freezable"); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Atomizer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Atomizer.java index 35d100571..9ce4116ae 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Atomizer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Atomizer.java @@ -1,5 +1,6 @@ package com.cleanroommc.groovyscript.compat.mods.alchemistry; +import al132.alchemistry.compat.jei.AlchemistryRecipeUID; import al132.alchemistry.recipes.AtomizerRecipe; import al132.alchemistry.recipes.LiquifierRecipe; import al132.alchemistry.recipes.ModRecipes; @@ -7,15 +8,20 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class Atomizer extends VirtualizedRegistry { +public class Atomizer extends VirtualizedRegistry implements IJEIRemoval.Default { @Override public void onReload() { @@ -85,6 +91,11 @@ public void removeAll() { ModRecipes.INSTANCE.getAtomizerRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(AlchemistryRecipeUID.INSTANCE.getATOMIZER()); + } + @Property(property = "fluidInput", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Combiner.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Combiner.java index cfa72919c..147faca11 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Combiner.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Combiner.java @@ -1,24 +1,29 @@ package com.cleanroommc.groovyscript.compat.mods.alchemistry; +import al132.alchemistry.compat.jei.AlchemistryRecipeUID; import al132.alchemistry.recipes.CombinerRecipe; import al132.alchemistry.recipes.ModRecipes; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class Combiner extends VirtualizedRegistry { +public class Combiner extends VirtualizedRegistry implements IJEIRemoval.Default { public Combiner() { super(Alias.generateOfClass(Combiner.class).andGenerate("ChemicalCombiner")); @@ -89,6 +94,11 @@ public void removeAll() { ModRecipes.INSTANCE.getCombinerRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(AlchemistryRecipeUID.INSTANCE.getCOMBINER()); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "9")}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Dissolver.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Dissolver.java index fe29545dd..5269cbbb9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Dissolver.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Dissolver.java @@ -1,25 +1,25 @@ package com.cleanroommc.groovyscript.compat.mods.alchemistry; +import al132.alchemistry.compat.jei.AlchemistryRecipeUID; import al132.alchemistry.recipes.*; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; @RegistryDescription -public class Dissolver extends VirtualizedRegistry { +public class Dissolver extends VirtualizedRegistry implements IJEIRemoval.Default { public Dissolver() { super(Alias.generateOfClass(Dissolver.class).andGenerate("ChemicalDissolver")); @@ -79,6 +79,11 @@ public void removeAll() { ModRecipes.INSTANCE.getDissolverRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(AlchemistryRecipeUID.INSTANCE.getDISSOLVER()); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Electrolyzer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Electrolyzer.java index 66e038961..2658e018d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Electrolyzer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Electrolyzer.java @@ -1,11 +1,13 @@ package com.cleanroommc.groovyscript.compat.mods.alchemistry; +import al132.alchemistry.compat.jei.AlchemistryRecipeUID; import al132.alchemistry.recipes.ElectrolyzerRecipe; import al132.alchemistry.recipes.ModRecipes; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -13,12 +15,14 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class Electrolyzer extends VirtualizedRegistry { +public class Electrolyzer extends VirtualizedRegistry implements IJEIRemoval.Default { @Override public void onReload() { @@ -98,6 +102,11 @@ public void removeAll() { ModRecipes.INSTANCE.getElectrolyzerRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(AlchemistryRecipeUID.INSTANCE.getELECTROLYZER()); + } + @Property(property = "input", valid = {@Comp(value = "0", type = Comp.Type.GTE), @Comp(value = "1", type = Comp.Type.LTE)}) @Property(property = "output", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "4", type = Comp.Type.LTE)}) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Evaporator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Evaporator.java index 70f8f8611..40149db08 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Evaporator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Evaporator.java @@ -1,20 +1,26 @@ package com.cleanroommc.groovyscript.compat.mods.alchemistry; +import al132.alchemistry.compat.jei.AlchemistryRecipeUID; import al132.alchemistry.recipes.EvaporatorRecipe; import al132.alchemistry.recipes.ModRecipes; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class Evaporator extends VirtualizedRegistry { +public class Evaporator extends VirtualizedRegistry implements IJEIRemoval.Default { @Override public void onReload() { @@ -84,6 +90,11 @@ public void removeAll() { ModRecipes.INSTANCE.getEvaporatorRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(AlchemistryRecipeUID.INSTANCE.getEVAPORATOR()); + } + @Property(property = "fluidInput", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Liquifier.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Liquifier.java index 6d3e95951..2938ede1e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Liquifier.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Liquifier.java @@ -1,20 +1,29 @@ package com.cleanroommc.groovyscript.compat.mods.alchemistry; +import al132.alchemistry.compat.jei.AlchemistryRecipeUID; import al132.alchemistry.recipes.LiquifierRecipe; import al132.alchemistry.recipes.ModRecipes; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + @RegistryDescription -public class Liquifier extends VirtualizedRegistry { +public class Liquifier extends VirtualizedRegistry implements IJEIRemoval.Default { @Override public void onReload() { @@ -84,6 +93,16 @@ public void removeAll() { ModRecipes.INSTANCE.getLiquifierRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(AlchemistryRecipeUID.INSTANCE.getLIQUIFIER()); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation().output(1)); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "fluidOutput", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Grinder.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Grinder.java index a33e90a03..ad9e4a05f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Grinder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Grinder.java @@ -6,19 +6,22 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class Grinder extends VirtualizedRegistry { +public class Grinder extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay')).output(item('minecraft:diamond'), item('minecraft:gold_ingot'), item('minecraft:diamond')).turns(1).chance1(0.5).chance2(0.3)"), @@ -71,6 +74,14 @@ public void removeAll() { } } + /** + * @see appeng.integration.modules.jei.GrinderRecipeCategory + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("appliedenergistics2.grinder"); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "3")}) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Inscriber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Inscriber.java index eb2c2b25e..14f69272b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Inscriber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Inscriber.java @@ -7,17 +7,19 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.stream.Collectors; @RegistryDescription -public class Inscriber extends VirtualizedRegistry { +public class Inscriber extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(ore('blockGlass')).output(item('minecraft:diamond')).top(item('minecraft:diamond')).bottom(item('minecraft:diamond')).inscribe()"), @@ -61,6 +63,13 @@ public void removeAll() { } } + /** + * @see appeng.integration.modules.jei.InscriberRecipeCategory + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("appliedenergistics2.inscriber"); + } @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/arcanearchives/GemCuttingTable.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/arcanearchives/GemCuttingTable.java index 08a900b6e..fc0cafc12 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/arcanearchives/GemCuttingTable.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/arcanearchives/GemCuttingTable.java @@ -1,6 +1,7 @@ package com.cleanroommc.groovyscript.compat.mods.arcanearchives; import com.aranaira.arcanearchives.api.IGCTRecipe; +import com.aranaira.arcanearchives.integration.jei.JEIPlugin; import com.aranaira.arcanearchives.recipe.IngredientStack; import com.aranaira.arcanearchives.recipe.gct.GCTRecipe; import com.aranaira.arcanearchives.recipe.gct.GCTRecipeList; @@ -8,18 +9,22 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.crafting.Ingredient; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.stream.Collectors; @RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.arcanearchives.gem_cutting_table.note0", type = Admonition.Type.WARNING)) -public class GemCuttingTable extends VirtualizedRegistry { +public class GemCuttingTable extends VirtualizedRegistry implements IJEIRemoval.Default { public GemCuttingTable() { super(Alias.generateOfClass(GemCuttingTable.class).and("GCT", "gct")); @@ -92,6 +97,11 @@ public void removeAll() { } } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIPlugin.GEM_CUTTERS_TABLE); + } + @Property(property = "input", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "Integer.MAX_VALUE", type = Comp.Type.LTE)}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/Grindstone.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/Grindstone.java index 15da6e41b..2b5115e69 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/Grindstone.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/Grindstone.java @@ -4,6 +4,7 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -11,11 +12,16 @@ import hellfirepvp.astralsorcery.common.crafting.ItemHandle; import hellfirepvp.astralsorcery.common.crafting.grindstone.GrindstoneRecipe; import hellfirepvp.astralsorcery.common.crafting.grindstone.GrindstoneRecipeRegistry; +import hellfirepvp.astralsorcery.common.integrations.ModIntegrationJEI; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class Grindstone extends VirtualizedRegistry { +public class Grindstone extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(ore('blockDiamond')).output(item('minecraft:clay')).weight(1).secondaryChance(1.0F)"), @@ -95,6 +101,11 @@ public void removeAll() { GrindstoneRecipeRegistry.recipes.clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(ModIntegrationJEI.idGrindstone); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/InfusionAltar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/InfusionAltar.java index 89ff9e162..a078f7469 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/InfusionAltar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/InfusionAltar.java @@ -5,6 +5,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -12,12 +13,17 @@ import hellfirepvp.astralsorcery.common.crafting.infusion.AbstractInfusionRecipe; import hellfirepvp.astralsorcery.common.crafting.infusion.InfusionRecipeRegistry; import hellfirepvp.astralsorcery.common.crafting.infusion.recipes.BasicInfusionRecipe; +import hellfirepvp.astralsorcery.common.integrations.ModIntegrationJEI; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class InfusionAltar extends VirtualizedRegistry { +public class InfusionAltar extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:diamond')).output(item('minecraft:clay')).consumption(1f).chalice(false).consumeMultiple(true).time(10)"), @@ -97,6 +103,11 @@ public void removeAll() { }); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(ModIntegrationJEI.idInfuser); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/LightTransmutation.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/LightTransmutation.java index af8fb0dc1..178bcf689 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/LightTransmutation.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/LightTransmutation.java @@ -4,22 +4,27 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.astralsorcery.LightOreTransmutationsAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import hellfirepvp.astralsorcery.common.base.LightOreTransmutations; import hellfirepvp.astralsorcery.common.constellation.IWeakConstellation; +import hellfirepvp.astralsorcery.common.integrations.ModIntegrationJEI; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import javax.annotation.Nonnull; +import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class LightTransmutation extends VirtualizedRegistry { +public class LightTransmutation extends VirtualizedRegistry implements IJEIRemoval.Default { private static List getRegistry() { if (LightOreTransmutationsAccessor.getRegisteredTransmutations() == null) { @@ -112,6 +117,11 @@ public void removeAll() { getRegistry().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(ModIntegrationJEI.idTransmutation); + } + public static class RecipeBuilder extends AbstractRecipeBuilder { @Property(valid = {@Comp(value = "null", type = Comp.Type.NOT), @Comp(value = "input", type = Comp.Type.NOT)}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/Lightwell.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/Lightwell.java index 4e4347d0f..bebce48c4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/Lightwell.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/Lightwell.java @@ -4,23 +4,28 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.astralsorcery.WellLiquefactionAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.IRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import hellfirepvp.astralsorcery.common.base.WellLiquefaction; +import hellfirepvp.astralsorcery.common.integrations.ModIntegrationJEI; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import org.apache.logging.log4j.Level; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.awt.*; +import java.util.Collection; +import java.util.Collections; import java.util.Map; @RegistryDescription -public class Lightwell extends VirtualizedRegistry { +public class Lightwell extends VirtualizedRegistry implements IJEIRemoval.Default { private static Map getRegistry() { if (WellLiquefactionAccessor.getRegisteredLiquefactions() == null) { @@ -102,6 +107,11 @@ public void removeAll() { getRegistry().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(ModIntegrationJEI.idWell); + } + public static class RecipeBuilder implements IRecipeBuilder { @Property(valid = @Comp(value = "null", type = Comp.Type.NOT)) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/Kiln.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/Kiln.java index a5753b744..a03eee005 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/Kiln.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/Kiln.java @@ -4,18 +4,24 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.teammetallurgy.atum.api.recipe.RecipeHandlers; import com.teammetallurgy.atum.api.recipe.kiln.IKilnRecipe; import com.teammetallurgy.atum.api.recipe.kiln.KilnRecipe; +import com.teammetallurgy.atum.integration.jei.JEIIntegration; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class Kiln extends ForgeRegistryWrapper { +public class Kiln extends ForgeRegistryWrapper implements IJEIRemoval.Default { public Kiln() { super(RecipeHandlers.kilnRecipes); @@ -59,6 +65,11 @@ public void removeByOutput(IIngredient output) { } } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIIntegration.KILN); + } + @Property(property = "name") @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/Quern.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/Quern.java index c5fd80c33..8a4594f0f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/Quern.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/Quern.java @@ -4,18 +4,24 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.teammetallurgy.atum.api.recipe.RecipeHandlers; import com.teammetallurgy.atum.api.recipe.quern.IQuernRecipe; import com.teammetallurgy.atum.api.recipe.quern.QuernRecipe; +import com.teammetallurgy.atum.integration.jei.JEIIntegration; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class Quern extends ForgeRegistryWrapper { +public class Quern extends ForgeRegistryWrapper implements IJEIRemoval.Default { public Quern() { super(RecipeHandlers.quernRecipes); @@ -59,6 +65,11 @@ public void removeByOutput(IIngredient output) { } } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIIntegration.QUERN); + } + @Property(property = "name") @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/SpinningWheel.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/SpinningWheel.java index 2b1e7cd1c..35a430791 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/SpinningWheel.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/SpinningWheel.java @@ -4,18 +4,24 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.teammetallurgy.atum.api.recipe.RecipeHandlers; import com.teammetallurgy.atum.api.recipe.spinningwheel.ISpinningWheelRecipe; import com.teammetallurgy.atum.api.recipe.spinningwheel.SpinningWheelRecipe; +import com.teammetallurgy.atum.integration.jei.JEIIntegration; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class SpinningWheel extends ForgeRegistryWrapper { +public class SpinningWheel extends ForgeRegistryWrapper implements IJEIRemoval.Default { public SpinningWheel() { super(RecipeHandlers.spinningWheelRecipes); @@ -59,6 +65,11 @@ public void removeByOutput(IIngredient output) { } } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIIntegration.SPINNING_WHEEL); + } + @Property(property = "name") @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/Compressor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/Compressor.java index 22a2299e6..11f1c1d51 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/Compressor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/Compressor.java @@ -3,20 +3,24 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import morph.avaritia.compat.jei.AvaritiaJEIPlugin; import morph.avaritia.recipe.AvaritiaRecipeManager; import morph.avaritia.recipe.compressor.CompressorRecipe; import morph.avaritia.recipe.compressor.ICompressorRecipe; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; import java.util.Collections; @RegistryDescription -public class Compressor extends VirtualizedRegistry { +public class Compressor extends VirtualizedRegistry implements IJEIRemoval.Default { @Override public void onReload() { @@ -81,6 +85,11 @@ public void add(ItemStack output, IIngredient input, int cost) { .register(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(AvaritiaJEIPlugin.NEUTRONIUM_COMPRESSOR); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/ExtremeCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/ExtremeCrafting.java index 77355b4fc..0d55a51fa 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/ExtremeCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/ExtremeCrafting.java @@ -5,16 +5,23 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RecipeBuilderDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; +import morph.avaritia.compat.jei.AvaritiaJEIPlugin; import morph.avaritia.recipe.AvaritiaRecipeManager; import morph.avaritia.recipe.extreme.IExtremeRecipe; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; +import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class ExtremeCrafting extends VirtualizedRegistry { +public class ExtremeCrafting extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".matrix([[item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot')], [item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot')], [item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot')], [item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot')], [item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot')], [item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot')], [item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot')]]).output(item('minecraft:gold_block'))"), @@ -88,4 +95,15 @@ public void removeAll() { AvaritiaRecipeManager.EXTREME_RECIPES.values().forEach(this::addBackup); AvaritiaRecipeManager.EXTREME_RECIPES.values().clear(); } + + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(AvaritiaJEIPlugin.EXTREME_CRAFTING); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.outputItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation()); + } + } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyArray.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyArray.java index ed67c8c07..a0feb16f5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyArray.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyArray.java @@ -2,11 +2,13 @@ import WayofTime.bloodmagic.api.impl.BloodMagicAPI; import WayofTime.bloodmagic.api.impl.recipe.RecipeAlchemyArray; +import WayofTime.bloodmagic.util.Constants; import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.bloodmagic.BloodMagicRecipeRegistrarAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -14,10 +16,14 @@ import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class AlchemyArray extends VirtualizedRegistry { +public class AlchemyArray extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:diamond')).catalyst(item('bloodmagic:slate:1')).output(item('minecraft:gold_ingot')).texture('bloodmagic:textures/models/AlchemyArrays/LightSigil.png')"), @@ -159,6 +165,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(Constants.Compat.JEI_CATEGORY_ALCHEMYARRAY); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyTable.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyTable.java index 03603d3af..fc921dd09 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyTable.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyTable.java @@ -2,11 +2,14 @@ import WayofTime.bloodmagic.api.impl.BloodMagicAPI; import WayofTime.bloodmagic.api.impl.recipe.RecipeAlchemyTable; +import WayofTime.bloodmagic.util.Constants; import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.bloodmagic.BloodMagicRecipeRegistrarAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -15,9 +18,12 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; import net.minecraft.util.NonNullList; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; import java.util.Collections; +import java.util.List; @RegistryDescription( admonition = @Admonition(type = Admonition.Type.DANGER, @@ -25,7 +31,7 @@ hasTitle = true, value = "groovyscript.wiki.bloodmagic.alchemy_table.note0") ) -public class AlchemyTable extends VirtualizedRegistry { +public class AlchemyTable extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:diamond'), item('minecraft:diamond')).output(item('minecraft:clay')).ticks(100).minimumTier(2).syphon(500)"), @@ -126,6 +132,15 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(Constants.Compat.JEI_CATEGORY_ALCHEMYTABLE); + } + + @Override + public @NotNull List getJEIOperations() { + return Default.excludeSlots(1); + } @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "6")}) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/BloodAltar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/BloodAltar.java index 27eba83ab..d8b602d0b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/BloodAltar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/BloodAltar.java @@ -3,19 +3,25 @@ import WayofTime.bloodmagic.altar.AltarTier; import WayofTime.bloodmagic.api.impl.BloodMagicAPI; import WayofTime.bloodmagic.api.impl.recipe.RecipeBloodAltar; +import WayofTime.bloodmagic.util.Constants; import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.bloodmagic.BloodMagicRecipeRegistrarAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription( admonition = { @Admonition("groovyscript.wiki.bloodmagic.blood_altar.note0"), @@ -25,7 +31,7 @@ hasTitle = true) } ) -public class BloodAltar extends VirtualizedRegistry { +public class BloodAltar extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay')).output(item('minecraft:gold_ingot')).minimumTier(0).drainRate(5).syphon(10).consumeRate(5)"), @@ -116,6 +122,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(Constants.Compat.JEI_CATEGORY_ALTAR); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/TartaricForge.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/TartaricForge.java index cea5d56e8..e6cf8554e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/TartaricForge.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/TartaricForge.java @@ -2,11 +2,14 @@ import WayofTime.bloodmagic.api.impl.BloodMagicAPI; import WayofTime.bloodmagic.api.impl.recipe.RecipeTartaricForge; +import WayofTime.bloodmagic.util.Constants; import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.bloodmagic.BloodMagicRecipeRegistrarAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -15,13 +18,15 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; import net.minecraft.util.NonNullList; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; import java.util.Collections; +import java.util.List; @RegistryDescription -public class TartaricForge extends VirtualizedRegistry { +public class TartaricForge extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay'), item('minecraft:clay'), item('minecraft:clay'), item('minecraft:clay')).output(item('minecraft:gold_ingot')).soulDrain(5).minimumSouls(10)"), @@ -128,6 +133,15 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(Constants.Compat.JEI_CATEGORY_SOULFORGE); + } + + @Override + public @NotNull List getJEIOperations() { + return Default.excludeSlots(1); + } @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "4")}) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Apothecary.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Apothecary.java index adef4bbfa..68f4d069f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Apothecary.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Apothecary.java @@ -4,22 +4,28 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import vazkii.botania.api.BotaniaAPI; import vazkii.botania.api.recipe.RecipePetals; +import vazkii.botania.client.integration.jei.petalapothecary.PetalApothecaryRecipeCategory; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class Apothecary extends VirtualizedRegistry { +public class Apothecary extends VirtualizedRegistry implements IJEIRemoval.Default { public Apothecary() { super(Alias.generateOfClassAnd(Apothecary.class, "PetalApothecary")); @@ -106,6 +112,16 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(BotaniaAPI.petalRecipes).setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(PetalApothecaryRecipeCategory.UID); + } + + @Override + public @NotNull List getJEIOperations() { + return Default.excludeSlots(0); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "20")}) @Property(property = "output", valid = @Comp("1")) public class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/BrewRecipe.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/BrewRecipe.java index 9a8156cb0..2f5d3222a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/BrewRecipe.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/BrewRecipe.java @@ -4,21 +4,26 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import vazkii.botania.api.BotaniaAPI; import vazkii.botania.api.recipe.RecipeBrew; +import vazkii.botania.client.integration.jei.brewery.BreweryRecipeCategory; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class BrewRecipe extends VirtualizedRegistry { +public class BrewRecipe extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:clay'), ore('ingotGold'), ore('gemDiamond')).brew(brew('absorption'))")) public RecipeBuilder recipeBuilder() { @@ -99,6 +104,11 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(BotaniaAPI.brewRecipes).setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(BreweryRecipeCategory.UID); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "6")}) public class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ElvenTrade.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ElvenTrade.java index 4311be5d8..de509ea1c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ElvenTrade.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ElvenTrade.java @@ -4,21 +4,25 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import vazkii.botania.api.BotaniaAPI; import vazkii.botania.api.recipe.RecipeElvenTrade; +import vazkii.botania.client.integration.jei.elventrade.ElvenTradeRecipeCategory; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class ElvenTrade extends VirtualizedRegistry { +public class ElvenTrade extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(ore('ingotGold'), ore('ingotIron')).output(item('botania:manaresource:7'))")) public RecipeBuilder recipeBuilder() { @@ -113,6 +117,11 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(BotaniaAPI.elvenTradeRecipes).setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(ElvenTradeRecipeCategory.UID); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "99")}) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "99")}) public class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ManaInfusion.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ManaInfusion.java index 3ff83f9d6..0b1575739 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ManaInfusion.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ManaInfusion.java @@ -4,20 +4,29 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import mezz.jei.api.gui.IRecipeLayout; import net.minecraft.block.state.IBlockState; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import vazkii.botania.api.BotaniaAPI; import vazkii.botania.api.recipe.RecipeManaInfusion; +import vazkii.botania.client.integration.jei.manapool.ManaPoolRecipeCategory; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; @RegistryDescription( admonition = @Admonition(value = "groovyscript.wiki.botania.mana_infusion.note", type = Admonition.Type.WARNING) ) -public class ManaInfusion extends VirtualizedRegistry { +public class ManaInfusion extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(ore('ingotGold')).output(item('botania:manaresource', 1)).mana(500).catalyst(blockstate('minecraft:stone'))")) public RecipeBuilder recipeBuilder() { @@ -106,6 +115,17 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(BotaniaAPI.manaInfusionRecipes).setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(ManaPoolRecipeCategory.UID); + } + + @Override + public @NotNull List getRemoval(IRecipeLayout layout) { + // is this ugly? yes! but we need to target this specific slot and the slot number is dynamic + return OperationHandler.removalOptions(layout, Default.excludeSlots(layout.getItemStacks().getGuiIngredients().values().size() - 2)); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Orechid.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Orechid.java index fcf3ae3b3..117d8124f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Orechid.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Orechid.java @@ -6,16 +6,22 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; import com.cleanroommc.groovyscript.compat.mods.botania.recipe.OrechidRecipe; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import org.jetbrains.annotations.NotNull; import vazkii.botania.api.BotaniaAPI; +import vazkii.botania.client.integration.jei.orechid.OrechidRecipeCategory; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class Orechid extends VirtualizedRegistry { +public class Orechid extends VirtualizedRegistry implements IJEIRemoval.Default { @Override @GroovyBlacklist @@ -88,4 +94,15 @@ public void removeAll() { public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(getAllRecipes(), false).setRemover(this::remove); } + + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(OrechidRecipeCategory.UID); + } + + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().exclude(0, 1).input("removeByOutput")); + } + } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/OrechidIgnem.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/OrechidIgnem.java index 6e6dd3ce7..81839cd0b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/OrechidIgnem.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/OrechidIgnem.java @@ -6,9 +6,13 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; import com.cleanroommc.groovyscript.compat.mods.botania.recipe.OrechidRecipe; +import org.jetbrains.annotations.NotNull; import vazkii.botania.api.BotaniaAPI; +import vazkii.botania.client.integration.jei.orechid.OrechidIgnemRecipeCategory; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription @@ -68,4 +72,10 @@ public void removeAll() { getAllRecipes().forEach(this::addBackup); BotaniaAPI.oreWeightsNether.clear(); } + + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(OrechidIgnemRecipeCategory.UID); + } + } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/PureDaisy.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/PureDaisy.java index af7273f6a..47067e6c6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/PureDaisy.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/PureDaisy.java @@ -3,18 +3,26 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import vazkii.botania.api.BotaniaAPI; import vazkii.botania.api.recipe.RecipePureDaisy; +import vazkii.botania.client.integration.jei.puredaisy.PureDaisyRecipeCategory; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; @RegistryDescription -public class PureDaisy extends VirtualizedRegistry { +public class PureDaisy extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(ore('plankWood')).output(blockstate('minecraft:clay')).time(5)")) public RecipeBuilder recipeBuilder() { @@ -116,6 +124,16 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(BotaniaAPI.pureDaisyRecipes).setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(PureDaisyRecipeCategory.UID); + } + + @Override + public @NotNull List getJEIOperations() { + return Default.excludeSlots(1); + } + public class RecipeBuilder extends AbstractRecipeBuilder { @Property(defaultValue = "RecipePureDaisy.DEFAULT_TIME (150)", valid = @Comp(value = "0", type = Comp.Type.GTE)) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/RuneAltar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/RuneAltar.java index 195b713a9..185a1b7b3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/RuneAltar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/RuneAltar.java @@ -4,23 +4,29 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import vazkii.botania.api.BotaniaAPI; import vazkii.botania.api.recipe.RecipeRuneAltar; +import vazkii.botania.client.integration.jei.runicaltar.RunicAltarRecipeCategory; import vazkii.botania.common.block.ModBlocks; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class RuneAltar extends VirtualizedRegistry { +public class RuneAltar extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(ore('gemEmerald'), item('minecraft:apple')).output(item('minecraft:diamond')).mana(500)")) public RecipeBuilder recipeBuilder() { @@ -101,6 +107,16 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(BotaniaAPI.runeAltarRecipes).setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RunicAltarRecipeCategory.UID); + } + + @Override + public @NotNull List getJEIOperations() { + return Default.excludeSlots(0); + } + @Property(property = "input", requirement = "groovyscript.wiki.botania.rune_altar.input.required", valid = @Comp("1")) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "2")}) public class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AlgorithmSeparator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AlgorithmSeparator.java index 7d94dde08..83f35523e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AlgorithmSeparator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AlgorithmSeparator.java @@ -4,19 +4,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import sonar.calculator.mod.common.recipes.AlgorithmSeparatorRecipes; import sonar.calculator.mod.common.recipes.CalculatorRecipe; import sonar.core.recipes.ISonarRecipeObject; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class AlgorithmSeparator extends VirtualizedRegistry { +public class AlgorithmSeparator extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:clay')).output(item('minecraft:diamond'), item('minecraft:diamond'))")) public RecipeBuilder recipeBuilder() { @@ -84,6 +88,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(AlgorithmSeparatorRecipes.instance().getRecipeID()); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("2")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AnalysingChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AnalysingChamber.java index 7ee5a8f9d..4cf4de06d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AnalysingChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AnalysingChamber.java @@ -4,11 +4,13 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import sonar.calculator.mod.common.recipes.AnalysingChamberRecipes; import sonar.calculator.mod.common.recipes.CalculatorRecipe; @@ -16,6 +18,8 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; /** @@ -41,7 +45,7 @@ @Admonition(value = "groovyscript.wiki.calculator.analysing_chamber.note1", type = Admonition.Type.WARNING, format = Admonition.Format.STANDARD) } ) -public class AnalysingChamber extends VirtualizedRegistry { +public class AnalysingChamber extends VirtualizedRegistry implements IJEIRemoval.Default { public AnalysingChamber() { super(Alias.generateOfClass(AnalysingChamber.class).andGenerate("AnalyzingChamber")); @@ -74,6 +78,7 @@ public boolean remove(CalculatorRecipe recipe) { return true; } + // if this method gets changed the JEI compat also needs to be adjusted. @MethodDescription(example = @Example("item('sonarcore:reinforceddirtblock')")) public boolean removeByInput(IIngredient input) { return AnalysingChamberRecipes.instance().getRecipes().removeIf(r -> { @@ -101,6 +106,12 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + // change this if removeByInput gets changed (since the recipe is, properly, an output) + return Collections.singletonList(AnalysingChamberRecipes.instance().getRecipeID()); + } + @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AtomicCalculator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AtomicCalculator.java index 627da2a45..45167cb67 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AtomicCalculator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AtomicCalculator.java @@ -4,19 +4,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import sonar.calculator.mod.common.recipes.AtomicCalculatorRecipes; import sonar.calculator.mod.common.recipes.CalculatorRecipe; import sonar.core.recipes.ISonarRecipeObject; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class AtomicCalculator extends VirtualizedRegistry { +public class AtomicCalculator extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:clay'), item('minecraft:clay'), item('minecraft:clay')).output(item('minecraft:gold_ingot') * 4)")) public RecipeBuilder recipeBuilder() { @@ -84,6 +88,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(AtomicCalculatorRecipes.instance().getRecipeID()); + } + @Property(property = "input", valid = @Comp("3")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/BasicCalculator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/BasicCalculator.java index b4b45d6ff..808698db6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/BasicCalculator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/BasicCalculator.java @@ -4,20 +4,24 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import sonar.calculator.mod.common.recipes.CalculatorRecipe; import sonar.calculator.mod.common.recipes.CalculatorRecipes; import sonar.core.recipes.ISonarRecipeObject; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class BasicCalculator extends VirtualizedRegistry { +public class BasicCalculator extends VirtualizedRegistry implements IJEIRemoval.Default { public BasicCalculator() { super(Alias.generateOfClass(BasicCalculator.class).andGenerate("Calculator")); @@ -89,6 +93,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(CalculatorRecipes.instance().getRecipeID()); + } + @Property(property = "input", valid = @Comp("2")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ConductorMast.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ConductorMast.java index c9341fcdd..138d4a358 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ConductorMast.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ConductorMast.java @@ -4,19 +4,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import sonar.calculator.mod.common.recipes.ConductorMastRecipes; import sonar.core.recipes.DefaultSonarRecipe; import sonar.core.recipes.ISonarRecipeObject; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class ConductorMast extends VirtualizedRegistry { +public class ConductorMast extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:clay')).output(item('minecraft:diamond')).value(100)")) public RecipeBuilder recipeBuilder() { @@ -84,6 +88,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(ConductorMastRecipes.instance().getRecipeID()); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ExtractionChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ExtractionChamber.java index ad2b47118..f118eebf4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ExtractionChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ExtractionChamber.java @@ -4,20 +4,24 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import sonar.calculator.mod.common.recipes.CalculatorRecipe; import sonar.calculator.mod.common.recipes.ExtractionChamberRecipes; import sonar.core.recipes.ISonarRecipeObject; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class ExtractionChamber extends VirtualizedRegistry { +public class ExtractionChamber extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay')).output(item('minecraft:diamond'))"), @@ -88,6 +92,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(ExtractionChamberRecipes.instance().getRecipeID()); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/FabricationChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/FabricationChamber.java index 88ed14826..9bd3df85b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/FabricationChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/FabricationChamber.java @@ -4,6 +4,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -11,18 +12,17 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraftforge.registries.IForgeRegistryEntry; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import sonar.calculator.mod.common.recipes.FabricationChamberRecipes; import sonar.calculator.mod.common.recipes.FabricationSonarRecipe; import sonar.core.recipes.ISonarRecipeObject; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; @RegistryDescription -public class FabricationChamber extends VirtualizedRegistry { +public class FabricationChamber extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('calculator:circuitboard:8').withNbt([Stable: 0, Analysed: 1])).output(item('minecraft:diamond'))"), @@ -93,6 +93,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(FabricationChamberRecipes.instance().getRecipeID()); + } + @Property(property = "input", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "Integer.MAX_VALUE", type = Comp.Type.LTE)}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/FlawlessCalculator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/FlawlessCalculator.java index 79319ca66..95f236b98 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/FlawlessCalculator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/FlawlessCalculator.java @@ -4,19 +4,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import sonar.calculator.mod.common.recipes.CalculatorRecipe; import sonar.calculator.mod.common.recipes.FlawlessCalculatorRecipes; import sonar.core.recipes.ISonarRecipeObject; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class FlawlessCalculator extends VirtualizedRegistry { +public class FlawlessCalculator extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:clay'), item('minecraft:clay'), item('minecraft:clay'), item('minecraft:clay')).output(item('minecraft:gold_ingot') * 16)")) public RecipeBuilder recipeBuilder() { @@ -84,6 +88,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(FlawlessCalculatorRecipes.instance().getRecipeID()); + } + @Property(property = "input", valid = @Comp("4")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/GlowstoneExtractor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/GlowstoneExtractor.java index 8ca67edf0..9143e8a91 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/GlowstoneExtractor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/GlowstoneExtractor.java @@ -4,19 +4,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import sonar.calculator.mod.common.recipes.GlowstoneExtractorRecipes; import sonar.core.recipes.DefaultSonarRecipe; import sonar.core.recipes.ISonarRecipeObject; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class GlowstoneExtractor extends VirtualizedRegistry { +public class GlowstoneExtractor extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:clay')).value(100)")) public RecipeBuilder recipeBuilder() { @@ -69,6 +73,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(GlowstoneExtractorRecipes.instance().getRecipeID()); + } + @Property(property = "input", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/HealthProcessor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/HealthProcessor.java index 7b20c310b..5571b92a2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/HealthProcessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/HealthProcessor.java @@ -4,19 +4,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import sonar.calculator.mod.common.recipes.HealthProcessorRecipes; import sonar.core.recipes.DefaultSonarRecipe; import sonar.core.recipes.ISonarRecipeObject; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class HealthProcessor extends VirtualizedRegistry { +public class HealthProcessor extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:clay')).value(100)")) public RecipeBuilder recipeBuilder() { @@ -69,6 +73,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(HealthProcessorRecipes.instance().getRecipeID()); + } + @Property(property = "input", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/PrecisionChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/PrecisionChamber.java index 5df6de724..71db03eca 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/PrecisionChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/PrecisionChamber.java @@ -4,19 +4,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import sonar.calculator.mod.common.recipes.CalculatorRecipe; import sonar.calculator.mod.common.recipes.PrecisionChamberRecipes; import sonar.core.recipes.ISonarRecipeObject; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class PrecisionChamber extends VirtualizedRegistry { +public class PrecisionChamber extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay')).output(item('minecraft:diamond'), item('calculator:circuitdamaged:4'))"), @@ -87,6 +91,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(PrecisionChamberRecipes.instance().getRecipeID()); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("2")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ProcessingChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ProcessingChamber.java index ac654c943..4b968209e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ProcessingChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ProcessingChamber.java @@ -4,19 +4,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import sonar.calculator.mod.common.recipes.CalculatorRecipe; import sonar.calculator.mod.common.recipes.ProcessingChamberRecipes; import sonar.core.recipes.ISonarRecipeObject; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class ProcessingChamber extends VirtualizedRegistry { +public class ProcessingChamber extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:clay')).output(item('minecraft:diamond'))")) public RecipeBuilder recipeBuilder() { @@ -84,6 +88,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(ProcessingChamberRecipes.instance().getRecipeID()); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ReassemblyChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ReassemblyChamber.java index 4a6d6202f..dc6a336cb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ReassemblyChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ReassemblyChamber.java @@ -4,19 +4,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import sonar.calculator.mod.common.recipes.CalculatorRecipe; import sonar.calculator.mod.common.recipes.ReassemblyChamberRecipes; import sonar.core.recipes.ISonarRecipeObject; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class ReassemblyChamber extends VirtualizedRegistry { +public class ReassemblyChamber extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:clay')).output(item('minecraft:diamond'))")) public RecipeBuilder recipeBuilder() { @@ -84,6 +88,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(ReassemblyChamberRecipes.instance().getRecipeID()); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/RedstoneExtractor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/RedstoneExtractor.java index 43d488f12..889a6065f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/RedstoneExtractor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/RedstoneExtractor.java @@ -4,19 +4,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import sonar.calculator.mod.common.recipes.RedstoneExtractorRecipes; import sonar.core.recipes.DefaultSonarRecipe; import sonar.core.recipes.ISonarRecipeObject; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class RedstoneExtractor extends VirtualizedRegistry { +public class RedstoneExtractor extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:clay')).value(100)")) public RecipeBuilder recipeBuilder() { @@ -69,6 +73,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RedstoneExtractorRecipes.instance().getRecipeID()); + } + @Property(property = "input", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/RestorationChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/RestorationChamber.java index 6e9b42271..b1fb83010 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/RestorationChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/RestorationChamber.java @@ -4,19 +4,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import sonar.calculator.mod.common.recipes.CalculatorRecipe; import sonar.calculator.mod.common.recipes.RestorationChamberRecipes; import sonar.core.recipes.ISonarRecipeObject; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class RestorationChamber extends VirtualizedRegistry { +public class RestorationChamber extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:clay')).output(item('minecraft:diamond'))")) public RecipeBuilder recipeBuilder() { @@ -84,6 +88,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RestorationChamberRecipes.instance().getRecipeID()); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ScientificCalculator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ScientificCalculator.java index 37f3bb460..167ca810d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ScientificCalculator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ScientificCalculator.java @@ -4,19 +4,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import sonar.calculator.mod.common.recipes.CalculatorRecipe; import sonar.calculator.mod.common.recipes.ScientificRecipes; import sonar.core.recipes.ISonarRecipeObject; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class ScientificCalculator extends VirtualizedRegistry { +public class ScientificCalculator extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:clay'), item('minecraft:clay')).output(item('minecraft:gold_ingot') * 2)")) public RecipeBuilder recipeBuilder() { @@ -84,6 +88,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(ScientificRecipes.instance().getRecipeID()); + } + @Property(property = "input", valid = @Comp("2")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/StarchExtractor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/StarchExtractor.java index 90339c87c..2d240dffc 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/StarchExtractor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/StarchExtractor.java @@ -4,19 +4,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import sonar.calculator.mod.common.recipes.StarchExtractorRecipes; import sonar.core.recipes.DefaultSonarRecipe; import sonar.core.recipes.ISonarRecipeObject; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class StarchExtractor extends VirtualizedRegistry { +public class StarchExtractor extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:clay')).value(100)")) public RecipeBuilder recipeBuilder() { @@ -69,6 +73,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(StarchExtractorRecipes.instance().getRecipeID()); + } + @Property(property = "input", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/StoneSeparator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/StoneSeparator.java index 34dd2eae3..27342e123 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/StoneSeparator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/StoneSeparator.java @@ -4,19 +4,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import sonar.calculator.mod.common.recipes.CalculatorRecipe; import sonar.calculator.mod.common.recipes.StoneSeparatorRecipes; import sonar.core.recipes.ISonarRecipeObject; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class StoneSeparator extends VirtualizedRegistry { +public class StoneSeparator extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:clay')).output(item('minecraft:diamond'), item('minecraft:diamond'))")) public RecipeBuilder recipeBuilder() { @@ -84,6 +88,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(StoneSeparatorRecipes.instance().getRecipeID()); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("2")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Dehydrator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Dehydrator.java index fde189f64..4bea4f84c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Dehydrator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Dehydrator.java @@ -5,15 +5,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import com.lothrazar.cyclicmagic.block.dehydrator.RecipeDeHydrate; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + @RegistryDescription -public class Dehydrator extends VirtualizedRegistry { +public class Dehydrator extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:gold_ingot')).output(item('minecraft:clay'))"), @@ -77,6 +85,19 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + /** + * @see com.lothrazar.cyclicmagic.compat.jei.JEIPlugin + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("dehydrator"); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation().exclude(0)); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Hydrator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Hydrator.java index 8677fe393..1ee922084 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Hydrator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Hydrator.java @@ -5,20 +5,26 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.lothrazar.cyclicmagic.block.hydrator.RecipeHydrate; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class Hydrator extends VirtualizedRegistry { +public class Hydrator extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:gold_ingot')).output(item('minecraft:clay'))"), @@ -82,6 +88,19 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + /** + * @see com.lothrazar.cyclicmagic.compat.jei.JEIPlugin + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("hydrator"); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation().exclude(0)); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "6")}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Melter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Melter.java index db65ac0c4..93fb98d77 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Melter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Melter.java @@ -5,20 +5,27 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; +import com.lothrazar.cyclicmagic.CyclicContent; import com.lothrazar.cyclicmagic.block.melter.RecipeMelter; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class Melter extends VirtualizedRegistry { +public class Melter extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:gold_ingot')).fluidOutput(fluid('water') * 175)"), @@ -82,6 +89,16 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(CyclicContent.melter.getContentName()); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation().output(0)); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "4")}) @Property(property = "fluidOutput", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Packager.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Packager.java index 6e64d9735..0a70d8b99 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Packager.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Packager.java @@ -5,20 +5,24 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.google.common.collect.Lists; import com.lothrazar.cyclicmagic.block.packager.RecipePackager; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class Packager extends VirtualizedRegistry { +public class Packager extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:gold_ingot')).output(item('minecraft:clay'))"), @@ -82,6 +86,14 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + /** + * @see com.lothrazar.cyclicmagic.compat.jei.JEIPlugin + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("packager"); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "6")}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Solidifier.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Solidifier.java index 4cba6412c..12973d78f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Solidifier.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Solidifier.java @@ -5,20 +5,25 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.google.common.collect.Lists; +import com.lothrazar.cyclicmagic.CyclicContent; import com.lothrazar.cyclicmagic.block.solidifier.RecipeSolidifier; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class Solidifier extends VirtualizedRegistry { +public class Solidifier extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay')).fluidInput(fluid('water') * 175).output(item('minecraft:gold_ingot') * 3)"), @@ -82,6 +87,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(CyclicContent.solidifier.getContentName()); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "4")}) @Property(property = "fluidInput", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/AlloySmelter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/AlloySmelter.java index a20b3c621..745dc29ce 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/AlloySmelter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/AlloySmelter.java @@ -6,6 +6,7 @@ import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.EnderIORecipeBuilder; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.RecipeInput; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.enderio.AlloyRecipeManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.enderio.ItemRecipeLeafNodeAccessor; import com.cleanroommc.groovyscript.core.mixin.enderio.ItemRecipeNodeAccessor; @@ -21,19 +22,21 @@ import crazypants.enderio.base.recipe.lookup.ItemRecipeLeafNode; import crazypants.enderio.base.recipe.lookup.ItemRecipeNode; import crazypants.enderio.base.recipe.lookup.TriItemLookup; +import crazypants.enderio.machines.integration.jei.AlloyRecipeCategory; import crazypants.enderio.util.NNPair; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.stream.Collectors; @RegistryDescription -public class AlloySmelter extends VirtualizedRegistry { +public class AlloySmelter extends VirtualizedRegistry implements IJEIRemoval.Default { @GroovyBlacklist private Set removalQueue; @@ -172,6 +175,11 @@ public void removeAll() { } } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(AlloyRecipeCategory.UID); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "3")}) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Enchanter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Enchanter.java index cec0894f6..28121dec4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Enchanter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Enchanter.java @@ -6,6 +6,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.CustomEnchanterRecipe; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.enderio.SimpleRecipeGroupHolderAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -15,17 +16,20 @@ import crazypants.enderio.base.recipe.IMachineRecipe; import crazypants.enderio.base.recipe.MachineRecipeRegistry; import crazypants.enderio.base.recipe.enchanter.EnchanterRecipe; +import crazypants.enderio.machines.integration.jei.EnchanterRecipeCategory; import net.minecraft.enchantment.Enchantment; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class Enchanter extends VirtualizedRegistry { +public class Enchanter extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".enchantment(enchantment('minecraft:unbreaking')).input(item('minecraft:diamond'))"), @@ -96,6 +100,11 @@ public void removeAll() { ((SimpleRecipeGroupHolderAccessor) MachineRecipeRegistry.instance.getRecipeHolderssForMachine(MachineRecipeRegistry.ENCHANTER)).getRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(EnchanterRecipeCategory.UID); + } + public static class RecipeBuilder implements IRecipeBuilder { @Property(valid = @Comp(type = Comp.Type.NOT, value = "null")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMill.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMill.java index 7a4116c8a..19f42e353 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMill.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMill.java @@ -7,6 +7,8 @@ import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.EnderIORecipeBuilder; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.RecipeInput; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.SagRecipe; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -16,13 +18,19 @@ import crazypants.enderio.base.recipe.RecipeLevel; import crazypants.enderio.base.recipe.RecipeOutput; import crazypants.enderio.base.recipe.sagmill.SagMillRecipeManager; +import crazypants.enderio.machines.integration.jei.sagmill.SagMillRecipeCategory; import it.unimi.dsi.fastutil.floats.FloatArrayList; import it.unimi.dsi.fastutil.floats.FloatList; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + @RegistryDescription -public class SagMill extends VirtualizedRegistry { +public class SagMill extends VirtualizedRegistry implements IJEIRemoval.Default { public SagMill() { super(Alias.generateOfClassAnd(SagMill.class, "Sag").and("SAGMill")); @@ -80,6 +88,16 @@ public void removeAll() { SagMillRecipeManager.getInstance().getRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(SagMillRecipeCategory.UID); + } + + @Override + public @NotNull List getJEIOperations() { + return Default.excludeSlots(5); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "4")}) @Property(property = "energy", valid = @Comp(type = Comp.Type.GT, value = "0")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMillGrinding.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMillGrinding.java index 0f5ce24a5..65e297b69 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMillGrinding.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMillGrinding.java @@ -5,17 +5,23 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.RecipeInput; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import crazypants.enderio.base.recipe.sagmill.GrindingBall; import crazypants.enderio.base.recipe.sagmill.SagMillRecipeManager; +import crazypants.enderio.machines.integration.jei.SagMillGrindingBallCategory; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class SagMillGrinding extends VirtualizedRegistry { +public class SagMillGrinding extends VirtualizedRegistry implements IJEIRemoval.Default { public SagMillGrinding() { super(Alias.generateOfClassAnd(SagMillGrinding.class, "Grinding")); @@ -68,6 +74,11 @@ public void removeAll() { SagMillRecipeManager.getInstance().getBalls().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(SagMillGrindingBallCategory.UID); + } + @Property(property = "input", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SliceNSplice.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SliceNSplice.java index 0f68279e1..daf354baf 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SliceNSplice.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SliceNSplice.java @@ -8,6 +8,8 @@ import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.ManyToOneRecipe; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.RecipeInput; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.RecipeUtils; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -16,16 +18,16 @@ import crazypants.enderio.base.recipe.*; import crazypants.enderio.base.recipe.sagmill.SagMillRecipeManager; import crazypants.enderio.base.recipe.slicensplice.SliceAndSpliceRecipeManager; +import crazypants.enderio.machines.integration.jei.SliceAndSpliceRecipeCategory; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; +import java.util.*; @RegistryDescription -public class SliceNSplice extends VirtualizedRegistry { +public class SliceNSplice extends VirtualizedRegistry implements IJEIRemoval.Default { public SliceNSplice() { super(Alias.generateOfClassAnd(SliceNSplice.class, "SliceAndSplice")); @@ -110,13 +112,23 @@ public void removeAll() { SliceAndSpliceRecipeManager.getInstance().getRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(SliceAndSpliceRecipeCategory.UID); + } + + @Override + public @NotNull List getJEIOperations() { + return Default.excludeSlots(0, 1); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "6")}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { - @Property(valid = @Comp(value = "0",type = Comp.Type.GTE)) + @Property(valid = @Comp(value = "0", type = Comp.Type.GTE)) private float xp; - @Property(valid = @Comp(value = "0",type = Comp.Type.GT)) + @Property(valid = @Comp(value = "0", type = Comp.Type.GT)) private int energy; @RecipeBuilderMethodDescription diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SoulBinder.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SoulBinder.java index 5df7ed87e..e1f90c142 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SoulBinder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SoulBinder.java @@ -4,6 +4,7 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.enderio.SimpleRecipeGroupHolderAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -15,19 +16,22 @@ import crazypants.enderio.base.recipe.RecipeLevel; import crazypants.enderio.base.recipe.soul.BasicSoulBinderRecipe; import crazypants.enderio.base.recipe.soul.ISoulBinderRecipe; +import crazypants.enderio.machines.integration.jei.SoulBinderRecipeCategory; import net.minecraft.entity.EntityList; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.registry.EntityEntry; import net.minecraftforge.oredict.OreDictionary; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class SoulBinder extends VirtualizedRegistry { +public class SoulBinder extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:diamond')).output(item('minecraft:clay')).entity(entity('minecraft:zombie'), entity('minecraft:enderman')).name('groovy_example').energy(1000).xp(5)")) public RecipeBuilder recipeBuilder() { @@ -83,6 +87,11 @@ public void removeAll() { ((SimpleRecipeGroupHolderAccessor) MachineRecipeRegistry.instance.getRecipeHolderssForMachine(MachineRecipeRegistry.SOULBINDER)).getRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(SoulBinderRecipeCategory.UID); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Tank.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Tank.java index ed1a42ca0..8faabf861 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Tank.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Tank.java @@ -7,6 +7,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.RecipeUtils; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.enderio.SimpleRecipeGroupHolderAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -18,16 +19,19 @@ import crazypants.enderio.base.recipe.MachineRecipeRegistry; import crazypants.enderio.base.recipe.RecipeLevel; import crazypants.enderio.base.recipe.tank.TankMachineRecipe; +import crazypants.enderio.machines.integration.jei.TankRecipeCategory; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class Tank extends VirtualizedRegistry { +public class Tank extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".drain().input(item('minecraft:clay')).output(item('minecraft:diamond')).fluidInput(fluid('water') * 500)"), @@ -200,6 +204,11 @@ public void removeAll() { ((SimpleRecipeGroupHolderAccessor) MachineRecipeRegistry.instance.getRecipeHolderssForMachine(MachineRecipeRegistry.TANK_EMPTYING)).getRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(TankRecipeCategory.UID); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "fluidInput", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Vat.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Vat.java index afc271b09..c361a8680 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Vat.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Vat.java @@ -6,6 +6,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.RecipeInput; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.ingredient.IngredientList; @@ -15,17 +16,21 @@ import crazypants.enderio.base.recipe.*; import crazypants.enderio.base.recipe.vat.VatRecipe; import crazypants.enderio.base.recipe.vat.VatRecipeManager; +import crazypants.enderio.machines.integration.jei.VatRecipeCategory; import it.unimi.dsi.fastutil.floats.FloatArrayList; import it.unimi.dsi.fastutil.floats.FloatList; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class Vat extends VirtualizedRegistry { +public class Vat extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(fluid('lava')).output(fluid('hootch')).baseMultiplier(2).itemInputLeft(item('minecraft:clay'), 2).itemInputLeft(item('minecraft:clay_ball'), 0.5).itemInputRight(item('minecraft:diamond'), 5).itemInputRight(item('minecraft:diamond_block'), 50).itemInputRight(item('minecraft:gold_block'), 10).itemInputRight(item('minecraft:gold_ingot'), 1).itemInputRight(item('minecraft:gold_nugget'), 0.1).energy(1000).tierEnhanced()"), @@ -86,6 +91,11 @@ public void removeAll() { VatRecipeManager.getInstance().getRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(VatRecipeCategory.UID); + } + public static class RecipeBuilder implements IRecipeBuilder { @Property diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/DemonTradeManager.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/DemonTradeManager.java index e81393d46..7e6aafc84 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/DemonTradeManager.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/DemonTradeManager.java @@ -5,17 +5,24 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import essentialcraft.api.DemonTrade; import net.minecraft.item.ItemStack; import net.minecraftforge.fml.common.registry.EntityEntry; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; @RegistryDescription( category = RegistryDescription.Category.ENTRIES, admonition = @Admonition(value = "groovyscript.wiki.essentialcraft.demon_trade.note0", type = Admonition.Type.DANGER)) -public class DemonTradeManager extends VirtualizedRegistry { +public class DemonTradeManager extends VirtualizedRegistry implements IJEIRemoval.Default { public DemonTradeManager() { super(Alias.generateOf("DemonTrade")); @@ -89,4 +96,15 @@ public void removeAll() { public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(DemonTrade.TRADES).setRemover(this::remove); } + + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(essentialcraft.integration.jei.DemonTrading.UID); + } + + @Override + public @NotNull List getJEIOperations() { + return Default.excludeSlots(2); + } + } \ No newline at end of file diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MagicianTable.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MagicianTable.java index 2394b6656..15290a89c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MagicianTable.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MagicianTable.java @@ -4,16 +4,21 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import essentialcraft.api.MagicianTableRecipe; import essentialcraft.api.MagicianTableRecipes; import net.minecraft.item.crafting.Ingredient; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.essentialcraft.magician_table.note0", type = Admonition.Type.WARNING)) -public class MagicianTable extends VirtualizedRegistry { +public class MagicianTable extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:diamond'), ore('ingotGold'), ore('ingotGold'), ore('stickWood'), ore('stickWood')).output(item('minecraft:iron_ingot')).mru(500)")) public MagicianTable.RecipeBuilder recipeBuilder() { @@ -51,6 +56,11 @@ public SimpleObjectStream streamRecipes() { }); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(essentialcraft.integration.jei.MagicianTable.UID); + } + @Property(property = "input", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "5", type = Comp.Type.LTE)}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MithrilineFurnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MithrilineFurnace.java index 72599bbd6..21bf11fb1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MithrilineFurnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MithrilineFurnace.java @@ -4,18 +4,22 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import essentialcraft.api.MithrilineFurnaceRecipe; import essentialcraft.api.MithrilineFurnaceRecipes; import net.minecraft.item.crafting.Ingredient; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class MithrilineFurnace extends VirtualizedRegistry { +public class MithrilineFurnace extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:coal_block') * 3).output(item('minecraft:diamond_block')).espe(500)")) public MithrilineFurnace.RecipeBuilder recipeBuilder() { @@ -64,6 +68,11 @@ public SimpleObjectStream streamRecipes() { }); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(essentialcraft.integration.jei.MithrilineFurnace.UID); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/RadiatingChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/RadiatingChamber.java index 65974fd6c..940977280 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/RadiatingChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/RadiatingChamber.java @@ -4,16 +4,21 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import essentialcraft.api.RadiatingChamberRecipe; import essentialcraft.api.RadiatingChamberRecipes; import net.minecraft.item.crafting.Ingredient; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class RadiatingChamber extends VirtualizedRegistry { +public class RadiatingChamber extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:nether_star'), item('minecraft:stone')).output(item('minecraft:beacon')).time(100).mruPerTick(10.0f).upperBalance(1.5f).lowerBalance(0.25f)")) public RadiatingChamber.RecipeBuilder recipeBuilder() { @@ -51,6 +56,11 @@ public SimpleObjectStream streamRecipes() { }); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(essentialcraft.integration.jei.RadiatingChamber.UID); + } + @Property(property = "input", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "2", type = Comp.Type.LTE)}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/WindRune.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/WindRune.java index 857dcf3e9..54c423bfa 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/WindRune.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/WindRune.java @@ -4,16 +4,21 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import essentialcraft.api.WindImbueRecipe; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class WindRune extends VirtualizedRegistry { +public class WindRune extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:gold_block')).output(item('minecraft:diamond_block')).espe(500)")) public WindRune.RecipeBuilder recipeBuilder() { @@ -64,6 +69,11 @@ public SimpleObjectStream streamRecipes() { }); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(essentialcraft.integration.jei.WindImbue.UID); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/BloodInfuser.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/BloodInfuser.java index af5f6642a..40ff0dac2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/BloodInfuser.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/BloodInfuser.java @@ -3,6 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -16,10 +18,16 @@ import org.cyclops.evilcraft.block.BloodInfuserConfig; import org.cyclops.evilcraft.core.recipe.custom.DurationXpRecipeProperties; import org.cyclops.evilcraft.core.recipe.custom.IngredientFluidStackAndTierRecipeComponent; +import org.cyclops.evilcraftcompat.modcompat.jei.bloodinfuser.BloodInfuserRecipeJEI; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + @RegistryDescription -public class BloodInfuser extends VirtualizedRegistry> { +public class BloodInfuser extends VirtualizedRegistry> implements IJEIRemoval.Default { @Override public boolean isEnabled() { @@ -92,6 +100,16 @@ public SimpleObjectStream getCategories() { + return Collections.singletonList(BloodInfuserRecipeJEI.CATEGORY); + } + + @Override + public @NotNull List getJEIOperations() { + return Default.excludeSlots(1); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "fluidInput", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/EnvironmentalAccumulator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/EnvironmentalAccumulator.java index 916926f9f..cc942c9d7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/EnvironmentalAccumulator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/EnvironmentalAccumulator.java @@ -3,9 +3,11 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import org.cyclops.cyclopscore.recipe.custom.api.IRecipe; import org.cyclops.evilcraft.Configs; @@ -13,12 +15,16 @@ import org.cyclops.evilcraft.core.recipe.custom.EnvironmentalAccumulatorRecipeComponent; import org.cyclops.evilcraft.core.recipe.custom.EnvironmentalAccumulatorRecipeProperties; import org.cyclops.evilcraft.core.weather.WeatherType; +import org.cyclops.evilcraftcompat.modcompat.jei.environmentalaccumulator.EnvironmentalAccumulatorRecipeJEI; +import org.cyclops.evilcraftcompat.modcompat.jei.sanguinaryenvironmentalaccumulator.SanguinaryEnvironmentalAccumulatorRecipeJEI; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; import java.util.Locale; @RegistryDescription -public class EnvironmentalAccumulator extends VirtualizedRegistry> { +public class EnvironmentalAccumulator extends VirtualizedRegistry> implements IJEIRemoval.Default { @Override public boolean isEnabled() { @@ -91,6 +97,11 @@ public SimpleObjectStream getCategories() { + return ImmutableList.of(EnvironmentalAccumulatorRecipeJEI.CATEGORY, SanguinaryEnvironmentalAccumulatorRecipeJEI.CATEGORY); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder> { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/CombinationCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/CombinationCrafting.java index df76efd1e..2d44ad5d0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/CombinationCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/CombinationCrafting.java @@ -1,5 +1,6 @@ package com.cleanroommc.groovyscript.compat.mods.extendedcrafting; +import com.blakebr0.extendedcrafting.compat.jei.combinationcrafting.CombinationCraftingCategory; import com.blakebr0.extendedcrafting.config.ModConfig; import com.blakebr0.extendedcrafting.crafting.CombinationRecipe; import com.blakebr0.extendedcrafting.crafting.CombinationRecipeManager; @@ -7,6 +8,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -15,14 +17,16 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; import net.minecraft.util.NonNullList; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; +import java.util.Collections; @RegistryDescription( admonition = @Admonition(value = "groovyscript.wiki.extendedcrafting.combination_crafting.note0", type = Admonition.Type.INFO, format = Admonition.Format.STANDARD) ) -public class CombinationCrafting extends VirtualizedRegistry { +public class CombinationCrafting extends VirtualizedRegistry implements IJEIRemoval.Default { public CombinationCrafting() { super(Alias.generateOfClassAnd(CombinationCrafting.class, "Combination")); @@ -108,6 +112,11 @@ public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(CombinationCraftingCategory.UID); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/CompressionCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/CompressionCrafting.java index 32f94d3a9..dc927d6af 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/CompressionCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/CompressionCrafting.java @@ -1,5 +1,6 @@ package com.cleanroommc.groovyscript.compat.mods.extendedcrafting; +import com.blakebr0.extendedcrafting.compat.jei.compressor.CompressorCraftingCategory; import com.blakebr0.extendedcrafting.config.ModConfig; import com.blakebr0.extendedcrafting.crafting.CompressorRecipe; import com.blakebr0.extendedcrafting.crafting.CompressorRecipeManager; @@ -8,16 +9,21 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class CompressionCrafting extends VirtualizedRegistry { +public class CompressionCrafting extends VirtualizedRegistry implements IJEIRemoval.Default { public CompressionCrafting() { super(Alias.generateOfClassAnd(CompressionCrafting.class, "Compression")); @@ -107,6 +113,11 @@ public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(CompressorCraftingCategory.UID); + } + @Property(property = "output", valid = @Comp("1")) @Property(property = "input", valid = @Comp(type = Comp.Type.NOT, value = "null")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/EnderCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/EnderCrafting.java index 072974410..509299bc9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/EnderCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/EnderCrafting.java @@ -1,5 +1,6 @@ package com.cleanroommc.groovyscript.compat.mods.extendedcrafting; +import com.blakebr0.extendedcrafting.compat.jei.endercrafter.EnderCrafterCategory; import com.blakebr0.extendedcrafting.config.ModConfig; import com.blakebr0.extendedcrafting.crafting.endercrafter.EnderCrafterRecipeManager; import com.cleanroommc.groovyscript.api.IIngredient; @@ -7,15 +8,21 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RecipeBuilderDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; +import org.jetbrains.annotations.NotNull; +import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class EnderCrafting extends VirtualizedRegistry { +public class EnderCrafting extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".output(item('minecraft:stone')).matrix('BXX', 'X B').key('B', item('minecraft:stone')).key('X', item('minecraft:gold_ingot')).time(1).mirrored()"), @@ -104,4 +111,15 @@ public void removeAll() { EnderCrafterRecipeManager.getInstance().getRecipes().forEach(this::addBackup); EnderCrafterRecipeManager.getInstance().getRecipes().clear(); } + + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(EnderCrafterCategory.UID); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.outputItemOperation()); + } + } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/TableCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/TableCrafting.java index 4ce63b432..7398ce484 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/TableCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/TableCrafting.java @@ -1,5 +1,9 @@ package com.cleanroommc.groovyscript.compat.mods.extendedcrafting; +import com.blakebr0.extendedcrafting.compat.jei.tablecrafting.AdvancedTableCategory; +import com.blakebr0.extendedcrafting.compat.jei.tablecrafting.BasicTableCategory; +import com.blakebr0.extendedcrafting.compat.jei.tablecrafting.EliteTableCategory; +import com.blakebr0.extendedcrafting.compat.jei.tablecrafting.UltimateTableCategory; import com.blakebr0.extendedcrafting.crafting.table.ITieredRecipe; import com.blakebr0.extendedcrafting.crafting.table.TableRecipeManager; import com.cleanroommc.groovyscript.api.IIngredient; @@ -7,14 +11,19 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RecipeBuilderDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; +import java.util.Collection; import java.util.List; @RegistryDescription -public class TableCrafting extends VirtualizedRegistry { +public class TableCrafting extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".output(item('minecraft:stone') * 64).matrix('DLLLLLDDD', ' DNIGIND', 'DDDNIGIND', ' DLLLLLD').key('D', item('minecraft:diamond')).key('L', item('minecraft:redstone')).key('N', item('minecraft:stone')).key('I', item('minecraft:iron_ingot')).key('G', item('minecraft:gold_ingot')).tierUltimate()"), @@ -103,4 +112,15 @@ public void removeAll() { TableRecipeManager.getInstance().getRecipes().forEach(this::addBackup); TableRecipeManager.getInstance().getRecipes().clear(); } + + @Override + public @NotNull Collection getCategories() { + return ImmutableList.of(BasicTableCategory.UID, AdvancedTableCategory.UID, EliteTableCategory.UID, UltimateTableCategory.UID); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.outputItemOperation()); + } + } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrabotany/Pedestal.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrabotany/Pedestal.java index 601f0b19a..780195336 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrabotany/Pedestal.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrabotany/Pedestal.java @@ -4,16 +4,24 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.meteor.extrabotany.api.ExtraBotanyAPI; +import com.meteor.extrabotany.client.integration.jei.pedestal.HammerRecipeCategory; import com.meteor.extrabotany.common.crafting.recipe.RecipePedestal; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + @RegistryDescription -public class Pedestal extends VirtualizedRegistry { +public class Pedestal extends VirtualizedRegistry implements IJEIRemoval.Default { @Override public void onReload() { @@ -83,6 +91,16 @@ public void removeAll() { ExtraBotanyAPI.pedestalRecipes.clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(HammerRecipeCategory.UID); + } + + @Override + public @NotNull List getJEIOperations() { + return Default.excludeSlots(1); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Crusher.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Crusher.java index 9ac0a53db..62c626a30 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Crusher.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Crusher.java @@ -4,19 +4,19 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.rwtema.extrautils2.api.machine.IMachineRecipe; import com.rwtema.extrautils2.api.machine.XUMachineCrusher; +import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; @RegistryDescription -public class Crusher extends VirtualizedRegistry { +public class Crusher extends VirtualizedRegistry implements IJEIRemoval.Default { @Override public void onReload() { @@ -85,6 +85,14 @@ public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); } + /** + * @see com.rwtema.extrautils2.crafting.jei.JEIMachine#getUid() + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("xu2_machine_" + XUMachineCrusher.INSTANCE.name); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "2", type = Comp.Type.LTE)}) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Enchanter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Enchanter.java index 0d4833579..691314f97 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Enchanter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Enchanter.java @@ -4,18 +4,18 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.rwtema.extrautils2.api.machine.IMachineRecipe; import com.rwtema.extrautils2.api.machine.XUMachineEnchanter; +import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; @RegistryDescription -public class Enchanter extends VirtualizedRegistry { +public class Enchanter extends VirtualizedRegistry implements IJEIRemoval.Default { @Override public void onReload() { @@ -81,6 +81,14 @@ public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); } + /** + * @see com.rwtema.extrautils2.crafting.jei.JEIMachine#getUid() + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("xu2_machine_" + XUMachineEnchanter.INSTANCE.name); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "2", type = Comp.Type.LTE)}) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Furnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Furnace.java index a2263deeb..0992ea9f2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Furnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Furnace.java @@ -4,15 +4,15 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.rwtema.extrautils2.api.machine.IMachineRecipe; import com.rwtema.extrautils2.api.machine.XUMachineFurnace; +import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; @RegistryDescription( admonition = @Admonition(type = Admonition.Type.WARNING, @@ -20,7 +20,7 @@ hasTitle = true, value = "groovyscript.wiki.extrautils2.furnace.removeWarning") ) -public class Furnace extends VirtualizedRegistry { +public class Furnace extends VirtualizedRegistry implements IJEIRemoval.Default { @Override public void onReload() { @@ -85,6 +85,14 @@ public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); } + /** + * @see com.rwtema.extrautils2.crafting.jei.JEIMachine#getUid() + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("xu2_machine_" + XUMachineFurnace.INSTANCE.name); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Generator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Generator.java index 7b37d0788..3af9fbf4d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Generator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Generator.java @@ -3,6 +3,7 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.extrautils2.MachineInitAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -15,14 +16,13 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.FluidStack; import org.apache.commons.lang3.tuple.Pair; +import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; @RegistryDescription -public class Generator extends VirtualizedRegistry> { +public class Generator extends VirtualizedRegistry> implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".generator('extrautils2:generator_pink').input(item('minecraft:clay')).energy(1000).energyPerTick(100)"), @@ -193,6 +193,14 @@ public void removeAll() { } } + /** + * @see com.rwtema.extrautils2.crafting.jei.JEIMachine#getUid() + */ + @Override + public @NotNull Collection getCategories() { + return Arrays.stream(Generators.values()).map(Generators::toString).map(MachineRegistry::getMachine).filter(Objects::nonNull).map(machine -> "xu2_machine_" + machine.name).collect(Collectors.toList()); + } + public enum Generators { FURNACE("extrautils2:generator"), diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Resonator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Resonator.java index d9848e611..dce7381d8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Resonator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Resonator.java @@ -4,12 +4,14 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.cleanroommc.groovyscript.sandbox.ClosureHelper; import com.rwtema.extrautils2.api.resonator.IResonatorRecipe; import com.rwtema.extrautils2.crafting.ResonatorRecipe; +import com.rwtema.extrautils2.crafting.jei.JEIResonatorHandler; import com.rwtema.extrautils2.power.PowerManager; import com.rwtema.extrautils2.tile.TileRainbowGenerator; import com.rwtema.extrautils2.tile.TileResonator; @@ -19,13 +21,15 @@ import net.minecraft.tileentity.TileEntity; import net.minecraftforge.items.ItemHandlerHelper; import org.codehaus.groovy.runtime.MethodClosure; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class Resonator extends VirtualizedRegistry { +public class Resonator extends VirtualizedRegistry implements IJEIRemoval.Default { @Override public void onReload() { @@ -91,6 +95,11 @@ public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIResonatorHandler.uid); + } + public interface ShouldProgress { boolean run(TileEntity resonator, int frequency, ItemStack input); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/AlloyKiln.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/AlloyKiln.java index 24eee8d9e..88e80e066 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/AlloyKiln.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/AlloyKiln.java @@ -6,18 +6,24 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class AlloyKiln extends VirtualizedRegistry { +public class AlloyKiln extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:diamond'), ore('ingotGold')).output(item('minecraft:clay'))")) public RecipeBuilder recipeBuilder() { @@ -104,6 +110,19 @@ public void removeAll() { AlloyRecipe.recipeList.clear(); } + /** + * @see blusunrize.immersiveengineering.common.util.compat.jei.JEIHelper + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("ie.alloysmelter"); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().input(1), OperationHandler.FluidOperation.defaultFluidOperation()); + } + @Property(property = "input", valid = @Comp("2")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/ArcFurnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/ArcFurnace.java index b2506e697..3bb9200fc 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/ArcFurnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/ArcFurnace.java @@ -6,6 +6,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ArrayUtils; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -13,16 +14,15 @@ import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.annotation.Nonnull; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; @RegistryDescription -public class ArcFurnace extends VirtualizedRegistry { +public class ArcFurnace extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".mainInput(item('minecraft:diamond')).input(item('minecraft:diamond'), ore('ingotGold')).output(item('minecraft:clay')).time(100).energyPerTick(100).slag(item('minecraft:gold_nugget'))")) public RecipeBuilder recipeBuilder() { @@ -134,6 +134,14 @@ public void removeAll() { ArcFurnaceRecipe.recipeList.clear(); } + /** + * @see blusunrize.immersiveengineering.common.util.compat.jei.JEIHelper + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("ie.arcFurnace"); + } + @Property(property = "input", valid = {@Comp(value = "0", type = Comp.Type.GTE), @Comp(value = "5", type = Comp.Type.LTE)}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnace.java index 31f3240b0..769e30a56 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnace.java @@ -5,18 +5,22 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.annotation.Nonnull; +import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class BlastFurnace extends VirtualizedRegistry { +public class BlastFurnace extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:diamond')).output(item('minecraft:clay')).time(100).slag(item('minecraft:gold_nugget'))")) public static RecipeBuilder recipeBuilder() { @@ -102,6 +106,14 @@ public void removeAll() { BlastFurnaceRecipe.recipeList.clear(); } + /** + * @see blusunrize.immersiveengineering.common.util.compat.jei.JEIHelper + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("ie.blastfurnace"); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnaceFuel.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnaceFuel.java index f2a871596..6e5d807c5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnaceFuel.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnaceFuel.java @@ -5,18 +5,22 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class BlastFurnaceFuel extends VirtualizedRegistry { +public class BlastFurnaceFuel extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:clay')).time(100)")) public static RecipeBuilder recipeBuilder() { @@ -83,6 +87,14 @@ public void removeAll() { BlastFurnaceRecipe.blastFuels.clear(); } + /** + * @see blusunrize.immersiveengineering.common.util.compat.jei.JEIHelper + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("ie.blastfurnace.fuel"); + } + @Property(property = "input", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlueprintCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlueprintCrafting.java index df396541a..2c1c66a02 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlueprintCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlueprintCrafting.java @@ -7,6 +7,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.ArrayUtils; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -14,14 +15,16 @@ import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class BlueprintCrafting extends VirtualizedRegistry { +public class BlueprintCrafting extends VirtualizedRegistry implements IJEIRemoval.Default { public BlueprintCrafting() { super(Alias.generateOfClassAnd(BlueprintCrafting.class, "Blueprint")); @@ -163,6 +166,14 @@ public void removeAll() { BlueprintCraftingRecipe.recipeList.clear(); } + /** + * @see blusunrize.immersiveengineering.common.util.compat.jei.JEIHelper + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("ie.workbench"); + } + @Property(property = "input", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "Integer.MAX_VALUE", type = Comp.Type.LTE)}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BottlingMachine.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BottlingMachine.java index a3f9151b8..931cce0aa 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BottlingMachine.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BottlingMachine.java @@ -6,6 +6,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -13,13 +14,16 @@ import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class BottlingMachine extends VirtualizedRegistry { +public class BottlingMachine extends VirtualizedRegistry implements IJEIRemoval.Default { public BottlingMachine() { super(Alias.generateOfClassAnd(BottlingMachine.class, "Bottling")); @@ -113,6 +117,14 @@ public void removeAll() { BottlingMachineRecipe.recipeList.clear(); } + /** + * @see blusunrize.immersiveengineering.common.util.compat.jei.JEIHelper + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("ie.bottlingMachine"); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) @Property(property = "fluidInput", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/CokeOven.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/CokeOven.java index 07e46325d..fbe71d688 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/CokeOven.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/CokeOven.java @@ -6,17 +6,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class CokeOven extends VirtualizedRegistry { +public class CokeOven extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:diamond')).output(item('minecraft:clay')).time(100).creosote(50)")) public static RecipeBuilder recipeBuilder() { @@ -105,6 +111,19 @@ public void removeAll() { CokeOvenRecipe.recipeList.clear(); } + /** + * @see blusunrize.immersiveengineering.common.util.compat.jei.JEIHelper + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("ie.cokeoven"); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.FluidOperation.defaultFluidOperation().exclude(0), OperationHandler.ItemOperation.defaultItemOperation()); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Crusher.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Crusher.java index a3875d24f..0e9b7b9b4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Crusher.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Crusher.java @@ -5,19 +5,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import it.unimi.dsi.fastutil.floats.FloatArrayList; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class Crusher extends VirtualizedRegistry { +public class Crusher extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:diamond')).output(item('minecraft:clay')).energy(100)"), @@ -104,6 +108,14 @@ public void removeAll() { CrusherRecipe.recipeList.clear(); } + /** + * @see blusunrize.immersiveengineering.common.util.compat.jei.JEIHelper + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("ie.crusher"); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Fermenter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Fermenter.java index 60305b379..31a852446 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Fermenter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Fermenter.java @@ -5,18 +5,22 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.annotation.Nonnull; +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class Fermenter extends VirtualizedRegistry { +public class Fermenter extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:diamond')).output(item('minecraft:clay')).fluidOutput(fluid('water')).energy(100)")) public static RecipeBuilder recipeBuilder() { @@ -104,6 +108,14 @@ public void removeAll() { FermenterRecipe.recipeList.clear(); } + /** + * @see blusunrize.immersiveengineering.common.util.compat.jei.JEIHelper + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("ie.fermenter"); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = {@Comp(value = "0", type = Comp.Type.GTE), @Comp(value = "1", type = Comp.Type.LTE)}) @Property(property = "fluidOutput", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/MetalPress.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/MetalPress.java index badd397e3..54a8accd2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/MetalPress.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/MetalPress.java @@ -7,18 +7,22 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class MetalPress extends VirtualizedRegistry { +public class MetalPress extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".mold(item('minecraft:diamond')).input(ore('ingotGold')).output(item('minecraft:clay')).energy(100)")) public static RecipeBuilder recipeBuilder() { @@ -180,6 +184,14 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(recipes).setRemover(this::remove); } + /** + * @see blusunrize.immersiveengineering.common.util.compat.jei.JEIHelper + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("ie.metalPress"); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Mixer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Mixer.java index d1d0ff9db..fd7f323f7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Mixer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Mixer.java @@ -5,20 +5,24 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ArrayUtils; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class Mixer extends VirtualizedRegistry { +public class Mixer extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:diamond'), ore('ingotGold'), ore('ingotGold'), ore('ingotGold')).fluidInput(fluid('water')).fluidOutput(fluid('lava')).energy(100)")) public static RecipeBuilder recipeBuilder() { @@ -133,6 +137,14 @@ public void removeAll() { MixerRecipe.recipeList.clear(); } + /** + * @see blusunrize.immersiveengineering.common.util.compat.jei.JEIHelper + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("ie.mixer"); + } + @Property(property = "input", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "Integer.MAX_VALUE", type = Comp.Type.LTE)}) @Property(property = "output", valid = @Comp("1")) @Property(property = "fluidInput", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Refinery.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Refinery.java index a046eded3..528dccd55 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Refinery.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Refinery.java @@ -4,18 +4,22 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class Refinery extends VirtualizedRegistry { +public class Refinery extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".fluidInput(fluid('water'), fluid('water')).fluidOutput(fluid('lava')).energy(100)")) public static RecipeBuilder recipeBuilder() { @@ -105,6 +109,14 @@ public void removeAll() { RefineryRecipe.recipeList.clear(); } + /** + * @see blusunrize.immersiveengineering.common.util.compat.jei.JEIHelper + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("ie.refinery"); + } + @Property(property = "fluidInput", valid = @Comp("2")) @Property(property = "fluidOutput", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Squeezer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Squeezer.java index 0643270e4..9c25c2cc0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Squeezer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Squeezer.java @@ -5,20 +5,24 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.annotation.Nonnull; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class Squeezer extends VirtualizedRegistry { +public class Squeezer extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:diamond')).output(item('minecraft:clay')).fluidOutput(fluid('lava')).energy(100)"), @@ -152,6 +156,14 @@ public void removeAll() { SqueezerRecipe.recipeList.clear(); } + /** + * @see blusunrize.immersiveengineering.common.util.compat.jei.JEIHelper + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("ie.squeezer"); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = {@Comp(value = "0", type = Comp.Type.GTE), @Comp(value = "1", type = Comp.Type.LTE)}) @Property(property = "fluidOutput", valid = {@Comp(value = "0", type = Comp.Type.GTE), @Comp(value = "1", type = Comp.Type.LTE)}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivepetroleum/Distillation.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivepetroleum/Distillation.java index fdefd1174..815c72bd5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivepetroleum/Distillation.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivepetroleum/Distillation.java @@ -5,6 +5,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -13,10 +14,14 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class Distillation extends VirtualizedRegistry { +public class Distillation extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".fluidInput(fluid('water') * 100).fluidOutput(fluid('water') * 50, fluid('lava') * 30).output(item('minecraft:diamond'), 0.5).output(item('minecraft:clay'), 0.2).output(item('minecraft:diamond'), 0.1).output(item('minecraft:clay'), 0.5).output(item('minecraft:diamond') * 5, 0.01).time(5).energy(1000)"), @@ -95,6 +100,17 @@ public void removeAll() { DistillationRecipe.recipeList.clear(); } + /** + * Note that this is added by a third-party compat mod, not base Immersive Petroleum. + * DistillationCategory + *

+ * {@code justenoughpetroleum.DistillationCategory.UID} + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("immersivepetroleum.distillation"); + } + @Property(property = "fluidInput", valid = @Comp("1")) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "Integer.MAX_VALUE")}) @Property(property = "fluidOutput", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "Integer.MAX_VALUE")}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/BioReactor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/BioReactor.java index ce0eee6b0..2a3791455 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/BioReactor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/BioReactor.java @@ -7,15 +7,22 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.google.common.base.Predicate; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + @RegistryDescription -public class BioReactor extends VirtualizedRegistry { +public class BioReactor extends VirtualizedRegistry implements IJEIRemoval.Default { @Override @GroovyBlacklist @@ -72,4 +79,17 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + /** + * @see com.buuz135.industrial.jei.JEICustomPlugin + * @see com.buuz135.industrial.jei.reactor.ReactorRecipeCategory#getUid() + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("bioreactor_accepted_items"); + } + + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation()); + } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/Extractor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/Extractor.java index b993e0ab5..b3123a4e6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/Extractor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/Extractor.java @@ -1,19 +1,25 @@ package com.cleanroommc.groovyscript.compat.mods.industrialforegoing; import com.buuz135.industrial.api.extractor.ExtractorEntry; +import com.buuz135.industrial.jei.extractor.ExtractorRecipeCategory; import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class Extractor extends VirtualizedRegistry { +public class Extractor extends VirtualizedRegistry implements IJEIRemoval.Default { public Extractor() { super(Alias.generateOfClass(Extractor.class).andGenerate("TreeFluidExtractor")); @@ -85,4 +91,8 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(ExtractorRecipeCategory.UID); + } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/FluidDictionary.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/FluidDictionary.java index b1d602245..b23a9e38b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/FluidDictionary.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/FluidDictionary.java @@ -5,12 +5,17 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class FluidDictionary extends VirtualizedRegistry { +public class FluidDictionary extends VirtualizedRegistry implements IJEIRemoval.Default { @Override @GroovyBlacklist @@ -99,4 +104,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + /** + * @see com.buuz135.industrial.jei.fluiddictionary.FluidDictionaryCategory#getUid() + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("fluid_dictionary"); + } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/LaserDrill.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/LaserDrill.java index 915af19d6..3dd97bc53 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/LaserDrill.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/LaserDrill.java @@ -6,20 +6,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; import net.minecraft.world.biome.Biome; import org.apache.commons.lang3.tuple.Pair; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class LaserDrill extends VirtualizedRegistry> { +public class LaserDrill extends VirtualizedRegistry> implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".output(item('minecraft:clay')).lensMeta(5).weight(100)")) public RecipeBuilder recipeBuilder() { @@ -147,6 +150,14 @@ public SimpleObjectStream streamRecipes .setRemover(this::remove); } + /** + * @see com.buuz135.industrial.jei.laser.LaserRecipeCategory#getUid() + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("laser_category"); + } + @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreFermenter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreFermenter.java index 138dd619b..b60f83dc7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreFermenter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreFermenter.java @@ -6,13 +6,18 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class OreFermenter extends VirtualizedRegistry { +public class OreFermenter extends VirtualizedRegistry implements IJEIRemoval.Default { public OreFermenter() { super(Alias.generateOfClass(OreFermenter.class).andGenerate("Fermentation")); @@ -79,4 +84,8 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("ORE_FERMENTER"); + } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreRaw.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreRaw.java index e9754ce8d..e33270762 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreRaw.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreRaw.java @@ -1,19 +1,25 @@ package com.cleanroommc.groovyscript.compat.mods.industrialforegoing; import com.buuz135.industrial.api.recipe.ore.OreFluidEntryRaw; +import com.buuz135.industrial.jei.ore.OreWasherCategory; import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class OreRaw extends VirtualizedRegistry { +public class OreRaw extends VirtualizedRegistry implements IJEIRemoval.Default { public OreRaw() { super(Alias.generateOfClass(OreRaw.class).andGenerate("Washing")); @@ -104,4 +110,9 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + // why does this one has a public static ID string when none of the others have one? + return Collections.singletonList(OreWasherCategory.ID); + } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreSieve.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreSieve.java index 14c8df88c..16a368cd0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreSieve.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreSieve.java @@ -6,14 +6,19 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class OreSieve extends VirtualizedRegistry { +public class OreSieve extends VirtualizedRegistry implements IJEIRemoval.Default { public OreSieve() { super(Alias.generateOfClass(OreSieve.class).andGenerate("FluidSieving")); @@ -86,4 +91,8 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("ORE_SIEVE"); + } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/ProteinReactor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/ProteinReactor.java index 02c01784b..3053fc5a4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/ProteinReactor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/ProteinReactor.java @@ -7,15 +7,22 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.google.common.base.Predicate; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + @RegistryDescription -public class ProteinReactor extends VirtualizedRegistry { +public class ProteinReactor extends VirtualizedRegistry implements IJEIRemoval.Default { @Override @GroovyBlacklist @@ -72,4 +79,17 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + /** + * @see com.buuz135.industrial.jei.JEICustomPlugin + * @see com.buuz135.industrial.jei.reactor.ReactorRecipeCategory#getUid() + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("protein_reactor_accepted_items"); + } + + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation()); + } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/SludgeRefiner.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/SludgeRefiner.java index 04e7419d5..8a32dc096 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/SludgeRefiner.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/SludgeRefiner.java @@ -6,13 +6,20 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.industrialforegoing.SludgeRefinerBlockAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; @RegistryDescription -public class SludgeRefiner extends VirtualizedRegistry { +public class SludgeRefiner extends VirtualizedRegistry implements IJEIRemoval.Default { @Override @GroovyBlacklist @@ -71,4 +78,17 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + /** + * @see com.buuz135.industrial.jei.sludge.SludgeRefinerRecipeCategory#getUid() + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("sludge_refiner_category"); + } + + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation()); + } + } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/AnvilSmashing.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/AnvilSmashing.java index d2eeaf6cd..d811a2bca 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/AnvilSmashing.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/AnvilSmashing.java @@ -3,23 +3,28 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.inspirations.InspirationsRegistryAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.AbstractReloadableStorage; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import knightminer.inspirations.library.InspirationsRegistry; +import knightminer.inspirations.plugins.jei.smashing.SmashingRecipeCategory; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import org.apache.commons.lang3.tuple.Pair; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.Map; import java.util.stream.Collectors; @RegistryDescription -public class AnvilSmashing extends VirtualizedRegistry> { +public class AnvilSmashing extends VirtualizedRegistry> implements IJEIRemoval.Default { private final AbstractReloadableStorage> blockStorage = new AbstractReloadableStorage<>(); private final AbstractReloadableStorage materialStorage = new AbstractReloadableStorage<>(); @@ -129,6 +134,11 @@ public SimpleObjectStream> streamRecipes() { .setRemover(r -> remove(r.getKey(), r.getValue())); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(SmashingRecipeCategory.CATEGORY); + } + public static class RecipeBuilder extends AbstractRecipeBuilder { @Property(requirement = "groovyscript.wiki.inspirations.anvil_smashing.input.required") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/DryingBasin.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/DryingBasin.java index 398f62f4d..fb47681be 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/DryingBasin.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/DryingBasin.java @@ -3,6 +3,7 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -15,10 +16,15 @@ import org.cyclops.integrateddynamics.block.BlockDryingBasin; import org.cyclops.integrateddynamics.block.BlockDryingBasinConfig; import org.cyclops.integrateddynamics.block.BlockMechanicalDryingBasin; +import org.cyclops.integrateddynamicscompat.modcompat.jei.dryingbasin.DryingBasinRecipeCategory; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class DryingBasin extends VirtualizedRegistry> { +public class DryingBasin extends VirtualizedRegistry> implements IJEIRemoval.Default { @Override public boolean isEnabled() { @@ -90,6 +96,11 @@ public SimpleObjectStream getCategories() { + return Collections.singletonList(DryingBasinRecipeCategory.NAME); + } + public static class RecipeBuilder extends AbstractRecipeBuilder> { @Property("groovyscript.wiki.integrateddynamics.drying_basin.basic.value") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/MechanicalDryingBasin.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/MechanicalDryingBasin.java index bc52ade5d..51add65fd 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/MechanicalDryingBasin.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/MechanicalDryingBasin.java @@ -1,6 +1,7 @@ package com.cleanroommc.groovyscript.compat.mods.integrateddynamics; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; @@ -10,9 +11,14 @@ import org.cyclops.integrateddynamics.Configs; import org.cyclops.integrateddynamics.block.BlockMechanicalDryingBasin; import org.cyclops.integrateddynamics.block.BlockMechanicalDryingBasinConfig; +import org.cyclops.integrateddynamicscompat.modcompat.jei.mechanicaldryingbasin.MechanicalDryingBasinRecipeCategory; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class MechanicalDryingBasin extends VirtualizedRegistry> { +public class MechanicalDryingBasin extends VirtualizedRegistry> implements IJEIRemoval.Default { @Override public boolean isEnabled() { @@ -80,4 +86,9 @@ public SimpleObjectStream(BlockMechanicalDryingBasin.getInstance().getRecipeRegistry().allRecipes()) .setRemover(this::remove); } + + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(MechanicalDryingBasinRecipeCategory.NAME); + } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/MechanicalSqueezer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/MechanicalSqueezer.java index 8f0d3c2ea..d35226757 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/MechanicalSqueezer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/MechanicalSqueezer.java @@ -1,6 +1,7 @@ package com.cleanroommc.groovyscript.compat.mods.integrateddynamics; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; @@ -11,9 +12,14 @@ import org.cyclops.integrateddynamics.Configs; import org.cyclops.integrateddynamics.block.BlockMechanicalSqueezer; import org.cyclops.integrateddynamics.block.BlockMechanicalSqueezerConfig; +import org.cyclops.integrateddynamicscompat.modcompat.jei.mechanicalsqueezer.MechanicalSqueezerRecipeCategory; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class MechanicalSqueezer extends VirtualizedRegistry> { +public class MechanicalSqueezer extends VirtualizedRegistry> implements IJEIRemoval.Default { @Override public boolean isEnabled() { @@ -70,4 +76,9 @@ public SimpleObjectStream(BlockMechanicalSqueezer.getInstance().getRecipeRegistry().allRecipes()) .setRemover(this::remove); } + + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(MechanicalSqueezerRecipeCategory.NAME); + } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/Squeezer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/Squeezer.java index ef05a91e8..fed2b1427 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/Squeezer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/Squeezer.java @@ -3,6 +3,7 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -16,13 +17,17 @@ import org.cyclops.integrateddynamics.block.BlockMechanicalSqueezer; import org.cyclops.integrateddynamics.block.BlockSqueezer; import org.cyclops.integrateddynamics.block.BlockSqueezerConfig; +import org.cyclops.integrateddynamicscompat.modcompat.jei.squeezer.SqueezerRecipeCategory; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class Squeezer extends VirtualizedRegistry> { +public class Squeezer extends VirtualizedRegistry> implements IJEIRemoval.Default { @Override public boolean isEnabled() { @@ -84,6 +89,11 @@ public SimpleObjectStream getCategories() { + return Collections.singletonList(SqueezerRecipeCategory.NAME); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "fluidOutput", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) public static class RecipeBuilder extends AbstractRecipeBuilder> { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Description.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Description.java index 04b37c619..48b67e1bb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Description.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Description.java @@ -5,6 +5,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.jei.IngredientInfoRecipeAccessor; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import mezz.jei.api.IModRegistry; @@ -14,15 +15,17 @@ import mezz.jei.plugins.jei.info.IngredientInfoRecipeCategory; import net.minecraft.item.ItemStack; import org.apache.commons.lang3.tuple.Pair; +import org.jetbrains.annotations.NotNull; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @RegistryDescription(category = RegistryDescription.Category.ENTRIES) -public class Description extends VirtualizedRegistry, List>> { +public class Description extends VirtualizedRegistry, List>> implements IJEIRemoval.Default { /** * Called by {@link JeiPlugin#register} @@ -95,4 +98,8 @@ public void remove(IIngredient... target) { addBackup(Pair.of(Arrays.asList(target), null)); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(VanillaRecipeCategoryUid.INFORMATION); + } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Aggregator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Aggregator.java index 57b776748..d2f5c47c2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Aggregator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Aggregator.java @@ -4,18 +4,22 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import io.github.phantamanta44.libnine.LibNine; +import io.github.phantamanta44.threng.integration.jei.ThrEngJei; import io.github.phantamanta44.threng.recipe.AggRecipe; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.stream.Collectors; @RegistryDescription -public class Aggregator extends VirtualizedRegistry { +public class Aggregator extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(ore('blockGlass'), item('minecraft:diamond')).output(item('minecraft:diamond') * 4)"), @@ -73,6 +77,11 @@ public void removeAll() { recipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(ThrEngJei.CAT_AGG); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "3")}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Centrifuge.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Centrifuge.java index f119040df..454468c65 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Centrifuge.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Centrifuge.java @@ -4,17 +4,21 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import io.github.phantamanta44.libnine.LibNine; +import io.github.phantamanta44.threng.integration.jei.ThrEngJei; import io.github.phantamanta44.threng.recipe.PurifyRecipe; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class Centrifuge extends VirtualizedRegistry { +public class Centrifuge extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(ore('blockGlass')).output(item('minecraft:diamond'))"), @@ -72,6 +76,11 @@ public void removeAll() { recipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(ThrEngJei.CAT_PURIFY); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Energizer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Energizer.java index 8ff391988..cf165882e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Energizer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Energizer.java @@ -4,17 +4,21 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import io.github.phantamanta44.libnine.LibNine; +import io.github.phantamanta44.threng.integration.jei.ThrEngJei; import io.github.phantamanta44.threng.recipe.EnergizeRecipe; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class Energizer extends VirtualizedRegistry { +public class Energizer extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(ore('blockGlass')).energy(50).output(item('minecraft:diamond'))"), @@ -72,6 +76,11 @@ public void removeAll() { recipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(ThrEngJei.CAT_ENERGIZE); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Etcher.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Etcher.java index 575a440f9..750575a80 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Etcher.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Etcher.java @@ -4,17 +4,21 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import io.github.phantamanta44.libnine.LibNine; +import io.github.phantamanta44.threng.integration.jei.ThrEngJei; import io.github.phantamanta44.threng.recipe.EtchRecipe; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class Etcher extends VirtualizedRegistry { +public class Etcher extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(ore('blockGlass')).top(item('minecraft:diamond')).bottom(item('minecraft:clay')).output(item('minecraft:diamond') * 5)"), @@ -72,6 +76,11 @@ public void removeAll() { recipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(ThrEngJei.CAT_ETCH); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mysticalagriculture/Reprocessor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mysticalagriculture/Reprocessor.java index 480f1c346..c5cc8eafe 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mysticalagriculture/Reprocessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mysticalagriculture/Reprocessor.java @@ -1,5 +1,6 @@ package com.cleanroommc.groovyscript.compat.mods.mysticalagriculture; +import com.blakebr0.mysticalagriculture.compat.jei.reprocessor.ReprocessorCategory; import com.blakebr0.mysticalagriculture.crafting.ReprocessorManager; import com.blakebr0.mysticalagriculture.crafting.ReprocessorRecipe; import com.cleanroommc.groovyscript.api.GroovyBlacklist; @@ -7,14 +8,19 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class Reprocessor extends VirtualizedRegistry { +public class Reprocessor extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay')).output(item('minecraft:diamond') * 3)"), @@ -91,6 +97,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(ReprocessorCategory.UID); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "2")}) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Altar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Altar.java index dc0700581..3549f35d4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Altar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Altar.java @@ -4,19 +4,27 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.recipes.AltarRecipe; +import de.ellpeck.naturesaura.compat.jei.JEINaturesAuraPlugin; import net.minecraft.util.ResourceLocation; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; +import java.util.List; import java.util.Map; @RegistryDescription -public class Altar extends VirtualizedRegistry { +public class Altar extends VirtualizedRegistry implements IJEIRemoval.Default { public Altar() { super(Alias.generateOfClass(Altar.class).andGenerate("Infusion")); @@ -106,6 +114,16 @@ public SimpleObjectStream> streamRecipe return new SimpleObjectStream<>(NaturesAuraAPI.ALTAR_RECIPES.entrySet()).setRemover(x -> remove(x.getValue())); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEINaturesAuraPlugin.ALTAR); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(0), OperationHandler.ItemOperation.defaultItemOperation().exclude(2).input("removeByCatalyst")); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Offering.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Offering.java index aa51c6901..04a7280fa 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Offering.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Offering.java @@ -4,19 +4,24 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.recipes.OfferingRecipe; +import de.ellpeck.naturesaura.compat.jei.JEINaturesAuraPlugin; import net.minecraft.util.ResourceLocation; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.Map; @RegistryDescription(admonition = @Admonition("groovyscript.wiki.naturesaura.offering.note0")) -public class Offering extends VirtualizedRegistry { +public class Offering extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".name('demo').input(item('minecraft:diamond')).catalyst(item('minecraft:clay')).output(item('minecraft:gold_ingot') * 8)"), @@ -102,6 +107,11 @@ public SimpleObjectStream> streamRec return new SimpleObjectStream<>(NaturesAuraAPI.OFFERING_RECIPES.entrySet()).setRemover(x -> remove(x.getValue())); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEINaturesAuraPlugin.OFFERING); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Ritual.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Ritual.java index 15f1b520d..8f424b6ac 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Ritual.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Ritual.java @@ -4,20 +4,25 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.recipes.TreeRitualRecipe; +import de.ellpeck.naturesaura.compat.jei.JEINaturesAuraPlugin; import net.minecraft.item.crafting.Ingredient; import net.minecraft.util.ResourceLocation; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.Map; @RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.naturesaura.ritual.note0", type = Admonition.Type.WARNING)) -public class Ritual extends VirtualizedRegistry { +public class Ritual extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".name('demo').input(item('minecraft:clay')).output(item('minecraft:diamond')).time(100).sapling(item('minecraft:sapling:1'))"), @@ -105,6 +110,11 @@ public SimpleObjectStream> streamR return new SimpleObjectStream<>(NaturesAuraAPI.TREE_RITUAL_RECIPES.entrySet()).setRemover(x -> remove(x.getValue())); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEINaturesAuraPlugin.TREE_RITUAL); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "8")}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Spawning.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Spawning.java index 0ead8f71b..2d3867a26 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Spawning.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Spawning.java @@ -4,20 +4,25 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.recipes.AnimalSpawnerRecipe; +import de.ellpeck.naturesaura.compat.jei.JEINaturesAuraPlugin; import net.minecraft.item.crafting.Ingredient; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.registry.EntityEntry; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.Map; @RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.naturesaura.spawning.note0", type = Admonition.Type.WARNING)) -public class Spawning extends VirtualizedRegistry { +public class Spawning extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".name('demo').input(item('minecraft:clay')).entity(entity('minecraft:bat')).aura(100).time(100)"), @@ -103,6 +108,11 @@ public SimpleObjectStream> stre return new SimpleObjectStream<>(NaturesAuraAPI.ANIMAL_SPAWNER_RECIPES.entrySet()).setRemover(x -> remove(x.getValue())); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEINaturesAuraPlugin.SPAWNER); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "Integer.MAX_VALUE")}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Amadron.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Amadron.java index d687b464a..716291768 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Amadron.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Amadron.java @@ -4,6 +4,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.AbstractReloadableStorage; @@ -12,15 +13,18 @@ import me.desht.pneumaticcraft.common.recipes.AmadronOfferManager; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription( admonition = @Admonition(value = "groovyscript.wiki.pneumaticcraft.amadron.note0", type = Admonition.Type.WARNING) ) -public class Amadron extends VirtualizedRegistry { +public class Amadron extends VirtualizedRegistry implements IJEIRemoval.Default { private final AbstractReloadableStorage periodicStorage = new AbstractReloadableStorage<>(); @@ -136,6 +140,14 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(list).setRemover(this::removeStatic); } + /** + * @see me.desht.pneumaticcraft.common.thirdparty.jei.ModCategoryUid + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("pneumaticcraft.amadron_trade"); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) @Property(property = "fluidInput", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/AssemblyController.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/AssemblyController.java index c9c092926..8e260eb29 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/AssemblyController.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/AssemblyController.java @@ -5,22 +5,22 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import me.desht.pneumaticcraft.common.item.ItemAssemblyProgram; import me.desht.pneumaticcraft.common.recipes.AssemblyRecipe; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; @RegistryDescription -public class AssemblyController extends VirtualizedRegistry { +public class AssemblyController extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay') * 3).output(item('minecraft:gold_ingot') * 6).drill()"), @@ -130,6 +130,19 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + /** + * @see me.desht.pneumaticcraft.common.thirdparty.jei.ModCategoryUid + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("pneumaticcraft.assembly_controller"); + } + + @Override + public @NotNull List getJEIOperations() { + return Default.excludeSlots(1, 2, 3, 4, 5); + } + public enum AssemblyType { DRILL, LASER diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Explosion.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Explosion.java index 4d8d96779..a189da3c5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Explosion.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Explosion.java @@ -4,18 +4,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import me.desht.pneumaticcraft.common.recipes.ExplosionCraftingRecipe; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription( admonition = @Admonition(value = "groovyscript.wiki.pneumaticcraft.explosion.note0", type = Admonition.Type.TIP) ) -public class Explosion extends VirtualizedRegistry { +public class Explosion extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay')).output(item('minecraft:gold_ingot')).lossRate(40)"), @@ -74,6 +79,14 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(ExplosionCraftingRecipe.recipes).setRemover(this::remove); } + /** + * @see me.desht.pneumaticcraft.common.thirdparty.jei.ModCategoryUid + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("pneumaticcraft.compressed_iron_explosion"); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/HeatFrameCooling.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/HeatFrameCooling.java index 3a76f5bfa..030693f1d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/HeatFrameCooling.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/HeatFrameCooling.java @@ -4,14 +4,19 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import me.desht.pneumaticcraft.common.recipes.HeatFrameCoolingRecipe; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class HeatFrameCooling extends VirtualizedRegistry { +public class HeatFrameCooling extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay')).output(item('minecraft:gold_ingot'))"), @@ -70,6 +75,14 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(HeatFrameCoolingRecipe.recipes).setRemover(this::remove); } + /** + * @see me.desht.pneumaticcraft.common.thirdparty.jei.ModCategoryUid + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(".heat_frame_cooling"); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PressureChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PressureChamber.java index 08d177e10..e19a215c8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PressureChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PressureChamber.java @@ -4,6 +4,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -11,12 +12,14 @@ import me.desht.pneumaticcraft.api.recipe.ItemIngredient; import me.desht.pneumaticcraft.common.recipes.PressureChamberRecipe; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class PressureChamber extends VirtualizedRegistry { +public class PressureChamber extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay') * 3).output(item('minecraft:gold_ingot')).pressure(4)"), @@ -75,6 +78,14 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(PressureChamberRecipe.recipes).setRemover(this::remove); } + /** + * @see me.desht.pneumaticcraft.common.thirdparty.jei.ModCategoryUid + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("pneumaticcraft.pressure_chamber"); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "Integer.MAX_VALUE")}) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "Integer.MAX_VALUE")}) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Refinery.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Refinery.java index 5f304f8a6..ec3d41081 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Refinery.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Refinery.java @@ -4,17 +4,21 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import me.desht.pneumaticcraft.common.recipes.RefineryRecipe; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class Refinery extends VirtualizedRegistry { +public class Refinery extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".fluidInput(fluid('water') * 1000).fluidOutput(fluid('lava') * 750, fluid('lava') * 250, fluid('lava') * 100, fluid('lava') * 50)"), @@ -73,6 +77,14 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(RefineryRecipe.recipes).setRemover(this::remove); } + /** + * @see me.desht.pneumaticcraft.common.thirdparty.jei.ModCategoryUid + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("pneumaticcraft.refinery"); + } + @Property(property = "fluidInput", valid = @Comp("1")) @Property(property = "fluidOutput", valid = {@Comp(type = Comp.Type.GTE, value = "2"), @Comp(type = Comp.Type.LTE, value = "4")}) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/ThermopneumaticProcessingPlant.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/ThermopneumaticProcessingPlant.java index e9b3299d3..a95dfd7f7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/ThermopneumaticProcessingPlant.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/ThermopneumaticProcessingPlant.java @@ -4,16 +4,21 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import me.desht.pneumaticcraft.api.recipe.IThermopneumaticProcessingPlantRecipe; import me.desht.pneumaticcraft.common.recipes.BasicThermopneumaticProcessingPlantRecipe; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class ThermopneumaticProcessingPlant extends VirtualizedRegistry { +public class ThermopneumaticProcessingPlant extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay') * 3).fluidInput(fluid('water') * 100).fluidOutput(fluid('kerosene') * 100).pressure(4).requiredTemperature(323)"), @@ -72,6 +77,14 @@ public SimpleObjectStream streamRecipes() return new SimpleObjectStream<>(BasicThermopneumaticProcessingPlantRecipe.recipes).setRemover(this::remove); } + /** + * @see me.desht.pneumaticcraft.common.thirdparty.jei.ModCategoryUid + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("pneumaticcraft.thermo_pneumatic"); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) @Property(property = "fluidInput", valid = @Comp("1")) @Property(property = "fluidOutput", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/ClayKiln.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/ClayKiln.java index 1b8607e70..69579324f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/ClayKiln.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/ClayKiln.java @@ -4,16 +4,24 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.primal_tech.ClayKilnRecipesAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import primal_tech.jei.clay_kiln.KilnCategory; import primal_tech.recipes.ClayKilnRecipes; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + @RegistryDescription -public class ClayKiln extends VirtualizedRegistry { +public class ClayKiln extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:diamond')).output(item('minecraft:clay')).cookTime(50)"), @@ -86,6 +94,16 @@ public void removeAll() { ClayKilnRecipesAccessor.getRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(KilnCategory.UID); + } + + @Override + public @NotNull List getJEIOperations() { + return Default.excludeSlots(2); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/StoneAnvil.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/StoneAnvil.java index 591a0b219..4362db732 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/StoneAnvil.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/StoneAnvil.java @@ -4,16 +4,24 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.primal_tech.StoneAnvilRecipesAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import primal_tech.jei.stone_anvil.StoneAnvilCategory; import primal_tech.recipes.StoneAnvilRecipes; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + @RegistryDescription -public class StoneAnvil extends VirtualizedRegistry { +public class StoneAnvil extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:diamond')).output(item('minecraft:clay'))"), @@ -85,6 +93,16 @@ public void removeAll() { StoneAnvilRecipesAccessor.getRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(StoneAnvilCategory.UID); + } + + @Override + public @NotNull List getJEIOperations() { + return Default.excludeSlots(2); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/WaterSaw.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/WaterSaw.java index 136d4dd8f..1f6152c39 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/WaterSaw.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/WaterSaw.java @@ -4,16 +4,24 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.primal_tech.WaterSawRecipesAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import primal_tech.jei.water_saw.WaterSawCategory; import primal_tech.recipes.WaterSawRecipes; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + @RegistryDescription -public class WaterSaw extends VirtualizedRegistry { +public class WaterSaw extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:diamond')).output(item('minecraft:clay')).choppingTime(50)"), @@ -86,6 +94,16 @@ public void removeAll() { WaterSawRecipesAccessor.getRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(WaterSawCategory.UID); + } + + @Override + public @NotNull List getJEIOperations() { + return Default.excludeSlots(2); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/WoodenBasin.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/WoodenBasin.java index f782b6414..3893feb2a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/WoodenBasin.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/WoodenBasin.java @@ -4,6 +4,8 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.primal_tech.WoodenBasinRecipesAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; @@ -12,10 +14,13 @@ import com.google.common.collect.Lists; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import primal_tech.jei.wooden_basin.WoodenBasinCategory; import primal_tech.recipes.WoodenBasinRecipes; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -23,7 +28,7 @@ @RegistryDescription( admonition = @Admonition(type = Admonition.Type.WARNING, value = "groovyscript.wiki.primal_tech.wooden_basin.note0") ) -public class WoodenBasin extends VirtualizedRegistry { +public class WoodenBasin extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:diamond')).fluidInput(fluid('lava')).output(item('minecraft:clay'))"), @@ -101,6 +106,16 @@ public void removeAll() { WoodenBasinRecipesAccessor.getRecipes().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(WoodenBasinCategory.UID); + } + + @Override + public @NotNull List getJEIOperations() { + return Default.excludeSlots(6); + } + @Property(property = "input", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "4", type = Comp.Type.LTE)}) @Property(property = "fluidInput", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/AtomicReshaper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/AtomicReshaper.java index 488d04065..15afcff17 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/AtomicReshaper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/AtomicReshaper.java @@ -4,21 +4,25 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import lykrast.prodigytech.common.compat.jei.AtomicReshaperCategory; import lykrast.prodigytech.common.recipe.AtomicReshaperManager; import lykrast.prodigytech.common.util.Config; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class AtomicReshaper extends VirtualizedRegistry { +public class AtomicReshaper extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:gold_ingot')).output(item('minecraft:emerald_block')).primordium(10).time(50)"), @@ -91,6 +95,11 @@ public SimpleObjectStream streamReci .setRemover(this::backupAndRemove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(AtomicReshaperCategory.UID); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp(value = "1", type = Comp.Type.GTE)) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnace.java index 3d866ffe8..24baf991d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnace.java @@ -4,15 +4,21 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import lykrast.prodigytech.common.compat.jei.ExplosionFurnaceCategory; import lykrast.prodigytech.common.recipe.ExplosionFurnaceManager; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class ExplosionFurnace extends VirtualizedRegistry { +public class ExplosionFurnace extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(ore('ingotGold'), item('minecraft:diamond')).craftPerReagent(8).power(160).output(item('minecraft:emerald_block'))"), @@ -66,6 +72,11 @@ public SimpleObjectStream stream .setRemover(this::backupAndRemove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(ExplosionFurnaceCategory.UID); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "2")}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnaceAdditives.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnaceAdditives.java index dd608329a..e0870f1b9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnaceAdditives.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnaceAdditives.java @@ -4,15 +4,22 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.ItemsIngredient; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.github.bsideup.jabel.Desugar; +import com.google.common.collect.ImmutableList; +import lykrast.prodigytech.common.compat.jei.ExplosionFurnaceDampenerCategory; +import lykrast.prodigytech.common.compat.jei.ExplosionFurnaceExplosiveCategory; import lykrast.prodigytech.common.recipe.ExplosionFurnaceManager; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; @RegistryDescription(category = RegistryDescription.Category.ENTRIES) -public class ExplosionFurnaceAdditives extends VirtualizedRegistry { +public class ExplosionFurnaceAdditives extends VirtualizedRegistry implements IJEIRemoval.Default { @Override public void onReload() { @@ -80,6 +87,11 @@ public void removeAllDampeners() { ExplosionFurnaceManager.removeAllDampeners(); } + @Override + public @NotNull Collection getCategories() { + return ImmutableList.of(ExplosionFurnaceDampenerCategory.UID, ExplosionFurnaceExplosiveCategory.UID); + } + public interface EFAdditiveRecipe { void register(); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/PrimordialisReactor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/PrimordialisReactor.java index 923f57ea0..5ec3279df 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/PrimordialisReactor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/PrimordialisReactor.java @@ -4,19 +4,24 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.ItemsIngredient; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import lykrast.prodigytech.common.compat.jei.PrimordialisReactorCategory; import lykrast.prodigytech.common.recipe.PrimordialisReactorManager; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @RegistryDescription(category = RegistryDescription.Category.ENTRIES) -public class PrimordialisReactor extends VirtualizedRegistry { +public class PrimordialisReactor extends VirtualizedRegistry implements IJEIRemoval.Default { @Override public void onReload() { @@ -74,4 +79,9 @@ public SimpleObjectStream streamRecipes() { List items = Stream.concat(normalRecipes, oreDictRecipes).collect(Collectors.toList()); return new SimpleObjectStream<>(items).setRemover(this::remove); } + + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(PrimordialisReactorCategory.UID); + } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/Solderer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/Solderer.java index 5610f3a1c..01884e7ca 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/Solderer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/Solderer.java @@ -4,17 +4,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import lykrast.prodigytech.common.compat.jei.SoldererCategory; import lykrast.prodigytech.common.recipe.SoldererManager; import lykrast.prodigytech.common.util.Config; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class Solderer extends VirtualizedRegistry { +public class Solderer extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".pattern(item('minecraft:clay')).input(item('minecraft:gold_ingot')).output(item('minecraft:diamond')).gold(5).time(100)"), @@ -96,6 +102,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(SoldererCategory.UID); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/Transmutation.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/Transmutation.java index ecc968631..7e41c5325 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/Transmutation.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/Transmutation.java @@ -4,17 +4,23 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import moze_intel.projecte.integration.jei.world_transmute.WorldTransmuteRecipeCategory; import moze_intel.projecte.utils.WorldTransmutations; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import org.apache.commons.lang3.tuple.ImmutablePair; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class Transmutation extends VirtualizedRegistry { +public class Transmutation extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(blockstate('minecraft:end_stone')).output(blockstate('minecraft:diamond_block'), blockstate('minecraft:gold_block'))"), @@ -78,6 +84,11 @@ public void removeAll() { WorldTransmutations.getWorldTransmutations().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(WorldTransmuteRecipeCategory.UID); + } + public static class RecipeBuilder extends AbstractRecipeBuilder { @Property(valid = @Comp(value = "null", type = Comp.Type.NOT), ignoresInheritedMethods = true) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Anvil.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Anvil.java index ee7973268..8a48263e4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Anvil.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Anvil.java @@ -3,19 +3,26 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.EnumHelper; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.codetaylor.mc.pyrotech.modules.tech.basic.ModuleTechBasic; +import com.codetaylor.mc.pyrotech.modules.tech.basic.plugin.jei.category.JEIRecipeCategoryAnvilGranite; +import com.codetaylor.mc.pyrotech.modules.tech.basic.plugin.jei.category.JEIRecipeCategoryAnvilIronclad; +import com.codetaylor.mc.pyrotech.modules.tech.basic.plugin.jei.category.JEIRecipeCategoryAnvilObsidian; import com.codetaylor.mc.pyrotech.modules.tech.basic.recipe.AnvilRecipe; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; +import java.util.Collection; @RegistryDescription -public class Anvil extends ForgeRegistryWrapper { +public class Anvil extends ForgeRegistryWrapper implements IJEIRemoval.Default { public Anvil() { super(ModuleTechBasic.Registries.ANVIL_RECIPE); @@ -67,6 +74,11 @@ public void removeByOutput(ItemStack output) { } } + @Override + public @NotNull Collection getCategories() { + return ImmutableList.of(JEIRecipeCategoryAnvilGranite.UID, JEIRecipeCategoryAnvilIronclad.UID, JEIRecipeCategoryAnvilObsidian.UID); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) @Property(property = "name") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Barrel.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Barrel.java index 8f8a65cd1..413b66a81 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Barrel.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Barrel.java @@ -3,17 +3,23 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.codetaylor.mc.pyrotech.modules.tech.basic.ModuleTechBasic; +import com.codetaylor.mc.pyrotech.modules.tech.basic.plugin.jei.category.JEIRecipeCategoryBarrel; import com.codetaylor.mc.pyrotech.modules.tech.basic.recipe.BarrelRecipe; import net.minecraft.item.crafting.Ingredient; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class Barrel extends ForgeRegistryWrapper { +public class Barrel extends ForgeRegistryWrapper implements IJEIRemoval.Default { public Barrel() { super(ModuleTechBasic.Registries.BARREL_RECIPE); @@ -52,6 +58,11 @@ public void removeByOutput(FluidStack output) { } } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRecipeCategoryBarrel.UID); + } + @Property(property = "input", valid = @Comp(type = Comp.Type.EQ, value = "4")) @Property(property = "fluidInput", valid = @Comp("1")) @Property(property = "fluidOutput", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Campfire.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Campfire.java index 450fc7cb6..e4b78049f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Campfire.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Campfire.java @@ -3,16 +3,22 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.codetaylor.mc.pyrotech.modules.tech.basic.ModuleTechBasic; +import com.codetaylor.mc.pyrotech.modules.tech.basic.plugin.jei.category.JEIRecipeCategoryCampfire; import com.codetaylor.mc.pyrotech.modules.tech.basic.recipe.CampfireRecipe; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class Campfire extends ForgeRegistryWrapper { +public class Campfire extends ForgeRegistryWrapper implements IJEIRemoval.Default { public Campfire() { super(ModuleTechBasic.Registries.CAMPFIRE_RECIPE); @@ -63,6 +69,11 @@ public void removeByOutput(IIngredient output) { } } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRecipeCategoryCampfire.UID); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) @Property(property = "name") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/ChoppingBlock.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/ChoppingBlock.java index 4cedd4bdd..ee67e5512 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/ChoppingBlock.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/ChoppingBlock.java @@ -3,18 +3,24 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.codetaylor.mc.pyrotech.modules.tech.basic.ModuleTechBasic; +import com.codetaylor.mc.pyrotech.modules.tech.basic.plugin.jei.category.JEIRecipeCategoryChoppingBlock; import com.codetaylor.mc.pyrotech.modules.tech.basic.recipe.ChoppingBlockRecipe; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class ChoppingBlock extends ForgeRegistryWrapper { +public class ChoppingBlock extends ForgeRegistryWrapper implements IJEIRemoval.Default { public ChoppingBlock() { super(ModuleTechBasic.Registries.CHOPPING_BLOCK_RECIPE); @@ -56,6 +62,11 @@ public void removeByOutput(IIngredient output) { } } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRecipeCategoryChoppingBlock.UID); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) @Property(property = "name") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CompactingBin.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CompactingBin.java index dfc96b042..fa1b8460c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CompactingBin.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CompactingBin.java @@ -3,16 +3,22 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.codetaylor.mc.pyrotech.modules.tech.basic.ModuleTechBasic; +import com.codetaylor.mc.pyrotech.modules.tech.basic.plugin.jei.category.JEIRecipeCategoryCompactingBin; import com.codetaylor.mc.pyrotech.modules.tech.basic.recipe.CompactingBinRecipe; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class CompactingBin extends ForgeRegistryWrapper { +public class CompactingBin extends ForgeRegistryWrapper implements IJEIRemoval.Default { public CompactingBin() { @@ -64,6 +70,11 @@ public void removeByOutput(IIngredient output) { } } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRecipeCategoryCompactingBin.UID); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) @Property(property = "name") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CompostBin.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CompostBin.java index 479cc181b..3673805c9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CompostBin.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CompostBin.java @@ -3,17 +3,23 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.codetaylor.mc.pyrotech.modules.tech.basic.ModuleTechBasic; +import com.codetaylor.mc.pyrotech.modules.tech.basic.plugin.jei.category.JEIRecipeCategoryCompostBin; import com.codetaylor.mc.pyrotech.modules.tech.basic.recipe.CompostBinRecipe; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class CompostBin extends ForgeRegistryWrapper { +public class CompostBin extends ForgeRegistryWrapper implements IJEIRemoval.Default { public CompostBin() { @@ -65,6 +71,11 @@ public void removeByOutput(IIngredient output) { } } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRecipeCategoryCompostBin.UID); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) @Property(property = "name") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CrudeDryingRack.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CrudeDryingRack.java index 207a5b06b..9eca84dea 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CrudeDryingRack.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CrudeDryingRack.java @@ -3,16 +3,22 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.codetaylor.mc.pyrotech.modules.tech.basic.ModuleTechBasic; +import com.codetaylor.mc.pyrotech.modules.tech.basic.plugin.jei.category.JEIRecipeCategoryCrudeDryingRack; import com.codetaylor.mc.pyrotech.modules.tech.basic.recipe.CrudeDryingRackRecipe; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class CrudeDryingRack extends ForgeRegistryWrapper { +public class CrudeDryingRack extends ForgeRegistryWrapper implements IJEIRemoval.Default { public CrudeDryingRack() { @@ -64,6 +70,11 @@ public void removeByOutput(IIngredient output) { } } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRecipeCategoryCrudeDryingRack.UID); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) @Property(property = "name") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/DryingRack.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/DryingRack.java index a765613cd..46f3d0bdd 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/DryingRack.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/DryingRack.java @@ -3,16 +3,22 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.codetaylor.mc.pyrotech.modules.tech.basic.ModuleTechBasic; +import com.codetaylor.mc.pyrotech.modules.tech.basic.plugin.jei.category.JEIRecipeCategoryDryingRack; import com.codetaylor.mc.pyrotech.modules.tech.basic.recipe.DryingRackRecipe; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class DryingRack extends ForgeRegistryWrapper { +public class DryingRack extends ForgeRegistryWrapper implements IJEIRemoval.Default { public DryingRack() { @@ -64,6 +70,11 @@ public void removeByOutput(IIngredient output) { } } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRecipeCategoryDryingRack.UID); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) @Property(property = "name") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Kiln.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Kiln.java index 6fe0e7586..b7b2009d3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Kiln.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Kiln.java @@ -3,17 +3,23 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.ingredient.ItemStackList; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.codetaylor.mc.pyrotech.modules.tech.basic.ModuleTechBasic; +import com.codetaylor.mc.pyrotech.modules.tech.basic.plugin.jei.category.JEIRecipeCategoryKilnPit; import com.codetaylor.mc.pyrotech.modules.tech.basic.recipe.KilnPitRecipe; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class Kiln extends ForgeRegistryWrapper { +public class Kiln extends ForgeRegistryWrapper implements IJEIRemoval.Default { public Kiln() { super(ModuleTechBasic.Registries.KILN_PIT_RECIPE); @@ -66,6 +72,11 @@ public void removeByOutput(IIngredient output) { } } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRecipeCategoryKilnPit.UID); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) @Property(property = "name") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/SoakingPot.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/SoakingPot.java index 2624a6eb0..3518de151 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/SoakingPot.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/SoakingPot.java @@ -3,17 +3,26 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.codetaylor.mc.pyrotech.modules.tech.basic.ModuleTechBasic; +import com.codetaylor.mc.pyrotech.modules.tech.basic.plugin.jei.category.JEIRecipeCategorySoakingPot; import com.codetaylor.mc.pyrotech.modules.tech.basic.recipe.SoakingPotRecipe; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + @RegistryDescription -public class SoakingPot extends ForgeRegistryWrapper { +public class SoakingPot extends ForgeRegistryWrapper implements IJEIRemoval.Default { public SoakingPot() { super(ModuleTechBasic.Registries.SOAKING_POT_RECIPE); @@ -65,6 +74,16 @@ public void removeByOutput(IIngredient output) { } } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRecipeCategorySoakingPot.UID); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(1), OperationHandler.FluidOperation.defaultFluidOperation()); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "fluidInput", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/TanningRack.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/TanningRack.java index 28f91f05a..3e94ed0a0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/TanningRack.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/TanningRack.java @@ -3,16 +3,22 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.codetaylor.mc.pyrotech.modules.tech.basic.ModuleTechBasic; +import com.codetaylor.mc.pyrotech.modules.tech.basic.plugin.jei.category.JEIRecipeCategoryTanningRack; import com.codetaylor.mc.pyrotech.modules.tech.basic.recipe.TanningRackRecipe; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class TanningRack extends ForgeRegistryWrapper { +public class TanningRack extends ForgeRegistryWrapper implements IJEIRemoval.Default { public TanningRack() { @@ -65,6 +71,11 @@ public void removeByOutput(IIngredient output) { } } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRecipeCategoryTanningRack.UID); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) @Property(property = "name") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/BarkCarving.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/BarkCarving.java index 16efc730d..5f3c47799 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/BarkCarving.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/BarkCarving.java @@ -3,23 +3,28 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import epicsquid.roots.init.ModRecipes; +import epicsquid.roots.integration.jei.JEIRootsPlugin; import epicsquid.roots.recipe.BarkRecipe; import net.minecraft.block.BlockPlanks; import net.minecraft.block.state.IBlockState; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.Map; @RegistryDescription -public class BarkCarving extends VirtualizedRegistry { +public class BarkCarving extends VirtualizedRegistry implements IJEIRemoval.Default { public BarkCarving() { super(Alias.generateOfClassAnd(BarkCarving.class, "Bark")); @@ -124,6 +129,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(r -> this.removeByName(r.getName())); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRootsPlugin.BARK_CARVING); + } + @Property(property = "name") @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Chrysopoeia.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Chrysopoeia.java index f165d592f..4290b79f7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Chrysopoeia.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Chrysopoeia.java @@ -3,21 +3,26 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.roots.ModRecipesAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import epicsquid.roots.integration.jei.JEIRootsPlugin; import epicsquid.roots.recipe.ChrysopoeiaRecipe; import epicsquid.roots.util.IngredientWithStack; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.Map; @RegistryDescription -public class Chrysopoeia extends VirtualizedRegistry { +public class Chrysopoeia extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".name('clay_transmute').input(item('minecraft:gold_ingot')).output(item('minecraft:clay'))"), @@ -101,6 +106,11 @@ public SimpleObjectStream> stream .setRemover(r -> this.removeByName(r.getKey())); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRootsPlugin.CHRYSOPOEIA); + } + @Property(property = "name") @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/FeyCrafter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/FeyCrafter.java index 2d4a75030..5c919eea5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/FeyCrafter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/FeyCrafter.java @@ -3,22 +3,27 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import epicsquid.roots.init.ModRecipes; +import epicsquid.roots.integration.jei.JEIRootsPlugin; import epicsquid.roots.recipe.FeyCraftingRecipe; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import org.apache.commons.lang3.tuple.Pair; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.Map; @RegistryDescription( admonition = @Admonition(value = "groovyscript.wiki.roots.fey_crafter.note", type = Admonition.Type.DANGER, format = Admonition.Format.STANDARD) ) -public class FeyCrafter extends VirtualizedRegistry> { +public class FeyCrafter extends VirtualizedRegistry> implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".name('clay_craft').input(item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone')) // Must be exactly 5.output(item('minecraft:clay')).xp(100)")) public static RecipeBuilder recipeBuilder() { @@ -87,6 +92,11 @@ public SimpleObjectStream> stream .setRemover(r -> this.removeByName(r.getKey())); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRootsPlugin.FEY_CRAFTING); + } + @Property(property = "name") @Property(property = "input", valid = @Comp("5")) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Mortar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Mortar.java index ec7a48f44..e20b1e50b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Mortar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Mortar.java @@ -4,23 +4,28 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.roots.ModRecipesAccessor; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import epicsquid.roots.init.ModRecipes; +import epicsquid.roots.integration.jei.JEIRootsPlugin; import epicsquid.roots.recipe.MortarRecipe; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; import net.minecraft.util.ResourceLocation; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class Mortar extends VirtualizedRegistry { +public class Mortar extends VirtualizedRegistry implements IJEIRemoval.Default { public Mortar() { super(Alias.generateOfClassAnd(Mortar.class, "MortarAndPestle")); @@ -100,6 +105,11 @@ public SimpleObjectStream streamRecipes() { .setRemover(r -> this.removeByName(r.getRegistryName())); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRootsPlugin.MORTAR_AND_PESTLE); + } + @Property(property = "name") @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "5")}) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Moss.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Moss.java index acafcc08b..0ecefa869 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Moss.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Moss.java @@ -3,21 +3,28 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.roots.MossConfigAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import epicsquid.roots.config.MossConfig; +import epicsquid.roots.integration.jei.JEIRootsPlugin; import net.minecraft.block.Block; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import org.apache.commons.lang3.tuple.Pair; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; +import java.util.List; import java.util.Map; @RegistryDescription -public class Moss extends VirtualizedRegistry> { +public class Moss extends VirtualizedRegistry> implements IJEIRemoval.Default { public Moss() { super(); @@ -98,6 +105,16 @@ public SimpleObjectStream> streamRecipes() { return new SimpleObjectStream<>(MossConfigAccessor.getMossyCobblestones().entrySet()).setRemover(r -> this.remove(r.getKey())); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRootsPlugin.TERRA_MOSS); + } + + @Override + public @NotNull List getJEIOperations() { + return Default.excludeSlots(2); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder> { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Pyre.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Pyre.java index 75ad0a9ac..5ca376179 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Pyre.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Pyre.java @@ -3,19 +3,24 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import epicsquid.roots.init.ModRecipes; +import epicsquid.roots.integration.jei.JEIRootsPlugin; import epicsquid.roots.recipe.PyreCraftingRecipe; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.Map; @RegistryDescription -public class Pyre extends VirtualizedRegistry { +public class Pyre extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".name('clay_from_fire').input(item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone')).output(item('minecraft:clay')).xp(5).time(1)"), @@ -87,6 +92,11 @@ public SimpleObjectStream> strea .setRemover(r -> this.removeByName(r.getKey())); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRootsPlugin.RITUAL_CRAFTING); + } + @Property(property = "name") @Property(property = "input", valid = @Comp("5")) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Rituals.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Rituals.java index fa95585eb..aa21a8d99 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Rituals.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Rituals.java @@ -3,22 +3,26 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.roots.RitualBaseAccessor; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import epicsquid.roots.integration.jei.JEIRootsPlugin; import epicsquid.roots.properties.Property; import epicsquid.roots.properties.PropertyTable; import epicsquid.roots.ritual.RitualBase; import epicsquid.roots.ritual.RitualRegistry; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; +import java.util.Collections; @RegistryDescription( reloadability = RegistryDescription.Reloadability.FLAWED, isFullyDocumented = false // TODO fully document Roots Rituals ) -public class Rituals extends VirtualizedRegistry { +public class Rituals extends VirtualizedRegistry implements IJEIRemoval.Default { public static RitualWrapper ritual(String ritual) { return ritual(RitualRegistry.getRitual(ritual)); @@ -45,6 +49,11 @@ public void disableAll() { }); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRootsPlugin.RITUAL); + } + public static class RitualWrapper { private final RitualBase ritual; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/RunicShearBlock.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/RunicShearBlock.java index d391c9501..609363293 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/RunicShearBlock.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/RunicShearBlock.java @@ -3,22 +3,27 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import epicsquid.roots.init.ModRecipes; +import epicsquid.roots.integration.jei.JEIRootsPlugin; import epicsquid.roots.recipe.RunicShearRecipe; import epicsquid.roots.recipe.transmutation.BlockStatePredicate; import epicsquid.roots.recipe.transmutation.StatePredicate; import net.minecraft.block.state.IBlockState; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.Map; @RegistryDescription -public class RunicShearBlock extends VirtualizedRegistry { +public class RunicShearBlock extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".name('clay_from_runic_diamond').state(blockstate('minecraft:diamond_block')).replacementState(blockstate('minecraft:air')).output(item('minecraft:clay') * 64).displayItem(item('minecraft:diamond') * 9)"), @@ -95,6 +100,11 @@ public SimpleObjectStream> streamR .setRemover(r -> this.removeByName(r.getKey())); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRootsPlugin.RUNIC_SHEARS); + } + @Property(property = "name") @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/RunicShearEntity.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/RunicShearEntity.java index f4f8153e9..a34ec3d7c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/RunicShearEntity.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/RunicShearEntity.java @@ -3,24 +3,27 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import epicsquid.roots.init.ModRecipes; +import epicsquid.roots.integration.jei.JEIRootsPlugin; import epicsquid.roots.recipe.RunicShearConditionalEntityRecipe; import epicsquid.roots.recipe.RunicShearEntityRecipe; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.registry.EntityEntry; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.HashSet; -import java.util.Map; +import java.util.*; import java.util.function.Function; @RegistryDescription -public class RunicShearEntity extends VirtualizedRegistry { +public class RunicShearEntity extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".name('clay_from_wither_skeletons').entity(entity('minecraft:wither_skeleton')).output(item('minecraft:clay')).cooldown(1000)"), @@ -103,6 +106,16 @@ public SimpleObjectStream> s .setRemover(r -> this.removeByName(r.getKey())); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRootsPlugin.RUNIC_SHEARS_ENTITY); + } + + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().output(0)); + } + @Property(property = "name") @Property(property = "output", valid = @Comp(type = Comp.Type.GTE, value = "1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/SummonCreature.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/SummonCreature.java index d85e34fb0..2ee5c7855 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/SummonCreature.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/SummonCreature.java @@ -4,24 +4,29 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.roots.ModRecipesAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import epicsquid.roots.init.ModRecipes; +import epicsquid.roots.integration.jei.JEIRootsPlugin; import epicsquid.roots.recipe.SummonCreatureRecipe; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.crafting.Ingredient; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.registry.EntityEntry; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @RegistryDescription -public class SummonCreature extends VirtualizedRegistry { +public class SummonCreature extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".name('wither_skeleton_from_clay').input(item('minecraft:clay'), item('minecraft:clay'), item('minecraft:clay'), item('minecraft:clay'), item('minecraft:clay')).entity(entity('minecraft:wither_skeleton'))")) public static RecipeBuilder recipeBuilder() { @@ -89,6 +94,11 @@ public SimpleObjectStream> str .setRemover(r -> this.removeByName(r.getKey())); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRootsPlugin.SUMMON_CREATURES); + } + @Property(property = "name") @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "10")}) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Transmutation.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Transmutation.java index b9411c2be..301e4d3fa 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Transmutation.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Transmutation.java @@ -3,11 +3,13 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.roots.ModRecipesAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import epicsquid.roots.init.ModRecipes; +import epicsquid.roots.integration.jei.JEIRootsPlugin; import epicsquid.roots.recipe.TransmutationRecipe; import epicsquid.roots.recipe.transmutation.BlockStatePredicate; import epicsquid.roots.recipe.transmutation.StatePredicate; @@ -16,14 +18,16 @@ import net.minecraft.block.state.IBlockState; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; +import java.util.Collections; import java.util.Map; import java.util.Optional; @RegistryDescription -public class Transmutation extends VirtualizedRegistry { +public class Transmutation extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".name('clay_duping').start(blockstate('minecraft:clay')).output(item('minecraft:clay_ball') * 30).condition(mods.roots.predicates.stateBuilder().blockstate(blockstate('minecraft:gold_block')).below().register())"), @@ -120,6 +124,11 @@ public SimpleObjectStream> stre .setRemover(r -> this.removeByName(r.getKey())); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIRootsPlugin.TRANSMUTATION); + } + @Property(property = "name") @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/Alchemy.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/Alchemy.java index b1018f668..75671a5f9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/Alchemy.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/Alchemy.java @@ -4,14 +4,17 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import net.minecraft.potion.PotionEffect; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import rustic.common.crafting.ICondenserRecipe; import rustic.common.crafting.Recipes; @@ -21,7 +24,7 @@ import java.util.Collection; @RegistryDescription -public class Alchemy extends VirtualizedRegistry { +public class Alchemy extends VirtualizedRegistry implements IJEIRemoval.Default { public Alchemy() { super(Alias.generateOfClass(Alchemy.class).andGenerate("Condenser")); @@ -86,6 +89,14 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(Recipes.condenserRecipes).setRemover(this::remove); } + /** + * @see rustic.compat.jei.RusticJEIPlugin + */ + @Override + public @NotNull Collection getCategories() { + return ImmutableList.of("rustic.alchemy_simple", "rustic.alchemy_advanced"); + } + @Property(property = "input", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "2 or 3", type = Comp.Type.LTE)}) @Property(property = "fluidInput", defaultValue = "fluid('water') * 125", valid = {@Comp(value = "0", type = Comp.Type.GTE), @Comp(value = "1", type = Comp.Type.LTE)}) @Property(property = "output", valid = {@Comp(value = "0", type = Comp.Type.GTE), @Comp(value = "1", type = Comp.Type.LTE)}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/BrewingBarrel.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/BrewingBarrel.java index 1b792a4df..bc72eeece 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/BrewingBarrel.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/BrewingBarrel.java @@ -4,16 +4,21 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import rustic.common.crafting.BrewingBarrelRecipe; import rustic.common.crafting.IBrewingBarrelRecipe; import rustic.common.crafting.Recipes; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class BrewingBarrel extends VirtualizedRegistry { +public class BrewingBarrel extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".fluidInput(fluid('ironberryjuice')).fluidOutput(fluid('lava'))"), @@ -72,6 +77,14 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(Recipes.brewingRecipes).setRemover(this::remove); } + /** + * @see rustic.compat.jei.RusticJEIPlugin + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("rustic.brewing"); + } + @Property(property = "fluidInput", valid = @Comp("1")) @Property(property = "fluidOutput", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/CrushingTub.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/CrushingTub.java index a0e899536..76566cfd5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/CrushingTub.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/CrushingTub.java @@ -4,17 +4,22 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import rustic.common.crafting.CrushingTubRecipe; import rustic.common.crafting.ICrushingTubRecipe; import rustic.common.crafting.Recipes; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class CrushingTub extends VirtualizedRegistry { +public class CrushingTub extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:stone')).fluidOutput(fluid('lava') * 50)"), @@ -73,6 +78,14 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(Recipes.crushingTubRecipes).setRemover(this::remove); } + /** + * @see rustic.compat.jei.RusticJEIPlugin + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("rustic.crushing_tub"); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "fluidOutput", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/EvaporatingBasin.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/EvaporatingBasin.java index 034cbbcff..856f77508 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/EvaporatingBasin.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/EvaporatingBasin.java @@ -4,16 +4,21 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import rustic.common.crafting.IEvaporatingBasinRecipe; import rustic.common.crafting.Recipes; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class EvaporatingBasin extends VirtualizedRegistry { +public class EvaporatingBasin extends VirtualizedRegistry implements IJEIRemoval.Default { public EvaporatingBasin() { super(Alias.generateOfClass(EvaporatingBasin.class).andGenerate("DryingBasin")); @@ -82,6 +87,14 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(Recipes.evaporatingRecipes).setRemover(this::remove); } + /** + * @see rustic.compat.jei.RusticJEIPlugin + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("rustic.evaporating"); + } + @Property(property = "output", valid = @Comp("1")) @Property(property = "fluidInput", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tcomplement/HighOven.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tcomplement/HighOven.java index 6e2133ec0..10e27f6aa 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tcomplement/HighOven.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tcomplement/HighOven.java @@ -3,6 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.MeltingRecipeBuilder; import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.MeltingRecipeRegistry; import com.cleanroommc.groovyscript.core.mixin.tcomplement.TCompRegistryAccessor; @@ -10,18 +12,27 @@ import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import knightminer.tcomplement.library.steelworks.*; +import knightminer.tcomplement.plugin.jei.highoven.fuel.HighOvenFuelCategory; +import knightminer.tcomplement.plugin.jei.highoven.heat.HighOvenHeatCategory; +import knightminer.tcomplement.plugin.jei.highoven.melting.HighOvenMeltingCategory; +import knightminer.tcomplement.plugin.jei.highoven.mix.HighOvenMixCategory; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import slimeknights.mantle.util.RecipeMatch; import slimeknights.tconstruct.library.smeltery.MeltingRecipe; +import java.util.Collection; +import java.util.Collections; +import java.util.List; import java.util.Map; -public class HighOven extends MeltingRecipeRegistry { +public class HighOven extends MeltingRecipeRegistry implements IJEIRemoval.Default { public final Fuel fuel = new Fuel(); public final Heating heating = new Heating(); @@ -118,7 +129,17 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(TCompRegistryAccessor.getHighOvenOverrides()).setRemover(this::remove); } - public static class Mixing extends VirtualizedRegistry { + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(HighOvenMeltingCategory.CATEGORY); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(1), OperationHandler.FluidOperation.defaultFluidOperation()); + } + + public static class Mixing extends VirtualizedRegistry implements IJEIRemoval.Default { public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); @@ -221,6 +242,16 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(TCompRegistryAccessor.getMixRegistry()).setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(HighOvenMixCategory.CATEGORY); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(3, 4), OperationHandler.FluidOperation.defaultFluidOperation()); + } + public class RecipeBuilder extends AbstractRecipeBuilder { private int temp = 300; @@ -291,7 +322,7 @@ public void validate(GroovyLog.Msg msg) { } } - public static class Heating extends VirtualizedRegistry { + public static class Heating extends VirtualizedRegistry implements IJEIRemoval.Default { public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); @@ -373,6 +404,11 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(TCompRegistryAccessor.getHeatRegistry()).setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(HighOvenHeatCategory.CATEGORY); + } + public class RecipeBuilder extends AbstractRecipeBuilder { private int temp = 300; @@ -408,7 +444,7 @@ public void validate(GroovyLog.Msg msg) { } } - public static class Fuel extends VirtualizedRegistry { + public static class Fuel extends VirtualizedRegistry implements IJEIRemoval.Default { public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); @@ -463,6 +499,11 @@ public SimpleObjectStream streamFuels() { return new SimpleObjectStream<>(TCompRegistryAccessor.getHighOvenFuels()).setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(HighOvenFuelCategory.CATEGORY); + } + public class RecipeBuilder extends AbstractRecipeBuilder { private int time = 1; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tcomplement/Melter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tcomplement/Melter.java index b60b96e9e..b35f6dc60 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tcomplement/Melter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tcomplement/Melter.java @@ -3,19 +3,28 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.mods.tcomplement.recipe.IngredientBlacklist; import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.MeltingRecipeBuilder; import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.MeltingRecipeRegistry; import com.cleanroommc.groovyscript.core.mixin.tcomplement.TCompRegistryAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.AbstractReloadableStorage; +import com.google.common.collect.ImmutableList; import knightminer.tcomplement.library.IBlacklist; +import knightminer.tcomplement.plugin.jei.melter.MeltingRecipeCategory; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import slimeknights.tconstruct.library.smeltery.MeltingRecipe; -public class Melter extends MeltingRecipeRegistry { +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +public class Melter extends MeltingRecipeRegistry implements IJEIRemoval.Default { @GroovyBlacklist protected final AbstractReloadableStorage backupStorage = new AbstractReloadableStorage<>(); @@ -151,4 +160,15 @@ public SimpleObjectStream streamBlacklists() { public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(TCompRegistryAccessor.getMeltingOverrides()).setRemover(this::remove); } + + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(MeltingRecipeCategory.CATEGORY); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(1), OperationHandler.FluidOperation.defaultFluidOperation().exclude(1)); + } + } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/MoonlightForge.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/MoonlightForge.java index c0548d99e..f80351c64 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/MoonlightForge.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/MoonlightForge.java @@ -4,16 +4,22 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.shiroroku.theaurorian.Compat.JEI.JEICompat; import com.shiroroku.theaurorian.Recipes.MoonlightForgeRecipe; import com.shiroroku.theaurorian.Recipes.MoonlightForgeRecipeHandler; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class MoonlightForge extends VirtualizedRegistry { +public class MoonlightForge extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:stone_sword'), item('minecraft:diamond')).output(item('minecraft:diamond_sword'))")) public RecipeBuilder recipeBuilder() { @@ -74,6 +80,11 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(MoonlightForgeRecipeHandler.allRecipes).setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEICompat.UID_MOONLIGHTFORGE); + } + @Property(property = "input", valid = @Comp("2")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/Scrapper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/Scrapper.java index c177069dc..695bf7e1f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/Scrapper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/Scrapper.java @@ -4,16 +4,22 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.shiroroku.theaurorian.Compat.JEI.JEICompat; import com.shiroroku.theaurorian.Recipes.ScrapperRecipe; import com.shiroroku.theaurorian.Recipes.ScrapperRecipeHandler; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class Scrapper extends VirtualizedRegistry { +public class Scrapper extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:stone_sword')).output(item('minecraft:cobblestone'))")) public RecipeBuilder recipeBuilder() { @@ -74,6 +80,11 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(ScrapperRecipeHandler.allRecipes).setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEICompat.UID_SCRAPPER); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Coolant.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Coolant.java index 33afd6014..afbd8295d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Coolant.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Coolant.java @@ -1,11 +1,13 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.device; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.Admonition; import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.CoolantManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -13,10 +15,14 @@ import mezz.jei.api.IGuiHelper; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; @RegistryDescription(category = RegistryDescription.Category.ENTRIES, admonition = @Admonition(value = "groovyscript.wiki.thermalexpansion.coolant.note0", type = Admonition.Type.WARNING)) -public class Coolant extends VirtualizedRegistry { +public class Coolant extends VirtualizedRegistry implements IJEIRemoval.Default { @Override @GroovyBlacklist @@ -85,6 +91,11 @@ public void removeAll() { CoolantManagerAccessor.getCoolantFactorMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeUidsTE.COOLANT); + } + @Desugar public record CoolantRecipe(String fluid, int rf, int factor) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Factorizer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Factorizer.java index cdb0dbce3..d329de233 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Factorizer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Factorizer.java @@ -1,21 +1,25 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.device; import cofh.core.inventory.ComparableItemStackValidated; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.device.FactorizerManager; import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.FactorizerManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.FactorizerRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import com.google.common.primitives.Booleans; import net.minecraft.item.ItemStack; import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; @@ -23,7 +27,7 @@ import java.util.stream.Collectors; @RegistryDescription -public class Factorizer extends VirtualizedRegistry> { +public class Factorizer extends VirtualizedRegistry> implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay') * 7).output(item('minecraft:book') * 2).combine().split()"), @@ -137,6 +141,11 @@ public void removeAll() { removeByType(false); } + @Override + public @NotNull Collection getCategories() { + return ImmutableList.of(RecipeUidsTE.FACTORIZER, RecipeUidsTE.FACTORIZER_COMBINE, RecipeUidsTE.FACTORIZER_SPLIT); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Tapper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Tapper.java index 6ceb308b4..a1f4b1af6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Tapper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Tapper.java @@ -2,6 +2,7 @@ import cofh.core.util.BlockWrapper; import cofh.core.util.ItemWrapper; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; @@ -9,6 +10,8 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.TapperManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.AbstractReloadableStorage; @@ -19,13 +22,17 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; +import java.util.Collection; +import java.util.Collections; +import java.util.List; import java.util.stream.Collectors; @RegistryDescription( admonition = @Admonition("groovyscript.wiki.thermalexpansion.tapper.note0") ) -public class Tapper extends VirtualizedRegistry { +public class Tapper extends VirtualizedRegistry implements IJEIRemoval.Default { private final AbstractReloadableStorage blockStorage = new AbstractReloadableStorage<>(); @@ -155,6 +162,16 @@ public void removeAll() { TapperManagerAccessor.getBlockMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeUidsTE.SAWMILL_TAPPER); + } + + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.FluidOperation.defaultFluidOperation()); + } + @Desugar public record TapperItemRecipe(ItemWrapper itemWrapper, FluidStack fluidStack) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Compression.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Compression.java index 13e4caa44..872293cc4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Compression.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Compression.java @@ -1,18 +1,24 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.dynamo; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.CompressionManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.github.bsideup.jabel.Desugar; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class Compression extends VirtualizedRegistry { +public class Compression extends VirtualizedRegistry implements IJEIRemoval.Default { @Override @GroovyBlacklist @@ -79,6 +85,11 @@ public void removeAll() { CompressionManagerAccessor.getFuelMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeUidsTE.DYNAMO_COMPRESSION); + } + @Desugar public record CompressionRecipe(String fluid, int energy) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Enervation.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Enervation.java index 90d961a72..261c58a07 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Enervation.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Enervation.java @@ -1,20 +1,26 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.dynamo; import cofh.core.inventory.ComparableItemStack; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.EnervationManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.github.bsideup.jabel.Desugar; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class Enervation extends VirtualizedRegistry { +public class Enervation extends VirtualizedRegistry implements IJEIRemoval.Default { @Override @GroovyBlacklist @@ -76,6 +82,11 @@ public void removeAll() { EnervationManagerAccessor.getFuelMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeUidsTE.DYNAMO_ENERVATION); + } + @Desugar public record EnervationRecipe(ComparableItemStack comparableItemStack, int energy) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Lapidary.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Lapidary.java index e45d3408e..feabdbda2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Lapidary.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Lapidary.java @@ -1,20 +1,26 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.dynamo; import cofh.core.inventory.ComparableItemStack; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.NumismaticManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.github.bsideup.jabel.Desugar; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class Lapidary extends VirtualizedRegistry { +public class Lapidary extends VirtualizedRegistry implements IJEIRemoval.Default { @Override @GroovyBlacklist @@ -76,6 +82,11 @@ public void removeAll() { NumismaticManagerAccessor.getGemFuelMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeUidsTE.DYNAMO_NUMISMATIC_GEM); + } + @Desugar public record LapidaryRecipe(ComparableItemStack comparableItemStack, int energy) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Magmatic.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Magmatic.java index 1ff5c5ab1..6f60f96b9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Magmatic.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Magmatic.java @@ -1,18 +1,24 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.dynamo; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.MagmaticManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.github.bsideup.jabel.Desugar; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class Magmatic extends VirtualizedRegistry { +public class Magmatic extends VirtualizedRegistry implements IJEIRemoval.Default { @Override @GroovyBlacklist @@ -79,6 +85,11 @@ public void removeAll() { MagmaticManagerAccessor.getFuelMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeUidsTE.DYNAMO_MAGMATIC); + } + @Desugar public record MagmaticRecipe(String fluid, int energy) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Numismatic.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Numismatic.java index 0849bd46a..21606b336 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Numismatic.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Numismatic.java @@ -1,20 +1,26 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.dynamo; import cofh.core.inventory.ComparableItemStack; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.NumismaticManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.github.bsideup.jabel.Desugar; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class Numismatic extends VirtualizedRegistry { +public class Numismatic extends VirtualizedRegistry implements IJEIRemoval.Default { @Override @GroovyBlacklist @@ -76,6 +82,11 @@ public void removeAll() { NumismaticManagerAccessor.getFuelMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeUidsTE.DYNAMO_NUMISMATIC); + } + @Desugar public record NumismaticRecipe(ComparableItemStack comparableItemStack, int energy) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Reactant.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Reactant.java index 0a872f6eb..4e255f965 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Reactant.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Reactant.java @@ -1,12 +1,14 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.dynamo; import cofh.core.inventory.ComparableItemStack; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.dynamo.ReactantManager; import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.ReactantManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.ReactionAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -14,18 +16,21 @@ import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.AbstractReloadableStorage; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; +import java.util.Collection; import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class Reactant extends VirtualizedRegistry { +public class Reactant extends VirtualizedRegistry implements IJEIRemoval.Default { private final AbstractReloadableStorage elementalReactantStorage = new AbstractReloadableStorage<>(); private final AbstractReloadableStorage elementalFluidStorage = new AbstractReloadableStorage<>(); @@ -146,6 +151,11 @@ public void removeAll() { ReactantManagerAccessor.getReactionMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return ImmutableList.of(RecipeUidsTE.DYNAMO_REACTANT, RecipeUidsTE.DYNAMO_REACTANT_ELEMENTAL); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "fluidInput", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Steam.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Steam.java index 816361eac..379a38d17 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Steam.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Steam.java @@ -1,20 +1,26 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.dynamo; import cofh.core.inventory.ComparableItemStack; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.SteamManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.github.bsideup.jabel.Desugar; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class Steam extends VirtualizedRegistry { +public class Steam extends VirtualizedRegistry implements IJEIRemoval.Default { @Override @GroovyBlacklist @@ -76,6 +82,11 @@ public void removeAll() { SteamManagerAccessor.getFuelMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeUidsTE.DYNAMO_STEAM); + } + @Desugar public record SteamRecipe(ComparableItemStack comparableItemStack, int energy) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Brewer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Brewer.java index 32b2da74f..3ceaa3fb7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Brewer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Brewer.java @@ -1,6 +1,7 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.machine; import cofh.core.util.helpers.FluidHelper; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.machine.BrewerManager; import cofh.thermalexpansion.util.managers.machine.BrewerManager.BrewerRecipe; import com.cleanroommc.groovyscript.api.GroovyBlacklist; @@ -8,6 +9,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.BrewerManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.BrewerRecipeAccessor; import com.cleanroommc.groovyscript.helper.Alias; @@ -18,14 +20,17 @@ import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class Brewer extends VirtualizedRegistry { +public class Brewer extends VirtualizedRegistry implements IJEIRemoval.Default { public Brewer() { super(Alias.generateOfClass(Brewer.class).andGenerate("Imbuer")); @@ -129,6 +134,11 @@ public void removeAll() { BrewerManagerAccessor.getRecipeMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeUidsTE.BREWER); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "fluidInput", valid = @Comp("1")) @Property(property = "fluidOutput", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Centrifuge.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Centrifuge.java index f9c12df36..0e2915fd1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Centrifuge.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Centrifuge.java @@ -1,5 +1,6 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.machine; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.machine.CentrifugeManager; import cofh.thermalexpansion.util.managers.machine.CentrifugeManager.CentrifugeRecipe; import com.cleanroommc.groovyscript.api.GroovyBlacklist; @@ -7,6 +8,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.CentrifugeManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.CentrifugeRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -15,14 +17,13 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; @RegistryDescription -public class Centrifuge extends VirtualizedRegistry { +public class Centrifuge extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay')).fluidOutput(fluid('water') * 100).output(item('minecraft:diamond') * 2, item('minecraft:gold_ingot'), item('minecraft:gold_ingot')).chance(50, 100, 1)"), @@ -99,6 +100,11 @@ public void removeAll() { CentrifugeManagerAccessor.getRecipeMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeUidsTE.CENTRIFUGE); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "4")}) @Property(property = "fluidOutput", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/CentrifugeMobs.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/CentrifugeMobs.java index 8322fdb33..8e02a90ce 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/CentrifugeMobs.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/CentrifugeMobs.java @@ -1,5 +1,6 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.machine; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.machine.CentrifugeManager; import cofh.thermalexpansion.util.managers.machine.CentrifugeManager.CentrifugeRecipe; import com.cleanroommc.groovyscript.api.GroovyBlacklist; @@ -7,6 +8,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.CentrifugeManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.CentrifugeRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -15,14 +17,13 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; @RegistryDescription -public class CentrifugeMobs extends VirtualizedRegistry { +public class CentrifugeMobs extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('thermalexpansion:morb').withNbt(['id': 'minecraft:slime'])).fluidOutput(fluid('water') * 100).output(item('minecraft:diamond') * 2, item('minecraft:gold_ingot'), item('minecraft:gold_ingot')).chance(50, 100, 1)"), @@ -101,6 +102,11 @@ public void removeAll() { CentrifugeManagerAccessor.getRecipeMapMobs().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeUidsTE.CENTRIFUGE_MOBS); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "4")}) @Property(property = "fluidOutput", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Charger.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Charger.java index beea4f37c..a5ff12ef1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Charger.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Charger.java @@ -1,6 +1,7 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.machine; import cofh.core.inventory.ComparableItemStackValidated; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.machine.ChargerManager; import cofh.thermalexpansion.util.managers.machine.ChargerManager.ChargerRecipe; import com.cleanroommc.groovyscript.api.GroovyBlacklist; @@ -8,16 +9,21 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.ChargerManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class Charger extends VirtualizedRegistry { +public class Charger extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:diamond') * 5).output(item('minecraft:clay'))"), @@ -92,6 +98,11 @@ public void removeAll() { ChargerManagerAccessor.getRecipeMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeUidsTE.CHARGER); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Compactor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Compactor.java index bca5594e6..299015cc5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Compactor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Compactor.java @@ -1,6 +1,7 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.machine; import cofh.core.inventory.ComparableItemStackValidatedNBT; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.machine.CompactorManager; import cofh.thermalexpansion.util.managers.machine.CompactorManager.CompactorRecipe; import com.cleanroommc.groovyscript.api.GroovyBlacklist; @@ -8,14 +9,17 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.CompactorManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.CompactorRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; @@ -24,7 +28,7 @@ import java.util.stream.Collectors; @RegistryDescription -public class Compactor extends VirtualizedRegistry> { +public class Compactor extends VirtualizedRegistry> implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay')).output(item('minecraft:diamond') * 2).mode(compactorMode('coin'))"), @@ -144,6 +148,11 @@ public void removeAll() { Arrays.stream(CompactorManager.Mode.values()).forEach(this::removeByMode); } + @Override + public @NotNull Collection getCategories() { + return ImmutableList.of(RecipeUidsTE.COMPACTOR, RecipeUidsTE.COMPACTOR_COIN, RecipeUidsTE.COMPACTOR_GEAR); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Crucible.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Crucible.java index e90219ff3..adb23b5dd 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Crucible.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Crucible.java @@ -1,6 +1,7 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.machine; import cofh.core.inventory.ComparableItemStackValidatedNBT; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.machine.CrucibleManager; import cofh.thermalexpansion.util.managers.machine.CrucibleManager.CrucibleRecipe; import com.cleanroommc.groovyscript.api.GroovyBlacklist; @@ -8,21 +9,25 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.CrucibleManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.CrucibleRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; import java.util.stream.Collectors; @RegistryDescription -public class Crucible extends VirtualizedRegistry { +public class Crucible extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay')).fluidOutput(fluid('lava') * 25)"), @@ -109,6 +114,11 @@ public void removeAll() { CrucibleManagerAccessor.getRecipeMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return ImmutableList.of(RecipeUidsTE.CRUCIBLE, RecipeUidsTE.CRUCIBLE_LAVA); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "fluidOutput", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Enchanter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Enchanter.java index c5e52e7dc..e77658d31 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Enchanter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Enchanter.java @@ -1,6 +1,7 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.machine; import cofh.core.inventory.ComparableItemStackValidatedNBT; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.machine.EnchanterManager; import cofh.thermalexpansion.util.managers.machine.EnchanterManager.EnchanterRecipe; import com.cleanroommc.groovyscript.api.GroovyBlacklist; @@ -8,6 +9,8 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.EnchanterManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.EnchanterRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -16,14 +19,17 @@ import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class Enchanter extends VirtualizedRegistry { +public class Enchanter extends VirtualizedRegistry implements IJEIRemoval.Default { private final AbstractReloadableStorage arcanaStorage = new AbstractReloadableStorage<>(); @@ -138,6 +144,16 @@ public void removeAll() { EnchanterManagerAccessor.getRecipeMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeUidsTE.ENCHANTER); + } + + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation()); + } + @Property(property = "input", valid = @Comp("2")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Extruder.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Extruder.java index ea0e172ab..8f348c886 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Extruder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Extruder.java @@ -1,6 +1,7 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.machine; import cofh.core.util.ItemWrapper; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.machine.ExtruderManager; import cofh.thermalexpansion.util.managers.machine.ExtruderManager.ExtruderRecipe; import com.cleanroommc.groovyscript.api.GroovyBlacklist; @@ -8,25 +9,30 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.ExtruderManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.ExtruderRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import com.google.common.primitives.Booleans; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; +import java.util.List; import java.util.Map; import java.util.stream.Collectors; @RegistryDescription -public class Extruder extends VirtualizedRegistry> { +public class Extruder extends VirtualizedRegistry> implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".fluidHot(100).fluidCold(1000).output(item('minecraft:clay'))"), @@ -151,6 +157,16 @@ public void removeAll() { removeByType(false); } + @Override + public @NotNull Collection getCategories() { + return ImmutableList.of(RecipeUidsTE.EXTRUDER, RecipeUidsTE.EXTRUDER_SEDIMENTARY); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation()); + } + @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Furnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Furnace.java index a52a84aa8..2bffc2d81 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Furnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Furnace.java @@ -1,5 +1,6 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.machine; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.machine.FurnaceManager; import cofh.thermalexpansion.util.managers.machine.FurnaceManager.FurnaceRecipe; import com.cleanroommc.groovyscript.api.GroovyBlacklist; @@ -7,18 +8,23 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.FurnaceManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.FurnaceRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.AbstractReloadableStorage; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; + @RegistryDescription -public class Furnace extends VirtualizedRegistry { +public class Furnace extends VirtualizedRegistry implements IJEIRemoval.Default { private final AbstractReloadableStorage foodStorage = new AbstractReloadableStorage<>(); @@ -113,6 +119,11 @@ public void removeAll() { FurnaceManagerAccessor.getRecipeMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return ImmutableList.of(RecipeUidsTE.FURNACE, RecipeUidsTE.FURNACE_FOOD); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/FurnacePyrolysis.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/FurnacePyrolysis.java index 8a351b38e..040bd70f9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/FurnacePyrolysis.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/FurnacePyrolysis.java @@ -1,5 +1,6 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.machine; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.machine.FurnaceManager; import cofh.thermalexpansion.util.managers.machine.FurnaceManager.FurnaceRecipe; import com.cleanroommc.groovyscript.api.GroovyBlacklist; @@ -7,17 +8,25 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.FurnaceManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.FurnaceRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + @RegistryDescription -public class FurnacePyrolysis extends VirtualizedRegistry { +public class FurnacePyrolysis extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:clay')).output(item('minecraft:diamond') * 2).creosote(100)"), @@ -93,6 +102,16 @@ public void removeAll() { FurnaceManagerAccessor.getRecipeMapPyrolysis().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeUidsTE.FURNACE_PYROLYSIS); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation().exclude(0)); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Insolator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Insolator.java index e666ffdf2..290a0831c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Insolator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Insolator.java @@ -1,6 +1,7 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.machine; import cofh.core.inventory.ComparableItemStackValidatedNBT; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.machine.InsolatorManager; import cofh.thermalexpansion.util.managers.machine.InsolatorManager.InsolatorRecipe; import com.cleanroommc.groovyscript.api.GroovyBlacklist; @@ -8,22 +9,28 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.InsolatorManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.InsolatorRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.AbstractReloadableStorage; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class Insolator extends VirtualizedRegistry { +public class Insolator extends VirtualizedRegistry implements IJEIRemoval.Default { private final AbstractReloadableStorage fertilizerStorage = new AbstractReloadableStorage<>(); @@ -140,6 +147,16 @@ public void removeAll() { InsolatorManagerAccessor.getRecipeMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return ImmutableList.of(RecipeUidsTE.INSOLATOR, RecipeUidsTE.INSOLATOR_TREE); + } + + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation()); + } + @Property(property = "input", valid = @Comp("2")) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "2")}) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Precipitator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Precipitator.java index 58152144e..83c9bcba7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Precipitator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Precipitator.java @@ -1,6 +1,7 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.machine; import cofh.core.util.ItemWrapper; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.machine.PrecipitatorManager; import cofh.thermalexpansion.util.managers.machine.PrecipitatorManager.PrecipitatorRecipe; import com.cleanroommc.groovyscript.api.GroovyBlacklist; @@ -8,6 +9,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.PrecipitatorManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.PrecipitatorRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -17,12 +19,15 @@ import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.stream.Collectors; @RegistryDescription -public class Precipitator extends VirtualizedRegistry { +public class Precipitator extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".output(item('minecraft:clay'))"), @@ -107,6 +112,11 @@ public void removeAll() { PrecipitatorManagerAccessor.getRecipeMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeUidsTE.PRECIPITATOR); + } + @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Pulverizer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Pulverizer.java index 0c6686fad..801b5e63b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Pulverizer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Pulverizer.java @@ -1,5 +1,6 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.machine; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.machine.PulverizerManager; import cofh.thermalexpansion.util.managers.machine.PulverizerManager.PulverizerRecipe; import com.cleanroommc.groovyscript.api.GroovyBlacklist; @@ -7,6 +8,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.PulverizerManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.PulverizerRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -14,10 +16,14 @@ import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class Pulverizer extends VirtualizedRegistry { +public class Pulverizer extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:diamond')).output(item('minecraft:clay'), item('minecraft:diamond')).chance(1)"), @@ -95,6 +101,11 @@ public void removeAll() { PulverizerManagerAccessor.getRecipeMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeUidsTE.PULVERIZER); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "2")}) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "2")}) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Refinery.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Refinery.java index 2168446ee..05b039346 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Refinery.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Refinery.java @@ -1,6 +1,7 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.machine; import cofh.core.util.helpers.FluidHelper; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.machine.RefineryManager; import cofh.thermalexpansion.util.managers.machine.RefineryManager.RefineryRecipe; import com.cleanroommc.groovyscript.api.GroovyBlacklist; @@ -8,22 +9,27 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.RefineryManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.RefineryRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.AbstractReloadableStorage; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; + @RegistryDescription( admonition = @Admonition("groovyscript.wiki.thermalexpansion.refinery.note0") ) -public class Refinery extends VirtualizedRegistry { +public class Refinery extends VirtualizedRegistry implements IJEIRemoval.Default { private final AbstractReloadableStorage fossilFuelStorage = new AbstractReloadableStorage<>(); private final AbstractReloadableStorage bioFuelStorage = new AbstractReloadableStorage<>(); @@ -181,6 +187,11 @@ public void removeAll() { RefineryManagerAccessor.getRecipeMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return ImmutableList.of(RecipeUidsTE.REFINERY, RecipeUidsTE.REFINERY_BIO, RecipeUidsTE.REFINERY_FOSSIL); + } + @Property(property = "fluidInput", valid = @Comp("1")) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) @Property(property = "fluidOutput", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/RefineryPotion.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/RefineryPotion.java index 10f6c3a83..90aeba003 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/RefineryPotion.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/RefineryPotion.java @@ -1,6 +1,7 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.machine; import cofh.core.util.helpers.FluidHelper; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.machine.RefineryManager; import cofh.thermalexpansion.util.managers.machine.RefineryManager.RefineryRecipe; import com.cleanroommc.groovyscript.api.GroovyBlacklist; @@ -8,6 +9,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.RefineryManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.RefineryRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -16,10 +18,14 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; + @RegistryDescription -public class RefineryPotion extends VirtualizedRegistry { +public class RefineryPotion extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".fluidInput(fluid('water') * 100).fluidOutput(fluid('steam') * 200)"), @@ -96,6 +102,11 @@ public void removeAll() { RefineryManagerAccessor.getRecipeMapPotion().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeUidsTE.REFINERY_POTION); + } + @Property(property = "fluidInput", valid = @Comp("1")) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) @Property(property = "fluidOutput", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Sawmill.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Sawmill.java index b22c7a9a0..5322ea24c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Sawmill.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Sawmill.java @@ -1,5 +1,6 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.machine; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.machine.SawmillManager; import cofh.thermalexpansion.util.managers.machine.SawmillManager.SawmillRecipe; import com.cleanroommc.groovyscript.api.GroovyBlacklist; @@ -7,19 +8,24 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.SawmillManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.SawmillRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; + @RegistryDescription( admonition = @Admonition("groovyscript.wiki.thermalexpansion.sawmill.note0") ) -public class Sawmill extends VirtualizedRegistry { +public class Sawmill extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:diamond')).output(item('minecraft:gold_ingot') * 2)"), @@ -97,6 +103,11 @@ public void removeAll() { SawmillManagerAccessor.getRecipeMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return ImmutableList.of(RecipeUidsTE.SAWMILL, RecipeUidsTE.SAWMILL_TAPPER); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "2")}) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Smelter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Smelter.java index df664c4ca..4e675ba57 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Smelter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Smelter.java @@ -1,6 +1,7 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.machine; import cofh.core.inventory.ComparableItemStackValidatedNBT; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.machine.SmelterManager; import cofh.thermalexpansion.util.managers.machine.SmelterManager.SmelterRecipe; import com.cleanroommc.groovyscript.api.GroovyBlacklist; @@ -8,6 +9,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.SmelterManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.SmelterRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -16,13 +18,16 @@ import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class Smelter extends VirtualizedRegistry { +public class Smelter extends VirtualizedRegistry implements IJEIRemoval.Default { private final AbstractReloadableStorage fluxStorage = new AbstractReloadableStorage<>(); @@ -122,6 +127,11 @@ public void removeAll() { SmelterManagerAccessor.getRecipeMap().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeUidsTE.SMELTER); + } + @Property(property = "input", valid = @Comp("2")) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "2")}) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerExtract.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerExtract.java index 8495db7ee..f40a682dc 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerExtract.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerExtract.java @@ -1,5 +1,6 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.machine; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.machine.TransposerManager; import cofh.thermalexpansion.util.managers.machine.TransposerManager.TransposerRecipe; import com.cleanroommc.groovyscript.api.GroovyBlacklist; @@ -7,6 +8,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.TransposerManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -14,14 +16,17 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.stream.Collectors; @RegistryDescription( admonition = @Admonition("groovyscript.wiki.thermalexpansion.transposer.note0") ) -public class TransposerExtract extends VirtualizedRegistry { +public class TransposerExtract extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:diamond') * 2).fluidOutput(fluid('water') * 100)"), @@ -113,6 +118,11 @@ public void removeAll() { TransposerManagerAccessor.getRecipeMapExtract().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeUidsTE.TRANSPOSER_EXTRACT); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) @Property(property = "fluidOutput", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerFill.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerFill.java index 2e8f9fa0c..4061712e1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerFill.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerFill.java @@ -1,6 +1,7 @@ package com.cleanroommc.groovyscript.compat.mods.thermalexpansion.machine; import cofh.core.util.helpers.FluidHelper; +import cofh.thermalexpansion.plugins.jei.RecipeUidsTE; import cofh.thermalexpansion.util.managers.machine.TransposerManager; import cofh.thermalexpansion.util.managers.machine.TransposerManager.TransposerRecipe; import com.cleanroommc.groovyscript.api.GroovyBlacklist; @@ -8,6 +9,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.TransposerManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -15,16 +17,19 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RegistryDescription( admonition = @Admonition("groovyscript.wiki.thermalexpansion.transposer.note0") ) -public class TransposerFill extends VirtualizedRegistry { +public class TransposerFill extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".input(item('minecraft:diamond') * 2).fluidInput(fluid('water') * 100)"), @@ -124,6 +129,11 @@ public void removeAll() { TransposerManagerAccessor.getRecipeMapFill().clear(); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeUidsTE.TRANSPOSER_FILL); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "fluidInput", valid = @Comp("1")) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Alloying.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Alloying.java index 0caf11fe2..b221e109f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Alloying.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Alloying.java @@ -3,19 +3,24 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.tconstruct.TinkerRegistryAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import slimeknights.tconstruct.library.smeltery.AlloyRecipe; +import slimeknights.tconstruct.plugin.jei.alloy.AlloyRecipeCategory; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.List; @RegistryDescription -public class Alloying extends VirtualizedRegistry { +public class Alloying extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".fluidOutput(fluid('iron') * 3).fluidInput(fluid('clay') * 1,fluid('lava') * 2)")) public RecipeBuilder recipeBuilder() { @@ -107,6 +112,11 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(TinkerRegistryAccessor.getAlloyRegistry()).setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(AlloyRecipeCategory.CATEGORY); + } + @Property(property = "fluidInput", valid = {@Comp(value = "2", type = Comp.Type.GTE), @Comp(value = "Integer.MAX_VALUE", type = Comp.Type.LTE)}) @Property(property = "fluidOutput", valid = @Comp("1")) public class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/CastingTable.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/CastingTable.java index 3e15466d6..215da1f09 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/CastingTable.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/CastingTable.java @@ -4,21 +4,30 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.MeltingRecipeBuilder; import com.cleanroommc.groovyscript.core.mixin.tconstruct.TinkerRegistryAccessor; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import slimeknights.tconstruct.library.smeltery.CastingRecipe; import slimeknights.tconstruct.library.smeltery.ICastingRecipe; +import slimeknights.tconstruct.plugin.jei.casting.CastingRecipeCategory; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; @RegistryDescription -public class CastingTable extends VirtualizedRegistry { +public class CastingTable extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".fluidInput(fluid('lava') * 50).output(item('minecraft:diamond')).coolingTime(750).consumesCast(true).cast(ore('gemEmerald'))")) public RecipeBuilder recipeBuilder() { @@ -105,6 +114,16 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(TinkerRegistryAccessor.getTableCastRegistry()).setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(CastingRecipeCategory.CATEGORY); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation().exclude(1)); + } + @Property(property = "fluidInput", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Drying.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Drying.java index 017be0918..36eba831f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Drying.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Drying.java @@ -4,6 +4,7 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.MeltingRecipeBuilder; import com.cleanroommc.groovyscript.core.mixin.tconstruct.TinkerRegistryAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -11,11 +12,16 @@ import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import slimeknights.tconstruct.library.DryingRecipe; +import slimeknights.tconstruct.plugin.jei.drying.DryingRecipeCategory; + +import java.util.Collection; +import java.util.Collections; @RegistryDescription -public class Drying extends VirtualizedRegistry { +public class Drying extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:clay')).output(item('minecraft:dirt')).time(45)")) public RecipeBuilder recipeBuilder() { @@ -107,6 +113,11 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(TinkerRegistryAccessor.getDryingRegistry()).setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(DryingRecipeCategory.CATEGORY); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Melting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Melting.java index 007ad223a..0e11436aa 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Melting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Melting.java @@ -7,17 +7,26 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RecipeBuilderDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.MeltingRecipeBuilder; import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.MeltingRecipeRegistry; import com.cleanroommc.groovyscript.core.mixin.tconstruct.TinkerRegistryAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; import net.minecraftforge.fluids.FluidStack; +import org.jetbrains.annotations.NotNull; import slimeknights.tconstruct.library.smeltery.MeltingRecipe; +import slimeknights.tconstruct.plugin.jei.smelting.SmeltingRecipeCategory; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; @RegistryDescription -public class Melting extends MeltingRecipeRegistry { +public class Melting extends MeltingRecipeRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = @Example(".input(item('minecraft:gravel')).fluidOutput(fluid('lava') * 25).time(80)")) public RecipeBuilder recipeBuilder() { @@ -110,6 +119,16 @@ public SimpleObjectStream streamRecipes() { return new SimpleObjectStream<>(TinkerRegistryAccessor.getMeltingRegistry()).setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(SmeltingRecipeCategory.CATEGORY); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation().exclude(1)); + } + public static class RecipeBuilder extends MeltingRecipeBuilder { public RecipeBuilder(Melting melting) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Furnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Furnace.java index 3ce4aeb92..f7f1afb54 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Furnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Furnace.java @@ -3,19 +3,20 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import mezz.jei.api.recipe.VanillaRecipeCategoryUid; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; -public class Furnace extends VirtualizedRegistry { +public class Furnace extends VirtualizedRegistry implements IJEIRemoval.Default { public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); @@ -182,6 +183,11 @@ public void onReload() { getBackupRecipes().forEach(recipe -> FurnaceRecipes.instance().addSmeltingRecipe(recipe.input, recipe.output, recipe.exp)); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(VanillaRecipeCategoryUid.SMELTING); + } + public static class RecipeBuilder extends AbstractRecipeBuilder { private IIngredient input; From 94e142fe7bc3916c13b87e59a77560df5f813e5c Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Wed, 31 Jul 2024 21:53:09 -0700 Subject: [PATCH 20/47] implement some more advanced compat --- .../starlightaltar/StarlightAltar.java | 47 +++++++++++++++- .../mods/compactmachines/Miniaturization.java | 36 +++++++++++-- .../compat/mods/draconicevolution/Fusion.java | 53 ++++++++++++++++++- .../mods/pneumaticcraft/PlasticMixer.java | 29 +++++++++- .../compat/mods/roots/LifeEssence.java | 34 +++++++++++- .../groovyscript/compat/vanilla/Crafting.java | 31 +++++++++-- 6 files changed, 219 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/StarlightAltar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/StarlightAltar.java index 2a5f487cb..03bc1a618 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/StarlightAltar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/StarlightAltar.java @@ -2,18 +2,52 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; +import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import hellfirepvp.astralsorcery.common.crafting.altar.AbstractAltarRecipe; import hellfirepvp.astralsorcery.common.crafting.altar.AltarRecipeRegistry; +import hellfirepvp.astralsorcery.common.integrations.ModIntegrationJEI; +import hellfirepvp.astralsorcery.common.integrations.mods.jei.altar.AltarAttunementRecipeWrapper; +import hellfirepvp.astralsorcery.common.integrations.mods.jei.altar.AltarConstellationRecipeWrapper; +import hellfirepvp.astralsorcery.common.integrations.mods.jei.altar.AltarDiscoveryRecipeWrapper; +import hellfirepvp.astralsorcery.common.integrations.mods.jei.altar.AltarTraitRecipeWrapper; import hellfirepvp.astralsorcery.common.tile.TileAltar; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; +import java.util.Collection; +import java.util.Collections; +import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class StarlightAltar extends VirtualizedRegistry { +public class StarlightAltar extends VirtualizedRegistry implements IJEIRemoval.Default { + + private static List registryNameRemovalMethod(AbstractAltarRecipe recipe) { + return Collections.singletonList(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.asGroovyCode(recipe.getNativeRecipe().getRegistryName(), false))); + } + + private static OperationHandler.IOperation discoveryOperation() { + return new OperationHandler.WrapperOperation<>(AltarDiscoveryRecipeWrapper.class, wrapper -> registryNameRemovalMethod(wrapper.getRecipe())); + } + + private static OperationHandler.IOperation attunementOperation() { + return new OperationHandler.WrapperOperation<>(AltarAttunementRecipeWrapper.class, wrapper -> registryNameRemovalMethod(wrapper.getRecipe())); + } + + private static OperationHandler.IOperation constellationOperation() { + return new OperationHandler.WrapperOperation<>(AltarConstellationRecipeWrapper.class, wrapper -> registryNameRemovalMethod(wrapper.getRecipe())); + } + + private static OperationHandler.IOperation traitOperation() { + return new OperationHandler.WrapperOperation<>(AltarTraitRecipeWrapper.class, wrapper -> registryNameRemovalMethod(wrapper.getRecipe())); + } @RecipeBuilderDescription(priority = 100, requirement = { @Property(property = "ingredientMatrix", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "9", type = Comp.Type.LTE)}), @@ -105,4 +139,15 @@ public void removeAll() { recipes.clear(); }); } + + @Override + public @NotNull Collection getCategories() { + return ImmutableList.of(ModIntegrationJEI.idAltarDiscovery, ModIntegrationJEI.idAltarAttunement, ModIntegrationJEI.idAltarConstellation, ModIntegrationJEI.idAltarTrait); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(discoveryOperation(), attunementOperation(), constellationOperation(), traitOperation(), OperationHandler.ItemOperation.outputItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation()); + } + } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/Miniaturization.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/Miniaturization.java index 50918e234..70730d68d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/Miniaturization.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/Miniaturization.java @@ -3,23 +3,41 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; +import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import it.unimi.dsi.fastutil.chars.Char2ObjectOpenHashMap; import net.minecraft.block.state.IBlockState; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import org.dave.compactmachines3.jei.MultiblockRecipeCategory; +import org.dave.compactmachines3.jei.MultiblockRecipeWrapper; import org.dave.compactmachines3.miniaturization.MultiblockRecipes; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; @RegistryDescription -public class Miniaturization extends VirtualizedRegistry { +public class Miniaturization extends VirtualizedRegistry implements IJEIRemoval.Default { + + private static OperationHandler.IOperation wrapperOperation() { + return new OperationHandler.WrapperOperation<>(MultiblockRecipeWrapper.class, wrapper -> { + var builder = ImmutableList.builder(); + builder.add(JeiRemovalHelper.format("removeByCatalyst", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getCatalystStack(), false))); + builder.add(JeiRemovalHelper.format("removeByOutput", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getTargetStack(), false))); + for (ItemStack stack : wrapper.recipe.getRequiredItemStacks()) { + builder.add(JeiRemovalHelper.format("removeByInput", GroovyScriptCodeConverter.getSingleItemStack(stack, false))); + } + return builder.build(); + }); + } @RecipeBuilderDescription(example = { @Example(".name('diamond_rectangle').input(item('minecraft:clay')).output(item('minecraft:clay')).symmetrical().ticks(10).shape([['www', 'www']]).key('w', blockstate('minecraft:diamond_block'))"), @@ -77,6 +95,16 @@ public SimpleObjectStream(MultiblockRecipes.getRecipes()).setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(MultiblockRecipeCategory.UID); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(wrapperOperation()); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/Fusion.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/Fusion.java index 35d83ced8..5c9bd12cc 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/Fusion.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/Fusion.java @@ -1,22 +1,63 @@ package com.cleanroommc.groovyscript.compat.mods.draconicevolution; import com.brandon3055.draconicevolution.api.fusioncrafting.IFusionRecipe; +import com.brandon3055.draconicevolution.integration.jei.FusionRecipeWrapper; +import com.brandon3055.draconicevolution.integration.jei.RecipeCategoryUids; import com.brandon3055.draconicevolution.lib.RecipeManager; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.draconicevolution.FusionRegistryAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; +import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; +import net.minecraft.block.Block; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; +import java.util.List; import java.util.stream.Collectors; @RegistryDescription -public class Fusion extends VirtualizedRegistry { +public class Fusion extends VirtualizedRegistry implements IJEIRemoval.Default { + + private static OperationHandler.IOperation wrapperOperation() { + return new OperationHandler.WrapperOperation<>(FusionRecipeWrapper.class, wrapper -> { + var builder = ImmutableList.builder(); + if (!wrapper.recipe.getRecipeCatalyst().isEmpty()) { + builder.add(JeiRemovalHelper.format("removeByCatalyst", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getRecipeCatalyst(), false))); + } + var output = wrapper.recipe.getRecipeOutput(wrapper.recipe.getRecipeCatalyst()); + if (!output.isEmpty()) { + builder.add(JeiRemovalHelper.format("removeByOutput", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getRecipeOutput(wrapper.recipe.getRecipeCatalyst()), false))); + } + for (var ingredient : wrapper.recipe.getRecipeIngredients()) { + if (ingredient instanceof String ore) { + builder.add(JeiRemovalHelper.format("removeByInput", GroovyScriptCodeConverter.asGroovyCode(ore, false))); + } else { + ItemStack stack = null; + if (ingredient instanceof ItemStack is) stack = is; + else if (ingredient instanceof Item i) stack = new ItemStack(i); + else if (ingredient instanceof Block b) stack = new ItemStack(b); + + if (stack != null) { + builder.add(JeiRemovalHelper.format("removeByInput", GroovyScriptCodeConverter.getSingleItemStack(stack, false))); + } + } + } + return builder.build(); + }); + } @Override public void onReload() { @@ -65,6 +106,16 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(RecipeCategoryUids.FUSION_CRAFTING); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(wrapperOperation()); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "54")}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PlasticMixer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PlasticMixer.java index f7f170fa0..377239a1f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PlasticMixer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PlasticMixer.java @@ -4,21 +4,29 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.pneumaticcraft.PlasticMixerRecipeAccessor; import com.cleanroommc.groovyscript.core.mixin.pneumaticcraft.PlasticMixerRegistryAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import me.desht.pneumaticcraft.common.recipes.PlasticMixerRegistry; +import mezz.jei.api.gui.IRecipeLayout; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + @RegistryDescription( admonition = { @Admonition(value = "groovyscript.wiki.pneumaticcraft.plastic_mixer.note0", type = Admonition.Type.WARNING), @Admonition(value = "groovyscript.wiki.pneumaticcraft.plastic_mixer.note1", type = Admonition.Type.DANGER) } ) -public class PlasticMixer extends VirtualizedRegistry { +public class PlasticMixer extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @Example(".fluidInput(fluid('lava') * 100).output(item('minecraft:clay')).allowMelting().allowSolidifying().requiredTemperature(323)"), @@ -91,6 +99,25 @@ public SimpleObjectStream streamRecipes return new SimpleObjectStream<>(getInstance().getRecipes()).setRemover(this::remove); } + /** + * @see me.desht.pneumaticcraft.common.thirdparty.jei.ModCategoryUid + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("pneumaticcraft.plastic_mixer"); + } + + @Override + public @NotNull List getRemoval(IRecipeLayout layout) { + // isn't this absolutely miserable? + // we need to this because the RGB dyes are part of the recipe as slots 0, 1, and 2 if the recipe outputs an item + // and slot 0 is used for the recipe input if the recipe has an input item. + var itemOperation = layout.getItemStacks().getGuiIngredients().size() > 2 + ? OperationHandler.ItemOperation.defaultItemOperation().exclude(0, 1, 2) + : OperationHandler.ItemOperation.defaultItemOperation(); + return OperationHandler.removalOptions(layout, itemOperation, OperationHandler.FluidOperation.defaultFluidOperation()); + } + @Property(property = "output", valid = @Comp("1")) @Property(property = "fluidInput", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/LifeEssence.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/LifeEssence.java index 8de952f11..f93c39372 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/LifeEssence.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/LifeEssence.java @@ -3,16 +3,37 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; +import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import epicsquid.roots.init.ModRecipes; +import epicsquid.roots.integration.jei.JEIRootsPlugin; +import epicsquid.roots.integration.jei.shears.RunicShearsSummonEntityWrapper; import net.minecraft.entity.EntityLivingBase; import net.minecraftforge.fml.common.registry.EntityEntry; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; @RegistryDescription( category = RegistryDescription.Category.ENTRIES ) -public class LifeEssence extends VirtualizedRegistry> { +public class LifeEssence extends VirtualizedRegistry> implements IJEIRemoval.Default { + + private static OperationHandler.IOperation entityOperation() { + return new OperationHandler.WrapperOperation<>(RunicShearsSummonEntityWrapper.class, wrapper -> { + var tag = wrapper.recipe.getEssenceStack().getTagCompound(); + if (tag == null) return Collections.emptyList(); + // only real way to access the entity ID here + return Collections.singletonList(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.formatGenericHandler("entity", tag.getString("id"), false))); + }); + } @Override public void onReload() { @@ -63,4 +84,15 @@ public void removeAll() { public SimpleObjectStream> streamRecipes() { return new SimpleObjectStream<>(ModRecipes.getLifeEssenceList()).setRemover(this::remove); } + + @Override + public @NotNull Collection getCategories() { + return ImmutableList.of(JEIRootsPlugin.RUNIC_SHEARS_SUMMON_ENTITY); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(entityOperation()); + } + } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Crafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Crafting.java index c2f6b5964..5e5964bcd 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Crafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Crafting.java @@ -3,19 +3,26 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; +import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.cleanroommc.groovyscript.registry.ReloadableRegistryManager; +import com.google.common.collect.ImmutableList; import it.unimi.dsi.fastutil.chars.Char2ObjectOpenHashMap; +import mezz.jei.api.recipe.VanillaRecipeCategoryUid; +import mezz.jei.api.recipe.wrapper.ICraftingRecipeWrapper; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.registry.ForgeRegistries; +import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; -import java.util.List; +import java.util.*; -public class Crafting extends ForgeRegistryWrapper { +public class Crafting extends ForgeRegistryWrapper implements IJEIRemoval.Default { private static final Char2ObjectOpenHashMap fallbackChars = new Char2ObjectOpenHashMap<>(); @@ -28,6 +35,13 @@ public static IIngredient getFallback(char c) { return fallbackChars.get(c); } + private static OperationHandler.IOperation registryNameOperation() { + return new OperationHandler.WrapperOperation<>(ICraftingRecipeWrapper.class, wrapper -> + wrapper.getRegistryName() == null + ? Collections.emptyList() + : Collections.singletonList(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.asGroovyCode(wrapper.getRegistryName(), false)))); + } + public void setFallback(char key, IIngredient ingredient) { fallbackChars.put(key, ingredient); } @@ -213,4 +227,15 @@ public CraftingRecipeBuilder.Shaped shapedBuilder() { public CraftingRecipeBuilder.Shapeless shapelessBuilder() { return new CraftingRecipeBuilder.Shapeless(); } + + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(VanillaRecipeCategoryUid.CRAFTING); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(registryNameOperation(), OperationHandler.ItemOperation.outputItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation()); + } + } From 2fc26fcf0d16f896bdf970ec02f8279fcd633b37 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Wed, 31 Jul 2024 22:04:40 -0700 Subject: [PATCH 21/47] addStygianIronAnvil compat --- .../compat/mods/woot/StygianIronAnvil.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/StygianIronAnvil.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/StygianIronAnvil.java index b6e9faa89..c3575f9e2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/StygianIronAnvil.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/StygianIronAnvil.java @@ -3,6 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.woot.AnvilManagerAccessor; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -12,9 +14,14 @@ import ipsis.Woot; import ipsis.woot.crafting.AnvilRecipe; import ipsis.woot.crafting.IAnvilRecipe; +import ipsis.woot.plugins.jei.JEIPlugin; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; +import java.util.List; import java.util.stream.Collectors; @RegistryDescription( @@ -23,7 +30,7 @@ @Admonition(value = "groovyscript.wiki.woot.stygian_iron_anvil.note1", type = Admonition.Type.WARNING) } ) -public class StygianIronAnvil extends VirtualizedRegistry { +public class StygianIronAnvil extends VirtualizedRegistry implements IJEIRemoval.Default { public StygianIronAnvil() { super(Alias.generateOfClassAnd(StygianIronAnvil.class, "Anvil")); @@ -99,6 +106,19 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(JEIPlugin.JEI_ANVIL); + } + + @Override + public @NotNull List getJEIOperations() { + // JEI doesn't get all inputs, only the first 6. Using a mixin to access the stored recipe field to + // get all inputs is a viable solution - however, the only way to obtain so many is to add it deliberately, + // so there shouldn't be situations where having more is required. + return Default.excludeSlots(2, 3, 4, 5, 6, 7, 8); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "Integer.MAX_VALUE")}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { From 6e873bce10eb37202aa2bdec6f639a5a0321bd3a Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Wed, 31 Jul 2024 22:04:57 -0700 Subject: [PATCH 22/47] add Inspirations Cauldron compat with note about commented code --- .../compat/mods/inspirations/Cauldron.java | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/Cauldron.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/Cauldron.java index 95d1429b3..3c18fd500 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/Cauldron.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/Cauldron.java @@ -4,12 +4,16 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.inspirations.InspirationsRegistryAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import knightminer.inspirations.library.InspirationsRegistry; import knightminer.inspirations.library.recipe.cauldron.*; +import knightminer.inspirations.plugins.jei.cauldron.CauldronRecipeCategory; import net.minecraft.item.EnumDyeColor; import net.minecraft.item.ItemStack; import net.minecraft.potion.PotionType; @@ -18,17 +22,17 @@ import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fml.common.registry.ForgeRegistries; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import slimeknights.mantle.util.RecipeMatch; -import java.util.Arrays; -import java.util.Locale; +import java.util.*; import java.util.stream.Collectors; @RegistryDescription( admonition = @Admonition("groovyscript.wiki.inspirations.cauldron.note") ) -public class Cauldron extends VirtualizedRegistry { +public class Cauldron extends VirtualizedRegistry implements IJEIRemoval.Default { private static boolean checkRecipeMatches(ISimpleCauldronRecipe recipe, IIngredient input, ItemStack output, Object inputState, Object outputState) { // Check all relevant parts to determine if we need to match them and if they do match. @@ -214,6 +218,26 @@ public SimpleObjectStream streamRecipes() { .setRemover(this::remove); } + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList(CauldronRecipeCategory.CATEGORY); + } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.ItemOperation.defaultItemOperation()); +// // add methods to remove by these custom values before uncommenting +// new OperationHandler.ClassSlotOperation<>( +// DyeIngredient.class, true, +// (stack, all) -> { +// var name = stack.getDye().toString(); +// return "dye" + name.substring(0, 1).toUpperCase() + name.substring(1); +// }), +// new OperationHandler.ClassSlotOperation<>( +// PotionIngredient.class, true, +// (stack, all) -> GroovyScriptCodeConverter.asGroovyCode(stack.getPotion().getEffects().get(0), false)) + } + @Property(property = "input", valid = @Comp("1"), needsOverride = true) @Property(property = "output", valid = @Comp("1"), needsOverride = true) @Property(property = "fluidInput", valid = @Comp("1"), needsOverride = true) From 545d4f7e8a8cbfec3a4f94bb74a0a622c01b36a3 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Wed, 31 Jul 2024 23:02:34 -0700 Subject: [PATCH 23/47] fix keybind lang keys --- src/main/resources/assets/groovyscript/lang/en_us.lang | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/resources/assets/groovyscript/lang/en_us.lang b/src/main/resources/assets/groovyscript/lang/en_us.lang index 8d5a79fcc..6634bdc17 100644 --- a/src/main/resources/assets/groovyscript/lang/en_us.lang +++ b/src/main/resources/assets/groovyscript/lang/en_us.lang @@ -3,7 +3,8 @@ groovyscript.command.copy.copied_start=Copied [ groovyscript.command.copy.copied_end=] to the clipboard key.categories.groovyscript=GroovyScript -key.groovyscript.reload=Reload Scripts +keybind.groovyscript.reload=Reload Scripts +keybind.groovyscript.remove_recipe_from_jei=Generate Recipe Removal Method (from JEI) groovyscript.jei.category.groovyscript:fluid_recipe.name=In world fluid recipes groovyscript.jei.category.groovyscript:explosion.name=Explosion recipes From af0aa7922026f3e12649bbfad2cea3958f3bc222 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Wed, 31 Jul 2024 23:02:39 -0700 Subject: [PATCH 24/47] handle keybind combos and format better --- .../mods/jei/removal/JeiRemovalHelper.java | 79 ++++-------------- .../groovyscript/keybind/RemoveRecipeKey.java | 81 ++++++++++++++++++- .../assets/groovyscript/lang/en_us.lang | 2 + 3 files changed, 98 insertions(+), 64 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/JeiRemovalHelper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/JeiRemovalHelper.java index 4ea7de1c1..b43634a7d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/JeiRemovalHelper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/JeiRemovalHelper.java @@ -1,8 +1,6 @@ package com.cleanroommc.groovyscript.compat.mods.jei.removal; -import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.INamed; -import com.cleanroommc.groovyscript.command.TextCopyable; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.JeiPlugin; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; @@ -12,53 +10,30 @@ import mezz.jei.api.gui.IRecipeLayout; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.ScaledResolution; +import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.NotNull; import org.lwjgl.input.Mouse; -import java.util.ArrayList; -import java.util.Collections; import java.util.List; public class JeiRemovalHelper { /** - * uses the focused category uid to filter - */ - public static List getRemovalMethod() { - return getRemovalMethod(getUid()); - } - - /** - * generates a method to remove the targeted recipe in JEI and prints the via {@link #say(String)}. - * - * @param uid the id of the targeted JEI category - */ - public static List getRemovalMethod(String uid) { - var output = getUnderMouse(); - if (output == null) return Collections.emptyList(); - return getRemovalMethod(uid, output); - } - - /** - * generates a method to remove the targeted recipe in JEI and prints the via {@link #say(String)}. + * Generates one or more methods to remove the targeted recipe in JEI. * - * @param uid the id of the targeted JEI category + * @param uid the id of the targeted JEI category + * @param layout the recipe layout being targeted + * @return a pair where the left value is a String representing the category and + * the right value is a List of Strings representing any number of methods */ - public static List getRemovalMethod(String uid, IRecipeLayout output) { - var list = new ArrayList(); - + public static Pair> getRemovalMethod(String uid, IRecipeLayout layout) { // TODO JEI why does vanilla have to be special cased, can that be changed? for (INamed registry : Lists.newArrayList(VanillaModule.crafting, VanillaModule.furnace)) { if (registry.isEnabled() && registry instanceof IJEIRemoval removal && removal.getCategories().contains(uid)) { - var operation = removal.getRemoval(output); + var operation = removal.getRemoval(layout); if (operation.isEmpty()) continue; - for (var s : operation) { - var message = String.format("%s.%s", registry.getName(), s); - list.add(message); - say(message); - } - return list; + return Pair.of(registry.getName(), operation); } } @@ -71,14 +46,9 @@ public static List getRemovalMethod(String uid, IRecipeLayout output) { VanillaModule.inWorldCrafting.burning, VanillaModule.inWorldCrafting.pistonPush)) { if (registry.isEnabled() && registry instanceof IJEIRemoval removal && removal.getCategories().contains(uid)) { - var operation = removal.getRemoval(output); + var operation = removal.getRemoval(layout); if (operation.isEmpty()) continue; - for (var s : operation) { - var message = String.format("%s.%s", registry.getName(), s); - list.add(message); - say(message); - } - return list; + return Pair.of(registry.getName(), operation); } } @@ -86,23 +56,17 @@ public static List getRemovalMethod(String uid, IRecipeLayout output) { if (!groovyContainer.isLoaded()) continue; for (var registry : groovyContainer.get().getRegistries()) { if (registry.isEnabled() && registry instanceof IJEIRemoval removal && removal.getCategories().contains(uid)) { - var operation = removal.getRemoval(output); + var operation = removal.getRemoval(layout); if (operation.isEmpty()) continue; - for (var s : operation) { - var message = String.format("mods.%s.%s.%s", groovyContainer.getModId(), registry.getName(), s); - list.add(message); - say(message); - } - return list; + return Pair.of(String.format("mods.%s.%s", groovyContainer.getModId(), registry.getName()), operation); } } } - say(String.format("Couldn't find a way to remove the targeted recipe in category %s", uid)); - return list; + return null; } - public static String getUid() { + public static String getFocusedRecipeUid() { var state = ((RecipeGuiLogicAccessor) ((RecipesGuiAccessor) JeiPlugin.jeiRuntime.getRecipesGui()).getLogic()).getState(); if (state == null) return ""; return state.getRecipeCategories().get(state.getRecipeCategoryIndex()).getUid(); @@ -113,7 +77,7 @@ public static String getUid() { * * @return ingredient groups attached to targeted recipe layout */ - public static IRecipeLayout getUnderMouse() { + public static IRecipeLayout getRecipeLayoutUnderMouse() { var layouts = ((RecipesGuiAccessor) JeiPlugin.jeiRuntime.getRecipesGui()).getRecipeLayouts(); if (layouts == null) return null; var scaledresolution = new ScaledResolution(Minecraft.getMinecraft()); @@ -128,17 +92,6 @@ public static IRecipeLayout getUnderMouse() { return null; } - /** - * Currently prints the message to the log and to chat, but perhaps this should be reworked to support appending to a specific file? - * TODO JEI this - * - * @param message message to get printed to the log - */ - public static void say(String message) { - GroovyLog.get().warn(message); - Minecraft.getMinecraft().player.sendMessage(TextCopyable.string(message, message).build()); - } - /** * @param method name of the method to call * @param params one or more parameters of the method diff --git a/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java b/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java index b63edfb0f..bcad92e96 100644 --- a/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java +++ b/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java @@ -1,16 +1,38 @@ package com.cleanroommc.groovyscript.keybind; +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.command.TextCopyable; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.JeiPlugin; import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; import mezz.jei.api.IRecipesGui; +import mezz.jei.api.gui.IRecipeLayout; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.util.text.*; import net.minecraftforge.client.settings.KeyConflictContext; import net.minecraftforge.client.settings.KeyModifier; +import org.apache.commons.lang3.tuple.Pair; import org.lwjgl.input.Keyboard; +import java.util.List; + public class RemoveRecipeKey extends GroovyScriptKeybinds.Key { + private static final ITextComponent GOLD_SEPARATOR = new TextComponentString("====================================").setStyle(new Style().setColor(TextFormatting.GOLD)); + + private static final int SHORTHAND_TRIM_LENGTH = 50; + private static final int SHORTHAND_TRIM_MARGIN = 5; + + private static final String ERROR_KEY = "key.groovyscript.remove_recipe_from_jei.unknown_category"; + private static final Style ERROR_STYLE = new Style().setColor(TextFormatting.RED); + private static final Style ERROR_COPY_STYLE = new Style().setColor(TextFormatting.GOLD); + + private String lastUid = ""; + private IRecipeLayout lastLayout; + private int combo; + private Pair> removal; + public RemoveRecipeKey() { super("remove_recipe_from_jei", KeyConflictContext.GUI, KeyModifier.CONTROL, Keyboard.KEY_X); } @@ -24,11 +46,68 @@ public boolean isValid() { return Minecraft.getMinecraft().currentScreen instanceof IRecipesGui && !JeiPlugin.jeiRuntime.getIngredientListOverlay().hasKeyboardFocus(); } + private static void missingUid(String uid) { + Minecraft.getMinecraft().player.sendMessage( + new TextComponentTranslation(ERROR_KEY, TextCopyable.string(uid, uid).build().setStyle(ERROR_COPY_STYLE)).setStyle(ERROR_STYLE)); + } + + private static void printMessage(String prefix, String shorthand) { + var msg = shorthand.length() > SHORTHAND_TRIM_LENGTH + SHORTHAND_TRIM_MARGIN + ? shorthand.substring(0, SHORTHAND_TRIM_LENGTH) + TextFormatting.RED + "..." + : shorthand; + printMessage(TextCopyable.string(String.format("%s.%s", prefix, shorthand), msg).build()); + } + + private static void printMessage(ITextComponent message) { + GroovyLog.get().debug(message.getUnformattedText()); + Minecraft.getMinecraft().player.sendMessage(message); + } + @Override public void handleKeybind() { // only actually check if this is the downpress if (Keyboard.getEventKeyState()) { - JeiRemovalHelper.getRemovalMethod(); + + var newLayout = JeiRemovalHelper.getRecipeLayoutUnderMouse(); + if (newLayout == null) return; + var newUid = JeiRemovalHelper.getFocusedRecipeUid(); + + var matchesLast = lastUid.equals(newUid) && lastLayout == newLayout; + + if (matchesLast && removal != null && !removal.getValue().isEmpty()) { + adjustCombo(); + } else { + lastUid = newUid; + lastLayout = newLayout; + combo = 0; + removal = JeiRemovalHelper.getRemovalMethod(JeiRemovalHelper.getFocusedRecipeUid(), newLayout); + } + + if (removal == null) { + missingUid(newUid); + } else { + Minecraft.getMinecraft().player.sendMessage(GOLD_SEPARATOR); + GuiScreen.setClipboardString(String.format("%s.%s", removal.getKey(), removal.getValue().get(combo))); + if (matchesLast) { + printMessage(removal.getKey(), removal.getValue().get(combo)); + } else { + for (String s : removal.getValue()) { + printMessage(removal.getKey(), s); + } + } + } } } + + private void adjustCombo() { + if (removal == null || removal.getValue().isEmpty()) { + combo = 0; + return; + } + if (GuiScreen.isShiftKeyDown()) combo--; + else combo++; + if (combo > removal.getValue().size() - 1) combo = 0; + if (combo < 0) combo = removal.getValue().size() - 1; + } + } diff --git a/src/main/resources/assets/groovyscript/lang/en_us.lang b/src/main/resources/assets/groovyscript/lang/en_us.lang index 6634bdc17..a8316b918 100644 --- a/src/main/resources/assets/groovyscript/lang/en_us.lang +++ b/src/main/resources/assets/groovyscript/lang/en_us.lang @@ -6,6 +6,8 @@ key.categories.groovyscript=GroovyScript keybind.groovyscript.reload=Reload Scripts keybind.groovyscript.remove_recipe_from_jei=Generate Recipe Removal Method (from JEI) +key.groovyscript.remove_recipe_from_jei.unknown_category=Couldn't find a way to remove the targeted recipe in category '%s' + groovyscript.jei.category.groovyscript:fluid_recipe.name=In world fluid recipes groovyscript.jei.category.groovyscript:explosion.name=Explosion recipes groovyscript.jei.category.groovyscript:burning.name=Burning recipes From afb8e06d4b57087d1af88261808fb9c5ddc963e9 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Wed, 31 Jul 2024 23:13:07 -0700 Subject: [PATCH 25/47] remove commented out code --- .../compat/mods/thaumcraft/arcane/ArcaneWorkbench.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java index ea661158f..b5c1ca471 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java @@ -80,15 +80,6 @@ public void removeAll() { return Collections.singletonList(com.buuz135.thaumicjei.category.ArcaneWorkbenchCategory.UUID); } -// @Override -// public @NotNull List getRemoval(IRecipeLayout layout) { -// var list = new ArrayList(); -// if (((RecipeLayoutAccessor) layout).getRecipeWrapper() instanceof com.buuz135.thaumicjei.category.ArcaneWorkbenchCategory.ArcaneWorkbenchWrapper wrapper) { -// list.add(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.asGroovyCode(wrapper.getRecipe().getRegistryName(), false))); -// } -// return list; -// } - @Override public @NotNull List getJEIOperations() { return ImmutableList.of(registryNameOperation(), OperationHandler.ItemOperation.outputItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation()); From ae161c164eaf9459b283c5e8e2ab14d4052a73af Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Wed, 31 Jul 2024 23:16:56 -0700 Subject: [PATCH 26/47] world of color --- .../mods/astralsorcery/starlightaltar/StarlightAltar.java | 2 +- .../compat/mods/betterwithmods/AnvilCrafting.java | 2 +- .../compat/mods/betterwithmods/IJEIRemovalIOutput.java | 2 +- .../compat/mods/compactmachines/Miniaturization.java | 6 +++--- .../compat/mods/draconicevolution/Fusion.java | 8 ++++---- .../compat/mods/jei/removal/OperationHandler.java | 6 +++--- .../groovyscript/compat/mods/roots/LifeEssence.java | 2 +- .../compat/mods/thaumcraft/arcane/ArcaneWorkbench.java | 2 +- .../cleanroommc/groovyscript/compat/vanilla/Crafting.java | 2 +- .../cleanroommc/groovyscript/keybind/RemoveRecipeKey.java | 5 ++++- 10 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/StarlightAltar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/StarlightAltar.java index 03bc1a618..9afa29d47 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/StarlightAltar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/StarlightAltar.java @@ -30,7 +30,7 @@ public class StarlightAltar extends VirtualizedRegistry implements IJEIRemoval.Default { private static List registryNameRemovalMethod(AbstractAltarRecipe recipe) { - return Collections.singletonList(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.asGroovyCode(recipe.getNativeRecipe().getRegistryName(), false))); + return Collections.singletonList(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.asGroovyCode(recipe.getNativeRecipe().getRegistryName(), true))); } private static OperationHandler.IOperation discoveryOperation() { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilCrafting.java index 32c34ea40..0878107e3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilCrafting.java @@ -36,7 +36,7 @@ private static OperationHandler.IOperation registryNameOperation() { return new OperationHandler.WrapperOperation<>(ICraftingRecipeWrapper.class, wrapper -> wrapper.getRegistryName() == null ? Collections.emptyList() - : Collections.singletonList(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.asGroovyCode(wrapper.getRegistryName(), false)))); + : Collections.singletonList(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.asGroovyCode(wrapper.getRegistryName(), true)))); } @RecipeBuilderDescription(example = { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/IJEIRemovalIOutput.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/IJEIRemovalIOutput.java index 243babc1d..e2ca88f41 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/IJEIRemovalIOutput.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/IJEIRemovalIOutput.java @@ -14,7 +14,7 @@ public interface IJEIRemovalIOutput extends IJEIRemoval.Default { static OperationHandler.SlotOperation getDefaultIOutput() { return new OperationHandler.ClassSlotOperation<>( IOutput.class, true, - (stack, all) -> GroovyScriptCodeConverter.getSingleItemStack(stack.getOutput(), false, false)); + (stack, all) -> GroovyScriptCodeConverter.getSingleItemStack(stack.getOutput(), true, false)); } @Override diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/Miniaturization.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/Miniaturization.java index 70730d68d..c8f256b86 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/Miniaturization.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/Miniaturization.java @@ -30,10 +30,10 @@ public class Miniaturization extends VirtualizedRegistry(MultiblockRecipeWrapper.class, wrapper -> { var builder = ImmutableList.builder(); - builder.add(JeiRemovalHelper.format("removeByCatalyst", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getCatalystStack(), false))); - builder.add(JeiRemovalHelper.format("removeByOutput", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getTargetStack(), false))); + builder.add(JeiRemovalHelper.format("removeByCatalyst", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getCatalystStack(), true))); + builder.add(JeiRemovalHelper.format("removeByOutput", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getTargetStack(), true))); for (ItemStack stack : wrapper.recipe.getRequiredItemStacks()) { - builder.add(JeiRemovalHelper.format("removeByInput", GroovyScriptCodeConverter.getSingleItemStack(stack, false))); + builder.add(JeiRemovalHelper.format("removeByInput", GroovyScriptCodeConverter.getSingleItemStack(stack, true))); } return builder.build(); }); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/Fusion.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/Fusion.java index 5c9bd12cc..b84258e54 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/Fusion.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/Fusion.java @@ -35,15 +35,15 @@ private static OperationHandler.IOperation wrapperOperation() { return new OperationHandler.WrapperOperation<>(FusionRecipeWrapper.class, wrapper -> { var builder = ImmutableList.builder(); if (!wrapper.recipe.getRecipeCatalyst().isEmpty()) { - builder.add(JeiRemovalHelper.format("removeByCatalyst", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getRecipeCatalyst(), false))); + builder.add(JeiRemovalHelper.format("removeByCatalyst", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getRecipeCatalyst(), true))); } var output = wrapper.recipe.getRecipeOutput(wrapper.recipe.getRecipeCatalyst()); if (!output.isEmpty()) { - builder.add(JeiRemovalHelper.format("removeByOutput", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getRecipeOutput(wrapper.recipe.getRecipeCatalyst()), false))); + builder.add(JeiRemovalHelper.format("removeByOutput", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getRecipeOutput(wrapper.recipe.getRecipeCatalyst()), true))); } for (var ingredient : wrapper.recipe.getRecipeIngredients()) { if (ingredient instanceof String ore) { - builder.add(JeiRemovalHelper.format("removeByInput", GroovyScriptCodeConverter.asGroovyCode(ore, false))); + builder.add(JeiRemovalHelper.format("removeByInput", GroovyScriptCodeConverter.asGroovyCode(ore, true))); } else { ItemStack stack = null; if (ingredient instanceof ItemStack is) stack = is; @@ -51,7 +51,7 @@ private static OperationHandler.IOperation wrapperOperation() { else if (ingredient instanceof Block b) stack = new ItemStack(b); if (stack != null) { - builder.add(JeiRemovalHelper.format("removeByInput", GroovyScriptCodeConverter.getSingleItemStack(stack, false))); + builder.add(JeiRemovalHelper.format("removeByInput", GroovyScriptCodeConverter.getSingleItemStack(stack, true))); } } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java index 46e2fdfd3..8c9d811bb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java @@ -372,7 +372,7 @@ protected ItemOperation() { super(VanillaTypes.ITEM, true, (stack, all) -> { var oreDict = convertToOreDict(all); - return oreDict.isEmpty() ? GroovyScriptCodeConverter.getSingleItemStack(stack, false, false) : oreDict; + return oreDict.isEmpty() ? GroovyScriptCodeConverter.getSingleItemStack(stack, true, false) : oreDict; }); } @@ -383,7 +383,7 @@ protected ItemOperation() { protected static String convertToOreDict(List ingredients) { if (JeiPlugin.jeiHelpers.getStackHelper() instanceof StackHelper stackHelper) { var dict = stackHelper.getOreDictEquivalent(ingredients); - return dict == null ? "" : GroovyScriptCodeConverter.asGroovyCode(dict, false); + return dict == null ? "" : GroovyScriptCodeConverter.asGroovyCode(dict, true); } return ""; } @@ -412,7 +412,7 @@ public boolean isIgnored(@NotNull Map.Entry { protected FluidOperation() { - super(VanillaTypes.FLUID, true, (stack, all) -> GroovyScriptCodeConverter.getSingleFluidStack(stack, false, false)); + super(VanillaTypes.FLUID, true, (stack, all) -> GroovyScriptCodeConverter.getSingleFluidStack(stack, true, false)); } /** diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/LifeEssence.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/LifeEssence.java index f93c39372..e48e54814 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/LifeEssence.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/LifeEssence.java @@ -31,7 +31,7 @@ private static OperationHandler.IOperation entityOperation() { var tag = wrapper.recipe.getEssenceStack().getTagCompound(); if (tag == null) return Collections.emptyList(); // only real way to access the entity ID here - return Collections.singletonList(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.formatGenericHandler("entity", tag.getString("id"), false))); + return Collections.singletonList(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.formatGenericHandler("entity", tag.getString("id"), true))); }); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java index b5c1ca471..beb084cde 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java @@ -31,7 +31,7 @@ private static OperationHandler.IOperation registryNameOperation() { return new OperationHandler.WrapperOperation<>(com.buuz135.thaumicjei.category.ArcaneWorkbenchCategory.ArcaneWorkbenchWrapper.class, wrapper -> wrapper.getRecipe().getRegistryName() == null ? Collections.emptyList() - : Collections.singletonList(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.asGroovyCode(wrapper.getRecipe().getRegistryName(), false)))); + : Collections.singletonList(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.asGroovyCode(wrapper.getRecipe().getRegistryName(), true)))); } public static final ResourceLocation DEFAULT = new ResourceLocation(""); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Crafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Crafting.java index 5e5964bcd..b465e7239 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Crafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Crafting.java @@ -39,7 +39,7 @@ private static OperationHandler.IOperation registryNameOperation() { return new OperationHandler.WrapperOperation<>(ICraftingRecipeWrapper.class, wrapper -> wrapper.getRegistryName() == null ? Collections.emptyList() - : Collections.singletonList(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.asGroovyCode(wrapper.getRegistryName(), false)))); + : Collections.singletonList(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.asGroovyCode(wrapper.getRegistryName(), true)))); } public void setFallback(char key, IIngredient ingredient) { diff --git a/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java b/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java index bcad92e96..27f294e03 100644 --- a/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java +++ b/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java @@ -87,7 +87,10 @@ public void handleKeybind() { missingUid(newUid); } else { Minecraft.getMinecraft().player.sendMessage(GOLD_SEPARATOR); - GuiScreen.setClipboardString(String.format("%s.%s", removal.getKey(), removal.getValue().get(combo))); + + var text = TextFormatting.getTextWithoutFormattingCodes(String.format("%s.%s", removal.getKey(), removal.getValue().get(combo))); + if (text != null) GuiScreen.setClipboardString(text); + if (matchesLast) { printMessage(removal.getKey(), removal.getValue().get(combo)); } else { From e6596d354c04fc0046fbea506696b6e08a8ab371 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Wed, 31 Jul 2024 23:21:23 -0700 Subject: [PATCH 27/47] increase trim length, store indicator to static final --- .../cleanroommc/groovyscript/keybind/RemoveRecipeKey.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java b/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java index 27f294e03..5015820e7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java +++ b/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java @@ -21,8 +21,9 @@ public class RemoveRecipeKey extends GroovyScriptKeybinds.Key { private static final ITextComponent GOLD_SEPARATOR = new TextComponentString("====================================").setStyle(new Style().setColor(TextFormatting.GOLD)); - private static final int SHORTHAND_TRIM_LENGTH = 50; + private static final int SHORTHAND_TRIM_LENGTH = 60; private static final int SHORTHAND_TRIM_MARGIN = 5; + private static final String SHORTHAND_INDICATOR = TextFormatting.RED + "..."; private static final String ERROR_KEY = "key.groovyscript.remove_recipe_from_jei.unknown_category"; private static final Style ERROR_STYLE = new Style().setColor(TextFormatting.RED); @@ -53,7 +54,7 @@ private static void missingUid(String uid) { private static void printMessage(String prefix, String shorthand) { var msg = shorthand.length() > SHORTHAND_TRIM_LENGTH + SHORTHAND_TRIM_MARGIN - ? shorthand.substring(0, SHORTHAND_TRIM_LENGTH) + TextFormatting.RED + "..." + ? shorthand.substring(0, SHORTHAND_TRIM_LENGTH) + SHORTHAND_INDICATOR : shorthand; printMessage(TextCopyable.string(String.format("%s.%s", prefix, shorthand), msg).build()); } From 78afd8f3417b7899febe2bfb0bd4f9d7e7d23918 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Wed, 31 Jul 2024 23:22:19 -0700 Subject: [PATCH 28/47] move thaumic jei dep to deobf --- dependencies.gradle | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 5df5ab0f9..0a8a2b7cd 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -95,6 +95,7 @@ final def mod_dependencies = [ 'roots-246183:3905074' : [project.debug_roots], 'rustic-256141:3107974' : [project.debug_rustic], 'thaumcraft-223628:2629023' : [project.debug_thaum], + 'thaumic_jei-285492:2705304' : [project.debug_thaum], 'cofh_core-69162:2920433' : [project.debug_thermal], 'cofh_world-271384:2920434' : [project.debug_thermal], 'thermal_expansion-69163:2926431' : [project.debug_thermal], @@ -131,10 +132,6 @@ dependencies { } } - if (project.debug_thaum.toBoolean()) { - runtimeOnly 'curse.maven:thaumic_jei-285492:2705304' - } - compileOnly 'com.enderio:endercore:0.5.78' compileOnly 'crazypants:enderio:5.3.72' if (project.debug_enderio.toBoolean()) { From 19c53f6f6659e4b489a2c1d6cf2c30532eed7149 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Wed, 31 Jul 2024 23:31:40 -0700 Subject: [PATCH 29/47] remove unused accessor method --- .../groovyscript/core/mixin/jei/RecipeLayoutAccessor.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipeLayoutAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipeLayoutAccessor.java index d9ae2dec6..82e220c22 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipeLayoutAccessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/jei/RecipeLayoutAccessor.java @@ -1,20 +1,13 @@ package com.cleanroommc.groovyscript.core.mixin.jei; -import mezz.jei.api.gui.IGuiIngredientGroup; -import mezz.jei.api.recipe.IIngredientType; import mezz.jei.api.recipe.IRecipeWrapper; import mezz.jei.gui.recipes.RecipeLayout; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -import java.util.Map; - @Mixin(value = RecipeLayout.class, remap = false) public interface RecipeLayoutAccessor { - @Accessor("guiIngredientGroups") - Map getGuiIngredientGroups(); - @Accessor("recipeWrapper") IRecipeWrapper getRecipeWrapper(); From 37e095069ba6e7caeefa1c177d2760c535f31e56 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 1 Aug 2024 11:01:26 -0700 Subject: [PATCH 30/47] make thaumic jei not required --- .../groovyscript/compat/mods/thaumcraft/Crucible.java | 6 +++++- .../compat/mods/thaumcraft/IJEIRemovalAspect.java | 3 +++ .../compat/mods/thaumcraft/InfusionCrafting.java | 6 +++++- .../compat/mods/thaumcraft/arcane/ArcaneWorkbench.java | 8 +++++++- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java index 6d5be93ed..8fbea3cbb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java @@ -1,5 +1,6 @@ package com.cleanroommc.groovyscript.compat.mods.thaumcraft; +import com.buuz135.thaumicjei.category.CrucibleCategory; import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; @@ -12,6 +13,7 @@ import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.common.Optional; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -26,6 +28,7 @@ import java.util.stream.Collectors; @RegistryDescription +@Optional.Interface(modid = "thaumicjei", iface = "com.cleanroommc.groovyscript.compat.mods.thaumcraft.IJEIRemovalAspect") public class Crucible extends VirtualizedRegistry implements IJEIRemovalAspect { @RecipeBuilderDescription(example = @Example(".researchKey('UNLOCKALCHEMY@3').catalyst(item('minecraft:rotten_flesh')).output(item('minecraft:gold_ingot')).aspect(aspect('metallum') * 10)")) @@ -123,8 +126,9 @@ public void removeAll() { } @Override + @Optional.Method(modid = "thaumicjei") public @NotNull Collection getCategories() { - return Collections.singletonList(com.buuz135.thaumicjei.category.CrucibleCategory.UUID); + return Collections.singletonList(CrucibleCategory.UUID); } public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/IJEIRemovalAspect.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/IJEIRemovalAspect.java index a2a9f2d88..4551a1bed 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/IJEIRemovalAspect.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/IJEIRemovalAspect.java @@ -4,12 +4,14 @@ import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.google.common.collect.ImmutableList; +import net.minecraftforge.fml.common.Optional; import org.jetbrains.annotations.NotNull; import java.util.List; public interface IJEIRemovalAspect extends IJEIRemoval.Default { + @Optional.Method(modid = "thaumicjei") static OperationHandler.SlotOperation getDefaultAspect() { return new OperationHandler.IngredientSlotOperation<>( ThaumcraftJEIPlugin.ASPECT_LIST, false, @@ -17,6 +19,7 @@ static OperationHandler.SlotOperation getDefaultAspect() { } @Override + @Optional.Method(modid = "thaumicjei") default @NotNull List getJEIOperations() { return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation(), getDefaultAspect()); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfusionCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfusionCrafting.java index 77e0700b7..5e77df59b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfusionCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfusionCrafting.java @@ -1,5 +1,6 @@ package com.cleanroommc.groovyscript.compat.mods.thaumcraft; +import com.buuz135.thaumicjei.category.InfusionCategory; import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; @@ -13,6 +14,7 @@ import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.common.Optional; import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -29,6 +31,7 @@ import static thaumcraft.common.config.ConfigRecipes.compileGroups; @RegistryDescription +@Optional.Interface(modid = "thaumicjei", iface = "com.cleanroommc.groovyscript.compat.mods.thaumcraft.IJEIRemovalAspect") public class InfusionCrafting extends VirtualizedRegistry> implements IJEIRemovalAspect { @RecipeBuilderDescription(example = @Example(".researchKey('UNLOCKALCHEMY@3').mainInput(item('minecraft:gunpowder')).output(item('minecraft:gold_ingot')).aspect(aspect('terra') * 20).aspect('ignis', 30).input(crystal('aer')).input(crystal('ignis')).input(crystal('aqua')).input(crystal('terra')).input(crystal('ordo')).instability(10)")) @@ -126,8 +129,9 @@ public void removeAll() { } @Override + @Optional.Method(modid = "thaumicjei") public @NotNull Collection getCategories() { - return Collections.singletonList(com.buuz135.thaumicjei.category.InfusionCategory.UUID); + return Collections.singletonList(InfusionCategory.UUID); } public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java index beb084cde..a2bcce3b0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java @@ -1,5 +1,6 @@ package com.cleanroommc.groovyscript.compat.mods.thaumcraft.arcane; +import com.buuz135.thaumicjei.category.ArcaneWorkbenchCategory; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; @@ -15,6 +16,7 @@ import com.google.common.collect.ImmutableList; import net.minecraft.item.crafting.IRecipe; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.common.Optional; import net.minecraftforge.fml.common.registry.ForgeRegistries; import org.jetbrains.annotations.NotNull; import thaumcraft.api.crafting.IArcaneRecipe; @@ -25,8 +27,10 @@ import java.util.stream.Collectors; @RegistryDescription +@Optional.Interface(modid = "thaumicjei", iface = "com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval$Default") public class ArcaneWorkbench extends NamedRegistry implements IJEIRemoval.Default { + @Optional.Method(modid = "thaumicjei") private static OperationHandler.IOperation registryNameOperation() { return new OperationHandler.WrapperOperation<>(com.buuz135.thaumicjei.category.ArcaneWorkbenchCategory.ArcaneWorkbenchWrapper.class, wrapper -> wrapper.getRecipe().getRegistryName() == null @@ -76,11 +80,13 @@ public void removeAll() { } @Override + @Optional.Method(modid = "thaumicjei") public @NotNull Collection getCategories() { - return Collections.singletonList(com.buuz135.thaumicjei.category.ArcaneWorkbenchCategory.UUID); + return Collections.singletonList(ArcaneWorkbenchCategory.UUID); } @Override + @Optional.Method(modid = "thaumicjei") public @NotNull List getJEIOperations() { return ImmutableList.of(registryNameOperation(), OperationHandler.ItemOperation.outputItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation()); } From 85ba65723b6e45218edd60a946b46e6e12744ff9 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 1 Aug 2024 11:02:31 -0700 Subject: [PATCH 31/47] color gas, infusion, and aspects --- .../groovyscript/compat/mods/mekanism/MetallurgicInfuser.java | 2 +- .../compat/mods/mekanism/recipe/IJEIRemovalGas.java | 2 +- .../groovyscript/compat/mods/thaumcraft/IJEIRemovalAspect.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/MetallurgicInfuser.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/MetallurgicInfuser.java index 3dd775af9..1c90ebdba 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/MetallurgicInfuser.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/MetallurgicInfuser.java @@ -28,7 +28,7 @@ public class MetallurgicInfuser extends VirtualizedMekanismRegistry { private static OperationHandler.IOperation infuseTypeOperation() { - return new OperationHandler.WrapperOperation<>(MetallurgicInfuserRecipeWrapper.class, wrapper -> Collections.singletonList(JeiRemovalHelper.format("removeByInput", Mekanism.asGroovyCode(((MetallurgicInfuserRecipe) wrapper.getRecipe()).getInput().infuse.getType(), false)))); + return new OperationHandler.WrapperOperation<>(MetallurgicInfuserRecipeWrapper.class, wrapper -> Collections.singletonList(JeiRemovalHelper.format("removeByInput", Mekanism.asGroovyCode(((MetallurgicInfuserRecipe) wrapper.getRecipe()).getInput().infuse.getType(), true)))); } public MetallurgicInfuser() { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/IJEIRemovalGas.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/IJEIRemovalGas.java index 3a1de9bb3..b81473863 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/IJEIRemovalGas.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/IJEIRemovalGas.java @@ -14,7 +14,7 @@ public interface IJEIRemovalGas extends IJEIRemoval.Default { static OperationHandler.SlotOperation getDefaultGas() { return new OperationHandler.IngredientSlotOperation<>( MekanismJEI.TYPE_GAS, true, - (stack, all) -> Mekanism.getSingleGasStack(stack, false)); + (stack, all) -> Mekanism.getSingleGasStack(stack, true)); } @Override diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/IJEIRemovalAspect.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/IJEIRemovalAspect.java index 4551a1bed..ce63eec59 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/IJEIRemovalAspect.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/IJEIRemovalAspect.java @@ -15,7 +15,7 @@ public interface IJEIRemovalAspect extends IJEIRemoval.Default { static OperationHandler.SlotOperation getDefaultAspect() { return new OperationHandler.IngredientSlotOperation<>( ThaumcraftJEIPlugin.ASPECT_LIST, false, - (stack, all) -> stack.size() == 0 ? "" : Thaumcraft.asGroovyCode(stack.getAspects()[0], false)); + (stack, all) -> stack.size() == 0 ? "" : Thaumcraft.asGroovyCode(stack.getAspects()[0], true)); } @Override From a4ff5ade587006dcab2fbafc3680c642ae4178bc Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 1 Aug 2024 11:05:01 -0700 Subject: [PATCH 32/47] add comment indicating thaumic jei --- .../groovyscript/compat/mods/thaumcraft/Crucible.java | 3 +++ .../groovyscript/compat/mods/thaumcraft/InfusionCrafting.java | 3 +++ .../compat/mods/thaumcraft/arcane/ArcaneWorkbench.java | 3 +++ 3 files changed, 9 insertions(+) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java index 8fbea3cbb..e692d4a7c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java @@ -125,6 +125,9 @@ public void removeAll() { } } + /** + * Note that this is added by the third-party compat mod thaumicjei, not base Thaumcraft. + */ @Override @Optional.Method(modid = "thaumicjei") public @NotNull Collection getCategories() { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfusionCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfusionCrafting.java index 5e77df59b..3c7534c77 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfusionCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfusionCrafting.java @@ -128,6 +128,9 @@ public void removeAll() { } } + /** + * Note that this is added by the third-party compat mod thaumicjei, not base Thaumcraft. + */ @Override @Optional.Method(modid = "thaumicjei") public @NotNull Collection getCategories() { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java index a2bcce3b0..76019bd79 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java @@ -79,6 +79,9 @@ public void removeAll() { } } + /** + * Note that this is added by the third-party compat mod thaumicjei, not base Thaumcraft. + */ @Override @Optional.Method(modid = "thaumicjei") public @NotNull Collection getCategories() { From 79f2b723ef2183ba1c0194fdc504d0f0d29156bb Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 1 Aug 2024 11:05:28 -0700 Subject: [PATCH 33/47] use optional for Immersive Petroleum's Distillation --- .../compat/mods/immersivepetroleum/Distillation.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivepetroleum/Distillation.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivepetroleum/Distillation.java index 815c72bd5..7dbcf712e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivepetroleum/Distillation.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivepetroleum/Distillation.java @@ -13,6 +13,7 @@ import it.unimi.dsi.fastutil.floats.FloatArrayList; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fml.common.Optional; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -21,6 +22,7 @@ import java.util.Collections; @RegistryDescription +@Optional.Interface(modid = "justenoughpetroleum", iface = "com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval$Default") public class Distillation extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { @@ -107,6 +109,7 @@ public void removeAll() { * {@code justenoughpetroleum.DistillationCategory.UID} */ @Override + @Optional.Method(modid = "justenoughpetroleum") public @NotNull Collection getCategories() { return Collections.singletonList("immersivepetroleum.distillation"); } From 188992154920091901aa2bd7881903bc2d3eba2f Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 1 Aug 2024 11:17:18 -0700 Subject: [PATCH 34/47] add format string --- .../helper/ingredient/GroovyScriptCodeConverter.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java b/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java index c49debd41..4b1bcddc3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java +++ b/src/main/java/com/cleanroommc/groovyscript/helper/ingredient/GroovyScriptCodeConverter.java @@ -33,6 +33,17 @@ public static String formatNumber(int number, boolean colored) { return builder.toString(); } + public static String formatString(String target, boolean colored) { + StringBuilder builder = new StringBuilder(); + if (colored) builder.append(TextFormatting.GRAY); + builder.append("'"); + if (colored) builder.append(TextFormatting.AQUA); + builder.append(target); + if (colored) builder.append(TextFormatting.GRAY); + builder.append("'"); + return builder.toString(); + } + public static String formatGenericHandler(String handler, String target, boolean colored) { StringBuilder builder = new StringBuilder(); if (colored) builder.append(TextFormatting.DARK_GREEN); From dfd9b70919bb51517245970262deca73c9d90b0c Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 1 Aug 2024 11:18:31 -0700 Subject: [PATCH 35/47] add chisel carving compat --- .../compat/mods/chisel/Carving.java | 31 +++++++++++++++++-- .../groovyscript/core/LateMixin.java | 1 + .../chisel/ChiselRecipeWrapperAccessor.java | 14 +++++++++ .../resources/mixin.groovyscript.chisel.json | 10 ++++++ 4 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/cleanroommc/groovyscript/core/mixin/chisel/ChiselRecipeWrapperAccessor.java create mode 100644 src/main/resources/mixin.groovyscript.chisel.json diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/chisel/Carving.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/chisel/Carving.java index eae973237..1fb18c5c6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/chisel/Carving.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/chisel/Carving.java @@ -6,24 +6,32 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.core.mixin.chisel.ChiselRecipeWrapperAccessor; import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; import com.cleanroommc.groovyscript.registry.AbstractReloadableStorage; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; import net.minecraft.util.SoundEvent; import org.apache.commons.lang3.tuple.Pair; +import org.jetbrains.annotations.NotNull; import team.chisel.api.carving.CarvingUtils; import team.chisel.api.carving.ICarvingGroup; import team.chisel.api.carving.ICarvingRegistry; +import team.chisel.common.integration.jei.ChiselRecipeWrapper; import java.util.Collection; +import java.util.Collections; +import java.util.List; @RegistryDescription( category = RegistryDescription.Category.ENTRIES, admonition = @Admonition(value = "groovyscript.wiki.chisel.carving.note", type = Admonition.Type.DANGER, format = Admonition.Format.STANDARD), - isFullyDocumented = false // TODO fully document Chisel Carving -) -public class Carving extends VirtualizedRegistry> { + isFullyDocumented = false +) // TODO fully document Chisel Carving +public class Carving extends VirtualizedRegistry> implements IJEIRemoval.Default { private final AbstractReloadableStorage groupStorage = new AbstractReloadableStorage<>(); private final AbstractReloadableStorage> soundStorage = new AbstractReloadableStorage<>(); @@ -35,6 +43,10 @@ private static ICarvingRegistry getRegistry() { return CarvingUtils.getChiselRegistry(); } + private static OperationHandler.IOperation groupNameOperation() { + return new OperationHandler.WrapperOperation<>(ChiselRecipeWrapper.class, wrapper -> Collections.singletonList(JeiRemovalHelper.format("removeGroup", GroovyScriptCodeConverter.formatString(((ChiselRecipeWrapperAccessor) wrapper).getGroup().getName(), true)))); + } + public static CarvingGroup carvingGroup(String group) { return new CarvingGroup(group); } @@ -133,6 +145,19 @@ public void removeAll() { }); } + /** + * @see team.chisel.common.integration.jei.ChiselJEIPlugin + */ + @Override + public @NotNull Collection getCategories() { + return Collections.singletonList("chisel.chiseling"); + } + + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(groupNameOperation()); + } + public static class CarvingGroup { diff --git a/src/main/java/com/cleanroommc/groovyscript/core/LateMixin.java b/src/main/java/com/cleanroommc/groovyscript/core/LateMixin.java index f57115613..aea5e1d94 100644 --- a/src/main/java/com/cleanroommc/groovyscript/core/LateMixin.java +++ b/src/main/java/com/cleanroommc/groovyscript/core/LateMixin.java @@ -18,6 +18,7 @@ public class LateMixin implements ILateMixinLoader { "bloodmagic", "botania", "calculator", + "chisel", "draconicevolution", "enderio", "essentialcraft", diff --git a/src/main/java/com/cleanroommc/groovyscript/core/mixin/chisel/ChiselRecipeWrapperAccessor.java b/src/main/java/com/cleanroommc/groovyscript/core/mixin/chisel/ChiselRecipeWrapperAccessor.java new file mode 100644 index 000000000..471512dde --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/core/mixin/chisel/ChiselRecipeWrapperAccessor.java @@ -0,0 +1,14 @@ +package com.cleanroommc.groovyscript.core.mixin.chisel; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import team.chisel.api.carving.ICarvingGroup; +import team.chisel.common.integration.jei.ChiselRecipeWrapper; + +@Mixin(value = ChiselRecipeWrapper.class, remap = false) +public interface ChiselRecipeWrapperAccessor { + + @Accessor("group") + ICarvingGroup getGroup(); + +} diff --git a/src/main/resources/mixin.groovyscript.chisel.json b/src/main/resources/mixin.groovyscript.chisel.json new file mode 100644 index 000000000..3c77c9523 --- /dev/null +++ b/src/main/resources/mixin.groovyscript.chisel.json @@ -0,0 +1,10 @@ +{ + "package": "com.cleanroommc.groovyscript.core.mixin.chisel", + "refmap": "mixins.groovyscript.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "mixins": [ + "ChiselRecipeWrapperAccessor" + ] +} \ No newline at end of file From e0762cc8c3ca8c3493c270d45111ccba4f2a2826 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 1 Aug 2024 16:59:40 -0700 Subject: [PATCH 36/47] disable exact method --- .../groovyscript/compat/mods/jei/removal/OperationHandler.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java index 8c9d811bb..4762ca69f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java @@ -26,6 +26,7 @@ public class OperationHandler { private static final String EXACT_METHOD_NAME = "removeByExactInput"; + private static final boolean IS_EXACT_METHOD_ENABLED = false; /** * Varargs variant of {@link #removalOptions(IRecipeLayout, List)}. @@ -51,7 +52,7 @@ public static List removalOptions(IRecipeLayout layout, List for (var operation : operations) operation.parse(layout, removing, exactInput); var builder = ImmutableList.builder(); - if (exactInput.size() > 1) builder.add(JeiRemovalHelper.format(EXACT_METHOD_NAME, exactInput)); + if (IS_EXACT_METHOD_ENABLED && exactInput.size() > 1) builder.add(JeiRemovalHelper.format(EXACT_METHOD_NAME, exactInput)); builder.addAll(removing.stream().distinct().sorted().collect(Collectors.toList())); return builder.build(); } From 37bb1778ead6e9399f3476c042ace5ecf2bc3956 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 1 Aug 2024 17:11:57 -0700 Subject: [PATCH 37/47] add inputItemOperation for ignoring all outputs --- .../mods/jei/removal/OperationHandler.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java index 4762ca69f..2c0d3e043 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java @@ -11,7 +11,6 @@ import mezz.jei.startup.StackHelper; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; -import org.jetbrains.annotations.NotNull; import javax.annotation.ParametersAreNonnullByDefault; import java.util.ArrayList; @@ -396,14 +395,26 @@ public static ISlotOperation defaultItemOperation() { return new ItemOperation(); } + /** + * @return an {@link ItemOperation} that ignores all output slots. + */ + public static IOperation inputItemOperation() { + return new ItemOperation() { + @Override + public boolean isIgnored(Map.Entry> slot) { + return isOutput(slot); + } + }; + } + /** * @return an {@link ItemOperation} that ignores all input slots. */ public static IOperation outputItemOperation() { return new ItemOperation() { @Override - public boolean isIgnored(@NotNull Map.Entry> slot) { - return slot.getValue().isInput(); + public boolean isIgnored(Map.Entry> slot) { + return !isOutput(slot); } }; } From caffbf9f9c6cfedac771b4a587b2f27c7d97f4d0 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 1 Aug 2024 22:57:29 -0700 Subject: [PATCH 38/47] add include to pair with exclude --- .../compat/mods/jei/removal/IJEIRemoval.java | 18 +++++++++++++ .../mods/jei/removal/OperationHandler.java | 27 ++++++++++++++----- 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/IJEIRemoval.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/IJEIRemoval.java index 8c4fe0a59..99a4243e6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/IJEIRemoval.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/IJEIRemoval.java @@ -57,6 +57,24 @@ public interface IJEIRemoval { */ interface Default extends IJEIRemoval { + /** + * A shorthand method that modifies the default operations so each + * of the default operations includes the provided slots. + *

+ * Should be used inside {@link #getJEIOperations()} to provide the return value. + * + * @param included all slots to be included + * @return a list if operations with the given slots included + * @see OperationHandler#defaultOperations() + */ + static List includeSlots(int... included) { + var operations = OperationHandler.defaultOperations(); + for (var operation : operations) { + if (operation instanceof OperationHandler.ISlotOperation op) op.include(included); + } + return operations; + } + /** * A shorthand method that modifies the default operations so each * of the default operations excludes the provided slots. diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java index 2c0d3e043..f6a496ea6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java @@ -89,6 +89,13 @@ public interface IOperation { */ public interface ISlotOperation extends IOperation { + /** + * Include all provided slot numbers to be evaluated. If this is called, {@link #exclude(int...)} should be ignored. + * + * @param ints all slots to be included + */ + ISlotOperation include(int... ints); + /** * Excludes all provided slot numbers from being evaluated. * Some slots cannot be parsed properly, are superfluous, contain helper items unrelated to the recipe, @@ -177,12 +184,19 @@ public abstract static class BaseSlotOperation implements ISlotOperation included = new ArrayList<>(); protected final List excluded = new ArrayList<>(); protected final List reallyInputs = new ArrayList<>(); protected final List reallyOutputs = new ArrayList<>(); protected String inputMethodName = DEFAULT_INPUT_METHOD_NAME; protected String outputMethodName = DEFAULT_OUTPUT_METHOD_NAME; + @Override + public BaseSlotOperation include(int... ints) { + for (var i : ints) this.included.add(i); + return this; + } + @Override public BaseSlotOperation exclude(int... ints) { for (var i : ints) this.excluded.add(i); @@ -215,13 +229,16 @@ public BaseSlotOperation output(String name) { /** * Checks if the slot should be skipped. - * By default, checks the {@link #excluded} list and if the slot contains no ingredients. + * If the slot has no ingredients it is automatically skipped. + * If {@link #included} is empty, checks the {@link #excluded} list and if the slot contains no ingredients. + * Otherwise, if the slot is a member of the {@link #included} list the provided slot will be included. * * @param slot the entry slot being parsed * @return if the slot should be ignored */ protected boolean isIgnored(Map.Entry> slot) { - return this.excluded.contains(slot.getKey()) || slot.getValue().getAllIngredients().isEmpty(); + if (slot.getValue().getAllIngredients().isEmpty()) return true; + return this.included.isEmpty() ? this.excluded.contains(slot.getKey()) : !this.included.contains(slot.getKey()); } /** @@ -232,8 +249,7 @@ protected boolean isIgnored(Map.Entry> slot * @return if the slot is an input */ protected boolean isInput(Map.Entry> slot) { - if (this.reallyInputs.contains(slot.getKey())) return true; - return slot.getValue().isInput(); + return this.reallyInputs.contains(slot.getKey()) || slot.getValue().isInput(); } @@ -245,8 +261,7 @@ protected boolean isInput(Map.Entry> slot) * @return if the slot is an output */ protected boolean isOutput(Map.Entry> slot) { - if (this.reallyOutputs.contains(slot.getKey())) return true; - return !isInput(slot); + return this.reallyOutputs.contains(slot.getKey()) || !isInput(slot); } /** From 37cc64caf23bcab91e833c6388f5b1ba660119ca Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 1 Aug 2024 22:57:53 -0700 Subject: [PATCH 39/47] extract slot focused ingredient logic --- .../mods/jei/removal/OperationHandler.java | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java index f6a496ea6..6b51556db 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java @@ -12,6 +12,7 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; +import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; import java.util.ArrayList; import java.util.Arrays; @@ -65,6 +66,22 @@ public static List defaultOperations() { return ImmutableList.of(ItemOperation.defaultItemOperation(), FluidOperation.defaultFluidOperation()); } + /** + * Check the displayed ingredient first, otherwise try to use the first of all ingredients. + * If getAllIngredients is empty, return null. + * Use of this should contain null checks. + * + * @param slot the gui ingredient slot the ingredient should be gotten from + * @param the type of the gui ingredient + * @return the displayed ingredient, if there are multiple then the first of the list, otherwise null. + */ + @Nullable + public static T getIngredientFromSlot(IGuiIngredient slot) { + var stack = slot.getDisplayedIngredient(); + if (stack == null && !slot.getAllIngredients().isEmpty()) stack = slot.getAllIngredients().get(0); + return stack; + } + /** * Base operations requirement, merely requires that the implementing classes contain a {@link #parse(IRecipeLayout, List, List)} method. */ @@ -308,12 +325,8 @@ public void parse(IRecipeLayout layout, List removing, List exac for (var slot : getGuiIngredients(layout).entrySet()) { if (isIgnored(slot)) continue; - // check the displayed ingredient first, otherwise try to use the first of all ingredients. - var stack = slot.getValue().getDisplayedIngredient(); - if (stack == null) { - stack = slot.getValue().getAllIngredients().get(0); - if (stack == null) continue; - } + var stack = getIngredientFromSlot(slot.getValue()); + if (stack == null) continue; var identity = function(stack, slot.getValue().getAllIngredients()); if (this.hasExactInput && !isOutput(slot)) exactInput.add(identity); From 6a0c3da32aece02a12a206c3cb3350537f2025de Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 1 Aug 2024 23:12:43 -0700 Subject: [PATCH 40/47] go through an ensure methods exist --- .../compat/inworldcrafting/FluidToBlock.java | 7 ++++++ .../compat/inworldcrafting/FluidToFluid.java | 7 ++++++ .../compat/inworldcrafting/FluidToItem.java | 7 ++++++ .../compat/mods/aetherlegacy/Enchanter.java | 7 ++++++ .../compat/mods/aetherlegacy/Freezer.java | 7 ++++++ .../compat/mods/alchemistry/Dissolver.java | 6 +++++ .../mods/appliedenergistics2/Inscriber.java | 6 +++++ .../starlightaltar/StarlightAltar.java | 2 +- .../compat/mods/avaritia/Compressor.java | 7 ++++++ .../compat/mods/avaritia/ExtremeCrafting.java | 2 +- .../mods/betterwithmods/AnvilCrafting.java | 4 ++- .../compat/mods/bloodmagic/AlchemyArray.java | 9 +++++++ .../compat/mods/botania/ElvenTrade.java | 7 ++++++ .../compat/mods/botania/ManaInfusion.java | 8 ++++-- .../compat/mods/botania/Orechid.java | 2 +- .../compat/mods/enderio/AlloySmelter.java | 5 ++++ .../compat/mods/enderio/SagMill.java | 2 +- .../compat/mods/enderio/SagMillGrinding.java | 7 ++++++ .../compat/mods/enderio/SliceNSplice.java | 2 +- .../compat/mods/enderio/SoulBinder.java | 6 +++++ .../groovyscript/compat/mods/enderio/Vat.java | 6 +++++ .../essentialcraft/DemonTradeManager.java | 2 +- .../mods/essentialcraft/MagicianTable.java | 7 ++++++ .../mods/essentialcraft/RadiatingChamber.java | 7 ++++++ .../compat/mods/evilcraft/BloodInfuser.java | 2 +- .../evilcraft/EnvironmentalAccumulator.java | 8 ++++++ .../extendedcrafting/CompressionCrafting.java | 9 +++++++ .../mods/extendedcrafting/EnderCrafting.java | 2 +- .../mods/extendedcrafting/TableCrafting.java | 2 +- .../mods/immersiveengineering/AlloyKiln.java | 2 +- .../mods/immersiveengineering/ArcFurnace.java | 25 +++++++++++++++++++ .../immersiveengineering/BlastFurnace.java | 6 +++++ .../immersiveengineering/BottlingMachine.java | 7 ++++++ .../mods/immersiveengineering/MetalPress.java | 7 ++++++ .../mods/immersiveengineering/Mixer.java | 7 ++++++ .../mods/immersiveengineering/Refinery.java | 7 ++++++ .../mods/industrialforegoing/LaserDrill.java | 7 ++++++ .../MechanicalSqueezer.java | 9 +++++++ .../mods/integrateddynamics/Squeezer.java | 7 ++++++ .../compat/mods/naturesaura/Altar.java | 3 ++- .../compat/mods/naturesaura/Offering.java | 9 +++++++ .../compat/mods/naturesaura/Ritual.java | 9 +++++++ .../pneumaticcraft/AssemblyController.java | 6 +++-- .../mods/pneumaticcraft/PlasticMixer.java | 5 ++-- .../mods/prodigytech/AtomicReshaper.java | 7 ++++++ .../mods/prodigytech/ExplosionFurnace.java | 8 ++++++ .../ExplosionFurnaceAdditives.java | 7 ++++++ .../mods/prodigytech/PrimordialisReactor.java | 8 ++++++ .../compat/mods/prodigytech/Solderer.java | 10 ++++++++ .../compat/mods/pyrotech/Anvil.java | 7 ++++++ .../compat/mods/pyrotech/Barrel.java | 8 ++++++ .../compat/mods/pyrotech/Kiln.java | 8 ++++++ .../compat/mods/roots/FeyCrafter.java | 8 ++++++ .../compat/mods/roots/Mortar.java | 7 ++++++ .../groovyscript/compat/mods/roots/Moss.java | 2 +- .../groovyscript/compat/mods/roots/Pyre.java | 8 ++++++ .../compat/mods/roots/RunicShearBlock.java | 8 ++++++ .../compat/mods/roots/SummonCreature.java | 7 ++++++ .../compat/mods/thaumcraft/Crucible.java | 7 ++++++ .../mods/thaumcraft/InfusionCrafting.java | 7 ++++++ .../thaumcraft/arcane/ArcaneWorkbench.java | 2 +- .../compat/mods/theaurorian/Scrapper.java | 8 ++++++ .../compat/mods/woot/StygianIronAnvil.java | 6 ++--- .../groovyscript/compat/vanilla/Crafting.java | 9 ++++--- 64 files changed, 386 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToBlock.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToBlock.java index 61aca1494..1f1c95e17 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToBlock.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToBlock.java @@ -4,6 +4,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.compat.inworldcrafting.jei.FluidRecipeCategory; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -23,6 +24,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; public class FluidToBlock extends VirtualizedRegistry implements IJEIRemoval.Default { @@ -98,6 +100,11 @@ public SimpleObjectStream streamRecipes() { return Collections.singletonList(FluidRecipeCategory.UID); } + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.FluidOperation.defaultFluidOperation()); + } + public static class Recipe extends FluidRecipe { private final IBlockState output; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToFluid.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToFluid.java index ee76481de..7e00a6430 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToFluid.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToFluid.java @@ -4,6 +4,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.compat.inworldcrafting.jei.FluidRecipeCategory; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -21,6 +22,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; public class FluidToFluid extends VirtualizedRegistry implements IJEIRemoval.Default { @@ -96,6 +98,11 @@ public SimpleObjectStream streamRecipes() { return Collections.singletonList(FluidRecipeCategory.UID); } + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.FluidOperation.defaultFluidOperation()); + } + public static class Recipe extends FluidRecipe { private final Fluid output; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToItem.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToItem.java index 921ac55c1..83230f29a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToItem.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToItem.java @@ -5,6 +5,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.compat.inworldcrafting.jei.FluidRecipeCategory; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -23,6 +24,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; public class FluidToItem extends VirtualizedRegistry implements IJEIRemoval.Default { @@ -81,6 +83,11 @@ public boolean removeByInput(FluidStack fluid, ItemStack... input) { return true; } + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.FluidOperation.defaultFluidOperation()); + } + public boolean removeAll() { return FluidRecipe.removeIf(fluidRecipe -> fluidRecipe.getClass() == Recipe.class, fluidRecipe -> addBackup((Recipe) fluidRecipe)); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Enchanter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Enchanter.java index 17496634b..529250255 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Enchanter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Enchanter.java @@ -5,6 +5,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.gildedgames.the_aether.api.enchantments.AetherEnchantment; @@ -15,6 +16,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; @RegistryDescription public class Enchanter extends ForgeRegistryWrapper implements IJEIRemoval.Default { @@ -51,6 +53,11 @@ public void removeByOutput(IIngredient output) { return Collections.singletonList("aether_legacy.enchantment"); } + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(2).output(2)); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Freezer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Freezer.java index 17518d635..efcb7bf9b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Freezer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Freezer.java @@ -5,6 +5,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.gildedgames.the_aether.api.freezables.AetherFreezable; @@ -15,6 +16,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; @RegistryDescription public class Freezer extends ForgeRegistryWrapper implements IJEIRemoval.Default { @@ -51,6 +53,11 @@ public void removeByOutput(IIngredient output) { return Collections.singletonList("aether_legacy.freezable"); } + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(2).output(2)); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Dissolver.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Dissolver.java index 5269cbbb9..ae2ffdb79 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Dissolver.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Dissolver.java @@ -7,6 +7,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -84,6 +85,11 @@ public void removeAll() { return Collections.singletonList(AlchemistryRecipeUID.INSTANCE.getDISSOLVER()); } + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(2)); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Inscriber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Inscriber.java index 14f69272b..a85c91cfe 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Inscriber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Inscriber.java @@ -8,6 +8,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -71,6 +72,11 @@ public void removeAll() { return Collections.singletonList("appliedenergistics2.inscriber"); } + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(3)); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/StarlightAltar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/StarlightAltar.java index 9afa29d47..529ae7a48 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/StarlightAltar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/StarlightAltar.java @@ -147,7 +147,7 @@ public void removeAll() { @Override public @NotNull List getJEIOperations() { - return ImmutableList.of(discoveryOperation(), attunementOperation(), constellationOperation(), traitOperation(), OperationHandler.ItemOperation.outputItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation()); + return ImmutableList.of(discoveryOperation(), attunementOperation(), constellationOperation(), traitOperation(), OperationHandler.ItemOperation.defaultItemOperation().include(0), OperationHandler.FluidOperation.defaultFluidOperation()); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/Compressor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/Compressor.java index 11f1c1d51..2d6e6badb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/Compressor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/Compressor.java @@ -4,6 +4,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -18,6 +19,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; @RegistryDescription public class Compressor extends VirtualizedRegistry implements IJEIRemoval.Default { @@ -90,6 +92,11 @@ public void add(ItemStack output, IIngredient input, int cost) { return Collections.singletonList(AvaritiaJEIPlugin.NEUTRONIUM_COMPRESSOR); } + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(1)); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/ExtremeCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/ExtremeCrafting.java index 0d55a51fa..6287e5c96 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/ExtremeCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/ExtremeCrafting.java @@ -103,7 +103,7 @@ public void removeAll() { @Override public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.outputItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation()); + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0)); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilCrafting.java index 0878107e3..3e1ced607 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilCrafting.java @@ -118,6 +118,8 @@ public void removeAll() { @Override public @NotNull List getJEIOperations() { - return ImmutableList.of(registryNameOperation(), OperationHandler.ItemOperation.outputItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation()); + // while this class *does* work for removing via removeByInput, having all of those be printed would cause a significant amount of clutter. + return ImmutableList.of(registryNameOperation(), OperationHandler.ItemOperation.defaultItemOperation().include(16), OperationHandler.FluidOperation.defaultFluidOperation()); } + } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyArray.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyArray.java index a0feb16f5..169972683 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyArray.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyArray.java @@ -9,11 +9,13 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.bloodmagic.BloodMagicRecipeRegistrarAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import org.jetbrains.annotations.NotNull; @@ -21,6 +23,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; @RegistryDescription public class AlchemyArray extends VirtualizedRegistry implements IJEIRemoval.Default { @@ -170,6 +173,12 @@ public SimpleObjectStream streamRecipes() { return Collections.singletonList(Constants.Compat.JEI_CATEGORY_ALCHEMYARRAY); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(1), + OperationHandler.ItemOperation.defaultItemOperation().include(1).input("removeByCatalyst")); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ElvenTrade.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ElvenTrade.java index de509ea1c..f4e85d644 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ElvenTrade.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ElvenTrade.java @@ -5,10 +5,12 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -122,6 +124,11 @@ public SimpleObjectStream streamRecipes() { return Collections.singletonList(ElvenTradeRecipeCategory.UID); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().input("removeByInputs").output("removeByOutputs")); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "99")}) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "99")}) public class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ManaInfusion.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ManaInfusion.java index 0b1575739..3c592f688 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ManaInfusion.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ManaInfusion.java @@ -10,6 +10,7 @@ import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import mezz.jei.api.gui.IRecipeLayout; import net.minecraft.block.state.IBlockState; import net.minecraft.item.ItemStack; @@ -122,8 +123,11 @@ public SimpleObjectStream streamRecipes() { @Override public @NotNull List getRemoval(IRecipeLayout layout) { - // is this ugly? yes! but we need to target this specific slot and the slot number is dynamic - return OperationHandler.removalOptions(layout, Default.excludeSlots(layout.getItemStacks().getGuiIngredients().values().size() - 2)); + // is this ugly? yes! but we need to target these specific slots and the slot number is dynamic + ImmutableList list = layout.getItemStacks().getGuiIngredients().values().size() > 3 + ? ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0, 3), OperationHandler.ItemOperation.defaultItemOperation().include(1).input("removeByCatalyst")) + : ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0, 2)); + return OperationHandler.removalOptions(layout, list); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Orechid.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Orechid.java index 117d8124f..5db54a755 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Orechid.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Orechid.java @@ -102,7 +102,7 @@ public SimpleObjectStream streamRecipes() { @Override public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().exclude(0, 1).input("removeByOutput")); + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().exclude(0, 1).output(2)); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/AlloySmelter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/AlloySmelter.java index 745dc29ce..8b38e9f7d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/AlloySmelter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/AlloySmelter.java @@ -7,6 +7,7 @@ import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.EnderIORecipeBuilder; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.RecipeInput; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.enderio.AlloyRecipeManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.enderio.ItemRecipeLeafNodeAccessor; import com.cleanroommc.groovyscript.core.mixin.enderio.ItemRecipeNodeAccessor; @@ -180,6 +181,10 @@ public void removeAll() { return Collections.singletonList(AlloyRecipeCategory.UID); } + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(3).input("remove")); + } @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "3")}) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMill.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMill.java index 19f42e353..df40780c5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMill.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMill.java @@ -95,7 +95,7 @@ public void removeAll() { @Override public @NotNull List getJEIOperations() { - return Default.excludeSlots(5); + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(0)); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMillGrinding.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMillGrinding.java index 65e297b69..2d2bcb256 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMillGrinding.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMillGrinding.java @@ -6,6 +6,7 @@ import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.RecipeInput; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -19,6 +20,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; @RegistryDescription public class SagMillGrinding extends VirtualizedRegistry implements IJEIRemoval.Default { @@ -79,6 +81,11 @@ public void removeAll() { return Collections.singletonList(SagMillGrindingBallCategory.UID); } + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().input("remove")); + } + @Property(property = "input", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SliceNSplice.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SliceNSplice.java index daf354baf..87719de78 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SliceNSplice.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SliceNSplice.java @@ -119,7 +119,7 @@ public void removeAll() { @Override public @NotNull List getJEIOperations() { - return Default.excludeSlots(0, 1); + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().output("remove").exclude(0, 1)); } @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "6")}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SoulBinder.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SoulBinder.java index e1f90c142..9a539e55b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SoulBinder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SoulBinder.java @@ -5,6 +5,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.enderio.SimpleRecipeGroupHolderAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -92,6 +93,11 @@ public void removeAll() { return Collections.singletonList(SoulBinderRecipeCategory.UID); } + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(3).output("remove")); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Vat.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Vat.java index c361a8680..1f03ee019 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Vat.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Vat.java @@ -7,6 +7,7 @@ import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.RecipeInput; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.ingredient.IngredientList; @@ -96,6 +97,11 @@ public void removeAll() { return Collections.singletonList(VatRecipeCategory.UID); } + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.FluidOperation.defaultFluidOperation().output("remove")); + } + public static class RecipeBuilder implements IRecipeBuilder { @Property diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/DemonTradeManager.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/DemonTradeManager.java index 7e6aafc84..5390a75df 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/DemonTradeManager.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/DemonTradeManager.java @@ -104,7 +104,7 @@ public SimpleObjectStream streamRecipes() { @Override public @NotNull List getJEIOperations() { - return Default.excludeSlots(2); + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(0).output("remove")); } } \ No newline at end of file diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MagicianTable.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MagicianTable.java index 15290a89c..33df281c3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MagicianTable.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MagicianTable.java @@ -5,6 +5,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -16,6 +17,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; @RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.essentialcraft.magician_table.note0", type = Admonition.Type.WARNING)) public class MagicianTable extends VirtualizedRegistry implements IJEIRemoval.Default { @@ -61,6 +63,11 @@ public SimpleObjectStream streamRecipes() { return Collections.singletonList(essentialcraft.integration.jei.MagicianTable.UID); } + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(5)); + } + @Property(property = "input", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "5", type = Comp.Type.LTE)}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/RadiatingChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/RadiatingChamber.java index 940977280..347891ce0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/RadiatingChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/RadiatingChamber.java @@ -5,6 +5,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -16,6 +17,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; @RegistryDescription public class RadiatingChamber extends VirtualizedRegistry implements IJEIRemoval.Default { @@ -61,6 +63,11 @@ public SimpleObjectStream streamRecipes() { return Collections.singletonList(essentialcraft.integration.jei.RadiatingChamber.UID); } + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(2)); + } + @Property(property = "input", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "2", type = Comp.Type.LTE)}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/BloodInfuser.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/BloodInfuser.java index 40ff0dac2..54d9aae5f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/BloodInfuser.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/BloodInfuser.java @@ -107,7 +107,7 @@ public SimpleObjectStream getJEIOperations() { - return Default.excludeSlots(1); + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().exclude(1)); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/EnvironmentalAccumulator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/EnvironmentalAccumulator.java index cc942c9d7..25d181cb2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/EnvironmentalAccumulator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/EnvironmentalAccumulator.java @@ -4,6 +4,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -21,6 +22,8 @@ import org.jetbrains.annotations.Nullable; import java.util.Collection; +import java.util.Collections; +import java.util.List; import java.util.Locale; @RegistryDescription @@ -102,6 +105,11 @@ public SimpleObjectStream getJEIOperations() { + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation()); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder> { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/CompressionCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/CompressionCrafting.java index dc927d6af..4595e5c36 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/CompressionCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/CompressionCrafting.java @@ -10,17 +10,20 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; import java.util.Collections; +import java.util.List; @RegistryDescription public class CompressionCrafting extends VirtualizedRegistry implements IJEIRemoval.Default { @@ -118,6 +121,12 @@ public RecipeBuilder recipeBuilder() { return Collections.singletonList(CompressorCraftingCategory.UID); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(1), + OperationHandler.ItemOperation.defaultItemOperation().exclude(0).input("removeByCatalyst")); + } + @Property(property = "output", valid = @Comp("1")) @Property(property = "input", valid = @Comp(type = Comp.Type.NOT, value = "null")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/EnderCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/EnderCrafting.java index 509299bc9..f96d70788 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/EnderCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/EnderCrafting.java @@ -119,7 +119,7 @@ public void removeAll() { @Override public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.outputItemOperation()); + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0)); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/TableCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/TableCrafting.java index 7398ce484..092622348 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/TableCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/TableCrafting.java @@ -120,7 +120,7 @@ public void removeAll() { @Override public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.outputItemOperation()); + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0)); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/AlloyKiln.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/AlloyKiln.java index 88e80e066..ccd51cc4c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/AlloyKiln.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/AlloyKiln.java @@ -120,7 +120,7 @@ public void removeAll() { @Override public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().input(1), OperationHandler.FluidOperation.defaultFluidOperation()); + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(2)); } @Property(property = "input", valid = @Comp("2")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/ArcFurnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/ArcFurnace.java index 3bb9200fc..5a01a890c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/ArcFurnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/ArcFurnace.java @@ -7,11 +7,15 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.ArrayUtils; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; +import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -24,6 +28,22 @@ @RegistryDescription public class ArcFurnace extends VirtualizedRegistry implements IJEIRemoval.Default { + /** + * Since the size of Arc Furnace recipes is variable, we can't refer to a specific slot. + */ + private static OperationHandler.IOperation primaryOutputOperation() { + return (layout, removing, exactInput) -> { + var maxSize = layout.getItemStacks().getGuiIngredients().size(); + + var slot = layout.getItemStacks().getGuiIngredients().get(maxSize - 2); + var stack = OperationHandler.getIngredientFromSlot(slot); + if (stack == null) return; + + var identity = GroovyScriptCodeConverter.getSingleItemStack(stack, true, false); + removing.add(JeiRemovalHelper.format("removeByOutput", identity)); + }; + } + @RecipeBuilderDescription(example = @Example(".mainInput(item('minecraft:diamond')).input(item('minecraft:diamond'), ore('ingotGold')).output(item('minecraft:clay')).time(100).energyPerTick(100).slag(item('minecraft:gold_nugget'))")) public RecipeBuilder recipeBuilder() { return new RecipeBuilder(); @@ -142,6 +162,11 @@ public void removeAll() { return Collections.singletonList("ie.arcFurnace"); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(primaryOutputOperation()); + } + @Property(property = "input", valid = {@Comp(value = "0", type = Comp.Type.GTE), @Comp(value = "5", type = Comp.Type.LTE)}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnace.java index 769e30a56..66abbac25 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnace.java @@ -6,6 +6,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -114,6 +115,11 @@ public void removeAll() { return Collections.singletonList("ie.blastfurnace"); } + @Override + public @NotNull List getJEIOperations() { + return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().exclude(2)); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BottlingMachine.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BottlingMachine.java index 931cce0aa..fa6a04030 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BottlingMachine.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BottlingMachine.java @@ -7,11 +7,13 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.NotNull; @@ -125,6 +127,11 @@ public void removeAll() { return Collections.singletonList("ie.bottlingMachine"); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(1)); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) @Property(property = "fluidInput", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/MetalPress.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/MetalPress.java index 54a8accd2..ac9691a9e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/MetalPress.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/MetalPress.java @@ -8,10 +8,12 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -192,6 +194,11 @@ public SimpleObjectStream streamRecipes() { return Collections.singletonList("ie.metalPress"); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(1), OperationHandler.ItemOperation.defaultItemOperation().include(1).input("removeByMold")); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Mixer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Mixer.java index fd7f323f7..d26553e25 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Mixer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Mixer.java @@ -6,11 +6,13 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.ArrayUtils; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -145,6 +147,11 @@ public void removeAll() { return Collections.singletonList("ie.mixer"); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.FluidOperation.defaultFluidOperation().include(1)); + } + @Property(property = "input", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "Integer.MAX_VALUE", type = Comp.Type.LTE)}) @Property(property = "output", valid = @Comp("1")) @Property(property = "fluidInput", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Refinery.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Refinery.java index 528dccd55..bb2c553fd 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Refinery.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Refinery.java @@ -5,10 +5,12 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -117,6 +119,11 @@ public void removeAll() { return Collections.singletonList("ie.refinery"); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.FluidOperation.defaultFluidOperation().include(0, 1)); + } + @Property(property = "fluidInput", valid = @Comp("2")) @Property(property = "fluidOutput", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/LaserDrill.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/LaserDrill.java index 3dd97bc53..fe9060dac 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/LaserDrill.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/LaserDrill.java @@ -7,9 +7,11 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import net.minecraft.world.biome.Biome; import org.apache.commons.lang3.tuple.Pair; @@ -158,6 +160,11 @@ public SimpleObjectStream streamRecipes return Collections.singletonList("laser_category"); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().input("removeByLens")); + } + @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/MechanicalSqueezer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/MechanicalSqueezer.java index d35226757..9a8b0eec6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/MechanicalSqueezer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/MechanicalSqueezer.java @@ -2,8 +2,10 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import org.cyclops.cyclopscore.recipe.custom.api.IRecipe; import org.cyclops.cyclopscore.recipe.custom.component.DurationRecipeProperties; @@ -17,6 +19,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; @RegistryDescription public class MechanicalSqueezer extends VirtualizedRegistry> implements IJEIRemoval.Default { @@ -81,4 +84,10 @@ public SimpleObjectStream getCategories() { return Collections.singletonList(MechanicalSqueezerRecipeCategory.NAME); } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0)); + } + } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/Squeezer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/Squeezer.java index fed2b1427..87f23a629 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/Squeezer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/Squeezer.java @@ -4,9 +4,11 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import org.cyclops.cyclopscore.recipe.custom.api.IRecipe; import org.cyclops.cyclopscore.recipe.custom.component.DummyPropertiesComponent; @@ -94,6 +96,11 @@ public SimpleObjectStream getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0)); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "fluidOutput", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) public static class RecipeBuilder extends AbstractRecipeBuilder> { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Altar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Altar.java index 3549f35d4..08791a42e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Altar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Altar.java @@ -121,7 +121,8 @@ public SimpleObjectStream> streamRecipe @Override public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(0), OperationHandler.ItemOperation.defaultItemOperation().exclude(2).input("removeByCatalyst")); + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(2), + OperationHandler.ItemOperation.defaultItemOperation().include(2).input("removeByCatalyst")); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Offering.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Offering.java index 04a7280fa..d78f0d8b4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Offering.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Offering.java @@ -5,10 +5,12 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.recipes.OfferingRecipe; import de.ellpeck.naturesaura.compat.jei.JEINaturesAuraPlugin; @@ -18,6 +20,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; import java.util.Map; @RegistryDescription(admonition = @Admonition("groovyscript.wiki.naturesaura.offering.note0")) @@ -112,6 +115,12 @@ public SimpleObjectStream> streamRec return Collections.singletonList(JEINaturesAuraPlugin.OFFERING); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(2), + OperationHandler.ItemOperation.defaultItemOperation().include(2).input("removeByCatalyst")); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Ritual.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Ritual.java index 8f424b6ac..469cf7758 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Ritual.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Ritual.java @@ -5,10 +5,12 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.recipes.TreeRitualRecipe; import de.ellpeck.naturesaura.compat.jei.JEINaturesAuraPlugin; @@ -19,6 +21,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; import java.util.Map; @RegistryDescription(admonition = @Admonition(value = "groovyscript.wiki.naturesaura.ritual.note0", type = Admonition.Type.WARNING)) @@ -115,6 +118,12 @@ public SimpleObjectStream> streamR return Collections.singletonList(JEINaturesAuraPlugin.TREE_RITUAL); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(0), + OperationHandler.ItemOperation.defaultItemOperation().include(0).input("removeBySapling")); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "8")}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/AssemblyController.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/AssemblyController.java index 8e260eb29..6a5e652f2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/AssemblyController.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/AssemblyController.java @@ -12,6 +12,7 @@ import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import me.desht.pneumaticcraft.common.item.ItemAssemblyProgram; import me.desht.pneumaticcraft.common.recipes.AssemblyRecipe; +import mezz.jei.api.gui.IRecipeLayout; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -139,8 +140,9 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return Default.excludeSlots(1, 2, 3, 4, 5); + public @NotNull List getRemoval(IRecipeLayout layout) { + // is this ugly? yes! but we need to target the input and output slots and the output slot number is dynamic + return OperationHandler.removalOptions(layout, Default.includeSlots(0, layout.getItemStacks().getGuiIngredients().values().size() - 1)); } public enum AssemblyType { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PlasticMixer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PlasticMixer.java index 377239a1f..787ed3ecb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PlasticMixer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PlasticMixer.java @@ -113,9 +113,10 @@ public SimpleObjectStream streamRecipes // we need to this because the RGB dyes are part of the recipe as slots 0, 1, and 2 if the recipe outputs an item // and slot 0 is used for the recipe input if the recipe has an input item. var itemOperation = layout.getItemStacks().getGuiIngredients().size() > 2 - ? OperationHandler.ItemOperation.defaultItemOperation().exclude(0, 1, 2) + ? OperationHandler.ItemOperation.defaultItemOperation().include(3) : OperationHandler.ItemOperation.defaultItemOperation(); - return OperationHandler.removalOptions(layout, itemOperation, OperationHandler.FluidOperation.defaultFluidOperation()); + return OperationHandler.removalOptions(layout, itemOperation.input("removeByItem").output("removeByItem"), + OperationHandler.FluidOperation.defaultFluidOperation().input("removeByFluid").output("removeByFluid")); } @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/AtomicReshaper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/AtomicReshaper.java index 15afcff17..9ea5762b2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/AtomicReshaper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/AtomicReshaper.java @@ -5,10 +5,12 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import lykrast.prodigytech.common.compat.jei.AtomicReshaperCategory; import lykrast.prodigytech.common.recipe.AtomicReshaperManager; import lykrast.prodigytech.common.util.Config; @@ -100,6 +102,11 @@ public SimpleObjectStream streamReci return Collections.singletonList(AtomicReshaperCategory.UID); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(1)); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp(value = "1", type = Comp.Type.GTE)) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnace.java index 24baf991d..b24cd9772 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnace.java @@ -5,9 +5,11 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import lykrast.prodigytech.common.compat.jei.ExplosionFurnaceCategory; import lykrast.prodigytech.common.recipe.ExplosionFurnaceManager; import net.minecraft.item.ItemStack; @@ -16,6 +18,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; @RegistryDescription public class ExplosionFurnace extends VirtualizedRegistry implements IJEIRemoval.Default { @@ -77,6 +80,11 @@ public SimpleObjectStream stream return Collections.singletonList(ExplosionFurnaceCategory.UID); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(2)); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "2")}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnaceAdditives.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnaceAdditives.java index e0870f1b9..a4c52a4ba 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnaceAdditives.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnaceAdditives.java @@ -5,6 +5,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.ingredient.ItemsIngredient; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -17,6 +18,7 @@ import org.jetbrains.annotations.NotNull; import java.util.Collection; +import java.util.List; @RegistryDescription(category = RegistryDescription.Category.ENTRIES) public class ExplosionFurnaceAdditives extends VirtualizedRegistry implements IJEIRemoval.Default { @@ -92,6 +94,11 @@ public void removeAllDampeners() { return ImmutableList.of(ExplosionFurnaceDampenerCategory.UID, ExplosionFurnaceExplosiveCategory.UID); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().input("removeDampener")); + } + public interface EFAdditiveRecipe { void register(); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/PrimordialisReactor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/PrimordialisReactor.java index 5ec3279df..a50fa6754 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/PrimordialisReactor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/PrimordialisReactor.java @@ -5,10 +5,12 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.ItemsIngredient; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import lykrast.prodigytech.common.compat.jei.PrimordialisReactorCategory; import lykrast.prodigytech.common.recipe.PrimordialisReactorManager; import net.minecraft.item.ItemStack; @@ -84,4 +86,10 @@ public SimpleObjectStream streamRecipes() { public @NotNull Collection getCategories() { return Collections.singletonList(PrimordialisReactorCategory.UID); } + + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0).input("remove")); + } + } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/Solderer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/Solderer.java index 01884e7ca..a209131e7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/Solderer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/Solderer.java @@ -5,10 +5,12 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import lykrast.prodigytech.common.compat.jei.SoldererCategory; import lykrast.prodigytech.common.recipe.SoldererManager; import lykrast.prodigytech.common.util.Config; @@ -18,6 +20,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; @RegistryDescription public class Solderer extends VirtualizedRegistry implements IJEIRemoval.Default { @@ -107,6 +110,13 @@ public SimpleObjectStream streamRecipes() { return Collections.singletonList(SoldererCategory.UID); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(1).input("removeByPattern"), + OperationHandler.ItemOperation.defaultItemOperation().include(2).input("removeByAdditive"), + OperationHandler.ItemOperation.defaultItemOperation().include(4)); + } + @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Anvil.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Anvil.java index 8a48263e4..9662b8a8e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Anvil.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Anvil.java @@ -4,6 +4,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.EnumHelper; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -20,6 +21,7 @@ import java.util.Arrays; import java.util.Collection; +import java.util.List; @RegistryDescription public class Anvil extends ForgeRegistryWrapper implements IJEIRemoval.Default { @@ -79,6 +81,11 @@ public void removeByOutput(ItemStack output) { return ImmutableList.of(JEIRecipeCategoryAnvilGranite.UID, JEIRecipeCategoryAnvilIronclad.UID, JEIRecipeCategoryAnvilObsidian.UID); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(1)); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) @Property(property = "name") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Barrel.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Barrel.java index 413b66a81..0f38fbe03 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Barrel.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Barrel.java @@ -4,12 +4,14 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.codetaylor.mc.pyrotech.modules.tech.basic.ModuleTechBasic; import com.codetaylor.mc.pyrotech.modules.tech.basic.plugin.jei.category.JEIRecipeCategoryBarrel; import com.codetaylor.mc.pyrotech.modules.tech.basic.recipe.BarrelRecipe; +import com.google.common.collect.ImmutableList; import net.minecraft.item.crafting.Ingredient; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.NotNull; @@ -17,6 +19,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; @RegistryDescription public class Barrel extends ForgeRegistryWrapper implements IJEIRemoval.Default { @@ -63,6 +66,11 @@ public void removeByOutput(FluidStack output) { return Collections.singletonList(JEIRecipeCategoryBarrel.UID); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.FluidOperation.defaultFluidOperation().include(5)); + } + @Property(property = "input", valid = @Comp(type = Comp.Type.EQ, value = "4")) @Property(property = "fluidInput", valid = @Comp("1")) @Property(property = "fluidOutput", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Kiln.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Kiln.java index b7b2009d3..575a56a2f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Kiln.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Kiln.java @@ -4,6 +4,7 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.ingredient.ItemStackList; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -11,12 +12,14 @@ import com.codetaylor.mc.pyrotech.modules.tech.basic.ModuleTechBasic; import com.codetaylor.mc.pyrotech.modules.tech.basic.plugin.jei.category.JEIRecipeCategoryKilnPit; import com.codetaylor.mc.pyrotech.modules.tech.basic.recipe.KilnPitRecipe; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; import java.util.Collections; +import java.util.List; @RegistryDescription public class Kiln extends ForgeRegistryWrapper implements IJEIRemoval.Default { @@ -77,6 +80,11 @@ public void removeByOutput(IIngredient output) { return Collections.singletonList(JEIRecipeCategoryKilnPit.UID); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(2)); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) @Property(property = "name") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/FeyCrafter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/FeyCrafter.java index 5c919eea5..2976162e5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/FeyCrafter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/FeyCrafter.java @@ -4,9 +4,11 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import epicsquid.roots.init.ModRecipes; import epicsquid.roots.integration.jei.JEIRootsPlugin; import epicsquid.roots.recipe.FeyCraftingRecipe; @@ -18,6 +20,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; import java.util.Map; @RegistryDescription( @@ -97,6 +100,11 @@ public SimpleObjectStream> stream return Collections.singletonList(JEIRootsPlugin.FEY_CRAFTING); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(5)); + } + @Property(property = "name") @Property(property = "input", valid = @Comp("5")) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Mortar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Mortar.java index e20b1e50b..386839586 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Mortar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Mortar.java @@ -5,11 +5,13 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.roots.ModRecipesAccessor; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import epicsquid.roots.init.ModRecipes; import epicsquid.roots.integration.jei.JEIRootsPlugin; import epicsquid.roots.recipe.MortarRecipe; @@ -110,6 +112,11 @@ public SimpleObjectStream streamRecipes() { return Collections.singletonList(JEIRootsPlugin.MORTAR_AND_PESTLE); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(5)); + } + @Property(property = "name") @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "5")}) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Moss.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Moss.java index 0ecefa869..b33616c2b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Moss.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Moss.java @@ -112,7 +112,7 @@ public SimpleObjectStream> streamRecipes() { @Override public @NotNull List getJEIOperations() { - return Default.excludeSlots(2); + return Default.includeSlots(0); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Pyre.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Pyre.java index 5ca376179..b27b07b93 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Pyre.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Pyre.java @@ -4,9 +4,11 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import epicsquid.roots.init.ModRecipes; import epicsquid.roots.integration.jei.JEIRootsPlugin; import epicsquid.roots.recipe.PyreCraftingRecipe; @@ -17,6 +19,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; import java.util.Map; @RegistryDescription @@ -97,6 +100,11 @@ public SimpleObjectStream> strea return Collections.singletonList(JEIRootsPlugin.RITUAL_CRAFTING); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(5)); + } + @Property(property = "name") @Property(property = "input", valid = @Comp("5")) @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/RunicShearBlock.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/RunicShearBlock.java index 609363293..21b91c6e5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/RunicShearBlock.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/RunicShearBlock.java @@ -4,9 +4,11 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import epicsquid.roots.init.ModRecipes; import epicsquid.roots.integration.jei.JEIRootsPlugin; import epicsquid.roots.recipe.RunicShearRecipe; @@ -20,6 +22,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; import java.util.Map; @RegistryDescription @@ -105,6 +108,11 @@ public SimpleObjectStream> streamR return Collections.singletonList(JEIRootsPlugin.RUNIC_SHEARS); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(1)); + } + @Property(property = "name") @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/SummonCreature.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/SummonCreature.java index 2ee5c7855..6dde397a5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/SummonCreature.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/SummonCreature.java @@ -5,10 +5,12 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.roots.ModRecipesAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import epicsquid.roots.init.ModRecipes; import epicsquid.roots.integration.jei.JEIRootsPlugin; import epicsquid.roots.recipe.SummonCreatureRecipe; @@ -99,6 +101,11 @@ public SimpleObjectStream> str return Collections.singletonList(JEIRootsPlugin.SUMMON_CREATURES); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(); // TODO jei this + } + @Property(property = "name") @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "10")}) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java index e692d4a7c..215f0de84 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java @@ -6,11 +6,13 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.mods.thaumcraft.aspect.AspectStack; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.Optional; @@ -134,6 +136,11 @@ public void removeAll() { return Collections.singletonList(CrucibleCategory.UUID); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0)/*, IJEIRemovalAspect.getDefaultAspect()*/); + } + public static class RecipeBuilder extends AbstractRecipeBuilder { @Property diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfusionCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfusionCrafting.java index 3c7534c77..78749c8ab 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfusionCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfusionCrafting.java @@ -6,12 +6,14 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.mods.thaumcraft.aspect.AspectStack; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.helper.recipe.RecipeName; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.Optional; @@ -137,6 +139,11 @@ public void removeAll() { return Collections.singletonList(InfusionCategory.UUID); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0)/*, IJEIRemovalAspect.getDefaultAspect()*/); + } + public static class RecipeBuilder extends AbstractRecipeBuilder { @Property(valid = @Comp(value = "null", type = Comp.Type.NOT)) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java index 76019bd79..40184daaa 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java @@ -91,7 +91,7 @@ public void removeAll() { @Override @Optional.Method(modid = "thaumicjei") public @NotNull List getJEIOperations() { - return ImmutableList.of(registryNameOperation(), OperationHandler.ItemOperation.outputItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation()); + return ImmutableList.of(registryNameOperation(), OperationHandler.ItemOperation.defaultItemOperation().include(0), OperationHandler.FluidOperation.defaultFluidOperation()); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/Scrapper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/Scrapper.java index 695bf7e1f..4d96216a6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/Scrapper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/Scrapper.java @@ -5,9 +5,11 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import com.shiroroku.theaurorian.Compat.JEI.JEICompat; import com.shiroroku.theaurorian.Recipes.ScrapperRecipe; import com.shiroroku.theaurorian.Recipes.ScrapperRecipeHandler; @@ -17,6 +19,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; @RegistryDescription public class Scrapper extends VirtualizedRegistry implements IJEIRemoval.Default { @@ -85,6 +88,11 @@ public SimpleObjectStream streamRecipes() { return Collections.singletonList(JEICompat.UID_SCRAPPER); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(1)); + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/StygianIronAnvil.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/StygianIronAnvil.java index c3575f9e2..8202b187d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/StygianIronAnvil.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/StygianIronAnvil.java @@ -11,6 +11,7 @@ import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import ipsis.Woot; import ipsis.woot.crafting.AnvilRecipe; import ipsis.woot.crafting.IAnvilRecipe; @@ -113,10 +114,7 @@ public SimpleObjectStream streamRecipes() { @Override public @NotNull List getJEIOperations() { - // JEI doesn't get all inputs, only the first 6. Using a mixin to access the stored recipe field to - // get all inputs is a viable solution - however, the only way to obtain so many is to add it deliberately, - // so there shouldn't be situations where having more is required. - return Default.excludeSlots(2, 3, 4, 5, 6, 7, 8); + return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0, 1).input("removeByBase")); } @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "Integer.MAX_VALUE")}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Crafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Crafting.java index b465e7239..6c92f08e1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Crafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Crafting.java @@ -4,8 +4,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; @@ -20,7 +20,10 @@ import net.minecraftforge.fml.common.registry.ForgeRegistries; import org.jetbrains.annotations.NotNull; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; public class Crafting extends ForgeRegistryWrapper implements IJEIRemoval.Default { @@ -235,7 +238,7 @@ public CraftingRecipeBuilder.Shapeless shapelessBuilder() { @Override public @NotNull List getJEIOperations() { - return ImmutableList.of(registryNameOperation(), OperationHandler.ItemOperation.outputItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation()); + return ImmutableList.of(registryNameOperation(), OperationHandler.ItemOperation.defaultItemOperation().include(0), OperationHandler.FluidOperation.defaultFluidOperation()); } } From 6f47a8a9b56fb912c38fbd168105a0f4d058b043 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 1 Aug 2024 23:16:17 -0700 Subject: [PATCH 41/47] disable more invalid operations --- .../groovyscript/compat/inworldcrafting/Burning.java | 7 +++++++ .../compat/inworldcrafting/Explosion.java | 7 +++++++ .../compat/inworldcrafting/PistonPush.java | 7 +++++++ .../compat/mods/advancedmortars/Mortar.java | 2 +- .../compat/mods/astralsorcery/LightTransmutation.java | 7 +++++++ .../groovyscript/compat/mods/enderio/Enchanter.java | 7 +++++++ .../groovyscript/compat/mods/enderio/Tank.java | 7 +++++++ .../compat/mods/extrautils2/Generator.java | 7 +++++++ .../mods/immersiveengineering/BlueprintCrafting.java | 7 +++++++ .../compat/mods/inspirations/AnvilSmashing.java | 8 ++++++++ .../compat/mods/projecte/Transmutation.java | 8 ++++++++ .../groovyscript/compat/mods/roots/Rituals.java | 11 +---------- 12 files changed, 74 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Burning.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Burning.java index 8ed830a9a..8ec9602ed 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Burning.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Burning.java @@ -5,10 +5,12 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.compat.inworldcrafting.jei.BurningRecipeCategory; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.cleanroommc.groovyscript.sandbox.ClosureHelper; +import com.google.common.collect.ImmutableList; import groovy.lang.Closure; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import net.minecraft.entity.item.EntityItem; @@ -66,6 +68,11 @@ public RecipeBuilder recipeBuilder() { return Collections.singletonList(BurningRecipeCategory.UID); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(); // TODO jei this + } + public static class BurningRecipe { private final IIngredient input; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Explosion.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Explosion.java index 19d5b7b8e..1f58cf96c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Explosion.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Explosion.java @@ -6,10 +6,12 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.compat.inworldcrafting.jei.ExplosionRecipeCategory; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.cleanroommc.groovyscript.sandbox.ClosureHelper; +import com.google.common.collect.ImmutableList; import groovy.lang.Closure; import net.minecraft.entity.item.EntityItem; import net.minecraft.item.ItemStack; @@ -62,6 +64,11 @@ public RecipeBuilder recipeBuilder() { return Collections.singletonList(ExplosionRecipeCategory.UID); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(); // TODO jei this + } + public static class ExplosionRecipe { private final IIngredient input; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/PistonPush.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/PistonPush.java index 3545325ef..14e86fb2d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/PistonPush.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/PistonPush.java @@ -5,10 +5,12 @@ import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.compat.inworldcrafting.jei.PistonPushRecipeCategory; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.cleanroommc.groovyscript.sandbox.ClosureHelper; +import com.google.common.collect.ImmutableList; import groovy.lang.Closure; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.item.EntityItem; @@ -63,6 +65,11 @@ public RecipeBuilder recipeBuilder() { return Collections.singletonList(PistonPushRecipeCategory.UID); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(); // TODO jei this + } + public static class PistonPushRecipe { private final IIngredient input; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedmortars/Mortar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedmortars/Mortar.java index 6d83cee50..9a8ee1671 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedmortars/Mortar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedmortars/Mortar.java @@ -97,7 +97,7 @@ public static List getTypes(RecipeMortar recipe) { } @Override public @NotNull List getJEIOperations() { - return ImmutableList.of(); // TODO add removal methods to this compat + return ImmutableList.of(); // TODO jei } @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "8")}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/LightTransmutation.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/LightTransmutation.java index 178bcf689..615ceeba6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/LightTransmutation.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/LightTransmutation.java @@ -5,10 +5,12 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.astralsorcery.LightOreTransmutationsAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import hellfirepvp.astralsorcery.common.base.LightOreTransmutations; import hellfirepvp.astralsorcery.common.constellation.IWeakConstellation; import hellfirepvp.astralsorcery.common.integrations.ModIntegrationJEI; @@ -111,6 +113,11 @@ public SimpleObjectStream streamRecipes() .setRemover(this::remove); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(); // TODO jei + } + @MethodDescription(priority = 2000, example = @Example(commented = true)) public void removeAll() { getRegistry().forEach(this::addBackup); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Enchanter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Enchanter.java index 28121dec4..8962646ab 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Enchanter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Enchanter.java @@ -7,12 +7,14 @@ import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.CustomEnchanterRecipe; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.enderio.SimpleRecipeGroupHolderAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.IRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import crazypants.enderio.base.recipe.IMachineRecipe; import crazypants.enderio.base.recipe.MachineRecipeRegistry; import crazypants.enderio.base.recipe.enchanter.EnchanterRecipe; @@ -105,6 +107,11 @@ public void removeAll() { return Collections.singletonList(EnchanterRecipeCategory.UID); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(); // TODO jei enchantment handler + } + public static class RecipeBuilder implements IRecipeBuilder { @Property(valid = @Comp(type = Comp.Type.NOT, value = "null")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Tank.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Tank.java index 8faabf861..1be18e638 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Tank.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Tank.java @@ -8,6 +8,7 @@ import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.RecipeUtils; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.enderio.SimpleRecipeGroupHolderAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -15,6 +16,7 @@ import com.cleanroommc.groovyscript.helper.recipe.RecipeName; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.enderio.core.common.util.stackable.Things; +import com.google.common.collect.ImmutableList; import crazypants.enderio.base.recipe.IMachineRecipe; import crazypants.enderio.base.recipe.MachineRecipeRegistry; import crazypants.enderio.base.recipe.RecipeLevel; @@ -209,6 +211,11 @@ public void removeAll() { return Collections.singletonList(TankRecipeCategory.UID); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(); // TODO jei tank + } + @Property(property = "input", valid = @Comp("1")) @Property(property = "fluidInput", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) @Property(property = "output", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Generator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Generator.java index 3af9fbf4d..385a7ff14 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Generator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Generator.java @@ -4,10 +4,12 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.extrautils2.MachineInitAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import com.rwtema.extrautils2.api.machine.IMachineRecipe; import com.rwtema.extrautils2.api.machine.Machine; import com.rwtema.extrautils2.api.machine.MachineRegistry; @@ -201,6 +203,11 @@ public void removeAll() { return Arrays.stream(Generators.values()).map(Generators::toString).map(MachineRegistry::getMachine).filter(Objects::nonNull).map(machine -> "xu2_machine_" + machine.name).collect(Collectors.toList()); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(); // TODO JEI + } + public enum Generators { FURNACE("extrautils2:generator"), diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlueprintCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlueprintCrafting.java index 2c1c66a02..689f7670d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlueprintCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlueprintCrafting.java @@ -8,12 +8,14 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.ArrayUtils; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -174,6 +176,11 @@ public void removeAll() { return Collections.singletonList("ie.workbench"); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(); // TODO JEI + } + @Property(property = "input", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "Integer.MAX_VALUE", type = Comp.Type.LTE)}) @Property(property = "output", valid = @Comp("1")) public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/AnvilSmashing.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/AnvilSmashing.java index d811a2bca..66936fe62 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/AnvilSmashing.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/AnvilSmashing.java @@ -4,11 +4,13 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.inspirations.InspirationsRegistryAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.AbstractReloadableStorage; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import knightminer.inspirations.library.InspirationsRegistry; import knightminer.inspirations.plugins.jei.smashing.SmashingRecipeCategory; import net.minecraft.block.Block; @@ -20,6 +22,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -139,6 +142,11 @@ public SimpleObjectStream> streamRecipes() { return Collections.singletonList(SmashingRecipeCategory.CATEGORY); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(); // TODO jei + } + public static class RecipeBuilder extends AbstractRecipeBuilder { @Property(requirement = "groovyscript.wiki.inspirations.anvil_smashing.input.required") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/Transmutation.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/Transmutation.java index 7e41c5325..a6d76f4ef 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/Transmutation.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/Transmutation.java @@ -5,9 +5,11 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.google.common.collect.ImmutableList; import moze_intel.projecte.integration.jei.world_transmute.WorldTransmuteRecipeCategory; import moze_intel.projecte.utils.WorldTransmutations; import net.minecraft.block.Block; @@ -18,6 +20,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.List; @RegistryDescription public class Transmutation extends VirtualizedRegistry implements IJEIRemoval.Default { @@ -89,6 +92,11 @@ public void removeAll() { return Collections.singletonList(WorldTransmuteRecipeCategory.UID); } + @Override + public @NotNull List getJEIOperations() { + return ImmutableList.of(); // TODO jei + } + public static class RecipeBuilder extends AbstractRecipeBuilder { @Property(valid = @Comp(value = "null", type = Comp.Type.NOT), ignoresInheritedMethods = true) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Rituals.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Rituals.java index aa21a8d99..fa95585eb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Rituals.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Rituals.java @@ -3,26 +3,22 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.roots.RitualBaseAccessor; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; -import epicsquid.roots.integration.jei.JEIRootsPlugin; import epicsquid.roots.properties.Property; import epicsquid.roots.properties.PropertyTable; import epicsquid.roots.ritual.RitualBase; import epicsquid.roots.ritual.RitualRegistry; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; -import java.util.Collections; @RegistryDescription( reloadability = RegistryDescription.Reloadability.FLAWED, isFullyDocumented = false // TODO fully document Roots Rituals ) -public class Rituals extends VirtualizedRegistry implements IJEIRemoval.Default { +public class Rituals extends VirtualizedRegistry { public static RitualWrapper ritual(String ritual) { return ritual(RitualRegistry.getRitual(ritual)); @@ -49,11 +45,6 @@ public void disableAll() { }); } - @Override - public @NotNull Collection getCategories() { - return Collections.singletonList(JEIRootsPlugin.RITUAL); - } - public static class RitualWrapper { private final RitualBase ritual; From 7dbc834900fd00802fc9429996d864ee4f23dff2 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 1 Aug 2024 23:16:44 -0700 Subject: [PATCH 42/47] comment out incorrect Fusion and Miniaturization methods --- .../mods/compactmachines/Miniaturization.java | 7 ++-- .../compat/mods/draconicevolution/Fusion.java | 39 +++++++++---------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/Miniaturization.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/Miniaturization.java index c8f256b86..2ff9c6f62 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/Miniaturization.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/Miniaturization.java @@ -32,9 +32,10 @@ private static OperationHandler.IOperation wrapperOperation() { var builder = ImmutableList.builder(); builder.add(JeiRemovalHelper.format("removeByCatalyst", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getCatalystStack(), true))); builder.add(JeiRemovalHelper.format("removeByOutput", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getTargetStack(), true))); - for (ItemStack stack : wrapper.recipe.getRequiredItemStacks()) { - builder.add(JeiRemovalHelper.format("removeByInput", GroovyScriptCodeConverter.getSingleItemStack(stack, true))); - } + // these methods are not actually implemented + //for (ItemStack stack : wrapper.recipe.getRequiredItemStacks()) { + // builder.add(JeiRemovalHelper.format("removeByInput", GroovyScriptCodeConverter.getSingleItemStack(stack, true))); + //} return builder.build(); }); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/Fusion.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/Fusion.java index b84258e54..3bee01f4b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/Fusion.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/Fusion.java @@ -17,8 +17,6 @@ import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.google.common.collect.ImmutableList; -import net.minecraft.block.Block; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -37,24 +35,25 @@ private static OperationHandler.IOperation wrapperOperation() { if (!wrapper.recipe.getRecipeCatalyst().isEmpty()) { builder.add(JeiRemovalHelper.format("removeByCatalyst", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getRecipeCatalyst(), true))); } - var output = wrapper.recipe.getRecipeOutput(wrapper.recipe.getRecipeCatalyst()); - if (!output.isEmpty()) { - builder.add(JeiRemovalHelper.format("removeByOutput", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getRecipeOutput(wrapper.recipe.getRecipeCatalyst()), true))); - } - for (var ingredient : wrapper.recipe.getRecipeIngredients()) { - if (ingredient instanceof String ore) { - builder.add(JeiRemovalHelper.format("removeByInput", GroovyScriptCodeConverter.asGroovyCode(ore, true))); - } else { - ItemStack stack = null; - if (ingredient instanceof ItemStack is) stack = is; - else if (ingredient instanceof Item i) stack = new ItemStack(i); - else if (ingredient instanceof Block b) stack = new ItemStack(b); - - if (stack != null) { - builder.add(JeiRemovalHelper.format("removeByInput", GroovyScriptCodeConverter.getSingleItemStack(stack, true))); - } - } - } + // these methods are not actually implemented + //var output = wrapper.recipe.getRecipeOutput(wrapper.recipe.getRecipeCatalyst()); + //if (!output.isEmpty()) { + // builder.add(JeiRemovalHelper.format("removeByOutput", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getRecipeOutput(wrapper.recipe.getRecipeCatalyst()), true))); + //} + //for (var ingredient : wrapper.recipe.getRecipeIngredients()) { + // if (ingredient instanceof String ore) { + // builder.add(JeiRemovalHelper.format("removeByInput", GroovyScriptCodeConverter.asGroovyCode(ore, true))); + // } else { + // ItemStack stack = null; + // if (ingredient instanceof ItemStack is) stack = is; + // else if (ingredient instanceof Item i) stack = new ItemStack(i); + // else if (ingredient instanceof Block b) stack = new ItemStack(b); + // + // if (stack != null) { + // builder.add(JeiRemovalHelper.format("removeByInput", GroovyScriptCodeConverter.getSingleItemStack(stack, true))); + // } + // } + //} return builder.build(); }); } From b2a909cb0602138c959ed46e58c22660f6f13bd1 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 1 Aug 2024 23:17:02 -0700 Subject: [PATCH 43/47] remove the default input and output item operations --- .../mods/jei/removal/OperationHandler.java | 24 ------------------- 1 file changed, 24 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java index 6b51556db..4ce330014 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java @@ -423,30 +423,6 @@ public static ISlotOperation defaultItemOperation() { return new ItemOperation(); } - /** - * @return an {@link ItemOperation} that ignores all output slots. - */ - public static IOperation inputItemOperation() { - return new ItemOperation() { - @Override - public boolean isIgnored(Map.Entry> slot) { - return isOutput(slot); - } - }; - } - - /** - * @return an {@link ItemOperation} that ignores all input slots. - */ - public static IOperation outputItemOperation() { - return new ItemOperation() { - @Override - public boolean isIgnored(Map.Entry> slot) { - return !isOutput(slot); - } - }; - } - } public static class FluidOperation extends IngredientSlotOperation { From 339dd2b710c92e071f08326eaf455a34be8ebb65 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 1 Aug 2024 23:54:02 -0700 Subject: [PATCH 44/47] extract remove combo and text logic from keybind --- .../mods/jei/removal/RemoveJEIRecipe.java | 91 +++++++++++++++++++ .../groovyscript/keybind/RemoveRecipeKey.java | 86 +----------------- 2 files changed, 96 insertions(+), 81 deletions(-) create mode 100644 src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/RemoveJEIRecipe.java diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/RemoveJEIRecipe.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/RemoveJEIRecipe.java new file mode 100644 index 000000000..46b7a16ef --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/RemoveJEIRecipe.java @@ -0,0 +1,91 @@ +package com.cleanroommc.groovyscript.compat.mods.jei.removal; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.command.TextCopyable; +import mezz.jei.api.gui.IRecipeLayout; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.util.text.*; +import org.apache.commons.lang3.tuple.Pair; + +import java.util.List; + +public class RemoveJEIRecipe { + + public static final RemoveJEIRecipe INSTANCE = new RemoveJEIRecipe(); + + private static final ITextComponent GOLD_SEPARATOR = new TextComponentString("====================================").setStyle(new Style().setColor(TextFormatting.GOLD)); + + private static final int SHORTHAND_TRIM_LENGTH = 60; + private static final int SHORTHAND_TRIM_MARGIN = 5; + private static final String SHORTHAND_INDICATOR = TextFormatting.RED + "..."; + + private static final String ERROR_KEY = "groovyscript.jei.remove_recipe.unknown_category"; + private static final Style ERROR_STYLE = new Style().setColor(TextFormatting.RED); + private static final Style ERROR_COPY_STYLE = new Style().setColor(TextFormatting.GOLD); + + private String lastUid = ""; + private IRecipeLayout lastLayout; + private int combo; + private Pair> removal; + + private static void missingUid(String uid) { + Minecraft.getMinecraft().player.sendMessage(new TextComponentTranslation(ERROR_KEY, TextCopyable.string(uid, uid).build().setStyle(ERROR_COPY_STYLE)).setStyle(ERROR_STYLE)); + } + + private static void printMessage(String prefix, String shorthand) { + var msg = shorthand.length() > SHORTHAND_TRIM_LENGTH + SHORTHAND_TRIM_MARGIN + ? shorthand.substring(0, SHORTHAND_TRIM_LENGTH) + SHORTHAND_INDICATOR + : shorthand; + printMessage(TextCopyable.string(String.format("%s.%s", prefix, shorthand), msg).build()); + } + + private static void printMessage(ITextComponent message) { + GroovyLog.get().debug(message.getUnformattedText()); + Minecraft.getMinecraft().player.sendMessage(message); + } + + public boolean checkRemoval(IRecipeLayout layout, String uid, boolean inverseComboOrder) { + var matchesLast = lastUid.equals(uid) && lastLayout == layout; + + if (matchesLast && removal != null && !removal.getValue().isEmpty()) { + adjustCombo(inverseComboOrder); + } else { + lastUid = uid; + lastLayout = layout; + combo = 0; + removal = JeiRemovalHelper.getRemovalMethod(JeiRemovalHelper.getFocusedRecipeUid(), layout); + } + + if (removal == null) { + missingUid(uid); + return false; + } + + Minecraft.getMinecraft().player.sendMessage(GOLD_SEPARATOR); + + var text = TextFormatting.getTextWithoutFormattingCodes(String.format("%s.%s", removal.getKey(), removal.getValue().get(combo))); + if (text != null) GuiScreen.setClipboardString(text); + + if (matchesLast) { + printMessage(removal.getKey(), removal.getValue().get(combo)); + } else { + for (String s : removal.getValue()) { + printMessage(removal.getKey(), s); + } + } + return true; + } + + private void adjustCombo(boolean inverseComboOrder) { + if (removal == null || removal.getValue().isEmpty()) { + combo = 0; + return; + } + if (inverseComboOrder) combo--; + else combo++; + if (combo > removal.getValue().size() - 1) combo = 0; + if (combo < 0) combo = removal.getValue().size() - 1; + } + +} diff --git a/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java b/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java index 5015820e7..272d3e00d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java +++ b/src/main/java/com/cleanroommc/groovyscript/keybind/RemoveRecipeKey.java @@ -1,39 +1,18 @@ package com.cleanroommc.groovyscript.keybind; -import com.cleanroommc.groovyscript.api.GroovyLog; -import com.cleanroommc.groovyscript.command.TextCopyable; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.JeiPlugin; import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.RemoveJEIRecipe; import mezz.jei.api.IRecipesGui; -import mezz.jei.api.gui.IRecipeLayout; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; -import net.minecraft.util.text.*; import net.minecraftforge.client.settings.KeyConflictContext; import net.minecraftforge.client.settings.KeyModifier; -import org.apache.commons.lang3.tuple.Pair; import org.lwjgl.input.Keyboard; -import java.util.List; - public class RemoveRecipeKey extends GroovyScriptKeybinds.Key { - private static final ITextComponent GOLD_SEPARATOR = new TextComponentString("====================================").setStyle(new Style().setColor(TextFormatting.GOLD)); - - private static final int SHORTHAND_TRIM_LENGTH = 60; - private static final int SHORTHAND_TRIM_MARGIN = 5; - private static final String SHORTHAND_INDICATOR = TextFormatting.RED + "..."; - - private static final String ERROR_KEY = "key.groovyscript.remove_recipe_from_jei.unknown_category"; - private static final Style ERROR_STYLE = new Style().setColor(TextFormatting.RED); - private static final Style ERROR_COPY_STYLE = new Style().setColor(TextFormatting.GOLD); - - private String lastUid = ""; - private IRecipeLayout lastLayout; - private int combo; - private Pair> removal; - public RemoveRecipeKey() { super("remove_recipe_from_jei", KeyConflictContext.GUI, KeyModifier.CONTROL, Keyboard.KEY_X); } @@ -47,71 +26,16 @@ public boolean isValid() { return Minecraft.getMinecraft().currentScreen instanceof IRecipesGui && !JeiPlugin.jeiRuntime.getIngredientListOverlay().hasKeyboardFocus(); } - private static void missingUid(String uid) { - Minecraft.getMinecraft().player.sendMessage( - new TextComponentTranslation(ERROR_KEY, TextCopyable.string(uid, uid).build().setStyle(ERROR_COPY_STYLE)).setStyle(ERROR_STYLE)); - } - - private static void printMessage(String prefix, String shorthand) { - var msg = shorthand.length() > SHORTHAND_TRIM_LENGTH + SHORTHAND_TRIM_MARGIN - ? shorthand.substring(0, SHORTHAND_TRIM_LENGTH) + SHORTHAND_INDICATOR - : shorthand; - printMessage(TextCopyable.string(String.format("%s.%s", prefix, shorthand), msg).build()); - } - - private static void printMessage(ITextComponent message) { - GroovyLog.get().debug(message.getUnformattedText()); - Minecraft.getMinecraft().player.sendMessage(message); - } - @Override public void handleKeybind() { // only actually check if this is the downpress if (Keyboard.getEventKeyState()) { + var layout = JeiRemovalHelper.getRecipeLayoutUnderMouse(); + if (layout == null) return; + var uid = JeiRemovalHelper.getFocusedRecipeUid(); - var newLayout = JeiRemovalHelper.getRecipeLayoutUnderMouse(); - if (newLayout == null) return; - var newUid = JeiRemovalHelper.getFocusedRecipeUid(); - - var matchesLast = lastUid.equals(newUid) && lastLayout == newLayout; - - if (matchesLast && removal != null && !removal.getValue().isEmpty()) { - adjustCombo(); - } else { - lastUid = newUid; - lastLayout = newLayout; - combo = 0; - removal = JeiRemovalHelper.getRemovalMethod(JeiRemovalHelper.getFocusedRecipeUid(), newLayout); - } - - if (removal == null) { - missingUid(newUid); - } else { - Minecraft.getMinecraft().player.sendMessage(GOLD_SEPARATOR); - - var text = TextFormatting.getTextWithoutFormattingCodes(String.format("%s.%s", removal.getKey(), removal.getValue().get(combo))); - if (text != null) GuiScreen.setClipboardString(text); - - if (matchesLast) { - printMessage(removal.getKey(), removal.getValue().get(combo)); - } else { - for (String s : removal.getValue()) { - printMessage(removal.getKey(), s); - } - } - } - } - } - - private void adjustCombo() { - if (removal == null || removal.getValue().isEmpty()) { - combo = 0; - return; + RemoveJEIRecipe.INSTANCE.checkRemoval(layout, uid, GuiScreen.isShiftKeyDown()); } - if (GuiScreen.isShiftKeyDown()) combo--; - else combo++; - if (combo > removal.getValue().size() - 1) combo = 0; - if (combo < 0) combo = removal.getValue().size() - 1; } } From d2804a99f29969415577f6971af25d45d79ed216 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 1 Aug 2024 23:56:25 -0700 Subject: [PATCH 45/47] add first-operation disclaimer with github link --- .../mods/jei/removal/RemoveJEIRecipe.java | 18 ++++++++++++++++++ .../assets/groovyscript/lang/en_us.lang | 5 ++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/RemoveJEIRecipe.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/RemoveJEIRecipe.java index 46b7a16ef..cee7ff2ff 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/RemoveJEIRecipe.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/RemoveJEIRecipe.java @@ -6,6 +6,8 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.util.text.*; +import net.minecraft.util.text.event.ClickEvent; +import net.minecraft.util.text.event.HoverEvent; import org.apache.commons.lang3.tuple.Pair; import java.util.List; @@ -24,6 +26,15 @@ public class RemoveJEIRecipe { private static final Style ERROR_STYLE = new Style().setColor(TextFormatting.RED); private static final Style ERROR_COPY_STYLE = new Style().setColor(TextFormatting.GOLD); + private static final String ISSUES_LINK = "https://github.com/CleanroomMC/GroovyScript/issues"; + private static final String GITHUB_NAME = "GitHub"; + private static final Style COPY_STYLE = new Style() + .setColor(TextFormatting.LIGHT_PURPLE) + .setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponentTranslation("groovyscript.jei.remove_recipe.view_on_github"))) + .setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, ISSUES_LINK)); + + private boolean hasSeenFirstExecutionNotice; + private String lastUid = ""; private IRecipeLayout lastLayout; private int combo; @@ -46,6 +57,8 @@ private static void printMessage(ITextComponent message) { } public boolean checkRemoval(IRecipeLayout layout, String uid, boolean inverseComboOrder) { + if (!hasSeenFirstExecutionNotice) handleFirstExecution(); + var matchesLast = lastUid.equals(uid) && lastLayout == layout; if (matchesLast && removal != null && !removal.getValue().isEmpty()) { @@ -88,4 +101,9 @@ private void adjustCombo(boolean inverseComboOrder) { if (combo < 0) combo = removal.getValue().size() - 1; } + private void handleFirstExecution() { + Minecraft.getMinecraft().player.sendMessage(new TextComponentTranslation("groovyscript.jei.remove_recipe.first_time", new TextComponentString(GITHUB_NAME).setStyle(COPY_STYLE))); + hasSeenFirstExecutionNotice = true; + } + } diff --git a/src/main/resources/assets/groovyscript/lang/en_us.lang b/src/main/resources/assets/groovyscript/lang/en_us.lang index a8316b918..1515a685c 100644 --- a/src/main/resources/assets/groovyscript/lang/en_us.lang +++ b/src/main/resources/assets/groovyscript/lang/en_us.lang @@ -6,7 +6,10 @@ key.categories.groovyscript=GroovyScript keybind.groovyscript.reload=Reload Scripts keybind.groovyscript.remove_recipe_from_jei=Generate Recipe Removal Method (from JEI) -key.groovyscript.remove_recipe_from_jei.unknown_category=Couldn't find a way to remove the targeted recipe in category '%s' +# Remove Recipes from JEI +groovyscript.jei.remove_recipe.unknown_category=Couldn't find a way to remove the targeted recipe in category '%s' +groovyscript.jei.remove_recipe.first_time=GroovyScript offers the ability to generate removal methods for recipes. In many cases the methods provided would remove multiple recipes, so use the one that's right for your situation. If the methods generated do not exist, do not function in the implied way, or you encounter any crashes, please submit an issue to our %s! +groovyscript.jei.remove_recipe.view_on_github=Open GroovyScript's GitHub Issues page groovyscript.jei.category.groovyscript:fluid_recipe.name=In world fluid recipes groovyscript.jei.category.groovyscript:explosion.name=Explosion recipes From 1c16a97147e8f8e6969f8b9d932956148bfc4fdd Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Fri, 2 Aug 2024 00:01:16 -0700 Subject: [PATCH 46/47] comment todo jei for mekanism methods --- .../groovyscript/compat/mods/mekanism/MetallurgicInfuser.java | 1 + .../groovyscript/compat/mods/mekanism/recipe/IJEIRemovalGas.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/MetallurgicInfuser.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/MetallurgicInfuser.java index 1c90ebdba..cafa3e147 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/MetallurgicInfuser.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/MetallurgicInfuser.java @@ -74,6 +74,7 @@ public boolean removeByInput(IIngredient ingredient, InfuseType infuseType) { @Override public @NotNull List getJEIOperations() { + // TODO jei methods don't exist to use properly return ImmutableList.of(infuseTypeOperation(), OperationHandler.ItemOperation.defaultItemOperation().exclude(2), OperationHandler.FluidOperation.defaultFluidOperation(), IJEIRemovalGas.getDefaultGas()); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/IJEIRemovalGas.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/IJEIRemovalGas.java index b81473863..df9cd55a9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/IJEIRemovalGas.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/IJEIRemovalGas.java @@ -19,6 +19,7 @@ static OperationHandler.SlotOperation getDefaultGas() { @Override default @NotNull List getJEIOperations() { + // TODO jei most mekanism classes can't do anything except "removeByInput", but with multiple parameters. return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation(), getDefaultGas()); } From 0762660713740c94d0450a5ea9608aa69790cb14 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Fri, 2 Aug 2024 01:37:22 -0700 Subject: [PATCH 47/47] move to API, break up file, and reorganize --- .../jeiremoval}/IJEIRemoval.java | 17 +- .../operations/BaseSlotOperation.java | 108 +++++ .../operations/ClassSlotOperation.java | 40 ++ .../jeiremoval/operations/FluidOperation.java | 23 + .../api/jeiremoval/operations/IOperation.java | 21 + .../jeiremoval/operations/ISlotOperation.java | 58 +++ .../operations/IngredientSlotOperation.java | 40 ++ .../jeiremoval/operations/ItemOperation.java | 38 ++ .../jeiremoval/operations/SlotOperation.java | 55 +++ .../operations/WrapperOperation.java | 51 +++ .../compat/inworldcrafting/Burning.java | 6 +- .../compat/inworldcrafting/Explosion.java | 6 +- .../compat/inworldcrafting/FluidToBlock.java | 9 +- .../compat/inworldcrafting/FluidToFluid.java | 9 +- .../compat/inworldcrafting/FluidToItem.java | 9 +- .../compat/inworldcrafting/PistonPush.java | 6 +- .../AtomicReconstructor.java | 2 +- .../mods/actuallyadditions/Compost.java | 2 +- .../mods/actuallyadditions/Crusher.java | 2 +- .../mods/actuallyadditions/Empowerer.java | 9 +- .../compat/mods/advancedmortars/Mortar.java | 6 +- .../compat/mods/aetherlegacy/Enchanter.java | 9 +- .../compat/mods/aetherlegacy/Freezer.java | 9 +- .../compat/mods/alchemistry/Atomizer.java | 2 +- .../compat/mods/alchemistry/Combiner.java | 2 +- .../compat/mods/alchemistry/Dissolver.java | 9 +- .../compat/mods/alchemistry/Electrolyzer.java | 2 +- .../compat/mods/alchemistry/Evaporator.java | 2 +- .../compat/mods/alchemistry/Liquifier.java | 10 +- .../mods/appliedenergistics2/Grinder.java | 2 +- .../mods/appliedenergistics2/Inscriber.java | 9 +- .../mods/arcanearchives/GemCuttingTable.java | 2 +- .../compat/mods/astralsorcery/Grindstone.java | 2 +- .../mods/astralsorcery/InfusionAltar.java | 2 +- .../astralsorcery/LightTransmutation.java | 6 +- .../compat/mods/astralsorcery/Lightwell.java | 2 +- .../starlightaltar/StarlightAltar.java | 29 +- .../groovyscript/compat/mods/atum/Kiln.java | 2 +- .../groovyscript/compat/mods/atum/Quern.java | 2 +- .../compat/mods/atum/SpinningWheel.java | 2 +- .../compat/mods/avaritia/Compressor.java | 9 +- .../compat/mods/avaritia/ExtremeCrafting.java | 9 +- .../mods/betterwithmods/AnvilCrafting.java | 17 +- .../compat/mods/betterwithmods/Hopper.java | 7 +- .../betterwithmods/IJEIRemovalIOutput.java | 12 +- .../compat/mods/betterwithmods/Turntable.java | 7 +- .../compat/mods/bloodmagic/AlchemyArray.java | 11 +- .../compat/mods/bloodmagic/AlchemyTable.java | 6 +- .../compat/mods/bloodmagic/BloodAltar.java | 2 +- .../compat/mods/bloodmagic/TartaricForge.java | 6 +- .../compat/mods/botania/Apothecary.java | 6 +- .../compat/mods/botania/BrewRecipe.java | 2 +- .../compat/mods/botania/ElvenTrade.java | 9 +- .../compat/mods/botania/ManaInfusion.java | 10 +- .../compat/mods/botania/Orechid.java | 9 +- .../compat/mods/botania/PureDaisy.java | 6 +- .../compat/mods/botania/RuneAltar.java | 6 +- .../mods/calculator/AlgorithmSeparator.java | 2 +- .../mods/calculator/AnalysingChamber.java | 2 +- .../mods/calculator/AtomicCalculator.java | 2 +- .../mods/calculator/BasicCalculator.java | 2 +- .../compat/mods/calculator/ConductorMast.java | 2 +- .../mods/calculator/ExtractionChamber.java | 2 +- .../mods/calculator/FabricationChamber.java | 2 +- .../mods/calculator/FlawlessCalculator.java | 2 +- .../mods/calculator/GlowstoneExtractor.java | 2 +- .../mods/calculator/HealthProcessor.java | 2 +- .../mods/calculator/PrecisionChamber.java | 2 +- .../mods/calculator/ProcessingChamber.java | 2 +- .../mods/calculator/ReassemblyChamber.java | 2 +- .../mods/calculator/RedstoneExtractor.java | 2 +- .../mods/calculator/RestorationChamber.java | 2 +- .../mods/calculator/ScientificCalculator.java | 2 +- .../mods/calculator/StarchExtractor.java | 2 +- .../mods/calculator/StoneSeparator.java | 2 +- .../compat/mods/chisel/Carving.java | 11 +- .../mods/compactmachines/Miniaturization.java | 15 +- .../compat/mods/cyclic/Dehydrator.java | 10 +- .../compat/mods/cyclic/Hydrator.java | 10 +- .../compat/mods/cyclic/Melter.java | 10 +- .../compat/mods/cyclic/Packager.java | 2 +- .../compat/mods/cyclic/Solidifier.java | 2 +- .../compat/mods/draconicevolution/Fusion.java | 13 +- .../compat/mods/enderio/AlloySmelter.java | 9 +- .../compat/mods/enderio/Enchanter.java | 6 +- .../compat/mods/enderio/SagMill.java | 9 +- .../compat/mods/enderio/SagMillGrinding.java | 9 +- .../compat/mods/enderio/SliceNSplice.java | 9 +- .../compat/mods/enderio/SoulBinder.java | 9 +- .../compat/mods/enderio/Tank.java | 6 +- .../groovyscript/compat/mods/enderio/Vat.java | 9 +- .../essentialcraft/DemonTradeManager.java | 9 +- .../mods/essentialcraft/MagicianTable.java | 9 +- .../essentialcraft/MithrilineFurnace.java | 2 +- .../mods/essentialcraft/RadiatingChamber.java | 9 +- .../compat/mods/essentialcraft/WindRune.java | 2 +- .../compat/mods/evilcraft/BloodInfuser.java | 9 +- .../evilcraft/EnvironmentalAccumulator.java | 9 +- .../extendedcrafting/CombinationCrafting.java | 2 +- .../extendedcrafting/CompressionCrafting.java | 11 +- .../mods/extendedcrafting/EnderCrafting.java | 9 +- .../mods/extendedcrafting/TableCrafting.java | 9 +- .../compat/mods/extrabotany/Pedestal.java | 6 +- .../compat/mods/extrautils2/Crusher.java | 2 +- .../compat/mods/extrautils2/Enchanter.java | 2 +- .../compat/mods/extrautils2/Furnace.java | 2 +- .../compat/mods/extrautils2/Generator.java | 6 +- .../compat/mods/extrautils2/Resonator.java | 2 +- .../mods/immersiveengineering/AlloyKiln.java | 9 +- .../mods/immersiveengineering/ArcFurnace.java | 10 +- .../immersiveengineering/BlastFurnace.java | 9 +- .../BlastFurnaceFuel.java | 2 +- .../BlueprintCrafting.java | 6 +- .../immersiveengineering/BottlingMachine.java | 9 +- .../mods/immersiveengineering/CokeOven.java | 10 +- .../mods/immersiveengineering/Crusher.java | 2 +- .../mods/immersiveengineering/Fermenter.java | 2 +- .../mods/immersiveengineering/MetalPress.java | 9 +- .../mods/immersiveengineering/Mixer.java | 9 +- .../mods/immersiveengineering/Refinery.java | 9 +- .../mods/immersiveengineering/Squeezer.java | 2 +- .../mods/immersivepetroleum/Distillation.java | 4 +- .../mods/industrialforegoing/BioReactor.java | 9 +- .../mods/industrialforegoing/Extractor.java | 2 +- .../industrialforegoing/FluidDictionary.java | 2 +- .../mods/industrialforegoing/LaserDrill.java | 9 +- .../industrialforegoing/OreFermenter.java | 2 +- .../mods/industrialforegoing/OreRaw.java | 2 +- .../mods/industrialforegoing/OreSieve.java | 2 +- .../industrialforegoing/ProteinReactor.java | 9 +- .../industrialforegoing/SludgeRefiner.java | 9 +- .../mods/inspirations/AnvilSmashing.java | 6 +- .../compat/mods/inspirations/Cauldron.java | 9 +- .../mods/integrateddynamics/DryingBasin.java | 2 +- .../MechanicalDryingBasin.java | 2 +- .../MechanicalSqueezer.java | 9 +- .../mods/integrateddynamics/Squeezer.java | 9 +- .../compat/mods/jei/Description.java | 2 +- .../mods/jei/removal/JeiRemovalHelper.java | 21 +- .../mods/jei/removal/OperationHandler.java | 399 ++---------------- .../compat/mods/lazyae2/Aggregator.java | 2 +- .../compat/mods/lazyae2/Centrifuge.java | 2 +- .../compat/mods/lazyae2/Energizer.java | 2 +- .../compat/mods/lazyae2/Etcher.java | 2 +- .../mods/mekanism/InjectionChamber.java | 8 +- .../mods/mekanism/MetallurgicInfuser.java | 13 +- .../mods/mekanism/OsmiumCompressor.java | 8 +- .../mods/mekanism/PurificationChamber.java | 8 +- .../compat/mods/mekanism/Washer.java | 8 +- .../mods/mekanism/recipe/IJEIRemovalGas.java | 12 +- .../mods/mysticalagriculture/Reprocessor.java | 2 +- .../compat/mods/naturesaura/Altar.java | 11 +- .../compat/mods/naturesaura/Offering.java | 11 +- .../compat/mods/naturesaura/Ritual.java | 11 +- .../compat/mods/naturesaura/Spawning.java | 2 +- .../compat/mods/pneumaticcraft/Amadron.java | 2 +- .../pneumaticcraft/AssemblyController.java | 2 +- .../compat/mods/pneumaticcraft/Explosion.java | 2 +- .../mods/pneumaticcraft/HeatFrameCooling.java | 2 +- .../mods/pneumaticcraft/PlasticMixer.java | 10 +- .../mods/pneumaticcraft/PressureChamber.java | 2 +- .../compat/mods/pneumaticcraft/Refinery.java | 2 +- .../ThermopneumaticProcessingPlant.java | 2 +- .../compat/mods/primaltech/ClayKiln.java | 6 +- .../compat/mods/primaltech/StoneAnvil.java | 6 +- .../compat/mods/primaltech/WaterSaw.java | 6 +- .../compat/mods/primaltech/WoodenBasin.java | 6 +- .../mods/prodigytech/AtomicReshaper.java | 9 +- .../mods/prodigytech/ExplosionFurnace.java | 9 +- .../ExplosionFurnaceAdditives.java | 9 +- .../mods/prodigytech/PrimordialisReactor.java | 9 +- .../compat/mods/prodigytech/Solderer.java | 13 +- .../compat/mods/projecte/Transmutation.java | 6 +- .../compat/mods/pyrotech/Anvil.java | 9 +- .../compat/mods/pyrotech/Barrel.java | 9 +- .../compat/mods/pyrotech/Campfire.java | 2 +- .../compat/mods/pyrotech/ChoppingBlock.java | 2 +- .../compat/mods/pyrotech/CompactingBin.java | 2 +- .../compat/mods/pyrotech/CompostBin.java | 2 +- .../compat/mods/pyrotech/CrudeDryingRack.java | 2 +- .../compat/mods/pyrotech/DryingRack.java | 2 +- .../compat/mods/pyrotech/Kiln.java | 9 +- .../compat/mods/pyrotech/SoakingPot.java | 10 +- .../compat/mods/pyrotech/TanningRack.java | 2 +- .../compat/mods/roots/BarkCarving.java | 2 +- .../compat/mods/roots/Chrysopoeia.java | 2 +- .../compat/mods/roots/FeyCrafter.java | 9 +- .../compat/mods/roots/LifeEssence.java | 13 +- .../compat/mods/roots/Mortar.java | 9 +- .../groovyscript/compat/mods/roots/Moss.java | 6 +- .../groovyscript/compat/mods/roots/Pyre.java | 9 +- .../compat/mods/roots/RunicShearBlock.java | 9 +- .../compat/mods/roots/RunicShearEntity.java | 9 +- .../compat/mods/roots/SummonCreature.java | 6 +- .../compat/mods/roots/Transmutation.java | 2 +- .../compat/mods/rustic/Alchemy.java | 2 +- .../compat/mods/rustic/BrewingBarrel.java | 2 +- .../compat/mods/rustic/CrushingTub.java | 2 +- .../compat/mods/rustic/EvaporatingBasin.java | 2 +- .../compat/mods/tcomplement/HighOven.java | 14 +- .../compat/mods/tcomplement/Melter.java | 10 +- .../compat/mods/thaumcraft/Crucible.java | 7 +- .../mods/thaumcraft/IJEIRemovalAspect.java | 12 +- .../mods/thaumcraft/InfusionCrafting.java | 7 +- .../thaumcraft/arcane/ArcaneWorkbench.java | 19 +- .../mods/theaurorian/MoonlightForge.java | 2 +- .../compat/mods/theaurorian/Scrapper.java | 9 +- .../mods/thermalexpansion/device/Coolant.java | 2 +- .../thermalexpansion/device/Factorizer.java | 2 +- .../mods/thermalexpansion/device/Tapper.java | 9 +- .../thermalexpansion/dynamo/Compression.java | 2 +- .../thermalexpansion/dynamo/Enervation.java | 2 +- .../thermalexpansion/dynamo/Lapidary.java | 2 +- .../thermalexpansion/dynamo/Magmatic.java | 2 +- .../thermalexpansion/dynamo/Numismatic.java | 2 +- .../thermalexpansion/dynamo/Reactant.java | 2 +- .../mods/thermalexpansion/dynamo/Steam.java | 2 +- .../mods/thermalexpansion/machine/Brewer.java | 2 +- .../thermalexpansion/machine/Centrifuge.java | 2 +- .../machine/CentrifugeMobs.java | 2 +- .../thermalexpansion/machine/Charger.java | 2 +- .../thermalexpansion/machine/Compactor.java | 2 +- .../thermalexpansion/machine/Crucible.java | 2 +- .../thermalexpansion/machine/Enchanter.java | 9 +- .../thermalexpansion/machine/Extruder.java | 9 +- .../thermalexpansion/machine/Furnace.java | 2 +- .../machine/FurnacePyrolysis.java | 10 +- .../thermalexpansion/machine/Insolator.java | 9 +- .../machine/Precipitator.java | 2 +- .../thermalexpansion/machine/Pulverizer.java | 2 +- .../thermalexpansion/machine/Refinery.java | 2 +- .../machine/RefineryPotion.java | 2 +- .../thermalexpansion/machine/Sawmill.java | 2 +- .../thermalexpansion/machine/Smelter.java | 2 +- .../machine/TransposerExtract.java | 2 +- .../machine/TransposerFill.java | 2 +- .../mods/tinkersconstruct/Alloying.java | 2 +- .../mods/tinkersconstruct/CastingTable.java | 10 +- .../compat/mods/tinkersconstruct/Drying.java | 2 +- .../compat/mods/tinkersconstruct/Melting.java | 10 +- .../compat/mods/woot/StygianIronAnvil.java | 9 +- .../groovyscript/compat/vanilla/Crafting.java | 17 +- .../groovyscript/compat/vanilla/Furnace.java | 2 +- 243 files changed, 1202 insertions(+), 992 deletions(-) rename src/main/java/com/cleanroommc/groovyscript/{compat/mods/jei/removal => api/jeiremoval}/IJEIRemoval.java (85%) create mode 100644 src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/BaseSlotOperation.java create mode 100644 src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/ClassSlotOperation.java create mode 100644 src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/FluidOperation.java create mode 100644 src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/IOperation.java create mode 100644 src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/ISlotOperation.java create mode 100644 src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/IngredientSlotOperation.java create mode 100644 src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/ItemOperation.java create mode 100644 src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/SlotOperation.java create mode 100644 src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/WrapperOperation.java diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/IJEIRemoval.java b/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/IJEIRemoval.java similarity index 85% rename from src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/IJEIRemoval.java rename to src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/IJEIRemoval.java index 99a4243e6..3c2b4a72e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/IJEIRemoval.java +++ b/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/IJEIRemoval.java @@ -1,5 +1,8 @@ -package com.cleanroommc.groovyscript.compat.mods.jei.removal; +package com.cleanroommc.groovyscript.api.jeiremoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ISlotOperation; +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import mezz.jei.api.gui.IRecipeLayout; import org.jetbrains.annotations.NotNull; @@ -12,7 +15,7 @@ * and contains methods indicating what JEI Categories the given registry represents * and how to remove those recipes. *

- * Primarily interacted with by {@link JeiRemovalHelper#getRemovalMethod(String, IRecipeLayout)}. + * Primarily interacted with by {@link com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper#getRemovalMethod(String, IRecipeLayout)}. *

* In most cases, classes should implement {@link Default} instead of directly implementing {@link IJEIRemoval}. * @@ -67,10 +70,10 @@ interface Default extends IJEIRemoval { * @return a list if operations with the given slots included * @see OperationHandler#defaultOperations() */ - static List includeSlots(int... included) { + static List includeSlots(int... included) { var operations = OperationHandler.defaultOperations(); for (var operation : operations) { - if (operation instanceof OperationHandler.ISlotOperation op) op.include(included); + if (operation instanceof ISlotOperation op) op.include(included); } return operations; } @@ -85,10 +88,10 @@ static List includeSlots(int... included) { * @return a list if operations with the given slots excluded * @see OperationHandler#defaultOperations() */ - static List excludeSlots(int... excluded) { + static List excludeSlots(int... excluded) { var operations = OperationHandler.defaultOperations(); for (var operation : operations) { - if (operation instanceof OperationHandler.ISlotOperation op) op.exclude(excluded); + if (operation instanceof ISlotOperation op) op.exclude(excluded); } return operations; } @@ -116,7 +119,7 @@ static List excludeSlots(int... excluded) { * @see OperationHandler#defaultOperations() * @see OperationHandler#removalOptions(IRecipeLayout, List) */ - default @NotNull List getJEIOperations() { + default @NotNull List getJEIOperations() { return OperationHandler.defaultOperations(); } diff --git a/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/BaseSlotOperation.java b/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/BaseSlotOperation.java new file mode 100644 index 000000000..d7c1fd838 --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/BaseSlotOperation.java @@ -0,0 +1,108 @@ +package com.cleanroommc.groovyscript.api.jeiremoval.operations; + +import mezz.jei.api.gui.IGuiIngredient; + +import javax.annotation.ParametersAreNonnullByDefault; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Abstract class containing the basic logic for input and output slots, what slots are excluded, + * and what method name should be used for a given slot. + */ +@ParametersAreNonnullByDefault +public abstract class BaseSlotOperation implements ISlotOperation> { + + private static final String DEFAULT_INPUT_METHOD_NAME = "removeByInput"; + private static final String DEFAULT_OUTPUT_METHOD_NAME = "removeByOutput"; + + protected final List included = new ArrayList<>(); + protected final List excluded = new ArrayList<>(); + protected final List reallyInputs = new ArrayList<>(); + protected final List reallyOutputs = new ArrayList<>(); + protected String inputMethodName = DEFAULT_INPUT_METHOD_NAME; + protected String outputMethodName = DEFAULT_OUTPUT_METHOD_NAME; + + @Override + public BaseSlotOperation include(int... ints) { + for (var i : ints) this.included.add(i); + return this; + } + + @Override + public BaseSlotOperation exclude(int... ints) { + for (var i : ints) this.excluded.add(i); + return this; + } + + @Override + public BaseSlotOperation input(int... ints) { + for (var i : ints) this.reallyInputs.add(i); + return this; + } + + @Override + public BaseSlotOperation output(int... ints) { + for (var i : ints) this.reallyOutputs.add(i); + return this; + } + + @Override + public BaseSlotOperation input(String name) { + this.inputMethodName = name; + return this; + } + + @Override + public BaseSlotOperation output(String name) { + this.outputMethodName = name; + return this; + } + + /** + * Checks if the slot should be skipped. + * If the slot has no ingredients it is automatically skipped. + * If {@link #included} is empty, checks the {@link #excluded} list and if the slot contains no ingredients. + * Otherwise, if the slot is a member of the {@link #included} list the provided slot will be included. + * + * @param slot the entry slot being parsed + * @return if the slot should be ignored + */ + protected boolean isIgnored(Map.Entry> slot) { + if (slot.getValue().getAllIngredients().isEmpty()) return true; + return this.included.isEmpty() ? this.excluded.contains(slot.getKey()) : !this.included.contains(slot.getKey()); + } + + /** + * Checks if the slot should be considered an input slot. + * By default, checks the {@link #reallyInputs} list for overrides, then if the slot is marked as an input. + * + * @param slot the entry slot being parsed + * @return if the slot is an input + */ + protected boolean isInput(Map.Entry> slot) { + return this.reallyInputs.contains(slot.getKey()) || slot.getValue().isInput(); + } + + + /** + * Checks if the slot should be considered an output slot. + * By default, checks the {@link #reallyOutputs} list for overrides, then if the slot is an input via {@link #isInput(Map.Entry)}. + * + * @param slot the entry slot being parsed + * @return if the slot is an output + */ + protected boolean isOutput(Map.Entry> slot) { + return this.reallyOutputs.contains(slot.getKey()) || !isInput(slot); + } + + /** + * @param slot the entry slot being parsed + * @return the method name used to represent the slot + */ + protected String getMethod(Map.Entry> slot) { + return isOutput(slot) ? this.outputMethodName : this.inputMethodName; + } + +} diff --git a/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/ClassSlotOperation.java b/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/ClassSlotOperation.java new file mode 100644 index 000000000..c510977ac --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/ClassSlotOperation.java @@ -0,0 +1,40 @@ +package com.cleanroommc.groovyscript.api.jeiremoval.operations; + +import mezz.jei.api.gui.IGuiIngredient; +import mezz.jei.api.gui.IRecipeLayout; + +import javax.annotation.ParametersAreNonnullByDefault; +import java.util.List; +import java.util.Map; +import java.util.function.BiFunction; + +/** + * Class for ingredient groups obtained via the deprecated {@link IRecipeLayout#getIngredientsGroup(Class)} method. + *

+ * Used to read the gui ingredients added via the deprecated format. + * + * @see IngredientSlotOperation + */ +@SuppressWarnings("deprecation") +@ParametersAreNonnullByDefault +public class ClassSlotOperation extends SlotOperation { + + private final Class clazz; + + /** + * @param clazz the class that is used to get the gui ingredients from the recipe layout through the deprecated format + * @param hasExactInput if slots marked as an input should add to the exactInput list in {@link #parse(IRecipeLayout, List, List)}. + * @param function a bifunction taking the primary ingredient in the slot and all ingredients in the slot and returning + * a String to represent that slot, typically via an {@link com.cleanroommc.groovyscript.mapper.ObjectMapper ObjectMapper}. + */ + public ClassSlotOperation(Class clazz, boolean hasExactInput, BiFunction, String> function) { + super(hasExactInput, function); + this.clazz = clazz; + } + + @Override + protected Map> getGuiIngredients(IRecipeLayout layout) { + return layout.getIngredientsGroup(clazz).getGuiIngredients(); + } + +} diff --git a/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/FluidOperation.java b/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/FluidOperation.java new file mode 100644 index 000000000..28b288601 --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/FluidOperation.java @@ -0,0 +1,23 @@ +package com.cleanroommc.groovyscript.api.jeiremoval.operations; + +import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; +import mezz.jei.api.ingredients.VanillaTypes; +import net.minecraftforge.fluids.FluidStack; + +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +public class FluidOperation extends IngredientSlotOperation { + + public FluidOperation() { + super(VanillaTypes.FLUID, true, (stack, all) -> GroovyScriptCodeConverter.getSingleFluidStack(stack, true, false)); + } + + /** + * @return the base {@link FluidOperation} + */ + public static FluidOperation defaultOperation() { + return new FluidOperation(); + } + +} diff --git a/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/IOperation.java b/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/IOperation.java new file mode 100644 index 000000000..dd80d34dd --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/IOperation.java @@ -0,0 +1,21 @@ +package com.cleanroommc.groovyscript.api.jeiremoval.operations; + +import mezz.jei.api.gui.IRecipeLayout; + +import javax.annotation.ParametersAreNonnullByDefault; +import java.util.List; + +/** + * Base operations requirement, merely requires that the implementing classes contain a {@link #parse(IRecipeLayout, List, List)} method. + */ +@ParametersAreNonnullByDefault +public interface IOperation { + + /** + * @param layout the recipe layout to be parsed + * @param removing a list of strings which should be modified, and any removal methods should be added to + * @param exactInput if the implementing class gathers input ingredients, an addition list to manage them for a separate method + */ + void parse(IRecipeLayout layout, List removing, List exactInput); + +} diff --git a/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/ISlotOperation.java b/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/ISlotOperation.java new file mode 100644 index 000000000..09d1c3d45 --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/ISlotOperation.java @@ -0,0 +1,58 @@ +package com.cleanroommc.groovyscript.api.jeiremoval.operations; + +import javax.annotation.ParametersAreNonnullByDefault; + +/** + * Interface for a {@link BaseSlotOperation}, requiring the ability to + * block specific slots from appearing, + * override the input or output state of a slot (due to the slot being incorrectly listed) + * set the method name for the input or output. + * + * @param the operation class + */ +@ParametersAreNonnullByDefault +public interface ISlotOperation extends IOperation { + + /** + * Include all provided slot numbers to be evaluated. If this is called, {@link #exclude(int...)} should be ignored. + * + * @param ints all slots to be included + */ + ISlotOperation include(int... ints); + + /** + * Excludes all provided slot numbers from being evaluated. + * Some slots cannot be parsed properly, are superfluous, contain helper items unrelated to the recipe, + * or otherwise should be ignored when generating methods to remove the recipe. + * + * @param ints all slots to be excluded + */ + ISlotOperation exclude(int... ints); + + /** + * Sets all provided slot numbers as an input slot. + * Some slots incorrectly list themselves as an input or an output. + * + * @param ints all slots to be set as an input + */ + ISlotOperation input(int... ints); + + /** + * Sets all provided slot numbers as an output slot. + * Some slots incorrectly list themselves as an input or an output. + * + * @param ints all slots to be set as an output + */ + ISlotOperation output(int... ints); + + /** + * @param name the name of the method used to remove inputs + */ + ISlotOperation input(String name); + + /** + * @param name the name of the method used to remove outputs + */ + ISlotOperation output(String name); + +} diff --git a/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/IngredientSlotOperation.java b/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/IngredientSlotOperation.java new file mode 100644 index 000000000..8b7e7015f --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/IngredientSlotOperation.java @@ -0,0 +1,40 @@ +package com.cleanroommc.groovyscript.api.jeiremoval.operations; + +import mezz.jei.api.gui.IGuiIngredient; +import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.recipe.IIngredientType; + +import javax.annotation.ParametersAreNonnullByDefault; +import java.util.List; +import java.util.Map; +import java.util.function.BiFunction; + +/** + * Class for ingredient groups obtained via {@link IRecipeLayout#getIngredientsGroup(IIngredientType)}. + *

+ * Used to read the gui ingredients added via the modern format. + * + * @see ClassSlotOperation + */ +@ParametersAreNonnullByDefault +public class IngredientSlotOperation extends SlotOperation { + + private final IIngredientType type; + + /** + * @param type the {@link IIngredientType} that is used to get the gui ingredients from the recipe layout + * @param hasExactInput if slots marked as an input should add to the exactInput list in {@link #parse(IRecipeLayout, List, List)}. + * @param function a bifunction taking the primary ingredient in the slot and all ingredients in the slot and returning + * a String to represent that slot, typically via an {@link com.cleanroommc.groovyscript.mapper.ObjectMapper ObjectMapper}. + */ + public IngredientSlotOperation(IIngredientType type, boolean hasExactInput, BiFunction, String> function) { + super(hasExactInput, function); + this.type = type; + } + + @Override + protected Map> getGuiIngredients(IRecipeLayout layout) { + return layout.getIngredientsGroup(type).getGuiIngredients(); + } + +} diff --git a/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/ItemOperation.java b/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/ItemOperation.java new file mode 100644 index 000000000..fa2ac62bb --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/ItemOperation.java @@ -0,0 +1,38 @@ +package com.cleanroommc.groovyscript.api.jeiremoval.operations; + +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; +import mezz.jei.api.ingredients.VanillaTypes; +import net.minecraft.item.ItemStack; + +import javax.annotation.ParametersAreNonnullByDefault; +import java.util.List; + +@ParametersAreNonnullByDefault +public class ItemOperation extends IngredientSlotOperation { + + public ItemOperation() { + super(VanillaTypes.ITEM, true, + (stack, all) -> { + var oreDict = convertToOreDict(all); + return oreDict.isEmpty() ? GroovyScriptCodeConverter.getSingleItemStack(stack, true, false) : oreDict; + }); + } + + /** + * @param ingredients a list of itemstacks to check + * @return if the list of itemstacks are an oredict, represent them as an oredict + */ + private static String convertToOreDict(List ingredients) { + var dict = OperationHandler.getStackHelper().getOreDictEquivalent(ingredients); + return dict == null ? "" : GroovyScriptCodeConverter.asGroovyCode(dict, true); + } + + /** + * @return the base {@link ItemOperation} + */ + public static ItemOperation defaultOperation() { + return new ItemOperation(); + } + +} diff --git a/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/SlotOperation.java b/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/SlotOperation.java new file mode 100644 index 000000000..16faaaa53 --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/SlotOperation.java @@ -0,0 +1,55 @@ +package com.cleanroommc.groovyscript.api.jeiremoval.operations; + +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import mezz.jei.api.gui.IGuiIngredient; +import mezz.jei.api.gui.IRecipeLayout; + +import javax.annotation.ParametersAreNonnullByDefault; +import java.util.List; +import java.util.Map; +import java.util.function.BiFunction; + +/** + * Abstract class containing the core logic of the operation, + * parsing the provided gui ingredients through a provided function. + */ +@ParametersAreNonnullByDefault +public abstract class SlotOperation extends BaseSlotOperation { + + protected final boolean hasExactInput; + protected final BiFunction, String> function; + + /** + * @param hasExactInput if slots marked as an input should add to the exactInput list in {@link #parse(IRecipeLayout, List, List)}. + * @param function a bifunction taking the primary ingredient in the slot and all ingredients in the slot and returning + * a String to represent that slot, typically via an {@link com.cleanroommc.groovyscript.mapper.ObjectMapper ObjectMapper}. + */ + public SlotOperation(boolean hasExactInput, BiFunction, String> function) { + this.hasExactInput = hasExactInput; + this.function = function; + } + + /** + * @param layout the recipe layout being parsed + * @return the ingredients for the target recipe layout + */ + abstract Map> getGuiIngredients(IRecipeLayout layout); + + protected String function(T stack, List list) { + return this.function.apply(stack, list); + } + + @Override + public void parse(IRecipeLayout layout, List removing, List exactInput) { + for (var slot : getGuiIngredients(layout).entrySet()) { + if (isIgnored(slot)) continue; + + var stack = OperationHandler.getIngredientFromSlot(slot.getValue()); + if (stack == null) continue; + + var identity = function(stack, slot.getValue().getAllIngredients()); + if (this.hasExactInput && !isOutput(slot)) exactInput.add(identity); + removing.add(OperationHandler.format(getMethod(slot), identity)); + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/WrapperOperation.java b/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/WrapperOperation.java new file mode 100644 index 000000000..8f9250055 --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/api/jeiremoval/operations/WrapperOperation.java @@ -0,0 +1,51 @@ +package com.cleanroommc.groovyscript.api.jeiremoval.operations; + +import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import mezz.jei.api.gui.IRecipeLayout; + +import javax.annotation.ParametersAreNonnullByDefault; +import java.util.List; +import java.util.function.Function; + +/** + * Checks that the wrapper is an instance of the given class, then calls the provided function parameter + * to generate a list of methods to remove the recipe based on the recipe wrapper. + *

+ * Note that in most cases, using {@link BaseSlotOperation} and some combination of the + * {@link ISlotOperation#exclude(int...)}, {@link ISlotOperation#input(int...)}, and {@link ISlotOperation#output(int...)} + * methods will be able to generate all the removal methods needed. + *

+ * {@link WrapperOperation} should generally only be used if it isn't possible to access + * the desired information through a {@link BaseSlotOperation}. + * + * @param wrapper type + */ +@ParametersAreNonnullByDefault +public class WrapperOperation implements IOperation { + + private final Class wrapperClass; + private final Function> function; + + /** + * @param wrapperClass the wrapper class that is being parsed + * @param function a function that accepts an instance of the wrapper class and returns a list of strings + * to generate output methods for the given recipe + */ + public WrapperOperation(Class wrapperClass, Function> function) { + this.wrapperClass = wrapperClass; + this.function = function; + } + + protected List function(T wrapper) { + return this.function.apply(wrapper); + } + + @Override + public void parse(IRecipeLayout layout, List removing, List exactInput) { + var wrapper = OperationHandler.getRecipeWrapper(layout); + if (wrapperClass.isInstance(wrapper)) { + removing.addAll(function(wrapperClass.cast(wrapper))); + } + } + +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Burning.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Burning.java index 8ec9602ed..0a3267b85 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Burning.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Burning.java @@ -3,9 +3,9 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.inworldcrafting.jei.BurningRecipeCategory; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -69,7 +69,7 @@ public RecipeBuilder recipeBuilder() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return ImmutableList.of(); // TODO jei this } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Explosion.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Explosion.java index 1f58cf96c..b70a9d63f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Explosion.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/Explosion.java @@ -4,9 +4,9 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.inworldcrafting.jei.ExplosionRecipeCategory; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -65,7 +65,7 @@ public RecipeBuilder recipeBuilder() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return ImmutableList.of(); // TODO jei this } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToBlock.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToBlock.java index 1f1c95e17..8c76743a7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToBlock.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToBlock.java @@ -2,9 +2,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.inworldcrafting.jei.FluidRecipeCategory; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -101,8 +102,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.FluidOperation.defaultFluidOperation()); + public @NotNull List getJEIOperations() { + return Collections.singletonList(FluidOperation.defaultOperation()); } public static class Recipe extends FluidRecipe { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToFluid.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToFluid.java index 7e00a6430..6374518d6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToFluid.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToFluid.java @@ -2,9 +2,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.inworldcrafting.jei.FluidRecipeCategory; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -99,8 +100,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.FluidOperation.defaultFluidOperation()); + public @NotNull List getJEIOperations() { + return Collections.singletonList(FluidOperation.defaultOperation()); } public static class Recipe extends FluidRecipe { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToItem.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToItem.java index 83230f29a..d8080f7d9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToItem.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/FluidToItem.java @@ -3,9 +3,10 @@ import com.cleanroommc.groovyscript.GroovyScript; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.inworldcrafting.jei.FluidRecipeCategory; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -84,8 +85,8 @@ public boolean removeByInput(FluidStack fluid, ItemStack... input) { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.FluidOperation.defaultFluidOperation()); + public @NotNull List getJEIOperations() { + return Collections.singletonList(FluidOperation.defaultOperation()); } public boolean removeAll() { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/PistonPush.java b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/PistonPush.java index 14e86fb2d..8b91e6854 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/PistonPush.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/inworldcrafting/PistonPush.java @@ -3,9 +3,9 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.inworldcrafting.jei.PistonPushRecipeCategory; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -66,7 +66,7 @@ public RecipeBuilder recipeBuilder() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return ImmutableList.of(); // TODO jei this } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/AtomicReconstructor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/AtomicReconstructor.java index 1734b91b2..363caf78b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/AtomicReconstructor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/AtomicReconstructor.java @@ -4,8 +4,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Compost.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Compost.java index 4714d8e7c..04c2fff86 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Compost.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Compost.java @@ -4,8 +4,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Crusher.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Crusher.java index cda7ff6de..17f7e0f05 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Crusher.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Crusher.java @@ -4,8 +4,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Empowerer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Empowerer.java index 1b9400d5a..fd2e1caac 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Empowerer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/actuallyadditions/Empowerer.java @@ -4,9 +4,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -104,8 +105,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(1, 2, 3, 4)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().exclude(1, 2, 3, 4)); } @Property(property = "input", valid = {@Comp(value = "4", type = Comp.Type.GTE), @Comp(value = "5", type = Comp.Type.LTE)}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedmortars/Mortar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedmortars/Mortar.java index 9a8ee1671..62f5b6313 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedmortars/Mortar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/advancedmortars/Mortar.java @@ -4,8 +4,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.core.mixin.advancedmortars.RegistryRecipeMortarAccessor; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -96,7 +96,7 @@ public static List getTypes(RecipeMortar recipe) { return Arrays.stream(EnumMortarType.values()).map(Enum::name).map(x -> "advancedmortars_" + x).collect(Collectors.toList()); } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return ImmutableList.of(); // TODO jei } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Enchanter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Enchanter.java index 529250255..b13cde563 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Enchanter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Enchanter.java @@ -3,9 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.gildedgames.the_aether.api.enchantments.AetherEnchantment; @@ -54,8 +55,8 @@ public void removeByOutput(IIngredient output) { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(2).output(2)); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation().include(2).output(2)); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Freezer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Freezer.java index efcb7bf9b..cd0b77d53 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Freezer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/aetherlegacy/Freezer.java @@ -3,9 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; import com.gildedgames.the_aether.api.freezables.AetherFreezable; @@ -54,8 +55,8 @@ public void removeByOutput(IIngredient output) { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(2).output(2)); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation().include(2).output(2)); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Atomizer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Atomizer.java index 9ce4116ae..04b857f9c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Atomizer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Atomizer.java @@ -7,8 +7,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Combiner.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Combiner.java index 147faca11..42061ef65 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Combiner.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Combiner.java @@ -6,8 +6,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Dissolver.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Dissolver.java index ae2ffdb79..8ecb6e6b5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Dissolver.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Dissolver.java @@ -5,9 +5,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -86,8 +87,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(2)); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation().include(2)); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Electrolyzer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Electrolyzer.java index 2658e018d..9ac970da6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Electrolyzer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Electrolyzer.java @@ -6,8 +6,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Evaporator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Evaporator.java index 40149db08..bfed14fdd 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Evaporator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Evaporator.java @@ -6,8 +6,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Liquifier.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Liquifier.java index 2938ede1e..d4b72fc92 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Liquifier.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/alchemistry/Liquifier.java @@ -6,9 +6,11 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -99,8 +101,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation().output(1)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation(), FluidOperation.defaultOperation().output(1)); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Grinder.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Grinder.java index ad9e4a05f..c63efcda6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Grinder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Grinder.java @@ -5,8 +5,8 @@ import appeng.api.features.IGrinderRecipeBuilder; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Inscriber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Inscriber.java index a85c91cfe..391eade29 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Inscriber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/appliedenergistics2/Inscriber.java @@ -6,9 +6,10 @@ import appeng.api.features.InscriberProcessType; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -73,8 +74,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(3)); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation().include(3)); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/arcanearchives/GemCuttingTable.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/arcanearchives/GemCuttingTable.java index fc0cafc12..5e295a34b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/arcanearchives/GemCuttingTable.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/arcanearchives/GemCuttingTable.java @@ -8,8 +8,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/Grindstone.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/Grindstone.java index 2b5115e69..9a821800f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/Grindstone.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/Grindstone.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/InfusionAltar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/InfusionAltar.java index a078f7469..14a5a0b3e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/InfusionAltar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/InfusionAltar.java @@ -4,8 +4,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/LightTransmutation.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/LightTransmutation.java index 615ceeba6..491e641d3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/LightTransmutation.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/LightTransmutation.java @@ -3,9 +3,9 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.astralsorcery.LightOreTransmutationsAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -114,7 +114,7 @@ public SimpleObjectStream streamRecipes() } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return ImmutableList.of(); // TODO jei } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/Lightwell.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/Lightwell.java index bebce48c4..67a549617 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/Lightwell.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/Lightwell.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.astralsorcery.WellLiquefactionAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.IRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/StarlightAltar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/StarlightAltar.java index 529ae7a48..d3dcb6da8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/StarlightAltar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/astralsorcery/starlightaltar/StarlightAltar.java @@ -2,8 +2,11 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.WrapperOperation; import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; @@ -30,23 +33,23 @@ public class StarlightAltar extends VirtualizedRegistry implements IJEIRemoval.Default { private static List registryNameRemovalMethod(AbstractAltarRecipe recipe) { - return Collections.singletonList(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.asGroovyCode(recipe.getNativeRecipe().getRegistryName(), true))); + return Collections.singletonList(OperationHandler.format("remove", GroovyScriptCodeConverter.asGroovyCode(recipe.getNativeRecipe().getRegistryName(), true))); } - private static OperationHandler.IOperation discoveryOperation() { - return new OperationHandler.WrapperOperation<>(AltarDiscoveryRecipeWrapper.class, wrapper -> registryNameRemovalMethod(wrapper.getRecipe())); + private static IOperation discoveryOperation() { + return new WrapperOperation<>(AltarDiscoveryRecipeWrapper.class, wrapper -> registryNameRemovalMethod(wrapper.getRecipe())); } - private static OperationHandler.IOperation attunementOperation() { - return new OperationHandler.WrapperOperation<>(AltarAttunementRecipeWrapper.class, wrapper -> registryNameRemovalMethod(wrapper.getRecipe())); + private static IOperation attunementOperation() { + return new WrapperOperation<>(AltarAttunementRecipeWrapper.class, wrapper -> registryNameRemovalMethod(wrapper.getRecipe())); } - private static OperationHandler.IOperation constellationOperation() { - return new OperationHandler.WrapperOperation<>(AltarConstellationRecipeWrapper.class, wrapper -> registryNameRemovalMethod(wrapper.getRecipe())); + private static IOperation constellationOperation() { + return new WrapperOperation<>(AltarConstellationRecipeWrapper.class, wrapper -> registryNameRemovalMethod(wrapper.getRecipe())); } - private static OperationHandler.IOperation traitOperation() { - return new OperationHandler.WrapperOperation<>(AltarTraitRecipeWrapper.class, wrapper -> registryNameRemovalMethod(wrapper.getRecipe())); + private static IOperation traitOperation() { + return new WrapperOperation<>(AltarTraitRecipeWrapper.class, wrapper -> registryNameRemovalMethod(wrapper.getRecipe())); } @RecipeBuilderDescription(priority = 100, requirement = { @@ -146,8 +149,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(discoveryOperation(), attunementOperation(), constellationOperation(), traitOperation(), OperationHandler.ItemOperation.defaultItemOperation().include(0), OperationHandler.FluidOperation.defaultFluidOperation()); + public @NotNull List getJEIOperations() { + return ImmutableList.of(discoveryOperation(), attunementOperation(), constellationOperation(), traitOperation(), ItemOperation.defaultOperation().include(0), FluidOperation.defaultOperation()); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/Kiln.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/Kiln.java index a03eee005..0eb9a522c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/Kiln.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/Kiln.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/Quern.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/Quern.java index 8a4594f0f..bc2a1f898 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/Quern.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/Quern.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/SpinningWheel.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/SpinningWheel.java index 35a430791..7ddbff7d6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/SpinningWheel.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/atum/SpinningWheel.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/Compressor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/Compressor.java index 2d6e6badb..e0c9b0f13 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/Compressor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/Compressor.java @@ -3,8 +3,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -93,8 +94,8 @@ public void add(ItemStack output, IIngredient input, int cost) { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(1)); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation().include(1)); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/ExtremeCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/ExtremeCrafting.java index 6287e5c96..041fc4a18 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/ExtremeCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/avaritia/ExtremeCrafting.java @@ -5,8 +5,9 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RecipeBuilderDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.google.common.collect.ImmutableList; @@ -102,8 +103,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().include(0)); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilCrafting.java index 3e1ced607..f70479e64 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/AnvilCrafting.java @@ -7,8 +7,11 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RecipeBuilderDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.WrapperOperation; import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -32,11 +35,11 @@ public AnvilCrafting() { super(Alias.generateOfClass(AnvilCrafting.class).andGenerate("SoulforgedSteelAnvil")); } - private static OperationHandler.IOperation registryNameOperation() { - return new OperationHandler.WrapperOperation<>(ICraftingRecipeWrapper.class, wrapper -> + private static IOperation registryNameOperation() { + return new WrapperOperation<>(ICraftingRecipeWrapper.class, wrapper -> wrapper.getRegistryName() == null ? Collections.emptyList() - : Collections.singletonList(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.asGroovyCode(wrapper.getRegistryName(), true)))); + : Collections.singletonList(OperationHandler.format("remove", GroovyScriptCodeConverter.asGroovyCode(wrapper.getRegistryName(), true)))); } @RecipeBuilderDescription(example = { @@ -117,9 +120,9 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { // while this class *does* work for removing via removeByInput, having all of those be printed would cause a significant amount of clutter. - return ImmutableList.of(registryNameOperation(), OperationHandler.ItemOperation.defaultItemOperation().include(16), OperationHandler.FluidOperation.defaultFluidOperation()); + return ImmutableList.of(registryNameOperation(), ItemOperation.defaultOperation().include(16), FluidOperation.defaultOperation()); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Hopper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Hopper.java index c2f87c172..91251cdca 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Hopper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Hopper.java @@ -5,8 +5,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.ItemStackList; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -96,8 +97,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(IJEIRemovalIOutput.getDefaultIOutput(), OperationHandler.ItemOperation.defaultItemOperation().exclude(7)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(IJEIRemovalIOutput.getDefaultIOutput(), ItemOperation.defaultOperation().exclude(7)); } @Property(property = "name", value = "groovyscript.wiki.betterwithmods.hopper.name.value", valid = @Comp(value = "null", type = Comp.Type.NOT)) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/IJEIRemovalIOutput.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/IJEIRemovalIOutput.java index e2ca88f41..afee55f8e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/IJEIRemovalIOutput.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/IJEIRemovalIOutput.java @@ -1,8 +1,8 @@ package com.cleanroommc.groovyscript.compat.mods.betterwithmods; import betterwithmods.api.recipe.IOutput; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.*; import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; import com.google.common.collect.ImmutableList; import org.jetbrains.annotations.NotNull; @@ -11,15 +11,15 @@ public interface IJEIRemovalIOutput extends IJEIRemoval.Default { - static OperationHandler.SlotOperation getDefaultIOutput() { - return new OperationHandler.ClassSlotOperation<>( + static SlotOperation getDefaultIOutput() { + return new ClassSlotOperation<>( IOutput.class, true, (stack, all) -> GroovyScriptCodeConverter.getSingleItemStack(stack.getOutput(), true, false)); } @Override - default @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation(), getDefaultIOutput()); + default @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation(), FluidOperation.defaultOperation(), getDefaultIOutput()); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Turntable.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Turntable.java index c659b50b0..4e081a3a0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Turntable.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/betterwithmods/Turntable.java @@ -7,8 +7,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -100,8 +101,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(IJEIRemovalIOutput.getDefaultIOutput(), OperationHandler.ItemOperation.defaultItemOperation().exclude(4)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(IJEIRemovalIOutput.getDefaultIOutput(), ItemOperation.defaultOperation().exclude(4)); } @Property(property = "output", valid = {@Comp(value = "0", type = Comp.Type.GTE), @Comp(value = "2", type = Comp.Type.LTE)}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyArray.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyArray.java index 169972683..c95da9670 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyArray.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyArray.java @@ -7,9 +7,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.bloodmagic.BloodMagicRecipeRegistrarAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -174,9 +175,9 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(1), - OperationHandler.ItemOperation.defaultItemOperation().include(1).input("removeByCatalyst")); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().exclude(1), + ItemOperation.defaultOperation().include(1).input("removeByCatalyst")); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyTable.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyTable.java index fc921dd09..3f0448b37 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyTable.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/AlchemyTable.java @@ -7,9 +7,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.bloodmagic.BloodMagicRecipeRegistrarAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -138,7 +138,7 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return Default.excludeSlots(1); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/BloodAltar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/BloodAltar.java index d8b602d0b..2ddacc56e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/BloodAltar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/BloodAltar.java @@ -8,8 +8,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.bloodmagic.BloodMagicRecipeRegistrarAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/TartaricForge.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/TartaricForge.java index e6cf8554e..1d8d9b166 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/TartaricForge.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/bloodmagic/TartaricForge.java @@ -7,9 +7,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.bloodmagic.BloodMagicRecipeRegistrarAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -139,7 +139,7 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return Default.excludeSlots(1); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Apothecary.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Apothecary.java index 68f4d069f..5186867bc 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Apothecary.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Apothecary.java @@ -4,8 +4,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; @@ -118,7 +118,7 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return Default.excludeSlots(0); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/BrewRecipe.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/BrewRecipe.java index 2f5d3222a..a0bbac9df 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/BrewRecipe.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/BrewRecipe.java @@ -4,7 +4,7 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ElvenTrade.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ElvenTrade.java index f4e85d644..93c1e7168 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ElvenTrade.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ElvenTrade.java @@ -4,8 +4,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -125,8 +126,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().input("removeByInputs").output("removeByOutputs")); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().input("removeByInputs").output("removeByOutputs")); } @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "99")}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ManaInfusion.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ManaInfusion.java index 3c592f688..d89a23917 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ManaInfusion.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/ManaInfusion.java @@ -4,7 +4,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; @@ -124,9 +126,9 @@ public SimpleObjectStream streamRecipes() { @Override public @NotNull List getRemoval(IRecipeLayout layout) { // is this ugly? yes! but we need to target these specific slots and the slot number is dynamic - ImmutableList list = layout.getItemStacks().getGuiIngredients().values().size() > 3 - ? ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0, 3), OperationHandler.ItemOperation.defaultItemOperation().include(1).input("removeByCatalyst")) - : ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0, 2)); + ImmutableList list = layout.getItemStacks().getGuiIngredients().values().size() > 3 + ? ImmutableList.of(ItemOperation.defaultOperation().include(0, 3), ItemOperation.defaultOperation().include(1).input("removeByCatalyst")) + : ImmutableList.of(ItemOperation.defaultOperation().include(0, 2)); return OperationHandler.removalOptions(layout, list); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Orechid.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Orechid.java index 5db54a755..39244803a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Orechid.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/Orechid.java @@ -5,9 +5,10 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.botania.recipe.OrechidRecipe; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -101,8 +102,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().exclude(0, 1).output(2)); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation().exclude(0, 1).output(2)); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/PureDaisy.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/PureDaisy.java index 47067e6c6..e2c5bd6f0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/PureDaisy.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/PureDaisy.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -130,7 +130,7 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return Default.excludeSlots(1); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/RuneAltar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/RuneAltar.java index 185a1b7b3..d4955943f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/RuneAltar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/botania/RuneAltar.java @@ -4,8 +4,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -113,7 +113,7 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return Default.excludeSlots(0); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AlgorithmSeparator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AlgorithmSeparator.java index 83f35523e..f146cf1a6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AlgorithmSeparator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AlgorithmSeparator.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AnalysingChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AnalysingChamber.java index 4cf4de06d..4bc0ca33e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AnalysingChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AnalysingChamber.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AtomicCalculator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AtomicCalculator.java index 45167cb67..7361b0efa 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AtomicCalculator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/AtomicCalculator.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/BasicCalculator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/BasicCalculator.java index 808698db6..2a3ff7c32 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/BasicCalculator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/BasicCalculator.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ConductorMast.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ConductorMast.java index 138d4a358..dad0db008 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ConductorMast.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ConductorMast.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ExtractionChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ExtractionChamber.java index f118eebf4..e672283b1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ExtractionChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ExtractionChamber.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/FabricationChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/FabricationChamber.java index 9bd3df85b..250a47e4b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/FabricationChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/FabricationChamber.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/FlawlessCalculator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/FlawlessCalculator.java index 95f236b98..41280a68c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/FlawlessCalculator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/FlawlessCalculator.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/GlowstoneExtractor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/GlowstoneExtractor.java index 9143e8a91..1ceb477e4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/GlowstoneExtractor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/GlowstoneExtractor.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/HealthProcessor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/HealthProcessor.java index 5571b92a2..9b9dbe0db 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/HealthProcessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/HealthProcessor.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/PrecisionChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/PrecisionChamber.java index 71db03eca..0acb1c5c5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/PrecisionChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/PrecisionChamber.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ProcessingChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ProcessingChamber.java index 4b968209e..ddca1749b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ProcessingChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ProcessingChamber.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ReassemblyChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ReassemblyChamber.java index dc6a336cb..80ff0a09e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ReassemblyChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ReassemblyChamber.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/RedstoneExtractor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/RedstoneExtractor.java index 889a6065f..d74043dc9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/RedstoneExtractor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/RedstoneExtractor.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/RestorationChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/RestorationChamber.java index b1fb83010..8b46816ef 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/RestorationChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/RestorationChamber.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ScientificCalculator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ScientificCalculator.java index 167ca810d..2ed74e65a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ScientificCalculator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/ScientificCalculator.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/StarchExtractor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/StarchExtractor.java index 2d240dffc..3b4b55eb4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/StarchExtractor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/StarchExtractor.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/StoneSeparator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/StoneSeparator.java index 27342e123..670d22edd 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/StoneSeparator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/calculator/StoneSeparator.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/chisel/Carving.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/chisel/Carving.java index 1fb18c5c6..e35bb2f56 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/chisel/Carving.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/chisel/Carving.java @@ -5,9 +5,10 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.WrapperOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.chisel.ChiselRecipeWrapperAccessor; import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; @@ -43,8 +44,8 @@ private static ICarvingRegistry getRegistry() { return CarvingUtils.getChiselRegistry(); } - private static OperationHandler.IOperation groupNameOperation() { - return new OperationHandler.WrapperOperation<>(ChiselRecipeWrapper.class, wrapper -> Collections.singletonList(JeiRemovalHelper.format("removeGroup", GroovyScriptCodeConverter.formatString(((ChiselRecipeWrapperAccessor) wrapper).getGroup().getName(), true)))); + private static IOperation groupNameOperation() { + return new WrapperOperation<>(ChiselRecipeWrapper.class, wrapper -> Collections.singletonList(OperationHandler.format("removeGroup", GroovyScriptCodeConverter.formatString(((ChiselRecipeWrapperAccessor) wrapper).getGroup().getName(), true)))); } public static CarvingGroup carvingGroup(String group) { @@ -154,7 +155,7 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return Collections.singletonList(groupNameOperation()); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/Miniaturization.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/Miniaturization.java index 2ff9c6f62..f8f66b8e3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/Miniaturization.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/compactmachines/Miniaturization.java @@ -2,9 +2,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.WrapperOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; @@ -27,11 +28,11 @@ @RegistryDescription public class Miniaturization extends VirtualizedRegistry implements IJEIRemoval.Default { - private static OperationHandler.IOperation wrapperOperation() { - return new OperationHandler.WrapperOperation<>(MultiblockRecipeWrapper.class, wrapper -> { + private static IOperation wrapperOperation() { + return new WrapperOperation<>(MultiblockRecipeWrapper.class, wrapper -> { var builder = ImmutableList.builder(); - builder.add(JeiRemovalHelper.format("removeByCatalyst", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getCatalystStack(), true))); - builder.add(JeiRemovalHelper.format("removeByOutput", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getTargetStack(), true))); + builder.add(OperationHandler.format("removeByCatalyst", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getCatalystStack(), true))); + builder.add(OperationHandler.format("removeByOutput", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getTargetStack(), true))); // these methods are not actually implemented //for (ItemStack stack : wrapper.recipe.getRequiredItemStacks()) { // builder.add(JeiRemovalHelper.format("removeByInput", GroovyScriptCodeConverter.getSingleItemStack(stack, true))); @@ -102,7 +103,7 @@ public SimpleObjectStream getJEIOperations() { + public @NotNull List getJEIOperations() { return ImmutableList.of(wrapperOperation()); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Dehydrator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Dehydrator.java index 4bea4f84c..77c455902 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Dehydrator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Dehydrator.java @@ -4,9 +4,11 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -94,8 +96,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation().exclude(0)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation(), FluidOperation.defaultOperation().exclude(0)); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Hydrator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Hydrator.java index 1ee922084..a0c2dad1a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Hydrator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Hydrator.java @@ -4,9 +4,11 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -97,8 +99,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation().exclude(0)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation(), FluidOperation.defaultOperation().exclude(0)); } @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "6")}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Melter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Melter.java index 93fb98d77..1e1472998 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Melter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Melter.java @@ -4,9 +4,11 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -95,8 +97,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation().output(0)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation(), FluidOperation.defaultOperation().output(0)); } @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "4")}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Packager.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Packager.java index 0a70d8b99..d2e60ae33 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Packager.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Packager.java @@ -4,8 +4,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Solidifier.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Solidifier.java index 12973d78f..be925c884 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Solidifier.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/cyclic/Solidifier.java @@ -4,8 +4,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/Fusion.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/Fusion.java index 3bee01f4b..0a24e89de 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/Fusion.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/draconicevolution/Fusion.java @@ -6,9 +6,10 @@ import com.brandon3055.draconicevolution.lib.RecipeManager; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.WrapperOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.draconicevolution.FusionRegistryAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -29,11 +30,11 @@ @RegistryDescription public class Fusion extends VirtualizedRegistry implements IJEIRemoval.Default { - private static OperationHandler.IOperation wrapperOperation() { - return new OperationHandler.WrapperOperation<>(FusionRecipeWrapper.class, wrapper -> { + private static IOperation wrapperOperation() { + return new WrapperOperation<>(FusionRecipeWrapper.class, wrapper -> { var builder = ImmutableList.builder(); if (!wrapper.recipe.getRecipeCatalyst().isEmpty()) { - builder.add(JeiRemovalHelper.format("removeByCatalyst", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getRecipeCatalyst(), true))); + builder.add(OperationHandler.format("removeByCatalyst", GroovyScriptCodeConverter.getSingleItemStack(wrapper.recipe.getRecipeCatalyst(), true))); } // these methods are not actually implemented //var output = wrapper.recipe.getRecipeOutput(wrapper.recipe.getRecipeCatalyst()); @@ -111,7 +112,7 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return ImmutableList.of(wrapperOperation()); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/AlloySmelter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/AlloySmelter.java index 8b38e9f7d..465eb8f94 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/AlloySmelter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/AlloySmelter.java @@ -3,11 +3,12 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.EnderIORecipeBuilder; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.RecipeInput; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.enderio.AlloyRecipeManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.enderio.ItemRecipeLeafNodeAccessor; import com.cleanroommc.groovyscript.core.mixin.enderio.ItemRecipeNodeAccessor; @@ -182,8 +183,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(3).input("remove")); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation().include(3).input("remove")); } @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "3")}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Enchanter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Enchanter.java index 8962646ab..8b8903e5a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Enchanter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Enchanter.java @@ -4,10 +4,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.CustomEnchanterRecipe; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.enderio.SimpleRecipeGroupHolderAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -108,7 +108,7 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return ImmutableList.of(); // TODO jei enchantment handler } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMill.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMill.java index df40780c5..5b45aafcb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMill.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMill.java @@ -3,12 +3,13 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.EnderIORecipeBuilder; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.RecipeInput; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.SagRecipe; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -94,8 +95,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(0)); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation().include(0)); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMillGrinding.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMillGrinding.java index 2d2bcb256..62fcdaf79 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMillGrinding.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SagMillGrinding.java @@ -3,10 +3,11 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.RecipeInput; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -82,8 +83,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().input("remove")); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation().input("remove")); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SliceNSplice.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SliceNSplice.java index 87719de78..d744ad005 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SliceNSplice.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SliceNSplice.java @@ -4,12 +4,13 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.ManyToOneRecipe; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.RecipeInput; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.RecipeUtils; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -118,8 +119,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().output("remove").exclude(0, 1)); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation().output("remove").exclude(0, 1)); } @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "6")}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SoulBinder.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SoulBinder.java index 9a539e55b..816e703a7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SoulBinder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/SoulBinder.java @@ -3,9 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.enderio.SimpleRecipeGroupHolderAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -94,8 +95,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(3).output("remove")); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation().include(3).output("remove")); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Tank.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Tank.java index 1be18e638..71b090693 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Tank.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Tank.java @@ -5,10 +5,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.RecipeUtils; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.enderio.SimpleRecipeGroupHolderAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -212,7 +212,7 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return ImmutableList.of(); // TODO jei tank } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Vat.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Vat.java index 1f03ee019..d583a4981 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Vat.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/enderio/Vat.java @@ -4,10 +4,11 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.enderio.recipe.RecipeInput; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.ingredient.IngredientList; @@ -98,8 +99,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.FluidOperation.defaultFluidOperation().output("remove")); + public @NotNull List getJEIOperations() { + return Collections.singletonList(FluidOperation.defaultOperation().output("remove")); } public static class RecipeBuilder implements IRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/DemonTradeManager.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/DemonTradeManager.java index 5390a75df..38745afad 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/DemonTradeManager.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/DemonTradeManager.java @@ -5,8 +5,9 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -103,8 +104,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(0).output("remove")); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation().include(0).output("remove")); } } \ No newline at end of file diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MagicianTable.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MagicianTable.java index 33df281c3..6ee57f9c2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MagicianTable.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MagicianTable.java @@ -3,9 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -64,8 +65,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(5)); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation().include(5)); } @Property(property = "input", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "5", type = Comp.Type.LTE)}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MithrilineFurnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MithrilineFurnace.java index 21bf11fb1..c05495836 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MithrilineFurnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/MithrilineFurnace.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/RadiatingChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/RadiatingChamber.java index 347891ce0..a6eca29f6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/RadiatingChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/RadiatingChamber.java @@ -3,9 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -64,8 +65,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().include(2)); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation().include(2)); } @Property(property = "input", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "2", type = Comp.Type.LTE)}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/WindRune.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/WindRune.java index 54c423bfa..1f39e2c95 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/WindRune.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/essentialcraft/WindRune.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/BloodInfuser.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/BloodInfuser.java index 54d9aae5f..f4b9c5364 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/BloodInfuser.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/BloodInfuser.java @@ -2,9 +2,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -106,8 +107,8 @@ public SimpleObjectStream getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().exclude(1)); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation().exclude(1)); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/EnvironmentalAccumulator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/EnvironmentalAccumulator.java index 25d181cb2..cde5de76f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/EnvironmentalAccumulator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/evilcraft/EnvironmentalAccumulator.java @@ -2,9 +2,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -106,8 +107,8 @@ public SimpleObjectStream getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation()); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation()); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/CombinationCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/CombinationCrafting.java index 2d44ad5d0..8f983c087 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/CombinationCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/CombinationCrafting.java @@ -7,8 +7,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/CompressionCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/CompressionCrafting.java index 4595e5c36..5840ee66b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/CompressionCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/CompressionCrafting.java @@ -8,9 +8,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -122,9 +123,9 @@ public RecipeBuilder recipeBuilder() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(1), - OperationHandler.ItemOperation.defaultItemOperation().exclude(0).input("removeByCatalyst")); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().exclude(1), + ItemOperation.defaultOperation().exclude(0).input("removeByCatalyst")); } @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/EnderCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/EnderCrafting.java index f96d70788..d23e67c1c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/EnderCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/EnderCrafting.java @@ -8,8 +8,9 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RecipeBuilderDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.google.common.collect.ImmutableList; @@ -118,8 +119,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().include(0)); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/TableCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/TableCrafting.java index 092622348..21bc7e048 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/TableCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extendedcrafting/TableCrafting.java @@ -11,8 +11,9 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RecipeBuilderDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.google.common.collect.ImmutableList; @@ -119,8 +120,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().include(0)); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrabotany/Pedestal.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrabotany/Pedestal.java index 780195336..7564fc24b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrabotany/Pedestal.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrabotany/Pedestal.java @@ -3,9 +3,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -97,7 +97,7 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return Default.excludeSlots(1); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Crusher.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Crusher.java index 62c626a30..293f1c436 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Crusher.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Crusher.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Enchanter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Enchanter.java index 691314f97..7e35ffa14 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Enchanter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Enchanter.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Furnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Furnace.java index 0992ea9f2..134b7d5ed 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Furnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Furnace.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Generator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Generator.java index 385a7ff14..678f0644f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Generator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Generator.java @@ -2,9 +2,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.extrautils2.MachineInitAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -204,7 +204,7 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return ImmutableList.of(); // TODO JEI } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Resonator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Resonator.java index dce7381d8..dd35e7fd5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Resonator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/extrautils2/Resonator.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/AlloyKiln.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/AlloyKiln.java index ccd51cc4c..d0a0fabca 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/AlloyKiln.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/AlloyKiln.java @@ -5,9 +5,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -119,8 +120,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(2)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().include(2)); } @Property(property = "input", valid = @Comp("2")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/ArcFurnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/ArcFurnace.java index 5a01a890c..13d692099 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/ArcFurnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/ArcFurnace.java @@ -5,9 +5,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.ArrayUtils; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -31,7 +31,7 @@ public class ArcFurnace extends VirtualizedRegistry implements /** * Since the size of Arc Furnace recipes is variable, we can't refer to a specific slot. */ - private static OperationHandler.IOperation primaryOutputOperation() { + private static IOperation primaryOutputOperation() { return (layout, removing, exactInput) -> { var maxSize = layout.getItemStacks().getGuiIngredients().size(); @@ -40,7 +40,7 @@ private static OperationHandler.IOperation primaryOutputOperation() { if (stack == null) return; var identity = GroovyScriptCodeConverter.getSingleItemStack(stack, true, false); - removing.add(JeiRemovalHelper.format("removeByOutput", identity)); + removing.add(OperationHandler.format("removeByOutput", identity)); }; } @@ -163,7 +163,7 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return ImmutableList.of(primaryOutputOperation()); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnace.java index 66abbac25..bf522712c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnace.java @@ -4,9 +4,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -116,8 +117,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().exclude(2)); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation().exclude(2)); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnaceFuel.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnaceFuel.java index 6e5d807c5..88306ffc8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnaceFuel.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlastFurnaceFuel.java @@ -4,8 +4,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlueprintCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlueprintCrafting.java index 689f7670d..40c448e4a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlueprintCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BlueprintCrafting.java @@ -6,9 +6,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.ArrayUtils; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -177,7 +177,7 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return ImmutableList.of(); // TODO JEI } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BottlingMachine.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BottlingMachine.java index fa6a04030..c3236234a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BottlingMachine.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/BottlingMachine.java @@ -5,9 +5,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -128,8 +129,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(1)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().include(1)); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/CokeOven.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/CokeOven.java index fbe71d688..fb1dbb50c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/CokeOven.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/CokeOven.java @@ -5,9 +5,11 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -120,8 +122,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.FluidOperation.defaultFluidOperation().exclude(0), OperationHandler.ItemOperation.defaultItemOperation()); + public @NotNull List getJEIOperations() { + return ImmutableList.of(FluidOperation.defaultOperation().exclude(0), ItemOperation.defaultOperation()); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Crusher.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Crusher.java index 0e9b7b9b4..e4f96270a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Crusher.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Crusher.java @@ -4,8 +4,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Fermenter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Fermenter.java index 31a852446..d7e0b7155 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Fermenter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Fermenter.java @@ -4,8 +4,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/MetalPress.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/MetalPress.java index ac9691a9e..7d8f3a42f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/MetalPress.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/MetalPress.java @@ -6,9 +6,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -195,8 +196,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(1), OperationHandler.ItemOperation.defaultItemOperation().include(1).input("removeByMold")); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().exclude(1), ItemOperation.defaultOperation().include(1).input("removeByMold")); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Mixer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Mixer.java index d26553e25..cc4cef802 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Mixer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Mixer.java @@ -4,9 +4,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.ArrayUtils; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -148,8 +149,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.FluidOperation.defaultFluidOperation().include(1)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(FluidOperation.defaultOperation().include(1)); } @Property(property = "input", valid = {@Comp(value = "1", type = Comp.Type.GTE), @Comp(value = "Integer.MAX_VALUE", type = Comp.Type.LTE)}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Refinery.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Refinery.java index bb2c553fd..c4882051b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Refinery.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Refinery.java @@ -3,9 +3,10 @@ import blusunrize.immersiveengineering.api.crafting.RefineryRecipe; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -120,8 +121,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.FluidOperation.defaultFluidOperation().include(0, 1)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(FluidOperation.defaultOperation().include(0, 1)); } @Property(property = "fluidInput", valid = @Comp("2")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Squeezer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Squeezer.java index 9c25c2cc0..bf85d9dcf 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Squeezer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersiveengineering/Squeezer.java @@ -4,8 +4,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivepetroleum/Distillation.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivepetroleum/Distillation.java index 7dbcf712e..d360286f0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivepetroleum/Distillation.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/immersivepetroleum/Distillation.java @@ -4,8 +4,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -22,7 +22,7 @@ import java.util.Collections; @RegistryDescription -@Optional.Interface(modid = "justenoughpetroleum", iface = "com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval$Default") +@Optional.Interface(modid = "justenoughpetroleum", iface = "com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval$Default") public class Distillation extends VirtualizedRegistry implements IJEIRemoval.Default { @RecipeBuilderDescription(example = { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/BioReactor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/BioReactor.java index 2a3791455..5e05ab301 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/BioReactor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/BioReactor.java @@ -7,8 +7,9 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.google.common.base.Predicate; @@ -89,7 +90,7 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation()); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation()); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/Extractor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/Extractor.java index b3123a4e6..e858b2bc6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/Extractor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/Extractor.java @@ -7,7 +7,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/FluidDictionary.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/FluidDictionary.java index b23a9e38b..3bb362971 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/FluidDictionary.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/FluidDictionary.java @@ -5,7 +5,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraftforge.fluids.FluidStack; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/LaserDrill.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/LaserDrill.java index fe9060dac..fdec5fc1f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/LaserDrill.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/LaserDrill.java @@ -5,9 +5,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -161,8 +162,8 @@ public SimpleObjectStream streamRecipes } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().input("removeByLens")); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().input("removeByLens")); } @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreFermenter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreFermenter.java index b60f83dc7..b529a590e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreFermenter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreFermenter.java @@ -6,7 +6,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreRaw.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreRaw.java index e33270762..531d7f0f3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreRaw.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreRaw.java @@ -7,7 +7,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreSieve.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreSieve.java index 16a368cd0..a4e9ed61b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreSieve.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/OreSieve.java @@ -6,7 +6,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/ProteinReactor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/ProteinReactor.java index 3053fc5a4..5e914126b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/ProteinReactor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/ProteinReactor.java @@ -7,8 +7,9 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.google.common.base.Predicate; @@ -89,7 +90,7 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation()); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation()); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/SludgeRefiner.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/SludgeRefiner.java index 8a32dc096..624b24c3e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/SludgeRefiner.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/industrialforegoing/SludgeRefiner.java @@ -6,8 +6,9 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.core.mixin.industrialforegoing.SludgeRefinerBlockAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -87,8 +88,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation()); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation()); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/AnvilSmashing.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/AnvilSmashing.java index 66936fe62..caed00bfc 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/AnvilSmashing.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/AnvilSmashing.java @@ -2,9 +2,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.inspirations.InspirationsRegistryAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -143,7 +143,7 @@ public SimpleObjectStream> streamRecipes() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return ImmutableList.of(); // TODO jei } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/Cauldron.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/Cauldron.java index 3c18fd500..521ce30bb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/Cauldron.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/inspirations/Cauldron.java @@ -3,9 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.inspirations.InspirationsRegistryAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -224,8 +225,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.ItemOperation.defaultItemOperation()); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation(), ItemOperation.defaultOperation()); // // add methods to remove by these custom values before uncommenting // new OperationHandler.ClassSlotOperation<>( // DyeIngredient.class, true, diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/DryingBasin.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/DryingBasin.java index fb47681be..560b9802d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/DryingBasin.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/DryingBasin.java @@ -2,8 +2,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/MechanicalDryingBasin.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/MechanicalDryingBasin.java index 51add65fd..30d7c365f 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/MechanicalDryingBasin.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/MechanicalDryingBasin.java @@ -1,7 +1,7 @@ package com.cleanroommc.groovyscript.compat.mods.integrateddynamics; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/MechanicalSqueezer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/MechanicalSqueezer.java index 9a8b0eec6..4e85c3d94 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/MechanicalSqueezer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/MechanicalSqueezer.java @@ -1,8 +1,9 @@ package com.cleanroommc.groovyscript.compat.mods.integrateddynamics; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import com.google.common.collect.ImmutableList; @@ -86,8 +87,8 @@ public SimpleObjectStream getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().include(0)); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/Squeezer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/Squeezer.java index 87f23a629..2b9de3813 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/Squeezer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/integrateddynamics/Squeezer.java @@ -2,9 +2,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -97,8 +98,8 @@ public SimpleObjectStream getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().include(0)); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Description.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Description.java index 48b67e1bb..3f9138f02 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Description.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/Description.java @@ -5,7 +5,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.jei.IngredientInfoRecipeAccessor; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import mezz.jei.api.IModRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/JeiRemovalHelper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/JeiRemovalHelper.java index b43634a7d..88ed6ef63 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/JeiRemovalHelper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/JeiRemovalHelper.java @@ -1,6 +1,7 @@ package com.cleanroommc.groovyscript.compat.mods.jei.removal; import com.cleanroommc.groovyscript.api.INamed; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; import com.cleanroommc.groovyscript.compat.mods.jei.JeiPlugin; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; @@ -11,7 +12,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.ScaledResolution; import org.apache.commons.lang3.tuple.Pair; -import org.jetbrains.annotations.NotNull; import org.lwjgl.input.Mouse; import java.util.List; @@ -92,23 +92,4 @@ public static IRecipeLayout getRecipeLayoutUnderMouse() { return null; } - /** - * @param method name of the method to call - * @param params one or more parameters of the method - * @return a string representing a GrS method - * @see #format(String, List) - */ - public static @NotNull String format(String method, String... params) { - return String.format("%s(%s)", method, String.join(", ", params)); - } - - /** - * @param method name of the method to call - * @param params one or more parameters of the method - * @return a string representing a GrS method - */ - public static @NotNull String format(String method, List params) { - return String.format("%s(%s)", method, String.join(", ", params)); - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java index 4ce330014..9b8630dd5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/jei/removal/OperationHandler.java @@ -1,25 +1,21 @@ package com.cleanroommc.groovyscript.compat.mods.jei.removal; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.jei.JeiPlugin; import com.cleanroommc.groovyscript.core.mixin.jei.RecipeLayoutAccessor; -import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; import com.google.common.collect.ImmutableList; import mezz.jei.api.gui.IGuiIngredient; import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.ingredients.VanillaTypes; -import mezz.jei.api.recipe.IIngredientType; +import mezz.jei.api.recipe.IRecipeWrapper; import mezz.jei.startup.StackHelper; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Map; -import java.util.function.BiFunction; -import java.util.function.Function; import java.util.stream.Collectors; @ParametersAreNonnullByDefault @@ -28,6 +24,8 @@ public class OperationHandler { private static final String EXACT_METHOD_NAME = "removeByExactInput"; private static final boolean IS_EXACT_METHOD_ENABLED = false; + private static StackHelper stackHelper; + /** * Varargs variant of {@link #removalOptions(IRecipeLayout, List)}. * @@ -52,18 +50,33 @@ public static List removalOptions(IRecipeLayout layout, List for (var operation : operations) operation.parse(layout, removing, exactInput); var builder = ImmutableList.builder(); - if (IS_EXACT_METHOD_ENABLED && exactInput.size() > 1) builder.add(JeiRemovalHelper.format(EXACT_METHOD_NAME, exactInput)); + if (IS_EXACT_METHOD_ENABLED && exactInput.size() > 1) builder.add(format(EXACT_METHOD_NAME, exactInput)); builder.addAll(removing.stream().distinct().sorted().collect(Collectors.toList())); return builder.build(); } /** * @return the default operations to be used, which will get all item and fluid stacks - * @see ItemOperation#defaultItemOperation() - * @see FluidOperation#defaultFluidOperation() + * @see ItemOperation#defaultOperation() + * @see FluidOperation#defaultOperation() */ public static List defaultOperations() { - return ImmutableList.of(ItemOperation.defaultItemOperation(), FluidOperation.defaultFluidOperation()); + return ImmutableList.of(ItemOperation.defaultOperation(), FluidOperation.defaultOperation()); + } + + /** + * Get the recipe wrapper from the recipe layout. Requires the {@link RecipeLayoutAccessor} mixin. + * + * @param layout the recipe layout + * @return the recipe wrapper the recipe layout contains + */ + public static IRecipeWrapper getRecipeWrapper(IRecipeLayout layout) { + return ((RecipeLayoutAccessor) layout).getRecipeWrapper(); + } + + public static StackHelper getStackHelper() { + if (stackHelper == null) stackHelper = (StackHelper) JeiPlugin.jeiHelpers.getStackHelper(); + return stackHelper; } /** @@ -83,361 +96,21 @@ public static T getIngredientFromSlot(IGuiIngredient slot) { } /** - * Base operations requirement, merely requires that the implementing classes contain a {@link #parse(IRecipeLayout, List, List)} method. - */ - public interface IOperation { - - /** - * @param layout the recipe layout to be parsed - * @param removing a list of strings which should be modified, and any removal methods should be added to - * @param exactInput if the implementing class gathers input ingredients, an addition list to manage them for a separate method - */ - void parse(IRecipeLayout layout, List removing, List exactInput); - - } - - /** - * Interface for a {@link BaseSlotOperation}, requiring the ability to - * block specific slots from appearing, - * override the input or output state of a slot (due to the slot being incorrectly listed) - * set the method name for the input or output. - * - * @param the operation class + * @param method name of the method to call + * @param params one or more parameters of the method + * @return a string representing a GrS method + * @see #format(String, List) */ - public interface ISlotOperation extends IOperation { - - /** - * Include all provided slot numbers to be evaluated. If this is called, {@link #exclude(int...)} should be ignored. - * - * @param ints all slots to be included - */ - ISlotOperation include(int... ints); - - /** - * Excludes all provided slot numbers from being evaluated. - * Some slots cannot be parsed properly, are superfluous, contain helper items unrelated to the recipe, - * or otherwise should be ignored when generating methods to remove the recipe. - * - * @param ints all slots to be excluded - */ - ISlotOperation exclude(int... ints); - - /** - * Sets all provided slot numbers as an input slot. - * Some slots incorrectly list themselves as an input or an output. - * - * @param ints all slots to be set as an input - */ - ISlotOperation input(int... ints); - - /** - * Sets all provided slot numbers as an output slot. - * Some slots incorrectly list themselves as an input or an output. - * - * @param ints all slots to be set as an output - */ - ISlotOperation output(int... ints); - - /** - * @param name the name of the method used to remove inputs - */ - ISlotOperation input(String name); - - /** - * @param name the name of the method used to remove outputs - */ - ISlotOperation output(String name); - + public static String format(String method, String... params) { + return String.format("%s(%s)", method, String.join(", ", params)); } /** - * Checks that the wrapper is an instance of the given class, then calls the provided function parameter - * to generate a list of methods to remove the recipe based on the recipe wrapper. - *

- * Note that in most cases, using {@link BaseSlotOperation} and some combination of the - * {@link ISlotOperation#exclude(int...)}, {@link ISlotOperation#input(int...)}, and {@link ISlotOperation#output(int...)} - * methods will be able to generate all the removal methods needed. - *

- * {@link WrapperOperation} should generally only be used if it isn't possible to access - * the desired information through a {@link BaseSlotOperation}. - * - * @param wrapper type + * @param method name of the method to call + * @param params one or more parameters of the method + * @return a string representing a GrS method */ - public static class WrapperOperation implements IOperation { - - private final Class wrapperClass; - private final Function> function; - - /** - * @param wrapperClass the wrapper class that is being parsed - * @param function a function that accepts an instance of the wrapper class and returns a list of strings - * to generate output methods for the given recipe - */ - public WrapperOperation(Class wrapperClass, Function> function) { - this.wrapperClass = wrapperClass; - this.function = function; - } - - protected List function(T wrapper) { - return this.function.apply(wrapper); - } - - @Override - public void parse(IRecipeLayout layout, List removing, List exactInput) { - var wrapper = ((RecipeLayoutAccessor) layout).getRecipeWrapper(); - if (wrapperClass.isInstance(wrapper)) { - removing.addAll(function(wrapperClass.cast(wrapper))); - } - } - + public static String format(String method, List params) { + return String.format("%s(%s)", method, String.join(", ", params)); } - - /** - * Abstract class containing the basic logic for input and output slots, what slots are excluded, - * and what method name should be used for a given slot. - */ - public abstract static class BaseSlotOperation implements ISlotOperation> { - - private static final String DEFAULT_INPUT_METHOD_NAME = "removeByInput"; - private static final String DEFAULT_OUTPUT_METHOD_NAME = "removeByOutput"; - - protected final List included = new ArrayList<>(); - protected final List excluded = new ArrayList<>(); - protected final List reallyInputs = new ArrayList<>(); - protected final List reallyOutputs = new ArrayList<>(); - protected String inputMethodName = DEFAULT_INPUT_METHOD_NAME; - protected String outputMethodName = DEFAULT_OUTPUT_METHOD_NAME; - - @Override - public BaseSlotOperation include(int... ints) { - for (var i : ints) this.included.add(i); - return this; - } - - @Override - public BaseSlotOperation exclude(int... ints) { - for (var i : ints) this.excluded.add(i); - return this; - } - - @Override - public BaseSlotOperation input(int... ints) { - for (var i : ints) this.reallyInputs.add(i); - return this; - } - - @Override - public BaseSlotOperation output(int... ints) { - for (var i : ints) this.reallyOutputs.add(i); - return this; - } - - @Override - public BaseSlotOperation input(String name) { - this.inputMethodName = name; - return this; - } - - @Override - public BaseSlotOperation output(String name) { - this.outputMethodName = name; - return this; - } - - /** - * Checks if the slot should be skipped. - * If the slot has no ingredients it is automatically skipped. - * If {@link #included} is empty, checks the {@link #excluded} list and if the slot contains no ingredients. - * Otherwise, if the slot is a member of the {@link #included} list the provided slot will be included. - * - * @param slot the entry slot being parsed - * @return if the slot should be ignored - */ - protected boolean isIgnored(Map.Entry> slot) { - if (slot.getValue().getAllIngredients().isEmpty()) return true; - return this.included.isEmpty() ? this.excluded.contains(slot.getKey()) : !this.included.contains(slot.getKey()); - } - - /** - * Checks if the slot should be considered an input slot. - * By default, checks the {@link #reallyInputs} list for overrides, then if the slot is marked as an input. - * - * @param slot the entry slot being parsed - * @return if the slot is an input - */ - protected boolean isInput(Map.Entry> slot) { - return this.reallyInputs.contains(slot.getKey()) || slot.getValue().isInput(); - } - - - /** - * Checks if the slot should be considered an output slot. - * By default, checks the {@link #reallyOutputs} list for overrides, then if the slot is an input via {@link #isInput(Map.Entry)}. - * - * @param slot the entry slot being parsed - * @return if the slot is an output - */ - protected boolean isOutput(Map.Entry> slot) { - return this.reallyOutputs.contains(slot.getKey()) || !isInput(slot); - } - - /** - * @param slot the entry slot being parsed - * @return the method name used to represent the slot - */ - protected String getMethod(Map.Entry> slot) { - return isOutput(slot) ? this.outputMethodName : this.inputMethodName; - } - - } - - /** - * Abstract class containing the core logic of the operation, - * parsing the provided gui ingredients through a provided function. - */ - public abstract static class SlotOperation extends BaseSlotOperation { - - protected final boolean hasExactInput; - protected final BiFunction, String> function; - - /** - * @param hasExactInput if slots marked as an input should add to the exactInput list in {@link #parse(IRecipeLayout, List, List)}. - * @param function a bifunction taking the primary ingredient in the slot and all ingredients in the slot and returning - * a String to represent that slot, typically via an {@link com.cleanroommc.groovyscript.mapper.ObjectMapper ObjectMapper}. - */ - public SlotOperation(boolean hasExactInput, BiFunction, String> function) { - this.hasExactInput = hasExactInput; - this.function = function; - } - - /** - * @param layout the recipe layout being parsed - * @return the ingredients for the target recipe layout - */ - abstract Map> getGuiIngredients(IRecipeLayout layout); - - protected String function(T stack, List list) { - return this.function.apply(stack, list); - } - - @Override - public void parse(IRecipeLayout layout, List removing, List exactInput) { - for (var slot : getGuiIngredients(layout).entrySet()) { - if (isIgnored(slot)) continue; - - var stack = getIngredientFromSlot(slot.getValue()); - if (stack == null) continue; - - var identity = function(stack, slot.getValue().getAllIngredients()); - if (this.hasExactInput && !isOutput(slot)) exactInput.add(identity); - removing.add(JeiRemovalHelper.format(getMethod(slot), identity)); - } - } - } - - /** - * Class for ingredient groups obtained via {@link IRecipeLayout#getIngredientsGroup(IIngredientType)}. - *

- * Used to read the gui ingredients added via the modern format. - * - * @see ClassSlotOperation - */ - public static class IngredientSlotOperation extends SlotOperation { - - private final IIngredientType type; - - /** - * @param type the {@link IIngredientType} that is used to get the gui ingredients from the recipe layout - * @param hasExactInput if slots marked as an input should add to the exactInput list in {@link #parse(IRecipeLayout, List, List)}. - * @param function a bifunction taking the primary ingredient in the slot and all ingredients in the slot and returning - * a String to represent that slot, typically via an {@link com.cleanroommc.groovyscript.mapper.ObjectMapper ObjectMapper}. - */ - public IngredientSlotOperation(IIngredientType type, boolean hasExactInput, BiFunction, String> function) { - super(hasExactInput, function); - this.type = type; - } - - @Override - protected Map> getGuiIngredients(IRecipeLayout layout) { - return layout.getIngredientsGroup(type).getGuiIngredients(); - } - - } - - /** - * Class for ingredient groups obtained via the deprecated {@link IRecipeLayout#getIngredientsGroup(Class)} method.\ - *

- * Used to read the gui ingredients added via the deprecated format. - * - * @see IngredientSlotOperation - */ - @SuppressWarnings("deprecation") - public static class ClassSlotOperation extends SlotOperation { - - private final Class clazz; - - /** - * @param clazz the class that is used to get the gui ingredients from the recipe layout through the deprecated format - * @param hasExactInput if slots marked as an input should add to the exactInput list in {@link #parse(IRecipeLayout, List, List)}. - * @param function a bifunction taking the primary ingredient in the slot and all ingredients in the slot and returning - * a String to represent that slot, typically via an {@link com.cleanroommc.groovyscript.mapper.ObjectMapper ObjectMapper}. - */ - public ClassSlotOperation(Class clazz, boolean hasExactInput, BiFunction, String> function) { - super(hasExactInput, function); - this.clazz = clazz; - } - - @Override - protected Map> getGuiIngredients(IRecipeLayout layout) { - return layout.getIngredientsGroup(clazz).getGuiIngredients(); - } - - } - - public static class ItemOperation extends IngredientSlotOperation { - - protected ItemOperation() { - super(VanillaTypes.ITEM, true, - (stack, all) -> { - var oreDict = convertToOreDict(all); - return oreDict.isEmpty() ? GroovyScriptCodeConverter.getSingleItemStack(stack, true, false) : oreDict; - }); - } - - /** - * @param ingredients a list of itemstacks to check - * @return if the list of itemstacks are an oredict, represent them as an oredict - */ - protected static String convertToOreDict(List ingredients) { - if (JeiPlugin.jeiHelpers.getStackHelper() instanceof StackHelper stackHelper) { - var dict = stackHelper.getOreDictEquivalent(ingredients); - return dict == null ? "" : GroovyScriptCodeConverter.asGroovyCode(dict, true); - } - return ""; - } - - /** - * @return the base {@link ItemOperation} - */ - public static ISlotOperation defaultItemOperation() { - return new ItemOperation(); - } - - } - - public static class FluidOperation extends IngredientSlotOperation { - - protected FluidOperation() { - super(VanillaTypes.FLUID, true, (stack, all) -> GroovyScriptCodeConverter.getSingleFluidStack(stack, true, false)); - } - - /** - * @return the base {@link FluidOperation} - */ - public static ISlotOperation defaultFluidOperation() { - return new FluidOperation(); - } - - } - } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Aggregator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Aggregator.java index d2f5c47c2..876463ae5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Aggregator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Aggregator.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import io.github.phantamanta44.libnine.LibNine; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Centrifuge.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Centrifuge.java index 454468c65..3ac4e7e4a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Centrifuge.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Centrifuge.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import io.github.phantamanta44.libnine.LibNine; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Energizer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Energizer.java index cf165882e..a1ee1f0b0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Energizer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Energizer.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import io.github.phantamanta44.libnine.LibNine; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Etcher.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Etcher.java index 750575a80..5334f8e39 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Etcher.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/lazyae2/Etcher.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; import io.github.phantamanta44.libnine.LibNine; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/InjectionChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/InjectionChamber.java index 65d5c9e80..62c6c8631 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/InjectionChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/InjectionChamber.java @@ -3,8 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.GasRecipeBuilder; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.IJEIRemovalGas; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.VirtualizedMekanismRegistry; @@ -60,8 +62,8 @@ public boolean removeByInput(IIngredient ingredient, GasStack gasInput) { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(2), OperationHandler.FluidOperation.defaultFluidOperation(), IJEIRemovalGas.getDefaultGas()); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().exclude(2), FluidOperation.defaultOperation(), IJEIRemovalGas.getDefaultGas()); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/MetallurgicInfuser.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/MetallurgicInfuser.java index cafa3e147..62ada9462 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/MetallurgicInfuser.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/MetallurgicInfuser.java @@ -3,8 +3,11 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.WrapperOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.IJEIRemovalGas; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.VirtualizedMekanismRegistry; @@ -27,8 +30,8 @@ @RegistryDescription public class MetallurgicInfuser extends VirtualizedMekanismRegistry { - private static OperationHandler.IOperation infuseTypeOperation() { - return new OperationHandler.WrapperOperation<>(MetallurgicInfuserRecipeWrapper.class, wrapper -> Collections.singletonList(JeiRemovalHelper.format("removeByInput", Mekanism.asGroovyCode(((MetallurgicInfuserRecipe) wrapper.getRecipe()).getInput().infuse.getType(), true)))); + private static IOperation infuseTypeOperation() { + return new WrapperOperation<>(MetallurgicInfuserRecipeWrapper.class, wrapper -> Collections.singletonList(OperationHandler.format("removeByInput", Mekanism.asGroovyCode(((MetallurgicInfuserRecipe) wrapper.getRecipe()).getInput().infuse.getType(), true)))); } public MetallurgicInfuser() { @@ -73,9 +76,9 @@ public boolean removeByInput(IIngredient ingredient, InfuseType infuseType) { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { // TODO jei methods don't exist to use properly - return ImmutableList.of(infuseTypeOperation(), OperationHandler.ItemOperation.defaultItemOperation().exclude(2), OperationHandler.FluidOperation.defaultFluidOperation(), IJEIRemovalGas.getDefaultGas()); + return ImmutableList.of(infuseTypeOperation(), ItemOperation.defaultOperation().exclude(2), FluidOperation.defaultOperation(), IJEIRemovalGas.getDefaultGas()); } public boolean removeByInput(IIngredient ingredient, String infuseType) { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/OsmiumCompressor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/OsmiumCompressor.java index 230aa0336..fb1991349 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/OsmiumCompressor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/OsmiumCompressor.java @@ -3,8 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.GasRecipeBuilder; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.IJEIRemovalGas; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.VirtualizedMekanismRegistry; @@ -62,8 +64,8 @@ public boolean removeByInput(IIngredient ingredient, GasStack gasInput) { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(2), OperationHandler.FluidOperation.defaultFluidOperation(), IJEIRemovalGas.getDefaultGas()); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().exclude(2), FluidOperation.defaultOperation(), IJEIRemovalGas.getDefaultGas()); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/PurificationChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/PurificationChamber.java index 764d6eb6b..00c741e9a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/PurificationChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/PurificationChamber.java @@ -3,8 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.GasRecipeBuilder; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.IJEIRemovalGas; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.VirtualizedMekanismRegistry; @@ -61,8 +63,8 @@ public boolean removeByInput(IIngredient ingredient, GasStack gasInput) { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(2), OperationHandler.FluidOperation.defaultFluidOperation(), IJEIRemovalGas.getDefaultGas()); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().exclude(2), FluidOperation.defaultOperation(), IJEIRemovalGas.getDefaultGas()); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Washer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Washer.java index 954440607..e031baaf3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Washer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/Washer.java @@ -2,8 +2,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.GasRecipeBuilder; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.IJEIRemovalGas; import com.cleanroommc.groovyscript.compat.mods.mekanism.recipe.VirtualizedMekanismRegistry; @@ -77,7 +79,7 @@ public void validate(GroovyLog.Msg msg) { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation().exclude(0), IJEIRemovalGas.getDefaultGas()); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation(), FluidOperation.defaultOperation().exclude(0), IJEIRemovalGas.getDefaultGas()); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/IJEIRemovalGas.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/IJEIRemovalGas.java index df9cd55a9..61588e1d4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/IJEIRemovalGas.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mekanism/recipe/IJEIRemovalGas.java @@ -1,7 +1,7 @@ package com.cleanroommc.groovyscript.compat.mods.mekanism.recipe; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.*; import com.cleanroommc.groovyscript.compat.mods.mekanism.Mekanism; import com.google.common.collect.ImmutableList; import mekanism.client.jei.MekanismJEI; @@ -11,16 +11,16 @@ public interface IJEIRemovalGas extends IJEIRemoval.Default { - static OperationHandler.SlotOperation getDefaultGas() { - return new OperationHandler.IngredientSlotOperation<>( + static SlotOperation getDefaultGas() { + return new IngredientSlotOperation<>( MekanismJEI.TYPE_GAS, true, (stack, all) -> Mekanism.getSingleGasStack(stack, true)); } @Override - default @NotNull List getJEIOperations() { + default @NotNull List getJEIOperations() { // TODO jei most mekanism classes can't do anything except "removeByInput", but with multiple parameters. - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation(), getDefaultGas()); + return ImmutableList.of(ItemOperation.defaultOperation(), FluidOperation.defaultOperation(), getDefaultGas()); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mysticalagriculture/Reprocessor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mysticalagriculture/Reprocessor.java index c5cc8eafe..96909209e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/mysticalagriculture/Reprocessor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/mysticalagriculture/Reprocessor.java @@ -7,8 +7,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Altar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Altar.java index 08791a42e..35cba41d5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Altar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Altar.java @@ -3,9 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -120,9 +121,9 @@ public SimpleObjectStream> streamRecipe } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(2), - OperationHandler.ItemOperation.defaultItemOperation().include(2).input("removeByCatalyst")); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().exclude(2), + ItemOperation.defaultOperation().include(2).input("removeByCatalyst")); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Offering.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Offering.java index d78f0d8b4..d5c0a702e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Offering.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Offering.java @@ -3,9 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -116,9 +117,9 @@ public SimpleObjectStream> streamRec } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(2), - OperationHandler.ItemOperation.defaultItemOperation().include(2).input("removeByCatalyst")); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().exclude(2), + ItemOperation.defaultOperation().include(2).input("removeByCatalyst")); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Ritual.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Ritual.java index 469cf7758..fc9f6293d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Ritual.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Ritual.java @@ -3,9 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -119,9 +120,9 @@ public SimpleObjectStream> streamR } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(0), - OperationHandler.ItemOperation.defaultItemOperation().include(0).input("removeBySapling")); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().exclude(0), + ItemOperation.defaultOperation().include(0).input("removeBySapling")); } @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "8")}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Spawning.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Spawning.java index 2d3867a26..866036bb0 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Spawning.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/naturesaura/Spawning.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Amadron.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Amadron.java index 716291768..312ff25b1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Amadron.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Amadron.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.AbstractReloadableStorage; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/AssemblyController.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/AssemblyController.java index 6a5e652f2..d9973285e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/AssemblyController.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/AssemblyController.java @@ -4,8 +4,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Explosion.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Explosion.java index a189da3c5..32437c415 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Explosion.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Explosion.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/HeatFrameCooling.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/HeatFrameCooling.java index 030693f1d..5f5ba442e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/HeatFrameCooling.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/HeatFrameCooling.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PlasticMixer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PlasticMixer.java index 787ed3ecb..1a09c9036 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PlasticMixer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PlasticMixer.java @@ -3,8 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.pneumaticcraft.PlasticMixerRecipeAccessor; import com.cleanroommc.groovyscript.core.mixin.pneumaticcraft.PlasticMixerRegistryAccessor; @@ -113,10 +115,10 @@ public SimpleObjectStream streamRecipes // we need to this because the RGB dyes are part of the recipe as slots 0, 1, and 2 if the recipe outputs an item // and slot 0 is used for the recipe input if the recipe has an input item. var itemOperation = layout.getItemStacks().getGuiIngredients().size() > 2 - ? OperationHandler.ItemOperation.defaultItemOperation().include(3) - : OperationHandler.ItemOperation.defaultItemOperation(); + ? ItemOperation.defaultOperation().include(3) + : ItemOperation.defaultOperation(); return OperationHandler.removalOptions(layout, itemOperation.input("removeByItem").output("removeByItem"), - OperationHandler.FluidOperation.defaultFluidOperation().input("removeByFluid").output("removeByFluid")); + FluidOperation.defaultOperation().input("removeByFluid").output("removeByFluid")); } @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PressureChamber.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PressureChamber.java index e19a215c8..b65608a33 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PressureChamber.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/PressureChamber.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Refinery.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Refinery.java index ec3d41081..ece633c53 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Refinery.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/Refinery.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/ThermopneumaticProcessingPlant.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/ThermopneumaticProcessingPlant.java index a95dfd7f7..1a2ecb463 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/ThermopneumaticProcessingPlant.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pneumaticcraft/ThermopneumaticProcessingPlant.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/ClayKiln.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/ClayKiln.java index 69579324f..7f51f36f8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/ClayKiln.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/ClayKiln.java @@ -3,9 +3,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.primal_tech.ClayKilnRecipesAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -100,7 +100,7 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return Default.excludeSlots(2); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/StoneAnvil.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/StoneAnvil.java index 4362db732..83ed934c5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/StoneAnvil.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/StoneAnvil.java @@ -3,9 +3,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.primal_tech.StoneAnvilRecipesAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -99,7 +99,7 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return Default.excludeSlots(2); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/WaterSaw.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/WaterSaw.java index 1f6152c39..5681ecea1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/WaterSaw.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/WaterSaw.java @@ -3,9 +3,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.primal_tech.WaterSawRecipesAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -100,7 +100,7 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return Default.excludeSlots(2); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/WoodenBasin.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/WoodenBasin.java index 3893feb2a..5807266c9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/WoodenBasin.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/primaltech/WoodenBasin.java @@ -3,9 +3,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.primal_tech.WoodenBasinRecipesAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; @@ -112,7 +112,7 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return Default.excludeSlots(6); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/AtomicReshaper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/AtomicReshaper.java index 9ea5762b2..b77f7ad3b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/AtomicReshaper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/AtomicReshaper.java @@ -3,9 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -103,8 +104,8 @@ public SimpleObjectStream streamReci } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(1)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().include(1)); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnace.java index b24cd9772..c4ee40dd5 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnace.java @@ -3,9 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -81,8 +82,8 @@ public SimpleObjectStream stream } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(2)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().include(2)); } @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "2")}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnaceAdditives.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnaceAdditives.java index a4c52a4ba..d9009e25a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnaceAdditives.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/ExplosionFurnaceAdditives.java @@ -4,8 +4,9 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.helper.ingredient.ItemsIngredient; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -95,8 +96,8 @@ public void removeAllDampeners() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().input("removeDampener")); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().input("removeDampener")); } public interface EFAdditiveRecipe { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/PrimordialisReactor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/PrimordialisReactor.java index a50fa6754..22f3d52d7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/PrimordialisReactor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/PrimordialisReactor.java @@ -4,8 +4,9 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.ItemsIngredient; import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient; @@ -88,8 +89,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0).input("remove")); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().include(0).input("remove")); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/Solderer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/Solderer.java index a209131e7..fb6a16855 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/Solderer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/prodigytech/Solderer.java @@ -3,9 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -111,10 +112,10 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(1).input("removeByPattern"), - OperationHandler.ItemOperation.defaultItemOperation().include(2).input("removeByAdditive"), - OperationHandler.ItemOperation.defaultItemOperation().include(4)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().include(1).input("removeByPattern"), + ItemOperation.defaultOperation().include(2).input("removeByAdditive"), + ItemOperation.defaultOperation().include(4)); } @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "0"), @Comp(type = Comp.Type.LTE, value = "1")}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/Transmutation.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/Transmutation.java index a6d76f4ef..814b4445e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/Transmutation.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/projecte/Transmutation.java @@ -3,9 +3,9 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -93,7 +93,7 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return ImmutableList.of(); // TODO jei } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Anvil.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Anvil.java index 9662b8a8e..07ee11983 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Anvil.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Anvil.java @@ -3,8 +3,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.helper.EnumHelper; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -82,8 +83,8 @@ public void removeByOutput(ItemStack output) { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(1)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().include(1)); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Barrel.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Barrel.java index 0f38fbe03..11ad96717 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Barrel.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Barrel.java @@ -3,8 +3,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; @@ -67,8 +68,8 @@ public void removeByOutput(FluidStack output) { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.FluidOperation.defaultFluidOperation().include(5)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(FluidOperation.defaultOperation().include(5)); } @Property(property = "input", valid = @Comp(type = Comp.Type.EQ, value = "4")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Campfire.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Campfire.java index e4b78049f..9ddd4a925 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Campfire.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Campfire.java @@ -3,7 +3,7 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/ChoppingBlock.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/ChoppingBlock.java index ee67e5512..1955c8eaa 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/ChoppingBlock.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/ChoppingBlock.java @@ -3,7 +3,7 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CompactingBin.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CompactingBin.java index fa1b8460c..82bd1435c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CompactingBin.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CompactingBin.java @@ -3,7 +3,7 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CompostBin.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CompostBin.java index 3673805c9..d2d42da10 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CompostBin.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CompostBin.java @@ -3,7 +3,7 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CrudeDryingRack.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CrudeDryingRack.java index 9eca84dea..202ccd704 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CrudeDryingRack.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/CrudeDryingRack.java @@ -3,7 +3,7 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/DryingRack.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/DryingRack.java index 46f3d0bdd..e0d67b886 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/DryingRack.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/DryingRack.java @@ -3,7 +3,7 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Kiln.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Kiln.java index 575a56a2f..638eb2b79 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Kiln.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/Kiln.java @@ -3,8 +3,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.ingredient.ItemStackList; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -81,8 +82,8 @@ public void removeByOutput(IIngredient output) { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(2)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().exclude(2)); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/SoakingPot.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/SoakingPot.java index 3518de151..bd323bf96 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/SoakingPot.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/SoakingPot.java @@ -3,8 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; @@ -80,8 +82,8 @@ public void removeByOutput(IIngredient output) { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(1), OperationHandler.FluidOperation.defaultFluidOperation()); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().exclude(1), FluidOperation.defaultOperation()); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/TanningRack.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/TanningRack.java index 3e94ed0a0..8027da60a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/TanningRack.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/pyrotech/TanningRack.java @@ -3,7 +3,7 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.ForgeRegistryWrapper; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/BarkCarving.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/BarkCarving.java index 5f3c47799..9232fb409 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/BarkCarving.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/BarkCarving.java @@ -2,8 +2,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Chrysopoeia.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Chrysopoeia.java index 4290b79f7..8ca993e20 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Chrysopoeia.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Chrysopoeia.java @@ -2,8 +2,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.roots.ModRecipesAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/FeyCrafter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/FeyCrafter.java index 2976162e5..d80336ed7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/FeyCrafter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/FeyCrafter.java @@ -2,9 +2,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -101,8 +102,8 @@ public SimpleObjectStream> stream } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(5)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().include(5)); } @Property(property = "name") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/LifeEssence.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/LifeEssence.java index e48e54814..4b88b2c5d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/LifeEssence.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/LifeEssence.java @@ -3,8 +3,9 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.WrapperOperation; import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; @@ -26,12 +27,12 @@ ) public class LifeEssence extends VirtualizedRegistry> implements IJEIRemoval.Default { - private static OperationHandler.IOperation entityOperation() { - return new OperationHandler.WrapperOperation<>(RunicShearsSummonEntityWrapper.class, wrapper -> { + private static IOperation entityOperation() { + return new WrapperOperation<>(RunicShearsSummonEntityWrapper.class, wrapper -> { var tag = wrapper.recipe.getEssenceStack().getTagCompound(); if (tag == null) return Collections.emptyList(); // only real way to access the entity ID here - return Collections.singletonList(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.formatGenericHandler("entity", tag.getString("id"), true))); + return Collections.singletonList(OperationHandler.format("remove", GroovyScriptCodeConverter.formatGenericHandler("entity", tag.getString("id"), true))); }); } @@ -91,7 +92,7 @@ public SimpleObjectStream> streamRecipes() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return ImmutableList.of(entityOperation()); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Mortar.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Mortar.java index 386839586..5c16c1571 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Mortar.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Mortar.java @@ -3,9 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.roots.ModRecipesAccessor; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -113,8 +114,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(5)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().include(5)); } @Property(property = "name") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Moss.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Moss.java index b33616c2b..1e550a499 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Moss.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Moss.java @@ -2,9 +2,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.roots.MossConfigAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -111,7 +111,7 @@ public SimpleObjectStream> streamRecipes() { } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return Default.includeSlots(0); } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Pyre.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Pyre.java index b27b07b93..0e4a3b83d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Pyre.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Pyre.java @@ -2,9 +2,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -101,8 +102,8 @@ public SimpleObjectStream> strea } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(5)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().include(5)); } @Property(property = "name") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/RunicShearBlock.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/RunicShearBlock.java index 21b91c6e5..b898a5041 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/RunicShearBlock.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/RunicShearBlock.java @@ -2,9 +2,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -109,8 +110,8 @@ public SimpleObjectStream> streamR } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(1)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().include(1)); } @Property(property = "name") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/RunicShearEntity.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/RunicShearEntity.java index a34ec3d7c..bbe9b42c6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/RunicShearEntity.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/RunicShearEntity.java @@ -2,9 +2,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -112,8 +113,8 @@ public SimpleObjectStream> s } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation().output(0)); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation().output(0)); } @Property(property = "name") diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/SummonCreature.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/SummonCreature.java index 6dde397a5..272fcb455 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/SummonCreature.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/SummonCreature.java @@ -3,9 +3,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.roots.ModRecipesAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; @@ -102,7 +102,7 @@ public SimpleObjectStream> str } @Override - public @NotNull List getJEIOperations() { + public @NotNull List getJEIOperations() { return ImmutableList.of(); // TODO jei this } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Transmutation.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Transmutation.java index 301e4d3fa..d3b6eadaf 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Transmutation.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/roots/Transmutation.java @@ -2,8 +2,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.roots.ModRecipesAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/Alchemy.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/Alchemy.java index 75671a5f9..fc37f5ddd 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/Alchemy.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/Alchemy.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/BrewingBarrel.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/BrewingBarrel.java index bc72eeece..30506f6a6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/BrewingBarrel.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/BrewingBarrel.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/CrushingTub.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/CrushingTub.java index 76566cfd5..43811c996 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/CrushingTub.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/CrushingTub.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/EvaporatingBasin.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/EvaporatingBasin.java index 856f77508..87f9bcefb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/EvaporatingBasin.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/rustic/EvaporatingBasin.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tcomplement/HighOven.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tcomplement/HighOven.java index 10e27f6aa..60903b98b 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tcomplement/HighOven.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tcomplement/HighOven.java @@ -3,8 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.MeltingRecipeBuilder; import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.MeltingRecipeRegistry; import com.cleanroommc.groovyscript.core.mixin.tcomplement.TCompRegistryAccessor; @@ -135,8 +137,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(1), OperationHandler.FluidOperation.defaultFluidOperation()); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().exclude(1), FluidOperation.defaultOperation()); } public static class Mixing extends VirtualizedRegistry implements IJEIRemoval.Default { @@ -248,8 +250,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(3, 4), OperationHandler.FluidOperation.defaultFluidOperation()); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().exclude(3, 4), FluidOperation.defaultOperation()); } public class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tcomplement/Melter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tcomplement/Melter.java index b35f6dc60..648b71049 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tcomplement/Melter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tcomplement/Melter.java @@ -3,8 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.tcomplement.recipe.IngredientBlacklist; import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.MeltingRecipeBuilder; import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.MeltingRecipeRegistry; @@ -167,8 +169,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(1), OperationHandler.FluidOperation.defaultFluidOperation().exclude(1)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().exclude(1), FluidOperation.defaultOperation().exclude(1)); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java index 215f0de84..7bb74b72d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/Crucible.java @@ -5,8 +5,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.mods.thaumcraft.aspect.AspectStack; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -137,8 +138,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0)/*, IJEIRemovalAspect.getDefaultAspect()*/); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().include(0)/*, IJEIRemovalAspect.getDefaultAspect()*/); } public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/IJEIRemovalAspect.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/IJEIRemovalAspect.java index ce63eec59..18b6a642d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/IJEIRemovalAspect.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/IJEIRemovalAspect.java @@ -1,8 +1,8 @@ package com.cleanroommc.groovyscript.compat.mods.thaumcraft; import com.buuz135.thaumicjei.ThaumcraftJEIPlugin; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.*; import com.google.common.collect.ImmutableList; import net.minecraftforge.fml.common.Optional; import org.jetbrains.annotations.NotNull; @@ -12,16 +12,16 @@ public interface IJEIRemovalAspect extends IJEIRemoval.Default { @Optional.Method(modid = "thaumicjei") - static OperationHandler.SlotOperation getDefaultAspect() { - return new OperationHandler.IngredientSlotOperation<>( + static SlotOperation getDefaultAspect() { + return new IngredientSlotOperation<>( ThaumcraftJEIPlugin.ASPECT_LIST, false, (stack, all) -> stack.size() == 0 ? "" : Thaumcraft.asGroovyCode(stack.getAspects()[0], true)); } @Override @Optional.Method(modid = "thaumicjei") - default @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation(), getDefaultAspect()); + default @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation(), FluidOperation.defaultOperation(), getDefaultAspect()); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfusionCrafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfusionCrafting.java index 78749c8ab..292a26a21 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfusionCrafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/InfusionCrafting.java @@ -5,8 +5,9 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.mods.thaumcraft.aspect.AspectStack; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -140,8 +141,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0)/*, IJEIRemovalAspect.getDefaultAspect()*/); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().include(0)/*, IJEIRemovalAspect.getDefaultAspect()*/); } public static class RecipeBuilder extends AbstractRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java index 40184daaa..cfbdb13c8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thaumcraft/arcane/ArcaneWorkbench.java @@ -6,8 +6,11 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RecipeBuilderDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.WrapperOperation; import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.compat.vanilla.VanillaModule; import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; @@ -27,15 +30,15 @@ import java.util.stream.Collectors; @RegistryDescription -@Optional.Interface(modid = "thaumicjei", iface = "com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval$Default") +@Optional.Interface(modid = "thaumicjei", iface = "com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval$Default") public class ArcaneWorkbench extends NamedRegistry implements IJEIRemoval.Default { @Optional.Method(modid = "thaumicjei") - private static OperationHandler.IOperation registryNameOperation() { - return new OperationHandler.WrapperOperation<>(com.buuz135.thaumicjei.category.ArcaneWorkbenchCategory.ArcaneWorkbenchWrapper.class, wrapper -> + private static IOperation registryNameOperation() { + return new WrapperOperation<>(com.buuz135.thaumicjei.category.ArcaneWorkbenchCategory.ArcaneWorkbenchWrapper.class, wrapper -> wrapper.getRecipe().getRegistryName() == null ? Collections.emptyList() - : Collections.singletonList(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.asGroovyCode(wrapper.getRecipe().getRegistryName(), true)))); + : Collections.singletonList(OperationHandler.format("remove", GroovyScriptCodeConverter.asGroovyCode(wrapper.getRecipe().getRegistryName(), true)))); } public static final ResourceLocation DEFAULT = new ResourceLocation(""); @@ -90,8 +93,8 @@ public void removeAll() { @Override @Optional.Method(modid = "thaumicjei") - public @NotNull List getJEIOperations() { - return ImmutableList.of(registryNameOperation(), OperationHandler.ItemOperation.defaultItemOperation().include(0), OperationHandler.FluidOperation.defaultFluidOperation()); + public @NotNull List getJEIOperations() { + return ImmutableList.of(registryNameOperation(), ItemOperation.defaultOperation().include(0), FluidOperation.defaultOperation()); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/MoonlightForge.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/MoonlightForge.java index f80351c64..5b6dbe566 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/MoonlightForge.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/MoonlightForge.java @@ -3,8 +3,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/Scrapper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/Scrapper.java index 4d96216a6..403236c7e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/Scrapper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/theaurorian/Scrapper.java @@ -3,9 +3,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; @@ -89,8 +90,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().exclude(1)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().exclude(1)); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Coolant.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Coolant.java index afbd8295d..8ac4a1b08 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Coolant.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Coolant.java @@ -7,7 +7,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.CoolantManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Factorizer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Factorizer.java index d329de233..eea3fdc0d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Factorizer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Factorizer.java @@ -7,8 +7,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.FactorizerManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.FactorizerRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Tapper.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Tapper.java index a1f4b1af6..b8601411d 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Tapper.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/device/Tapper.java @@ -10,8 +10,9 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.TapperManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.AbstractReloadableStorage; @@ -168,8 +169,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.FluidOperation.defaultFluidOperation()); + public @NotNull List getJEIOperations() { + return Collections.singletonList(FluidOperation.defaultOperation()); } @Desugar diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Compression.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Compression.java index 872293cc4..232c3d39c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Compression.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Compression.java @@ -5,7 +5,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.CompressionManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Enervation.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Enervation.java index 261c58a07..42dd5e915 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Enervation.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Enervation.java @@ -7,7 +7,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.EnervationManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Lapidary.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Lapidary.java index feabdbda2..85db3a757 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Lapidary.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Lapidary.java @@ -7,7 +7,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.NumismaticManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Magmatic.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Magmatic.java index 6f60f96b9..54fd17891 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Magmatic.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Magmatic.java @@ -5,7 +5,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.MagmaticManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Numismatic.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Numismatic.java index 21606b336..133ad3c16 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Numismatic.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Numismatic.java @@ -7,7 +7,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.NumismaticManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Reactant.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Reactant.java index 4e255f965..6155fab07 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Reactant.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Reactant.java @@ -7,8 +7,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.ReactantManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.ReactionAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Steam.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Steam.java index 379a38d17..05d8efc44 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Steam.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/dynamo/Steam.java @@ -7,7 +7,7 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.Example; import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.SteamManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Brewer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Brewer.java index 3ceaa3fb7..794e4b7e1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Brewer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Brewer.java @@ -8,8 +8,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.BrewerManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.BrewerRecipeAccessor; import com.cleanroommc.groovyscript.helper.Alias; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Centrifuge.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Centrifuge.java index 0e2915fd1..d1bcf09c1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Centrifuge.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Centrifuge.java @@ -7,8 +7,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.CentrifugeManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.CentrifugeRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/CentrifugeMobs.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/CentrifugeMobs.java index 8e02a90ce..9659cd09a 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/CentrifugeMobs.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/CentrifugeMobs.java @@ -7,8 +7,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.CentrifugeManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.CentrifugeRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Charger.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Charger.java index a5ff12ef1..200267bd3 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Charger.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Charger.java @@ -8,8 +8,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.ChargerManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Compactor.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Compactor.java index 299015cc5..1e4cc33cb 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Compactor.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Compactor.java @@ -8,8 +8,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.CompactorManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.CompactorRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Crucible.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Crucible.java index adb23b5dd..a1c559508 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Crucible.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Crucible.java @@ -8,8 +8,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.CrucibleManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.CrucibleRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Enchanter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Enchanter.java index e77658d31..90dc4d53e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Enchanter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Enchanter.java @@ -8,9 +8,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.EnchanterManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.EnchanterRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -150,8 +151,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation()); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation()); } @Property(property = "input", valid = @Comp("2")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Extruder.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Extruder.java index 8f348c886..a193b200e 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Extruder.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Extruder.java @@ -8,9 +8,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.ExtruderManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.ExtruderRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -163,8 +164,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation()); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation()); } @Property(property = "output", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Furnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Furnace.java index 2bffc2d81..ad880b3d4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Furnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Furnace.java @@ -7,8 +7,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.FurnaceManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.FurnaceRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/FurnacePyrolysis.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/FurnacePyrolysis.java index 040bd70f9..184defbf1 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/FurnacePyrolysis.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/FurnacePyrolysis.java @@ -7,9 +7,11 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.FurnaceManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.FurnaceRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -108,8 +110,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation().exclude(0)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation(), FluidOperation.defaultOperation().exclude(0)); } @Property(property = "input", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Insolator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Insolator.java index 290a0831c..3ed9c88e8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Insolator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Insolator.java @@ -8,9 +8,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.InsolatorManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.InsolatorRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -153,8 +154,8 @@ public void removeAll() { } @Override - public @NotNull List getJEIOperations() { - return Collections.singletonList(OperationHandler.ItemOperation.defaultItemOperation()); + public @NotNull List getJEIOperations() { + return Collections.singletonList(ItemOperation.defaultOperation()); } @Property(property = "input", valid = @Comp("2")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Precipitator.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Precipitator.java index 83c9bcba7..a168af0c9 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Precipitator.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Precipitator.java @@ -8,8 +8,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.PrecipitatorManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.PrecipitatorRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Pulverizer.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Pulverizer.java index 801b5e63b..83535bab4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Pulverizer.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Pulverizer.java @@ -7,8 +7,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.PulverizerManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.PulverizerRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Refinery.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Refinery.java index 05b039346..770bb01a2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Refinery.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Refinery.java @@ -8,8 +8,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.RefineryManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.RefineryRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/RefineryPotion.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/RefineryPotion.java index 90aeba003..e4b0c2b5c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/RefineryPotion.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/RefineryPotion.java @@ -8,8 +8,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.RefineryManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.RefineryRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Sawmill.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Sawmill.java index 5322ea24c..bf054ffa6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Sawmill.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Sawmill.java @@ -7,8 +7,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.SawmillManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.SawmillRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Smelter.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Smelter.java index 4e675ba57..2e4796fdd 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Smelter.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/Smelter.java @@ -8,8 +8,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.SmelterManagerAccessor; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.SmelterRecipeAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerExtract.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerExtract.java index f40a682dc..1864fb8a4 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerExtract.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerExtract.java @@ -7,8 +7,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.TransposerManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerFill.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerFill.java index 4061712e1..a69f68629 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerFill.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/thermalexpansion/machine/TransposerFill.java @@ -8,8 +8,8 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.thermalexpansion.TransposerManagerAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Alloying.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Alloying.java index b221e109f..8365082bc 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Alloying.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Alloying.java @@ -3,7 +3,7 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.core.mixin.tconstruct.TinkerRegistryAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/CastingTable.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/CastingTable.java index 215da1f09..6805e9647 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/CastingTable.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/CastingTable.java @@ -4,8 +4,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.MeltingRecipeBuilder; import com.cleanroommc.groovyscript.core.mixin.tconstruct.TinkerRegistryAccessor; import com.cleanroommc.groovyscript.helper.Alias; @@ -120,8 +122,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation().exclude(1)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation(), FluidOperation.defaultOperation().exclude(1)); } @Property(property = "fluidInput", valid = @Comp("1")) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Drying.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Drying.java index 36eba831f..562dab346 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Drying.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Drying.java @@ -4,7 +4,7 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; import com.cleanroommc.groovyscript.api.documentation.annotations.*; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.MeltingRecipeBuilder; import com.cleanroommc.groovyscript.core.mixin.tconstruct.TinkerRegistryAccessor; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Melting.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Melting.java index 0e11436aa..f1bf6f373 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Melting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/tinkersconstruct/Melting.java @@ -7,8 +7,10 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.MethodDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RecipeBuilderDescription; import com.cleanroommc.groovyscript.api.documentation.annotations.RegistryDescription; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.MeltingRecipeBuilder; import com.cleanroommc.groovyscript.compat.mods.tinkersconstruct.recipe.MeltingRecipeRegistry; import com.cleanroommc.groovyscript.core.mixin.tconstruct.TinkerRegistryAccessor; @@ -125,8 +127,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation(), OperationHandler.FluidOperation.defaultFluidOperation().exclude(1)); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation(), FluidOperation.defaultOperation().exclude(1)); } public static class RecipeBuilder extends MeltingRecipeBuilder { diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/StygianIronAnvil.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/StygianIronAnvil.java index 8202b187d..3573e9b60 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/StygianIronAnvil.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/woot/StygianIronAnvil.java @@ -2,9 +2,10 @@ import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; import com.cleanroommc.groovyscript.compat.mods.ModSupport; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.core.mixin.woot.AnvilManagerAccessor; import com.cleanroommc.groovyscript.helper.Alias; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; @@ -113,8 +114,8 @@ public SimpleObjectStream streamRecipes() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(OperationHandler.ItemOperation.defaultItemOperation().include(0, 1).input("removeByBase")); + public @NotNull List getJEIOperations() { + return ImmutableList.of(ItemOperation.defaultOperation().include(0, 1).input("removeByBase")); } @Property(property = "input", valid = {@Comp(type = Comp.Type.GTE, value = "1"), @Comp(type = Comp.Type.LTE, value = "Integer.MAX_VALUE")}) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Crafting.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Crafting.java index 6c92f08e1..af9654cc2 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Crafting.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Crafting.java @@ -3,8 +3,11 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.JeiRemovalHelper; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.FluidOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.IOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.ItemOperation; +import com.cleanroommc.groovyscript.api.jeiremoval.operations.WrapperOperation; import com.cleanroommc.groovyscript.compat.mods.jei.removal.OperationHandler; import com.cleanroommc.groovyscript.helper.ingredient.GroovyScriptCodeConverter; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; @@ -38,11 +41,11 @@ public static IIngredient getFallback(char c) { return fallbackChars.get(c); } - private static OperationHandler.IOperation registryNameOperation() { - return new OperationHandler.WrapperOperation<>(ICraftingRecipeWrapper.class, wrapper -> + private static IOperation registryNameOperation() { + return new WrapperOperation<>(ICraftingRecipeWrapper.class, wrapper -> wrapper.getRegistryName() == null ? Collections.emptyList() - : Collections.singletonList(JeiRemovalHelper.format("remove", GroovyScriptCodeConverter.asGroovyCode(wrapper.getRegistryName(), true)))); + : Collections.singletonList(OperationHandler.format("remove", GroovyScriptCodeConverter.asGroovyCode(wrapper.getRegistryName(), true)))); } public void setFallback(char key, IIngredient ingredient) { @@ -237,8 +240,8 @@ public CraftingRecipeBuilder.Shapeless shapelessBuilder() { } @Override - public @NotNull List getJEIOperations() { - return ImmutableList.of(registryNameOperation(), OperationHandler.ItemOperation.defaultItemOperation().include(0), OperationHandler.FluidOperation.defaultFluidOperation()); + public @NotNull List getJEIOperations() { + return ImmutableList.of(registryNameOperation(), ItemOperation.defaultOperation().include(0), FluidOperation.defaultOperation()); } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Furnace.java b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Furnace.java index f7f1afb54..1e7b57fad 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Furnace.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/vanilla/Furnace.java @@ -3,7 +3,7 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyLog; import com.cleanroommc.groovyscript.api.IIngredient; -import com.cleanroommc.groovyscript.compat.mods.jei.removal.IJEIRemoval; +import com.cleanroommc.groovyscript.api.jeiremoval.IJEIRemoval; import com.cleanroommc.groovyscript.helper.SimpleObjectStream; import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder;