From 2b5b80670bf6c9450c4eb9f2bcf4dc5d75326b5f Mon Sep 17 00:00:00 2001 From: inyourwalls Date: Sat, 11 Jan 2025 16:14:21 -0500 Subject: make it work on 1.21.4 --- .../java/net/inyourwalls/frank/ScreenEventHandler.java | 8 +++----- .../java/net/inyourwalls/frank/config/ConfigScreen.java | 14 +++++++++++++- .../inyourwalls/frank/mixin/RecipeBookScreenAccessor.java | 13 +++++++++++++ src/main/resources/fabric.mod.json | 4 ++-- src/main/resources/frank.mixins.json | 3 ++- 5 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 src/main/java/net/inyourwalls/frank/mixin/RecipeBookScreenAccessor.java (limited to 'src') diff --git a/src/main/java/net/inyourwalls/frank/ScreenEventHandler.java b/src/main/java/net/inyourwalls/frank/ScreenEventHandler.java index f755d66..4c959aa 100644 --- a/src/main/java/net/inyourwalls/frank/ScreenEventHandler.java +++ b/src/main/java/net/inyourwalls/frank/ScreenEventHandler.java @@ -1,10 +1,9 @@ package net.inyourwalls.frank; import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; -import net.fabricmc.fabric.api.registry.FuelRegistry; import net.inyourwalls.frank.config.FrankConfig; +import net.inyourwalls.frank.mixin.RecipeBookScreenAccessor; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.AbstractFurnaceScreen; @@ -37,7 +36,7 @@ public class ScreenEventHandler implements ScreenEvents.AfterRender, ScreenEvent @Override public void afterRender(Screen screen, DrawContext drawContext, int mouseX, int mouseY, float tickDelta) { int secondsLeft = this.ticksLeft / 20; - int x = this.screen.width / 2 + (this.screen.recipeBook.isOpen() ? 167 : 90); + int x = this.screen.width / 2 + (((RecipeBookScreenAccessor) this.screen).getRecipeBook().isOpen() ? 167 : 90); int y = this.screen.height / 2 - 80; switch (this.config.getDisplayMode()) { case TIME_LEFT_FIRST -> { @@ -122,8 +121,7 @@ public class ScreenEventHandler implements ScreenEvents.AfterRender, ScreenEvent @Override public void afterTick(Screen screen) { ItemStack fuel = this.screenHandler.getSlot(FUEL_SLOT_INDEX).getStack(); - Integer availableFuelTicks = FuelRegistry.INSTANCE.get(fuel.getItem()); - if (availableFuelTicks == null) availableFuelTicks = 0; + int availableFuelTicks = this.client.world.getFuelRegistry().getFuelTicks(fuel); availableFuelTicks *= fuel.getCount(); int remainingFuelTicks = availableFuelTicks + (this.screenHandler.isBurning() ? this.screenHandler.getRemainingFuelTicks() : 0); // forcibly divide by 200gt when not cooking to avoid wrong count diff --git a/src/main/java/net/inyourwalls/frank/config/ConfigScreen.java b/src/main/java/net/inyourwalls/frank/config/ConfigScreen.java index c67b478..f967842 100644 --- a/src/main/java/net/inyourwalls/frank/config/ConfigScreen.java +++ b/src/main/java/net/inyourwalls/frank/config/ConfigScreen.java @@ -8,6 +8,7 @@ import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.tooltip.Tooltip; import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.TextFieldWidget; +import net.minecraft.client.render.RenderLayer; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -129,7 +130,18 @@ public class ConfigScreen extends Screen { } private void renderPreview(DrawContext context, int x, int y) { - context.drawTexture(FURNACE_UI_TEXTURE, x, y, 0, 0, FURNACE_TEXTURE_WIDTH, FURNACE_TEXTURE_HEIGHT); + context.drawTexture( + ident -> RenderLayer.getGuiTextured(ident), + FURNACE_UI_TEXTURE, + x, + y, + 0, + 0, + FURNACE_TEXTURE_WIDTH, + FURNACE_TEXTURE_HEIGHT, + FURNACE_TEXTURE_WIDTH, + FURNACE_TEXTURE_HEIGHT + ); drawCenteredText( context, this.textRenderer, diff --git a/src/main/java/net/inyourwalls/frank/mixin/RecipeBookScreenAccessor.java b/src/main/java/net/inyourwalls/frank/mixin/RecipeBookScreenAccessor.java new file mode 100644 index 0000000..e5bec27 --- /dev/null +++ b/src/main/java/net/inyourwalls/frank/mixin/RecipeBookScreenAccessor.java @@ -0,0 +1,13 @@ +package net.inyourwalls.frank.mixin; + +import net.minecraft.client.gui.screen.ingame.RecipeBookScreen; +import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(RecipeBookScreen.class) +public interface RecipeBookScreenAccessor { + @Accessor + RecipeBookWidget getRecipeBook(); +} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 1163876..424a293 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -26,9 +26,9 @@ ], "depends": { "fabricloader": ">=0.14.22", - "fabric-screen-api-v1": ">=0.100.1+1.21", + "fabric-screen-api-v1": ">=0.114.2+1.21.4", "java": ">=17", - "minecraft": "~1.21" + "minecraft": "~1.21.4" }, "suggests": {}, "custom": { diff --git a/src/main/resources/frank.mixins.json b/src/main/resources/frank.mixins.json index 4d27370..b475405 100644 --- a/src/main/resources/frank.mixins.json +++ b/src/main/resources/frank.mixins.json @@ -4,7 +4,8 @@ "compatibilityLevel": "JAVA_21", "package": "net.inyourwalls.frank.mixin", "client": [ - "AbstractFurnaceScreenHandlerMixin" + "AbstractFurnaceScreenHandlerMixin", + "RecipeBookScreenAccessor" ], "injectors": { "defaultRequire": 1 -- cgit v1.3.1