From 188ebe8befe6296987645dc0f29c291b9a73f944 Mon Sep 17 00:00:00 2001 From: Vos Date: Sun, 23 Nov 2025 17:43:27 -0600 Subject: [PATCH] REI Compat --- build.gradle | 7 ++ gradle.properties | 2 +- .../acesbs/compat/AcesBSREIClient.java | 35 ++++++++++ .../compat/EntropicStabilizerCategory.java | 60 ++++++++++++++++++ .../compat/EntropicStabilizerDisplay.java | 34 ++++++++++ .../recipe/EntropicStabilizerRecipe.java | 1 + .../entropic_stabilizer_gui_rei.png | Bin 0 -> 889 bytes src/main/resources/fabric.mod.json | 3 + 8 files changed, 141 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/acethewildfire/acesbs/compat/AcesBSREIClient.java create mode 100644 src/main/java/com/acethewildfire/acesbs/compat/EntropicStabilizerCategory.java create mode 100644 src/main/java/com/acethewildfire/acesbs/compat/EntropicStabilizerDisplay.java create mode 100644 src/main/resources/assets/acesbs/textures/gui/entropic_stabilizer/entropic_stabilizer_gui_rei.png diff --git a/build.gradle b/build.gradle index eed1bc0..16038e1 100644 --- a/build.gradle +++ b/build.gradle @@ -16,6 +16,8 @@ repositories { // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. // See https://docs.gradle.org/current/userguide/declaring_repositories.html // for more information about repositories. + + maven { url "https://maven.shedaniel.me" } } fabricApi { @@ -32,6 +34,11 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + + modCompileOnly "me.shedaniel:RoughlyEnoughItems-api-fabric:16.0.777" + modRuntimeOnly "me.shedaniel:RoughlyEnoughItems-fabric:16.0.777" + modApi "dev.architectury:architectury-fabric:13.0.8" + modApi "me.shedaniel.cloth:cloth-config-fabric:15.0.140" } diff --git a/gradle.properties b/gradle.properties index 131e80e..4f57117 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,6 +13,6 @@ loom_version=1.13-SNAPSHOT fabric_version=0.116.7+1.21.1 # Mod Properties -mod_version=1.1.0 +mod_version=1.2.0 maven_group=com.acethewildfire.acesbs archives_base_name=acesbs diff --git a/src/main/java/com/acethewildfire/acesbs/compat/AcesBSREIClient.java b/src/main/java/com/acethewildfire/acesbs/compat/AcesBSREIClient.java new file mode 100644 index 0000000..0fc1d0a --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/compat/AcesBSREIClient.java @@ -0,0 +1,35 @@ +package com.acethewildfire.acesbs.compat; + +import com.acethewildfire.acesbs.block.ModBlocks; +import com.acethewildfire.acesbs.recipe.EntropicStabilizerRecipe; +import com.acethewildfire.acesbs.recipe.ModRecipies; +import com.acethewildfire.acesbs.screen.custom.EntropicStabilizerScreen; +import me.shedaniel.math.Rectangle; +import me.shedaniel.rei.api.client.plugins.REIClientPlugin; +import me.shedaniel.rei.api.client.registry.category.CategoryRegistry; +import me.shedaniel.rei.api.client.registry.display.DisplayRegistry; +import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry; +import me.shedaniel.rei.api.common.util.EntryStacks; + +import java.awt.*; + +public class AcesBSREIClient implements REIClientPlugin { + + @Override + public void registerCategories(CategoryRegistry registry) { + registry.add(new EntropicStabilizerCategory()); + + registry.addWorkstations(EntropicStabilizerCategory.ENTROPIC_STABILIZER, EntryStacks.of(ModBlocks.ENTROPIC_STABILIZER)); + } + + @Override + public void registerDisplays(DisplayRegistry registry) { + registry.registerRecipeFiller(EntropicStabilizerRecipe.class, ModRecipies.ENTROPIC_STABILIZER_TYPE, EntropicStabilizerDisplay::new); + } + + @Override + public void registerScreens(ScreenRegistry registry) { + registry.registerClickArea(screen -> new Rectangle(((screen.width - 176) / 2) + 78, + ((screen.height - 166) / 2) + 30, 20, 25 ), EntropicStabilizerScreen.class, EntropicStabilizerCategory.ENTROPIC_STABILIZER); + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/compat/EntropicStabilizerCategory.java b/src/main/java/com/acethewildfire/acesbs/compat/EntropicStabilizerCategory.java new file mode 100644 index 0000000..fbe1513 --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/compat/EntropicStabilizerCategory.java @@ -0,0 +1,60 @@ +package com.acethewildfire.acesbs.compat; + +import com.acethewildfire.acesbs.AcesBS; +import com.acethewildfire.acesbs.block.ModBlocks; +import me.shedaniel.math.Point; +import me.shedaniel.math.Rectangle; +import me.shedaniel.rei.api.client.gui.Renderer; +import me.shedaniel.rei.api.client.gui.widgets.Widget; +import me.shedaniel.rei.api.client.gui.widgets.Widgets; +import me.shedaniel.rei.api.client.registry.display.DisplayCategory; +import me.shedaniel.rei.api.common.category.CategoryIdentifier; +import me.shedaniel.rei.api.common.display.basic.BasicDisplay; +import me.shedaniel.rei.api.common.entry.EntryStack; +import me.shedaniel.rei.api.common.util.EntryStacks; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; + +import java.util.LinkedList; +import java.util.List; + +public class EntropicStabilizerCategory implements DisplayCategory { + public static final Identifier GUI_TEXTURE = + Identifier.of(AcesBS.MOD_ID, "textures/gui/entropic_stabilizer/entropic_stabilizer_gui_rei.png"); + + public static final CategoryIdentifier ENTROPIC_STABILIZER = + CategoryIdentifier.of(AcesBS.MOD_ID, "entropic_stabilizer"); + + @Override + public CategoryIdentifier getCategoryIdentifier() { + return ENTROPIC_STABILIZER; + } + + @Override + public Text getTitle() { + return Text.translatable("block.acesbs.entropic_stabilizer"); + } + + @Override + public Renderer getIcon() { + return EntryStacks.of(ModBlocks.ENTROPIC_STABILIZER.asItem().getDefaultStack()); + } + + @Override + public List setupDisplay(BasicDisplay display, Rectangle bounds) { + Point startPoint = new Point(bounds.getCenterX() - 87, bounds.getCenterY() - 41); + List widgets = new LinkedList<>(); + + widgets.add(Widgets.createTexturedWidget(GUI_TEXTURE, new Rectangle(startPoint.x, startPoint.y, 175, 82))); + + widgets.add(Widgets.createSlot(new Point(startPoint.x + 56, startPoint.y + 17)).entries(display.getInputEntries().get(0)).markInput()); + widgets.add(Widgets.createSlot(new Point(startPoint.x + 116, startPoint.y + 35)).entries(display.getOutputEntries().get(0)).markOutput()); + + return widgets; + } + + @Override + public int getDisplayHeight() { + return 90; + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/compat/EntropicStabilizerDisplay.java b/src/main/java/com/acethewildfire/acesbs/compat/EntropicStabilizerDisplay.java new file mode 100644 index 0000000..e55e3d1 --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/compat/EntropicStabilizerDisplay.java @@ -0,0 +1,34 @@ +package com.acethewildfire.acesbs.compat; + +import com.acethewildfire.acesbs.block.custom.EntropicStabilizer; +import com.acethewildfire.acesbs.recipe.EntropicStabilizerRecipe; +import me.shedaniel.rei.api.common.category.CategoryIdentifier; +import me.shedaniel.rei.api.common.display.basic.BasicDisplay; +import me.shedaniel.rei.api.common.entry.EntryIngredient; +import me.shedaniel.rei.api.common.entry.EntryStack; +import me.shedaniel.rei.api.common.registry.RecipeManagerContext; +import me.shedaniel.rei.api.common.util.EntryIngredients; +import me.shedaniel.rei.api.common.util.EntryStacks; +import net.minecraft.nbt.NbtCompound; +import net.minecraft.recipe.RecipeEntry; +import org.jetbrains.annotations.Nullable; + +import java.util.List; +import java.util.Optional; + +public class EntropicStabilizerDisplay extends BasicDisplay { + private RecipeEntry recipe; + private float xp; + private double cookTime; + + public EntropicStabilizerDisplay(RecipeEntry recipe){ + super( + List.of(EntryIngredients.ofIngredient(recipe.value().getIngredients().get(0))), + List.of(EntryIngredient.of(EntryStacks.of(recipe.value().getResult(null))))); + } + + @Override + public CategoryIdentifier getCategoryIdentifier() { + return EntropicStabilizerCategory.ENTROPIC_STABILIZER; + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/recipe/EntropicStabilizerRecipe.java b/src/main/java/com/acethewildfire/acesbs/recipe/EntropicStabilizerRecipe.java index f3a8a02..5e35f4c 100644 --- a/src/main/java/com/acethewildfire/acesbs/recipe/EntropicStabilizerRecipe.java +++ b/src/main/java/com/acethewildfire/acesbs/recipe/EntropicStabilizerRecipe.java @@ -80,5 +80,6 @@ public record EntropicStabilizerRecipe(Ingredient inputItem, ItemStack output) i public PacketCodec packetCodec() { return STREAM_CODEC; } + } } diff --git a/src/main/resources/assets/acesbs/textures/gui/entropic_stabilizer/entropic_stabilizer_gui_rei.png b/src/main/resources/assets/acesbs/textures/gui/entropic_stabilizer/entropic_stabilizer_gui_rei.png new file mode 100644 index 0000000000000000000000000000000000000000..d94ddc779896461ffc29d9460dc1fabf8177c479 GIT binary patch literal 889 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G!U;i$lZzY=1HA;AcrO0(btiI zVPik{pF~z5Um@8e$d`ekN{xY`p@o6r7f`6-1p`B=0RzLU1O^7H84L{K1#@-<+5jau z3p^r=85p>QL70(Y)*K0-AbW|YuPggYZgFv5DKV8Ec?Jfi^PVn_Ar-gY-np3DY#_pV z;kj0Dt7(LaP_+R^vBR-N@qy7-Oo9v(+KcN})h+RwyXUm&B+rkjd@Gzcu~do|%}f96 zuNr@AN{fSXn6u`b^Z~$7% zAi&T7^dLm&%HvPx{@;097X8=!*0$bdnKi)z45nGP%dWoOy{_1UD;iS=2TaI8P;c6T zI7>h4eUD6*Ff2&O_6M_c85S^JsVsf7>)djlbe@J~nODL$uxgyQ=o4e)UGOCF_OEx} zE&ASVSj_llqo_vi4^u{y24<&(%B#8$wbpPhV3fJSHZAeNJO-u*F5j8={f~1JW{7T> zD|I0Gft=_c`%s(j7jE$_V0=?DwU+1Br}Ru+R+a;^?=$~+ZQG=K;FxIjPT3n(5%XJn zAG$N&*b(*LtVT75na7?fp`EeXETc`Hv0zg*!#&}5jB{4}n{GCxO`dnbhKK*(XY<%g zHQdVoaS@n29t2p}B`!7yhUGji|&6B{JtxUPKP>w4makf7#L6aUL8g%6kTD#Wf2U+rkxme|qZ q5tcOfDbu-WEnfR~GYlbc{5Q+FpcU7=6w(_(uJ&~Gb6Mw<&;$U_>-Ss$ literal 0 HcmV?d00001 diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index d3b9803..9955348 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -24,6 +24,9 @@ ], "client": [ "com.acethewildfire.acesbs.AcesBSClient" + ], + "rei_client": [ + "com.acethewildfire.acesbs.compat.AcesBSREIClient" ] }, "mixins": [