From 84f80fa7fbd5f135db30831eb2a97c52b4391ef0 Mon Sep 17 00:00:00 2001 From: code-onigiri Date: Thu, 5 Dec 2024 06:00:29 +0900 Subject: [PATCH 1/9] add WorkBenchPlus injection --- dependencies.gradle | 1 + .../postInit/additionalenchantedminer.groovy | 7 ++ gradle.properties | 1 + .../groovyscript/compat/mods/ModSupport.java | 2 + .../AdditionalEnchantedMiner.java | 7 ++ .../WorkBenchPlus.java | 99 +++++++++++++++++++ .../WorkbenchPlusRecipe.java | 80 +++++++++++++++ 7 files changed, 197 insertions(+) create mode 100644 examples/postInit/additionalenchantedminer.groovy create mode 100644 src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/AdditionalEnchantedMiner.java create mode 100644 src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java create mode 100644 src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkbenchPlusRecipe.java diff --git a/dependencies.gradle b/dependencies.gradle index 414dfa16c..58a1f10c1 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -28,6 +28,7 @@ // Sorted by alphabetical name of the `project.debug_[this]` value final def mod_dependencies = [ 'actually-additions-228404:3117927' : [project.debug_actually_additions], + 'additionalenchantedminer-282837:3851282' : [project.debug_additional_enchanted_miner], 'advancedmortars-283777:2780626' : [project.debug_adv_mortars], 'advanced-rocketry-236542:4671856' : [project.debug_advanced_rocketry], 'libvulpes-236541:3801015' : [project.debug_advanced_rocketry], diff --git a/examples/postInit/additionalenchantedminer.groovy b/examples/postInit/additionalenchantedminer.groovy new file mode 100644 index 000000000..6585a2877 --- /dev/null +++ b/examples/postInit/additionalenchantedminer.groovy @@ -0,0 +1,7 @@ +mods.aem.workbenchplus.recipeBuilder() + .output(item('minecraft:nether_star')) + .input(item('minecraft:diamond'),item('minecraft:gold_ingot')) + .energy(10000) + .register() + +//mods.aem.workbenchplus.removeByOutput(item('quarryplus:quarry')) \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index ac888afbf..9954f348a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,6 +13,7 @@ debug_generate_and_crash = false # SECTION: debug mod compat debug_actually_additions = false +debug_additional_enchanted_miner = true debug_adv_mortars = false debug_advanced_rocketry = false debug_aether = false diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ModSupport.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ModSupport.java index a2e660f2c..25fda9093 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ModSupport.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ModSupport.java @@ -4,6 +4,7 @@ import com.cleanroommc.groovyscript.api.GroovyBlacklist; import com.cleanroommc.groovyscript.api.GroovyPlugin; import com.cleanroommc.groovyscript.compat.mods.actuallyadditions.ActuallyAdditions; +import com.cleanroommc.groovyscript.compat.mods.additionalenchantedminer.AdditionalEnchantedMiner; import com.cleanroommc.groovyscript.compat.mods.advancedmortars.AdvancedMortars; import com.cleanroommc.groovyscript.compat.mods.advancedrocketry.AdvancedRocketry; import com.cleanroommc.groovyscript.compat.mods.aetherlegacy.Aether; @@ -82,6 +83,7 @@ public class ModSupport { public static final ModSupport INSTANCE = new ModSupport(); // Just for Binding purposes public static final GroovyContainer ACTUALLY_ADDITIONS = new InternalModContainer<>("actuallyadditions", "Actually Additions", ActuallyAdditions::new, "aa"); + public static final GroovyContainer ADDITIONAL_ENCHANTED_MINER = new InternalModContainer<>("quarryplus", "Additional Enchanted Miner", AdditionalEnchantedMiner::new, "aem"); public static final GroovyContainer ADVANCED_MORTARS = new InternalModContainer<>("advancedmortars", "Advanced Mortars", AdvancedMortars::new); public static final GroovyContainer ADVANCED_ROCKETRY = new InternalModContainer<>("advancedrocketry", "Advanced Rocketry", AdvancedRocketry::new); public static final GroovyContainer AETHER = new InternalModContainer<>("aether_legacy", "Aether Legacy", Aether::new, "aether"); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/AdditionalEnchantedMiner.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/AdditionalEnchantedMiner.java new file mode 100644 index 000000000..8093535e5 --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/AdditionalEnchantedMiner.java @@ -0,0 +1,7 @@ +package com.cleanroommc.groovyscript.compat.mods.additionalenchantedminer; + +import com.cleanroommc.groovyscript.compat.mods.GroovyPropertyContainer; + +public class AdditionalEnchantedMiner extends GroovyPropertyContainer { + public final WorkBenchPlus WorkBenchPlus = new WorkBenchPlus(); +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java new file mode 100644 index 000000000..10391613f --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java @@ -0,0 +1,99 @@ +package com.cleanroommc.groovyscript.compat.mods.additionalenchantedminer; + +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.api.documentation.annotations.*; +import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; +import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.yogpc.qp.recipe.WorkbenchRecipe; +import com.yogpc.qp.tile.ItemDamage; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import org.jetbrains.annotations.Nullable; +import scala.Option; +import scala.collection.JavaConversions; +import scala.collection.Map; + +public class WorkBenchPlus extends VirtualizedRegistry { + + @Override + public void onReload() { + removeScripted().forEach(recipe -> WorkbenchPlusRecipe.removeById(recipe.getLocation().toString())); + restoreFromBackup().forEach(WorkbenchPlusRecipe::addRecipe); + } + + @MethodDescription(example = @Example("item('quarryplus:quarry')")) + public Boolean removeByOutput(ItemStack output) { + ItemDamage itemDamage = ItemDamage.apply(output); + Map recipeMap = WorkbenchRecipe.getRecipeMap(); + Iterable iterable = JavaConversions.asJavaIterable(recipeMap.values()); + iterable.forEach(recipe -> { + if (recipe.key().equals(itemDamage)) { + addBackup(new WorkbenchPlusRecipe(recipe.inputs(), recipe.getOutput(), recipe.energy(), recipe.location())); + } + }); + return WorkbenchPlusRecipe.removeByOutput(output); + } + + public Boolean removeById(String id) { + Map OptinalList = WorkbenchRecipe.getRecipeMap(); + ResourceLocation location = new ResourceLocation(id); + Option recipe = OptinalList.get(location); + if (recipe.isDefined()) addBackup(new WorkbenchPlusRecipe(recipe.get().inputs(), recipe.get().getOutput(), recipe.get().energy(), recipe.get().location())); + return WorkbenchPlusRecipe.removeById(id); + } + + public void removeAll() { + Map OptinalList = WorkbenchRecipe.getRecipeMap(); + Iterable iterable = JavaConversions.asJavaIterable(OptinalList.keys()); + iterable.forEach( + recipe -> removeById(recipe.toString()) + ); + } + + @RecipeBuilderDescription(example = + @Example(".output(item('minecraft:nether_star')).input(item('minecraft:diamond'),item('minecraft:gold_ingot')).energy(10000).register()") + ) + public RecipeBuilder recipeBuilder(){return new RecipeBuilder();}; + + @Property(property = "input", comp = @Comp(not = "null", gte = 1 , lte = 27)) + @Property(property = "output", comp = @Comp(not = "null" , eq = 1)) + public class RecipeBuilder extends AbstractRecipeBuilder { + + @Property(property = "energy", comp = @Comp(gt = 0)) + private double energy; + + @RecipeBuilderMethodDescription + public RecipeBuilder energy(double energy) { + this.energy = energy; + return this; + } + + @Override + public String getRecipeNamePrefix() { + return "additionalenchantedminer_workbenchplus_"; + } + + + @Override + public String getErrorMsg() { + return "Error adding AdditionalEnchantedMiner WorkbenchPlus recipe"; + } + + @Override + public void validate(GroovyLog.Msg msg) { + validateName(); + validateItems(msg, 1, 27, 1, 1); + msg.add(energy <= 0, "energy must be an integer greater than 0, yet it was {}", energy); + } + + @Override + @RecipeBuilderRegistrationMethod + public @Nullable WorkbenchPlusRecipe register() { + if (!validate()) return null; + WorkbenchPlusRecipe recipe = new WorkbenchPlusRecipe(this.input, this.output.get(0), this.energy, name); + addScripted(recipe); + WorkbenchPlusRecipe.addRecipe(recipe); + return recipe; + } + } +} diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkbenchPlusRecipe.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkbenchPlusRecipe.java new file mode 100644 index 000000000..893309c48 --- /dev/null +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkbenchPlusRecipe.java @@ -0,0 +1,80 @@ +package com.cleanroommc.groovyscript.compat.mods.additionalenchantedminer; + +import com.cleanroommc.groovyscript.api.IIngredient; +import com.yogpc.qp.recipe.WorkbenchRecipe; +import com.yogpc.qp.tile.ItemDamage; +import com.yogpc.qp.utils.IngredientWithCount; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import scala.Option; +import scala.collection.JavaConversions; +import scala.collection.Map; +import scala.collection.Seq; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +import static com.yogpc.qp.recipe.WorkbenchRecipe.addIngredientRecipe; +import static com.yogpc.qp.recipe.WorkbenchRecipe.getRecipeFromResult; +import static org.codehaus.groovy.runtime.DefaultGroovyMethods.collect; + +public class WorkbenchPlusRecipe { + private final List> input; + private final ItemStack output; + private final Double energy; + private final ResourceLocation location; + + public WorkbenchPlusRecipe(Collection input, ItemStack output, Double energy , ResourceLocation location) { + List> inputList = input.stream() + .map(i -> new IngredientWithCount(i.toMcIngredient(), i.getAmount())) + .map(Collections::singletonList) + .collect(Collectors.toList()); + + this.input = inputList; + this.output = output; + this.energy = energy; + this.location = location; + + } + + public WorkbenchPlusRecipe(Seq> input, ItemStack output, Double energy , ResourceLocation location) { + this.input = JavaConversions.seqAsJavaList(input).stream() + .map(JavaConversions::seqAsJavaList) + .collect(Collectors.toList()); + this.output = output; + this.energy = energy; + this.location = location; + + } + + public static WorkbenchPlusRecipe addRecipe(WorkbenchPlusRecipe recipe) { + Map recipeMap = WorkbenchRecipe.getRecipeMap(); + ResourceLocation resourceLocation = new ResourceLocation(recipe.location.toString()); + Option optionalRecipe = recipeMap.get(resourceLocation); + if (optionalRecipe.isDefined()) { + addIngredientRecipe(optionalRecipe.get().location(), optionalRecipe.get().getOutput(), optionalRecipe.get().energy(), optionalRecipe.get().inputs(), true , true); + } else { + addIngredientRecipe(recipe.location, recipe.output, recipe.energy, recipe.input, true); + } + return recipe; + } + + public static Boolean removeByOutput(ItemStack output) { + ItemDamage itemDamage = ItemDamage.apply(output); + WorkbenchRecipe.removeRecipe(itemDamage); + return true; + } + + public static Boolean removeById(String id) { + ResourceLocation resourceLocation = new ResourceLocation(id); + WorkbenchRecipe.removeRecipe(resourceLocation); + return true; + } + + public ResourceLocation getLocation() { + return location; + } +} From a109ea57cff0aa9757eaaaf4a3d1b60f3a8369e8 Mon Sep 17 00:00:00 2001 From: code-onigiri Date: Thu, 5 Dec 2024 06:01:39 +0900 Subject: [PATCH 2/9] add --- .../compat/mods/additionalenchantedminer/WorkBenchPlus.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java index 10391613f..b9d25e795 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java @@ -53,7 +53,7 @@ public void removeAll() { @RecipeBuilderDescription(example = @Example(".output(item('minecraft:nether_star')).input(item('minecraft:diamond'),item('minecraft:gold_ingot')).energy(10000).register()") ) - public RecipeBuilder recipeBuilder(){return new RecipeBuilder();}; + public RecipeBuilder recipeBuilder(){return new RecipeBuilder();} @Property(property = "input", comp = @Comp(not = "null", gte = 1 , lte = 27)) @Property(property = "output", comp = @Comp(not = "null" , eq = 1)) From 1e5591b2b3295a837a6f78fcc3dc90264064edca Mon Sep 17 00:00:00 2001 From: code-onigiri Date: Thu, 5 Dec 2024 06:02:44 +0900 Subject: [PATCH 3/9] add --- .../additionalenchantedminer/WorkbenchPlusRecipe.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkbenchPlusRecipe.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkbenchPlusRecipe.java index 893309c48..aa8ba05bc 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkbenchPlusRecipe.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkbenchPlusRecipe.java @@ -14,12 +14,9 @@ import java.util.Collection; import java.util.Collections; import java.util.List; -import java.util.Optional; import java.util.stream.Collectors; import static com.yogpc.qp.recipe.WorkbenchRecipe.addIngredientRecipe; -import static com.yogpc.qp.recipe.WorkbenchRecipe.getRecipeFromResult; -import static org.codehaus.groovy.runtime.DefaultGroovyMethods.collect; public class WorkbenchPlusRecipe { private final List> input; @@ -28,12 +25,11 @@ public class WorkbenchPlusRecipe { private final ResourceLocation location; public WorkbenchPlusRecipe(Collection input, ItemStack output, Double energy , ResourceLocation location) { - List> inputList = input.stream() + + this.input = input.stream() .map(i -> new IngredientWithCount(i.toMcIngredient(), i.getAmount())) .map(Collections::singletonList) .collect(Collectors.toList()); - - this.input = inputList; this.output = output; this.energy = energy; this.location = location; From a21e084effc71032f7a218f65d518619c261903e Mon Sep 17 00:00:00 2001 From: code-onigiri Date: Thu, 5 Dec 2024 06:32:53 +0900 Subject: [PATCH 4/9] add --- examples/postInit/additionalenchantedminer.groovy | 7 ------- gradle.properties | 4 ++-- .../additionalenchantedminer/WorkbenchPlusRecipe.java | 11 ++--------- 3 files changed, 4 insertions(+), 18 deletions(-) delete mode 100644 examples/postInit/additionalenchantedminer.groovy diff --git a/examples/postInit/additionalenchantedminer.groovy b/examples/postInit/additionalenchantedminer.groovy deleted file mode 100644 index 6585a2877..000000000 --- a/examples/postInit/additionalenchantedminer.groovy +++ /dev/null @@ -1,7 +0,0 @@ -mods.aem.workbenchplus.recipeBuilder() - .output(item('minecraft:nether_star')) - .input(item('minecraft:diamond'),item('minecraft:gold_ingot')) - .energy(10000) - .register() - -//mods.aem.workbenchplus.removeByOutput(item('quarryplus:quarry')) \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 9954f348a..331609c1e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,8 +4,8 @@ debug_run_ls = false debug_use_examples_folder = true debug_log_missing_lang_keys = true -debug_generate_examples = false -debug_generate_wiki = false +debug_generate_examples = true +debug_generate_wiki = true debug_generate_and_crash = false # END SECTION: development environment settings diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkbenchPlusRecipe.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkbenchPlusRecipe.java index aa8ba05bc..8f3296e0c 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkbenchPlusRecipe.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkbenchPlusRecipe.java @@ -33,7 +33,6 @@ public WorkbenchPlusRecipe(Collection input, ItemStack output, Doub this.output = output; this.energy = energy; this.location = location; - } public WorkbenchPlusRecipe(Seq> input, ItemStack output, Double energy , ResourceLocation location) { @@ -46,15 +45,9 @@ public WorkbenchPlusRecipe(Seq> input, ItemStack output } + public static WorkbenchPlusRecipe addRecipe(WorkbenchPlusRecipe recipe) { - Map recipeMap = WorkbenchRecipe.getRecipeMap(); - ResourceLocation resourceLocation = new ResourceLocation(recipe.location.toString()); - Option optionalRecipe = recipeMap.get(resourceLocation); - if (optionalRecipe.isDefined()) { - addIngredientRecipe(optionalRecipe.get().location(), optionalRecipe.get().getOutput(), optionalRecipe.get().energy(), optionalRecipe.get().inputs(), true , true); - } else { - addIngredientRecipe(recipe.location, recipe.output, recipe.energy, recipe.input, true); - } + addIngredientRecipe(recipe.location, recipe.output, recipe.energy, recipe.input, true); return recipe; } From 5daf8b6fbd594bdd0f0197748b5e989c8aa3b0a9 Mon Sep 17 00:00:00 2001 From: code-onigiri Date: Thu, 5 Dec 2024 06:39:47 +0900 Subject: [PATCH 5/9] add --- gradle.properties | 6 +++--- .../compat/mods/additionalenchantedminer/WorkBenchPlus.java | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index 331609c1e..a861d660d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,8 +4,8 @@ debug_run_ls = false debug_use_examples_folder = true debug_log_missing_lang_keys = true -debug_generate_examples = true -debug_generate_wiki = true +debug_generate_examples = false +debug_generate_wiki = false debug_generate_and_crash = false # END SECTION: development environment settings @@ -13,7 +13,7 @@ debug_generate_and_crash = false # SECTION: debug mod compat debug_actually_additions = false -debug_additional_enchanted_miner = true +debug_additional_enchanted_miner = false debug_adv_mortars = false debug_advanced_rocketry = false debug_aether = false diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java index b9d25e795..c48906629 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java @@ -13,6 +13,7 @@ import scala.collection.JavaConversions; import scala.collection.Map; +@RegistryDescription public class WorkBenchPlus extends VirtualizedRegistry { @Override @@ -51,7 +52,7 @@ public void removeAll() { } @RecipeBuilderDescription(example = - @Example(".output(item('minecraft:nether_star')).input(item('minecraft:diamond'),item('minecraft:gold_ingot')).energy(10000).register()") + @Example(".output(item('minecraft:nether_star')).input(item('minecraft:diamond'),item('minecraft:gold_ingot')).energy(10000)") ) public RecipeBuilder recipeBuilder(){return new RecipeBuilder();} From 5f3462f77cf183f11c947e8ea70f4a2f52246827 Mon Sep 17 00:00:00 2001 From: code-onigiri <140694827+code-onigiri@users.noreply.github.com> Date: Fri, 6 Dec 2024 06:41:09 +0900 Subject: [PATCH 6/9] Update src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java Co-authored-by: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> --- .../compat/mods/additionalenchantedminer/WorkBenchPlus.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java index c48906629..f3d5e25f7 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java @@ -77,7 +77,7 @@ public String getRecipeNamePrefix() { @Override public String getErrorMsg() { - return "Error adding AdditionalEnchantedMiner WorkbenchPlus recipe"; + return "Error adding Additional Enchanted Miner WorkbenchPlus recipe"; } @Override From b6d3f28a2e7f551377f731451bf626eba44357f7 Mon Sep 17 00:00:00 2001 From: code-onigiri Date: Fri, 6 Dec 2024 06:42:21 +0900 Subject: [PATCH 7/9] add --- examples/postInit/quarryplus.groovy | 17 +++++++++++++ .../groovyscript/compat/mods/ModSupport.java | 2 +- .../WorkBenchPlus.java | 25 ++++++++++--------- 3 files changed, 31 insertions(+), 13 deletions(-) create mode 100644 examples/postInit/quarryplus.groovy diff --git a/examples/postInit/quarryplus.groovy b/examples/postInit/quarryplus.groovy new file mode 100644 index 000000000..9aae953cd --- /dev/null +++ b/examples/postInit/quarryplus.groovy @@ -0,0 +1,17 @@ + +// Auto generated groovyscript example file +// MODS_LOADED: quarryplus + +log.info 'mod \'quarryplus\' detected, running script' + +// groovyscript.wiki.quarryplus.work_bench_plus.title: +// groovyscript.wiki.quarryplus.work_bench_plus.description. + +mods.quarryplus.work_bench_plus.removeByOutput(item('quarryplus:quarry')) + +mods.quarryplus.work_bench_plus.recipeBuilder() + .output(item('minecraft:nether_star')) + .input(item('minecraft:diamond'),item('minecraft:gold_ingot')) + .energy(10000) + .register() + diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ModSupport.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ModSupport.java index 25fda9093..11b3ef2c6 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/ModSupport.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/ModSupport.java @@ -83,7 +83,7 @@ public class ModSupport { public static final ModSupport INSTANCE = new ModSupport(); // Just for Binding purposes public static final GroovyContainer ACTUALLY_ADDITIONS = new InternalModContainer<>("actuallyadditions", "Actually Additions", ActuallyAdditions::new, "aa"); - public static final GroovyContainer ADDITIONAL_ENCHANTED_MINER = new InternalModContainer<>("quarryplus", "Additional Enchanted Miner", AdditionalEnchantedMiner::new, "aem"); + public static final GroovyContainer ADDITIONAL_ENCHANTED_MINER = new InternalModContainer<>("quarryplus", "Additional Enchanted Miner", AdditionalEnchantedMiner::new); public static final GroovyContainer ADVANCED_MORTARS = new InternalModContainer<>("advancedmortars", "Advanced Mortars", AdvancedMortars::new); public static final GroovyContainer ADVANCED_ROCKETRY = new InternalModContainer<>("advancedrocketry", "Advanced Rocketry", AdvancedRocketry::new); public static final GroovyContainer AETHER = new InternalModContainer<>("aether_legacy", "Aether Legacy", Aether::new, "aether"); diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java index f3d5e25f7..084c35cc8 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java @@ -4,26 +4,34 @@ import com.cleanroommc.groovyscript.api.documentation.annotations.*; import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; +import com.yogpc.qp.recipe.R1; import com.yogpc.qp.recipe.WorkbenchRecipe; import com.yogpc.qp.tile.ItemDamage; +import com.yogpc.qp.utils.IngredientWithCount; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import org.jetbrains.annotations.Nullable; import scala.Option; +import scala.Symbol; import scala.collection.JavaConversions; import scala.collection.Map; +import java.util.Collections; +import java.util.stream.Collectors; + +import static com.yogpc.qp.recipe.WorkbenchRecipe.addIngredientRecipe; + @RegistryDescription public class WorkBenchPlus extends VirtualizedRegistry { @Override public void onReload() { - removeScripted().forEach(recipe -> WorkbenchPlusRecipe.removeById(recipe.getLocation().toString())); + removeScripted().forEach(recipe -> WorkbenchRecipe.removeRecipe(recipe.getLocation())); restoreFromBackup().forEach(WorkbenchPlusRecipe::addRecipe); } @MethodDescription(example = @Example("item('quarryplus:quarry')")) - public Boolean removeByOutput(ItemStack output) { + public boolean removeByOutput(ItemStack output) { ItemDamage itemDamage = ItemDamage.apply(output); Map recipeMap = WorkbenchRecipe.getRecipeMap(); Iterable iterable = JavaConversions.asJavaIterable(recipeMap.values()); @@ -35,19 +43,12 @@ public Boolean removeByOutput(ItemStack output) { return WorkbenchPlusRecipe.removeByOutput(output); } - public Boolean removeById(String id) { - Map OptinalList = WorkbenchRecipe.getRecipeMap(); - ResourceLocation location = new ResourceLocation(id); - Option recipe = OptinalList.get(location); - if (recipe.isDefined()) addBackup(new WorkbenchPlusRecipe(recipe.get().inputs(), recipe.get().getOutput(), recipe.get().energy(), recipe.get().location())); - return WorkbenchPlusRecipe.removeById(id); - } - + @MethodDescription(priority = 2000,example = @Example(commented = true)) public void removeAll() { Map OptinalList = WorkbenchRecipe.getRecipeMap(); Iterable iterable = JavaConversions.asJavaIterable(OptinalList.keys()); iterable.forEach( - recipe -> removeById(recipe.toString()) + location -> WorkbenchPlusRecipe.removeById(location.toString()) ); } @@ -91,7 +92,7 @@ public void validate(GroovyLog.Msg msg) { @RecipeBuilderRegistrationMethod public @Nullable WorkbenchPlusRecipe register() { if (!validate()) return null; - WorkbenchPlusRecipe recipe = new WorkbenchPlusRecipe(this.input, this.output.get(0), this.energy, name); + WorkbenchPlusRecipe recipe = new WorkbenchPlusRecipe(this.input, this.output.get(0), this.energy, this.name); addScripted(recipe); WorkbenchPlusRecipe.addRecipe(recipe); return recipe; From 254a1b06579f717ddb6866acfb6162b6953d35e8 Mon Sep 17 00:00:00 2001 From: code-onigiri Date: Fri, 6 Dec 2024 14:24:33 +0900 Subject: [PATCH 8/9] fix --- examples/postInit/quarryplus.groovy | 2 + .../WorkBenchPlus.java | 40 ++++++++----------- .../WorkbenchPlusRecipe.java | 8 ++-- 3 files changed, 23 insertions(+), 27 deletions(-) diff --git a/examples/postInit/quarryplus.groovy b/examples/postInit/quarryplus.groovy index 9aae953cd..a5dde71e7 100644 --- a/examples/postInit/quarryplus.groovy +++ b/examples/postInit/quarryplus.groovy @@ -8,6 +8,7 @@ log.info 'mod \'quarryplus\' detected, running script' // groovyscript.wiki.quarryplus.work_bench_plus.description. mods.quarryplus.work_bench_plus.removeByOutput(item('quarryplus:quarry')) +// mods.quarryplus.work_bench_plus.removeAll() mods.quarryplus.work_bench_plus.recipeBuilder() .output(item('minecraft:nether_star')) @@ -15,3 +16,4 @@ mods.quarryplus.work_bench_plus.recipeBuilder() .energy(10000) .register() + diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java index 084c35cc8..ba544e951 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkBenchPlus.java @@ -2,32 +2,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.helper.recipe.AbstractRecipeBuilder; import com.cleanroommc.groovyscript.registry.VirtualizedRegistry; -import com.yogpc.qp.recipe.R1; import com.yogpc.qp.recipe.WorkbenchRecipe; import com.yogpc.qp.tile.ItemDamage; -import com.yogpc.qp.utils.IngredientWithCount; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import org.jetbrains.annotations.Nullable; -import scala.Option; -import scala.Symbol; import scala.collection.JavaConversions; import scala.collection.Map; -import java.util.Collections; -import java.util.stream.Collectors; - -import static com.yogpc.qp.recipe.WorkbenchRecipe.addIngredientRecipe; - @RegistryDescription public class WorkBenchPlus extends VirtualizedRegistry { @Override public void onReload() { removeScripted().forEach(recipe -> WorkbenchRecipe.removeRecipe(recipe.getLocation())); - restoreFromBackup().forEach(WorkbenchPlusRecipe::addRecipe); + restoreFromBackup().forEach(ModSupport.ADDITIONAL_ENCHANTED_MINER.get().WorkBenchPlus::add); } @MethodDescription(example = @Example("item('quarryplus:quarry')")) @@ -45,23 +37,27 @@ public boolean removeByOutput(ItemStack output) { @MethodDescription(priority = 2000,example = @Example(commented = true)) public void removeAll() { - Map OptinalList = WorkbenchRecipe.getRecipeMap(); - Iterable iterable = JavaConversions.asJavaIterable(OptinalList.keys()); - iterable.forEach( + Map recipeMap = WorkbenchRecipe.getRecipeMap(); + Iterable iterableRecipe = JavaConversions.asJavaIterable(recipeMap.keys()); + iterableRecipe.forEach( location -> WorkbenchPlusRecipe.removeById(location.toString()) ); } + private void add(WorkbenchPlusRecipe recipe) { + addScripted(recipe); + WorkbenchPlusRecipe.addRecipe(recipe); + } + @RecipeBuilderDescription(example = - @Example(".output(item('minecraft:nether_star')).input(item('minecraft:diamond'),item('minecraft:gold_ingot')).energy(10000)") - ) + @Example(".output(item('minecraft:nether_star')).input(item('minecraft:diamond'),item('minecraft:gold_ingot')).energy(10000)")) public RecipeBuilder recipeBuilder(){return new RecipeBuilder();} - @Property(property = "input", comp = @Comp(not = "null", gte = 1 , lte = 27)) - @Property(property = "output", comp = @Comp(not = "null" , eq = 1)) - public class RecipeBuilder extends AbstractRecipeBuilder { + @Property(property = "input", comp = @Comp(gte = 1 , lte = 27)) + @Property(property = "output", comp = @Comp(eq = 1)) + public static class RecipeBuilder extends AbstractRecipeBuilder { - @Property(property = "energy", comp = @Comp(gt = 0)) + @Property(comp = @Comp(gt = 0)) private double energy; @RecipeBuilderMethodDescription @@ -75,7 +71,6 @@ public String getRecipeNamePrefix() { return "additionalenchantedminer_workbenchplus_"; } - @Override public String getErrorMsg() { return "Error adding Additional Enchanted Miner WorkbenchPlus recipe"; @@ -92,9 +87,8 @@ public void validate(GroovyLog.Msg msg) { @RecipeBuilderRegistrationMethod public @Nullable WorkbenchPlusRecipe register() { if (!validate()) return null; - WorkbenchPlusRecipe recipe = new WorkbenchPlusRecipe(this.input, this.output.get(0), this.energy, this.name); - addScripted(recipe); - WorkbenchPlusRecipe.addRecipe(recipe); + WorkbenchPlusRecipe recipe = new WorkbenchPlusRecipe(this.input, this.output.get(0), this.energy, super.name); + ModSupport.ADDITIONAL_ENCHANTED_MINER.get().WorkBenchPlus.add(recipe); return recipe; } } diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkbenchPlusRecipe.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkbenchPlusRecipe.java index 8f3296e0c..72419a0ba 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkbenchPlusRecipe.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkbenchPlusRecipe.java @@ -46,18 +46,18 @@ public WorkbenchPlusRecipe(Seq> input, ItemStack output } - public static WorkbenchPlusRecipe addRecipe(WorkbenchPlusRecipe recipe) { + public static boolean addRecipe(WorkbenchPlusRecipe recipe) { addIngredientRecipe(recipe.location, recipe.output, recipe.energy, recipe.input, true); - return recipe; + return true; } - public static Boolean removeByOutput(ItemStack output) { + public static boolean removeByOutput(ItemStack output) { ItemDamage itemDamage = ItemDamage.apply(output); WorkbenchRecipe.removeRecipe(itemDamage); return true; } - public static Boolean removeById(String id) { + public static boolean removeById(String id) { ResourceLocation resourceLocation = new ResourceLocation(id); WorkbenchRecipe.removeRecipe(resourceLocation); return true; From edd26ffaecb778e3aaaf883cd89324278641b526 Mon Sep 17 00:00:00 2001 From: code-onigiri Date: Fri, 6 Dec 2024 14:25:52 +0900 Subject: [PATCH 9/9] fix --- .../mods/additionalenchantedminer/WorkbenchPlusRecipe.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkbenchPlusRecipe.java b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkbenchPlusRecipe.java index 72419a0ba..38c85d7be 100644 --- a/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkbenchPlusRecipe.java +++ b/src/main/java/com/cleanroommc/groovyscript/compat/mods/additionalenchantedminer/WorkbenchPlusRecipe.java @@ -6,9 +6,7 @@ import com.yogpc.qp.utils.IngredientWithCount; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; -import scala.Option; import scala.collection.JavaConversions; -import scala.collection.Map; import scala.collection.Seq; import java.util.Collection; @@ -57,10 +55,9 @@ public static boolean removeByOutput(ItemStack output) { return true; } - public static boolean removeById(String id) { + public static void removeById(String id) { ResourceLocation resourceLocation = new ResourceLocation(id); WorkbenchRecipe.removeRecipe(resourceLocation); - return true; } public ResourceLocation getLocation() {