From 6ca4bde004945f38252660e25e3308d856e21cdb Mon Sep 17 00:00:00 2001 From: Hunter19823 Date: Thu, 13 Jun 2024 22:10:39 -0700 Subject: [PATCH] Added a type wrapper for recipe type to simplify passing references around. --- .../java/pie/ilikepiefoo/AdditionsPlugin.java | 26 +++++++++++++++++++ .../jei/events/RegisterCategoriesEventJS.java | 4 +-- gradle.properties | 2 +- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/pie/ilikepiefoo/AdditionsPlugin.java b/common/src/main/java/pie/ilikepiefoo/AdditionsPlugin.java index 0289623..58089a1 100644 --- a/common/src/main/java/pie/ilikepiefoo/AdditionsPlugin.java +++ b/common/src/main/java/pie/ilikepiefoo/AdditionsPlugin.java @@ -1,18 +1,23 @@ package pie.ilikepiefoo; +import dev.architectury.platform.Platform; import dev.latvian.mods.kubejs.KubeJSPlugin; import dev.latvian.mods.kubejs.event.EventGroup; import dev.latvian.mods.kubejs.level.BlockContainerJS; import dev.latvian.mods.kubejs.script.BindingsEvent; import dev.latvian.mods.kubejs.script.ScriptType; import dev.latvian.mods.rhino.util.wrap.TypeWrappers; +import mezz.jei.api.recipe.RecipeType; +import mezz.jei.api.recipe.category.IRecipeCategory; import net.minecraft.core.BlockPos; import net.minecraft.data.worldgen.Structures; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.levelgen.feature.Feature; import pie.ilikepiefoo.compat.jade.JadeEvents; import pie.ilikepiefoo.compat.jei.JEIEvents; +import pie.ilikepiefoo.compat.jei.events.JEIEventJS; import pie.ilikepiefoo.events.AdditionalEvents; import pie.ilikepiefoo.events.custom.ArchEventRegisterEventJS; import pie.ilikepiefoo.player.CustomDamageSourceJS; @@ -57,6 +62,27 @@ public void registerTypeWrappers(ScriptType type, TypeWrappers typeWrappers) { } return ChunkPos.ZERO; }); + + if (Platform.isModLoaded("jei")) { + typeWrappers.registerSimple(RecipeType.class, (object) -> { + if (object instanceof RecipeType recipeType) { + return recipeType; + } + if (object instanceof IRecipeCategory category) { + return category.getRecipeType(); + } + if (JEIEventJS.JEI_HELPERS == null) { + return null; + } + if (object instanceof String recipeType) { + return JEIEventJS.JEI_HELPERS.getRecipeType(new ResourceLocation(recipeType)).orElse(null); + } + if (object instanceof ResourceLocation recipeType) { + return JEIEventJS.JEI_HELPERS.getRecipeType(recipeType).orElse(null); + } + return null; + }); + } } public interface EmptyHandler { diff --git a/common/src/main/java/pie/ilikepiefoo/compat/jei/events/RegisterCategoriesEventJS.java b/common/src/main/java/pie/ilikepiefoo/compat/jei/events/RegisterCategoriesEventJS.java index 754dafe..7c7caa9 100644 --- a/common/src/main/java/pie/ilikepiefoo/compat/jei/events/RegisterCategoriesEventJS.java +++ b/common/src/main/java/pie/ilikepiefoo/compat/jei/events/RegisterCategoriesEventJS.java @@ -22,9 +22,9 @@ public CustomRecipeCategory custom(ResourceLocation recipeType, Consumer CustomRecipeCategory wrap(ResourceLocation recipeType, IRecipeCategory existingCategory, Consumer> categoryConsumer) { + public CustomRecipeCategory wrap(RecipeType recipeType, IRecipeCategory existingCategory, Consumer> categoryConsumer) { RecipeCategoryWrapperBuilder builder = new RecipeCategoryWrapperBuilder<>( - getOrCreateCustomOverriddenRecipeType(recipeType, existingCategory.getRecipeType()), + recipeType, data.getJeiHelpers(), existingCategory ); diff --git a/gradle.properties b/gradle.properties index ebfede3..5748049 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ enabled_platforms=fabric,forge archives_base_name=kubejsadditions mod_id=kubejsadditions mod_name=KubeJS Addditions -mod_version=4.3.1 +mod_version=4.3.2 mod_description=A mod that adds a bunch of additional features to KubeJS. mod_author=ILIKEPIEFOO2 mod_icon=assets/kubejsadditions/kubejs_logo.png