diff --git a/CHANGELOG.md b/CHANGELOG.md index fdfa517f9c..ece2436516 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,7 +25,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - Changed Wayfarer's Flight and Anchorite's Flight to both cost 2 dust per unit, and enforced a minimum cost for Anchorite's Flight ([#1040](https://github.com/FallingColors/HexMod/pull/1040)) @Robotgiggle - Changed the pattern limit to also include execution of non-pattern iotas like jumps ([#1035](https://github.com/FallingColors/HexMod/pull/1035)) @pythonmcpi - Changed the Hasty Retrospection mishap to Absent Introspection as it's now used for anything that only works while parenthesized ([#1047](https://github.com/FallingColors/HexMod/pull/1047)) @Robotgiggle -- Updated the Flay Mind recipe display in EMI and JEI to cycle through all valid entities if the input is an entity tag ([#1023](https://github.com/FallingColors/HexMod/pull/1023)) @YukkuriC +- All custom recipe displays are now handled via EMI on both sides rather than EMI on Fabric and JEI on Forge ([#1206](https://github.com/FallingColors/HexMod/pull/1206)) @Robotgiggle +- Updated the Flay Mind recipe display to cycle through all valid entities if the input is an entity tag ([#1023](https://github.com/FallingColors/HexMod/pull/1023)) @YukkuriC - Re-implemented the ability to extract stored media from items in trinket/curio slots ([#996](https://github.com/FallingColors/HexMod/pull/996)) @YukkuriC - Patterns involving entity look direction now compensate for the vanilla bug that causes projectiles and phantoms to report the wrong direction ([#1025](https://github.com/FallingColors/HexMod/pull/1025)) @Robotgiggle - Edified Panels are now crafted with 9 planks rather than 8 to avoid conflicting with the vanilla chest recipe ([#1080](https://github.com/FallingColors/HexMod/pull/1080)) @Robotgiggle diff --git a/Common/build.gradle b/Common/build.gradle index aca1334466..34d0583de7 100644 --- a/Common/build.gradle +++ b/Common/build.gradle @@ -14,14 +14,10 @@ repositories { maven { url 'https://maven.blamejared.com' } maven { - // location of the maven that hosts JEI files - name = "Progwml6 maven" - url = "https://dvs1.progwml6.com/files/maven/" - } - maven { - // location of a maven mirror for JEI files, as a fallback - name = "ModMaven" - url = "https://modmaven.dev" + // maven for EMI + // temporarily changed from https://maven.terraformersmc.com/releases/ due to intermittent errors + name = "Gnomecraft maven" + url = "https://maven.gnomecraft.net/releases" } maven { url "https://maven.shedaniel.me/" } @@ -33,6 +29,7 @@ dependencies { implementation group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.1' compileOnly "at.petra-k.paucal:paucal-common-$minecraftVersion:$paucalVersion" + compileOnly "dev.emi:emi-xplat-mojmap:$emiVersion+$minecraftVersion" compileOnly "vazkii.patchouli:Patchouli-xplat:$minecraftVersion-$patchouliVersion-SNAPSHOT" compileOnly "com.samsthenerd.inline:inline-forge:$minecraftVersion-$inlineVersion" diff --git a/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/StateIngredient.java b/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/StateIngredient.java index cd2cca2268..ce5f0689f6 100644 --- a/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/StateIngredient.java +++ b/Common/src/main/java/at/petrak/hexcasting/common/recipe/ingredient/StateIngredient.java @@ -27,7 +27,7 @@ public interface StateIngredient extends Predicate { List getDisplayedStacks(); /** - * A description tooltip to display in areas like JEI recipes. + * A description tooltip to display in recipe viewers. */ default List descriptionTooltip() { return Collections.emptyList(); diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/BrainsweepeeEmiStack.java b/Common/src/main/java/at/petrak/hexcasting/interop/emi/BrainsweepeeEmiStack.java similarity index 98% rename from Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/BrainsweepeeEmiStack.java rename to Common/src/main/java/at/petrak/hexcasting/interop/emi/BrainsweepeeEmiStack.java index 43f23f9442..96d2a0a26a 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/BrainsweepeeEmiStack.java +++ b/Common/src/main/java/at/petrak/hexcasting/interop/emi/BrainsweepeeEmiStack.java @@ -1,4 +1,4 @@ -package at.petrak.hexcasting.fabric.interop.emi; +package at.petrak.hexcasting.interop.emi; import at.petrak.hexcasting.client.ClientTickCounter; import at.petrak.hexcasting.common.recipe.ingredient.brainsweep.BrainsweepeeIngredient; diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/EmiBrainsweepRecipe.java b/Common/src/main/java/at/petrak/hexcasting/interop/emi/EmiBrainsweepRecipe.java similarity index 95% rename from Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/EmiBrainsweepRecipe.java rename to Common/src/main/java/at/petrak/hexcasting/interop/emi/EmiBrainsweepRecipe.java index 441a7e12ff..94c878c7d5 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/EmiBrainsweepRecipe.java +++ b/Common/src/main/java/at/petrak/hexcasting/interop/emi/EmiBrainsweepRecipe.java @@ -1,4 +1,4 @@ -package at.petrak.hexcasting.fabric.interop.emi; +package at.petrak.hexcasting.interop.emi; import dev.emi.emi.api.recipe.EmiRecipe; import dev.emi.emi.api.recipe.EmiRecipeCategory; @@ -16,7 +16,7 @@ public record EmiBrainsweepRecipe(EmiIngredient blockInput, EmiIngredient villagerInput, EmiStack output, ResourceLocation id) implements EmiRecipe { - private static final ResourceLocation OVERLAY = modLoc("textures/gui/brainsweep_jei.png"); + private static final ResourceLocation OVERLAY = modLoc("textures/gui/brainsweep_recipe.png"); @Override public EmiRecipeCategory getCategory() { diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/EmiEdifyRecipe.java b/Common/src/main/java/at/petrak/hexcasting/interop/emi/EmiEdifyRecipe.java similarity index 97% rename from Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/EmiEdifyRecipe.java rename to Common/src/main/java/at/petrak/hexcasting/interop/emi/EmiEdifyRecipe.java index 4c3f8d4c4d..d4df2ba904 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/EmiEdifyRecipe.java +++ b/Common/src/main/java/at/petrak/hexcasting/interop/emi/EmiEdifyRecipe.java @@ -1,4 +1,4 @@ -package at.petrak.hexcasting.fabric.interop.emi; +package at.petrak.hexcasting.interop.emi; import at.petrak.hexcasting.common.lib.HexBlocks; import dev.emi.emi.api.recipe.EmiRecipe; @@ -17,7 +17,7 @@ import static at.petrak.hexcasting.api.HexAPI.modLoc; public class EmiEdifyRecipe implements EmiRecipe { - private static final ResourceLocation OVERLAY = modLoc("textures/gui/edify_jei.png"); + private static final ResourceLocation OVERLAY = modLoc("textures/gui/edify_recipe.png"); private final EmiIngredient saplings; private final EmiIngredient leaves; diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/EmiPhialRecipe.java b/Common/src/main/java/at/petrak/hexcasting/interop/emi/EmiPhialRecipe.java similarity index 97% rename from Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/EmiPhialRecipe.java rename to Common/src/main/java/at/petrak/hexcasting/interop/emi/EmiPhialRecipe.java index 2e74629169..f1aa38ab3a 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/EmiPhialRecipe.java +++ b/Common/src/main/java/at/petrak/hexcasting/interop/emi/EmiPhialRecipe.java @@ -1,4 +1,4 @@ -package at.petrak.hexcasting.fabric.interop.emi; +package at.petrak.hexcasting.interop.emi; import at.petrak.hexcasting.api.mod.HexTags; import at.petrak.hexcasting.interop.utils.PhialRecipeStackBuilder; @@ -17,7 +17,7 @@ import static at.petrak.hexcasting.api.HexAPI.modLoc; public class EmiPhialRecipe implements EmiRecipe { - private static final ResourceLocation OVERLAY = modLoc("textures/gui/phial_jei.png"); + private static final ResourceLocation OVERLAY = modLoc("textures/gui/phial_recipe.png"); private final EmiIngredient inputs; private final EmiIngredient bottle; diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/HexEMIPlugin.java b/Common/src/main/java/at/petrak/hexcasting/interop/emi/HexEMIPlugin.java similarity index 91% rename from Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/HexEMIPlugin.java rename to Common/src/main/java/at/petrak/hexcasting/interop/emi/HexEMIPlugin.java index 3c10fb9d4f..82ddff5b9d 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/HexEMIPlugin.java +++ b/Common/src/main/java/at/petrak/hexcasting/interop/emi/HexEMIPlugin.java @@ -1,9 +1,10 @@ -package at.petrak.hexcasting.fabric.interop.emi; +package at.petrak.hexcasting.interop.emi; import at.petrak.hexcasting.api.mod.HexTags; import at.petrak.hexcasting.common.recipe.BrainsweepRecipe; import at.petrak.hexcasting.common.recipe.HexRecipeStuffRegistry; import at.petrak.hexcasting.interop.utils.PhialRecipeStackBuilder; +import dev.emi.emi.api.EmiEntrypoint; import dev.emi.emi.api.EmiPlugin; import dev.emi.emi.api.EmiRegistry; import dev.emi.emi.api.recipe.EmiRecipeCategory; @@ -14,14 +15,15 @@ import static at.petrak.hexcasting.api.HexAPI.modLoc; +@EmiEntrypoint public class HexEMIPlugin implements EmiPlugin { private static final ResourceLocation BRAINSWEEP_ID = modLoc("brainsweep"); public static final ResourceLocation PHIAL_ID = modLoc("craft/battery"); public static final ResourceLocation EDIFY_ID = modLoc("edify"); - private static final ResourceLocation SIMPLIFIED_ICON_BRAINSWEEP = modLoc("textures/gui/brainsweep_emi.png"); - private static final ResourceLocation SIMPLIFIED_ICON_PHIAL = modLoc("textures/gui/phial_emi.png"); - private static final ResourceLocation SIMPLIFIED_ICON_EDIFY = modLoc("textures/gui/edify_emi.png"); + private static final ResourceLocation SIMPLIFIED_ICON_BRAINSWEEP = modLoc("textures/gui/brainsweep_recipe_icon.png"); + private static final ResourceLocation SIMPLIFIED_ICON_PHIAL = modLoc("textures/gui/phial_recipe_icon.png"); + private static final ResourceLocation SIMPLIFIED_ICON_EDIFY = modLoc("textures/gui/edify_recipe_icon.png"); public static final EmiRecipeCategory BRAINSWEEP = new EmiRecipeCategory(BRAINSWEEP_ID, new PatternRendererEMI(BRAINSWEEP_ID, 16, 16), diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/PatternRendererEMI.java b/Common/src/main/java/at/petrak/hexcasting/interop/emi/PatternRendererEMI.java similarity index 98% rename from Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/PatternRendererEMI.java rename to Common/src/main/java/at/petrak/hexcasting/interop/emi/PatternRendererEMI.java index da699de7a9..211d30dff8 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/PatternRendererEMI.java +++ b/Common/src/main/java/at/petrak/hexcasting/interop/emi/PatternRendererEMI.java @@ -1,4 +1,4 @@ -package at.petrak.hexcasting.fabric.interop.emi; +package at.petrak.hexcasting.interop.emi; import at.petrak.hexcasting.api.casting.math.HexPattern; import at.petrak.hexcasting.api.mod.HexTags; diff --git a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/TheCoolerSlotWidget.java b/Common/src/main/java/at/petrak/hexcasting/interop/emi/TheCoolerSlotWidget.java similarity index 97% rename from Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/TheCoolerSlotWidget.java rename to Common/src/main/java/at/petrak/hexcasting/interop/emi/TheCoolerSlotWidget.java index 2f936f78bf..4af19d9751 100644 --- a/Fabric/src/main/java/at/petrak/hexcasting/fabric/interop/emi/TheCoolerSlotWidget.java +++ b/Common/src/main/java/at/petrak/hexcasting/interop/emi/TheCoolerSlotWidget.java @@ -1,4 +1,4 @@ -package at.petrak.hexcasting.fabric.interop.emi; +package at.petrak.hexcasting.interop.emi; import com.mojang.blaze3d.systems.RenderSystem; import dev.emi.emi.api.render.EmiRender; diff --git a/Common/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/templates/brainsweep.json b/Common/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/templates/brainsweep.json index c7081d0b5b..1b0dc3b004 100644 --- a/Common/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/templates/brainsweep.json +++ b/Common/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/templates/brainsweep.json @@ -3,7 +3,7 @@ "components": [ { "type": "patchouli:image", - "image": "hexcasting:textures/gui/brainsweep.png", + "image": "hexcasting:textures/gui/brainsweep_recipe_nobg.png", "width": 128, "height": 128, "texture_width": 128, diff --git a/Common/src/main/resources/assets/hexcasting/textures/gui/brainsweep_jei.png b/Common/src/main/resources/assets/hexcasting/textures/gui/brainsweep_recipe.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/gui/brainsweep_jei.png rename to Common/src/main/resources/assets/hexcasting/textures/gui/brainsweep_recipe.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/gui/brainsweep_emi.png b/Common/src/main/resources/assets/hexcasting/textures/gui/brainsweep_recipe_icon.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/gui/brainsweep_emi.png rename to Common/src/main/resources/assets/hexcasting/textures/gui/brainsweep_recipe_icon.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/gui/brainsweep.png b/Common/src/main/resources/assets/hexcasting/textures/gui/brainsweep_recipe_nobg.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/gui/brainsweep.png rename to Common/src/main/resources/assets/hexcasting/textures/gui/brainsweep_recipe_nobg.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/gui/edify_jei.png b/Common/src/main/resources/assets/hexcasting/textures/gui/edify_recipe.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/gui/edify_jei.png rename to Common/src/main/resources/assets/hexcasting/textures/gui/edify_recipe.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/gui/edify_emi.png b/Common/src/main/resources/assets/hexcasting/textures/gui/edify_recipe_icon.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/gui/edify_emi.png rename to Common/src/main/resources/assets/hexcasting/textures/gui/edify_recipe_icon.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/gui/edify.png b/Common/src/main/resources/assets/hexcasting/textures/gui/edify_recipe_nobg.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/gui/edify.png rename to Common/src/main/resources/assets/hexcasting/textures/gui/edify_recipe_nobg.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/gui/phial_jei.png b/Common/src/main/resources/assets/hexcasting/textures/gui/phial_recipe.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/gui/phial_jei.png rename to Common/src/main/resources/assets/hexcasting/textures/gui/phial_recipe.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/gui/phial_emi.png b/Common/src/main/resources/assets/hexcasting/textures/gui/phial_recipe_icon.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/gui/phial_emi.png rename to Common/src/main/resources/assets/hexcasting/textures/gui/phial_recipe_icon.png diff --git a/Common/src/main/resources/assets/hexcasting/textures/gui/phial.png b/Common/src/main/resources/assets/hexcasting/textures/gui/phial_recipe_nobg.png similarity index 100% rename from Common/src/main/resources/assets/hexcasting/textures/gui/phial.png rename to Common/src/main/resources/assets/hexcasting/textures/gui/phial_recipe_nobg.png diff --git a/Fabric/build.gradle b/Fabric/build.gradle index 9cc6b1b0e1..7c6d3471a1 100644 --- a/Fabric/build.gradle +++ b/Fabric/build.gradle @@ -58,7 +58,7 @@ loom { repositories { mavenCentral() - // paucal and patchi + // paucal, patchi, inline maven { url = 'https://maven.blamejared.com' } // modmenu and clothconfig maven { url "https://maven.shedaniel.me/" } @@ -66,7 +66,7 @@ repositories { // Entity reach maven { url "https://maven.jamieswhiteshirt.com/libs-release/" } maven { url "https://mvn.devos.one/snapshots/" } - // temporarily changed from https://maven.terraformersmc.com/releases/ due to intermittent errors + // EMI (temporarily changed from https://maven.terraformersmc.com/releases/ due to intermittent errors) maven { url = "https://maven.gnomecraft.net/releases" } exclusiveContent { forRepository { diff --git a/Fabric/src/main/resources/fabric.mod.json b/Fabric/src/main/resources/fabric.mod.json index 38174656fe..b5e5a372ae 100644 --- a/Fabric/src/main/resources/fabric.mod.json +++ b/Fabric/src/main/resources/fabric.mod.json @@ -34,7 +34,7 @@ "at.petrak.hexcasting.fabric.cc.HexCardinalComponents" ], "emi": [ - "at.petrak.hexcasting.fabric.interop.emi.HexEMIPlugin" + "at.petrak.hexcasting.interop.emi.HexEMIPlugin" ], "modmenu": [ "at.petrak.hexcasting.fabric.interop.ModMenuInterop" diff --git a/Forge/build.gradle b/Forge/build.gradle index 43831992c4..d0841f63c4 100644 --- a/Forge/build.gradle +++ b/Forge/build.gradle @@ -49,16 +49,10 @@ repositories { dir 'libs' } - maven { - // location of the maven that hosts JEI files - name = "Progwml6 maven" - url = "https://dvs1.progwml6.com/files/maven/" - } - maven { - // location of a maven mirror for JEI files, as a fallback - name = "ModMaven" - url = "https://modmaven.dev" - } + // paucal, patchi, inline + maven { url = 'https://maven.blamejared.com' } + // EMI (temporarily changed from https://maven.terraformersmc.com/releases/ due to intermittent errors) + maven {url = "https://maven.gnomecraft.net/releases"} // caelus elytra maven { url = "https://maven.theillusivec4.top" } // pehkui @@ -99,9 +93,7 @@ dependencies { // Optional interop - compileOnly fg.deobf("mezz.jei:jei-$minecraftVersion-common-api:$jeiVersion") - compileOnly fg.deobf("mezz.jei:jei-$minecraftVersion-forge-api:$jeiVersion") - runtimeOnly fg.deobf("mezz.jei:jei-$minecraftVersion-forge:$jeiVersion") + compileOnly fg.deobf("dev.emi:emi-forge:$emiVersion+$minecraftVersion") compileOnly fg.deobf("top.theillusivec4.curios:curios-forge:$curiosVersion+$minecraftVersion:api") runtimeOnly fg.deobf("top.theillusivec4.curios:curios-forge:$curiosVersion+$minecraftVersion") diff --git a/Forge/src/main/java/at/petrak/hexcasting/forge/interop/jei/BrainsweepRecipeCategory.java b/Forge/src/main/java/at/petrak/hexcasting/forge/interop/jei/BrainsweepRecipeCategory.java deleted file mode 100644 index 5dab50b0c0..0000000000 --- a/Forge/src/main/java/at/petrak/hexcasting/forge/interop/jei/BrainsweepRecipeCategory.java +++ /dev/null @@ -1,111 +0,0 @@ -package at.petrak.hexcasting.forge.interop.jei; - -import at.petrak.hexcasting.client.ClientTickCounter; -import at.petrak.hexcasting.common.recipe.BrainsweepRecipe; -import com.mojang.blaze3d.systems.RenderSystem; -import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; -import mezz.jei.api.gui.drawable.IDrawable; -import mezz.jei.api.gui.drawable.IDrawableStatic; -import mezz.jei.api.gui.ingredient.IRecipeSlotsView; -import mezz.jei.api.helpers.IGuiHelper; -import mezz.jei.api.recipe.IFocusGroup; -import mezz.jei.api.recipe.RecipeIngredientRole; -import mezz.jei.api.recipe.RecipeType; -import mezz.jei.api.recipe.category.IRecipeCategory; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.item.ItemStack; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import org.jetbrains.annotations.NotNull; - -import java.util.Collections; -import java.util.List; - -import static at.petrak.hexcasting.api.HexAPI.modLoc; -import static at.petrak.hexcasting.client.render.RenderLib.renderEntity; - -public class BrainsweepRecipeCategory implements IRecipeCategory { - public static final ResourceLocation UID = modLoc("brainsweep"); - - private final IDrawableStatic background; - private final IDrawable icon; - private final Component localizedName; - - public BrainsweepRecipeCategory(IGuiHelper guiHelper) { - ResourceLocation location = modLoc("textures/gui/brainsweep_jei.png"); - background = guiHelper.drawableBuilder(location, 0, 0, 118, 86).setTextureSize(128, 128).build(); - var brainsweep = modLoc("brainsweep"); - localizedName = Component.translatable("hexcasting.action." + brainsweep); - icon = new PatternDrawable(brainsweep, 16, 16); - } - - @Override - @OnlyIn(Dist.CLIENT) - public @NotNull - Component getTitle() { - return localizedName; - } - - @Override - public @NotNull - IDrawable getBackground() { - return background; - } - - @Override - public @NotNull - IDrawable getIcon() { - return icon; - } - - @Override - public @NotNull - List getTooltipStrings(@NotNull BrainsweepRecipe recipe, - @NotNull IRecipeSlotsView recipeSlotsView, double mouseX, double mouseY) { - if (37 <= mouseX && mouseX <= 37 + 26 && 19 <= mouseY && mouseY <= 19 + 48) { - Minecraft mc = Minecraft.getInstance(); - return recipe.entityIn().getTooltip(mc.options.advancedItemTooltips); - } - - return Collections.emptyList(); - } - - @Override - public void draw(@NotNull BrainsweepRecipe recipe, @NotNull IRecipeSlotsView recipeSlotsView, @NotNull GuiGraphics graphics, double mouseX, double mouseY) { - ClientLevel level = Minecraft.getInstance().level; - if (level != null) { - var examples = recipe.entityIn().exampleEntities(level); - Entity example = null; - if (!examples.isEmpty()) { - long seconds = System.currentTimeMillis() / 1000; - example = examples.get((int) (seconds % examples.size())); - } - if (example == null) - return; - - RenderSystem.enableBlend(); - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - renderEntity(graphics, example, level, 50, 62.5f, ClientTickCounter.getTotal(), 20, 0); - } - } - - @Override - public void setRecipe(@NotNull IRecipeLayoutBuilder builder, @NotNull BrainsweepRecipe recipe, - @NotNull IFocusGroup focuses) { - builder.addSlot(RecipeIngredientRole.INPUT, 12, 35) - .addItemStacks(recipe.blockIn().getDisplayedStacks()); - builder.addSlot(RecipeIngredientRole.OUTPUT, 87, 35) - .addItemStack(new ItemStack(recipe.result().getBlock())); - } - - @Override - public @NotNull - RecipeType getRecipeType() { - return HexJEIPlugin.BRAINSWEEPING; - } -} diff --git a/Forge/src/main/java/at/petrak/hexcasting/forge/interop/jei/EdifyRecipeCategory.java b/Forge/src/main/java/at/petrak/hexcasting/forge/interop/jei/EdifyRecipeCategory.java deleted file mode 100644 index 84ab9bab31..0000000000 --- a/Forge/src/main/java/at/petrak/hexcasting/forge/interop/jei/EdifyRecipeCategory.java +++ /dev/null @@ -1,78 +0,0 @@ -package at.petrak.hexcasting.forge.interop.jei; - -import at.petrak.hexcasting.common.casting.actions.spells.OpEdifySapling; -import at.petrak.hexcasting.common.lib.HexBlocks; -import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; -import mezz.jei.api.gui.drawable.IDrawable; -import mezz.jei.api.gui.drawable.IDrawableStatic; -import mezz.jei.api.helpers.IGuiHelper; -import mezz.jei.api.recipe.IFocusGroup; -import mezz.jei.api.recipe.RecipeIngredientRole; -import mezz.jei.api.recipe.RecipeType; -import mezz.jei.api.recipe.category.IRecipeCategory; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.ItemTags; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import org.jetbrains.annotations.NotNull; - -import static at.petrak.hexcasting.api.HexAPI.modLoc; - -public class EdifyRecipeCategory implements IRecipeCategory { - public static final ResourceLocation UID = modLoc("edify_tree"); - - private final IDrawableStatic background; - private final IDrawable icon; - private final Component localizedName; - - public EdifyRecipeCategory(IGuiHelper guiHelper) { - ResourceLocation location = modLoc("textures/gui/edify_jei.png"); - background = guiHelper.drawableBuilder(location, 0, 0, 79, 61).setTextureSize(128, 128).build(); - var edify = modLoc("edify"); - localizedName = Component.translatable("hexcasting.action." + edify); - icon = new PatternDrawable(edify, 16, 16).strokeOrder(false); - } - - @Override - @OnlyIn(Dist.CLIENT) - public @NotNull Component getTitle() { - return localizedName; - } - - @Override - public @NotNull IDrawable getBackground() { - return background; - } - - @Override - public @NotNull IDrawable getIcon() { - return icon; - } - - @Override - public void setRecipe(@NotNull IRecipeLayoutBuilder builder, @NotNull OpEdifySapling recipe, - @NotNull IFocusGroup focuses) { - builder.addSlot(RecipeIngredientRole.INPUT, 12, 22) - .addIngredients(Ingredient.of(ItemTags.SAPLINGS)); - - builder.addSlot(RecipeIngredientRole.OUTPUT, 51, 10) - .addItemStack(new ItemStack(HexBlocks.AMETHYST_EDIFIED_LEAVES)) - .addItemStack(new ItemStack(HexBlocks.AVENTURINE_EDIFIED_LEAVES)) - .addItemStack(new ItemStack(HexBlocks.CITRINE_EDIFIED_LEAVES)); - builder.addSlot(RecipeIngredientRole.OUTPUT, 51, 35) - .addItemStack(new ItemStack(HexBlocks.EDIFIED_LOG)) - .addItemStack(new ItemStack(HexBlocks.EDIFIED_LOG_AMETHYST)) - .addItemStack(new ItemStack(HexBlocks.EDIFIED_LOG_AVENTURINE)) - .addItemStack(new ItemStack(HexBlocks.EDIFIED_LOG_CITRINE)); -// .addItemStack(new ItemStack(HexBlocks.EDIFIED_LOG_PURPLE)); - - } - - @Override - public @NotNull RecipeType getRecipeType() { - return HexJEIPlugin.EDIFY; - } -} diff --git a/Forge/src/main/java/at/petrak/hexcasting/forge/interop/jei/HexJEIPlugin.java b/Forge/src/main/java/at/petrak/hexcasting/forge/interop/jei/HexJEIPlugin.java deleted file mode 100644 index 32572ba10c..0000000000 --- a/Forge/src/main/java/at/petrak/hexcasting/forge/interop/jei/HexJEIPlugin.java +++ /dev/null @@ -1,89 +0,0 @@ -package at.petrak.hexcasting.forge.interop.jei; - -import at.petrak.hexcasting.api.HexAPI; -import at.petrak.hexcasting.common.casting.actions.spells.OpEdifySapling; -import at.petrak.hexcasting.common.casting.actions.spells.OpMakeBattery; -import at.petrak.hexcasting.common.items.ItemStaff; -import at.petrak.hexcasting.common.lib.HexItems; -import at.petrak.hexcasting.common.recipe.BrainsweepRecipe; -import at.petrak.hexcasting.common.recipe.HexRecipeStuffRegistry; -import at.petrak.hexcasting.interop.utils.PhialRecipeStackBuilder; -import mezz.jei.api.IModPlugin; -import mezz.jei.api.JeiPlugin; -import mezz.jei.api.recipe.RecipeType; -import mezz.jei.api.registration.IRecipeCatalystRegistration; -import mezz.jei.api.registration.IRecipeCategoryRegistration; -import mezz.jei.api.registration.IRecipeRegistration; -import net.minecraft.client.Minecraft; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; -import org.jetbrains.annotations.NotNull; - -import java.util.List; - -import static at.petrak.hexcasting.api.HexAPI.modLoc; - -@JeiPlugin -public class HexJEIPlugin implements IModPlugin { - private static final ResourceLocation UID = modLoc(HexAPI.MOD_ID); - - public static final RecipeType BRAINSWEEPING = - RecipeType.create(HexAPI.MOD_ID, "brainsweeping", BrainsweepRecipe.class); - - // Only one entry, might as well use the op class - public static final RecipeType PHIAL = - RecipeType.create(HexAPI.MOD_ID, "craft_phial", OpMakeBattery.class); - public static final RecipeType EDIFY = - RecipeType.create(HexAPI.MOD_ID, "edify_tree", OpEdifySapling.class); - - @NotNull - @Override - public ResourceLocation getPluginUid() { - return UID; - } - - @Override - public void registerCategories(IRecipeCategoryRegistration registration) { - var guiHelper = registration.getJeiHelpers().getGuiHelper(); - registration.addRecipeCategories( - new BrainsweepRecipeCategory(guiHelper), - new PhialRecipeCategory(guiHelper), - new EdifyRecipeCategory(guiHelper)); - } - - @Override - public void registerRecipes(@NotNull IRecipeRegistration registration) { - Level level = Minecraft.getInstance().level; - if (level != null) { - registration.addRecipes(BRAINSWEEPING, - level.getRecipeManager().getAllRecipesFor(HexRecipeStuffRegistry.BRAINSWEEP_TYPE)); - } - - if (PhialRecipeStackBuilder.shouldAddRecipe()) { - registration.addRecipes(PHIAL, List.of(OpMakeBattery.INSTANCE)); - } - - registration.addRecipes(EDIFY, List.of(OpEdifySapling.INSTANCE)); - } - - @Override - public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) { - for (ItemStaff staff : new ItemStaff[]{ - HexItems.STAFF_OAK, - HexItems.STAFF_SPRUCE, - HexItems.STAFF_BIRCH, - HexItems.STAFF_JUNGLE, - HexItems.STAFF_ACACIA, - HexItems.STAFF_DARK_OAK, - HexItems.STAFF_CRIMSON, - HexItems.STAFF_WARPED, - HexItems.STAFF_MANGROVE, - HexItems.STAFF_CHERRY, - HexItems.STAFF_BAMBOO, - HexItems.STAFF_EDIFIED, - }) { - registration.addRecipeCatalyst(new ItemStack(staff), BRAINSWEEPING, PHIAL, EDIFY); - } - } -} diff --git a/Forge/src/main/java/at/petrak/hexcasting/forge/interop/jei/PatternDrawable.java b/Forge/src/main/java/at/petrak/hexcasting/forge/interop/jei/PatternDrawable.java deleted file mode 100644 index bf96781a00..0000000000 --- a/Forge/src/main/java/at/petrak/hexcasting/forge/interop/jei/PatternDrawable.java +++ /dev/null @@ -1,73 +0,0 @@ -package at.petrak.hexcasting.forge.interop.jei; - -import at.petrak.hexcasting.api.casting.math.HexPattern; -import at.petrak.hexcasting.api.mod.HexTags; -import at.petrak.hexcasting.api.utils.HexUtils; -import at.petrak.hexcasting.client.render.PatternColors; -import at.petrak.hexcasting.client.render.PatternRenderer; -import at.petrak.hexcasting.client.render.PatternSettings; -import at.petrak.hexcasting.client.render.PatternSettings.PositionSettings; -import at.petrak.hexcasting.client.render.PatternSettings.StrokeSettings; -import at.petrak.hexcasting.client.render.PatternSettings.ZappySettings; -import at.petrak.hexcasting.xplat.IXplatAbstractions; -import mezz.jei.api.gui.drawable.IDrawable; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.resources.ResourceLocation; - -public class PatternDrawable implements IDrawable { - private final int width; - private final int height; - - private boolean strokeOrder; - private final HexPattern pat; - - private PatternSettings patSets; - - public PatternDrawable(ResourceLocation pattern, int w, int h) { - var regi = IXplatAbstractions.INSTANCE.getActionRegistry(); - var entry = regi.get(pattern); - this.strokeOrder = !HexUtils.isOfTag(regi, pattern, HexTags.Actions.PER_WORLD_PATTERN); - this.pat = entry.prototype(); - this.width = w; - this.height = h; - this.patSets = new PatternSettings("pattern_drawable_" + w + "_" + h, - new PositionSettings(width, height, 0, 0, - PatternSettings.AxisAlignment.CENTER_FIT, PatternSettings.AxisAlignment.CENTER_FIT, Math.max(width, height), 0, 0), - StrokeSettings.fromStroke(0.075 * Math.min(width, height)), - ZappySettings.READABLE); - } - - @Override - public int getWidth() { - return width; - } - - @Override - public int getHeight() { - return height; - } - - public PatternDrawable strokeOrder(boolean order) { - if(order != strokeOrder){ - patSets = new PatternSettings("pattern_drawable_" + width + "_" + height + (order ? "" : "nostroke"), - patSets.posSets, - patSets.strokeSets, - order ? ZappySettings.READABLE : ZappySettings.STATIC - ); - } - strokeOrder = order; - return this; - } - - @Override - public void draw(GuiGraphics graphics, int x, int y) { - var ps = graphics.pose(); - ps.pushPose(); - ps.translate(x, y + 1, 0); - PatternRenderer.renderPattern(pat, graphics.pose(), patSets, - new PatternColors(0xc8_0c0a0c, 0xff_333030).withDotColors(0x80_666363, 0), - 0, 10 - ); - ps.popPose(); - } -} diff --git a/Forge/src/main/java/at/petrak/hexcasting/forge/interop/jei/PhialRecipeCategory.java b/Forge/src/main/java/at/petrak/hexcasting/forge/interop/jei/PhialRecipeCategory.java deleted file mode 100644 index 23a4272a4e..0000000000 --- a/Forge/src/main/java/at/petrak/hexcasting/forge/interop/jei/PhialRecipeCategory.java +++ /dev/null @@ -1,74 +0,0 @@ -package at.petrak.hexcasting.forge.interop.jei; - -import at.petrak.hexcasting.api.mod.HexTags; -import at.petrak.hexcasting.common.casting.actions.spells.OpMakeBattery; -import at.petrak.hexcasting.interop.utils.PhialRecipeStackBuilder; -import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; -import mezz.jei.api.gui.drawable.IDrawable; -import mezz.jei.api.gui.drawable.IDrawableStatic; -import mezz.jei.api.helpers.IGuiHelper; -import mezz.jei.api.recipe.IFocusGroup; -import mezz.jei.api.recipe.RecipeIngredientRole; -import mezz.jei.api.recipe.RecipeType; -import mezz.jei.api.recipe.category.IRecipeCategory; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import org.jetbrains.annotations.NotNull; - -import static at.petrak.hexcasting.api.HexAPI.modLoc; - -public class PhialRecipeCategory implements IRecipeCategory { - public static final ResourceLocation UID = modLoc("craft_phial"); - - private final IDrawableStatic background; - private final IDrawable icon; - private final Component localizedName; - - public PhialRecipeCategory(IGuiHelper guiHelper) { - ResourceLocation location = modLoc("textures/gui/phial_jei.png"); - background = guiHelper.drawableBuilder(location, 0, 0, 113, 40).setTextureSize(128, 128).build(); - var craftPhial = modLoc("craft/battery"); - localizedName = Component.translatable("hexcasting.action." + craftPhial); - icon = new PatternDrawable(craftPhial, 12, 12); - } - - @Override - @OnlyIn(Dist.CLIENT) - public @NotNull Component getTitle() { - return localizedName; - } - - @Override - public @NotNull IDrawable getBackground() { - return background; - } - - @Override - public @NotNull IDrawable getIcon() { - return icon; - } - - @Override - public void setRecipe(@NotNull IRecipeLayoutBuilder builder, @NotNull OpMakeBattery recipe, - @NotNull IFocusGroup focuses) { - var stacks = PhialRecipeStackBuilder.createStacks(); - - var inputSlot = builder.addSlot(RecipeIngredientRole.INPUT, 12, 12) - .addItemStacks(stacks.getFirst()); - builder.addSlot(RecipeIngredientRole.INPUT, 47, 12) - .addIngredients(Ingredient.of(HexTags.Items.PHIAL_BASE)); - - var outputSlot = builder.addSlot(RecipeIngredientRole.OUTPUT, 85, 12) - .addItemStacks(stacks.getSecond()); - - builder.createFocusLink(inputSlot, outputSlot); - } - - @Override - public @NotNull RecipeType getRecipeType() { - return HexJEIPlugin.PHIAL; - } -} diff --git a/gradle.properties b/gradle.properties index 4bc43541a6..0444cc459e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,7 +16,7 @@ modVersion=0.11.3 paucalVersion=0.6.0-pre-118 patchouliVersion=83 -jeiVersion=15.0.0.12 +emiVersion=1.0.4 pehkuiVersion=3.8.2 inlineVersion=1.2.2