diff --git a/build.gradle b/build.gradle index 65401c94..e4af3d53 100644 --- a/build.gradle +++ b/build.gradle @@ -168,6 +168,7 @@ dependencies { implementation fg.deobf("dev.architectury:architectury-forge:${architectury_version}") implementation fg.deobf("dev.latvian.mods:rhino-forge:${rhino_version}") implementation fg.deobf("dev.latvian.mods:kubejs-forge:${kubejs_version}") + implementation fg.deobf("dev.latvian.mods:kubejs-create-forge:${kubejs_create_version}") implementation fg.deobf("curse.maven:ldlib-626676:4676440") implementation fg.deobf("curse.maven:configuration-444699:4519560") implementation fg.deobf("curse.maven:gregtechceu-modern-890405:4711834") diff --git a/gradle.properties b/gradle.properties index 76eb72bb..56886b7a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,8 @@ flywheel_version=0.6.9-18 registrate_version=MC1.19-1.1.5 jei_version=11.6.0.1016 curios_version=5.1.4.1 -kubejs_version=1902.6.1-build.354 +kubejs_version=1902.6.2-build.3 +kubejs_create_version=1902.2.4-build.29 rhino_version=1902.2.2-build.269 architectury_version=6.5.85 cloth_version=8.3.103 \ No newline at end of file diff --git a/src/main/java/electrolyte/greate/compat/kubejs/GreateKubeJSPlugin.java b/src/main/java/electrolyte/greate/compat/kubejs/GreateKubeJSPlugin.java new file mode 100644 index 00000000..8e766fd2 --- /dev/null +++ b/src/main/java/electrolyte/greate/compat/kubejs/GreateKubeJSPlugin.java @@ -0,0 +1,27 @@ +package electrolyte.greate.compat.kubejs; + +import dev.latvian.mods.kubejs.KubeJSPlugin; +import dev.latvian.mods.kubejs.recipe.schema.RecipeSchema; +import dev.latvian.mods.kubejs.recipe.schema.RegisterRecipeSchemasEvent; +import electrolyte.greate.content.processing.recipe.TieredProcessingRecipeSerializer; +import electrolyte.greate.registry.ModRecipeTypes; + +import java.util.Map; + +public class GreateKubeJSPlugin extends KubeJSPlugin { + + private static final Map RECIPE_SCHEMAS = Map.of( + ModRecipeTypes.MILLING, TieredProcessingRecipeSchema.PROCESSING_WITH_TIME, + ModRecipeTypes.CRUSHING, TieredProcessingRecipeSchema.PROCESSING_WITH_TIME + ); + + @Override + public void registerRecipeSchemas(RegisterRecipeSchemasEvent event) { + for(ModRecipeTypes recipeType : ModRecipeTypes.values()) { + if(recipeType.getSerializer() instanceof TieredProcessingRecipeSerializer) { + RecipeSchema schema = RECIPE_SCHEMAS.getOrDefault(recipeType, TieredProcessingRecipeSchema.PROCESSING_DEFAULT); + event.register(recipeType.getId(), schema); + } + } + } +} diff --git a/src/main/java/electrolyte/greate/compat/kubejs/TieredProcessingRecipeSchema.java b/src/main/java/electrolyte/greate/compat/kubejs/TieredProcessingRecipeSchema.java new file mode 100644 index 00000000..0035a354 --- /dev/null +++ b/src/main/java/electrolyte/greate/compat/kubejs/TieredProcessingRecipeSchema.java @@ -0,0 +1,30 @@ +package electrolyte.greate.compat.kubejs; + +import dev.latvian.mods.kubejs.create.ProcessingRecipeSchema; +import dev.latvian.mods.kubejs.recipe.RecipeJS; +import dev.latvian.mods.kubejs.recipe.RecipeKey; +import dev.latvian.mods.kubejs.recipe.component.StringComponent; +import dev.latvian.mods.kubejs.recipe.schema.RecipeSchema; +import electrolyte.greate.GreateEnums.TIER; + +import java.util.Locale; + +public interface TieredProcessingRecipeSchema extends ProcessingRecipeSchema { + + RecipeKey RECIPE_TIER = new StringComponent("Invalid Recipe Tier!", s -> { + for(TIER tier : TIER.values()) { + if(tier.name().equalsIgnoreCase(s)) return true; + } + return false; + }).key("recipeTier").optional("ulv"); + + class TieredProcessingRecipeJS extends ProcessingRecipeJS { + public RecipeJS recipeTier(Object from) { + return setValue(RECIPE_TIER, ((String) from).toLowerCase(Locale.ROOT)); + } + } + + RecipeSchema PROCESSING_DEFAULT = new RecipeSchema(TieredProcessingRecipeJS.class, TieredProcessingRecipeJS::new, RESULTS, INGREDIENTS, PROCESSING_TIME, HEAT_REQUIREMENT, RECIPE_TIER); + RecipeSchema PROCESSING_WITH_TIME = new RecipeSchema(TieredProcessingRecipeJS.class, TieredProcessingRecipeJS::new, RESULTS, INGREDIENTS, PROCESSING_TIME_REQUIRED, HEAT_REQUIREMENT, RECIPE_TIER); + RecipeSchema PROCESSING_UNWRAPPED = new RecipeSchema(TieredProcessingRecipeJS.class, TieredProcessingRecipeJS::new, RESULTS, INGREDIENTS_UNWRAPPED, PROCESSING_TIME, HEAT_REQUIREMENT, RECIPE_TIER); +} diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index a92002a0..a64192e6 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -14,6 +14,13 @@ authors="Electrolyte" description="Create Gregified" +[[dependencies.greate]] + modId="kubejs_create" + mandatory=true + versionRange="[1902.2.4-build.29,)" + ordering="NONE" + side="BOTH" + [[dependencies.greate]] modId="create" mandatory=true diff --git a/src/main/resources/kubejs.plugins.txt b/src/main/resources/kubejs.plugins.txt new file mode 100644 index 00000000..5b1e59d7 --- /dev/null +++ b/src/main/resources/kubejs.plugins.txt @@ -0,0 +1 @@ +electrolyte.greate.compat.kubejs.GreateKubeJSPlugin \ No newline at end of file