diff options
Diffstat (limited to 'src')
5 files changed, 74 insertions, 6 deletions
diff --git a/src/main/java/net/inyourwalls/frank/Frank.java b/src/main/java/net/inyourwalls/frank/Frank.java index 4b8fc08..3ac8f09 100644 --- a/src/main/java/net/inyourwalls/frank/Frank.java +++ b/src/main/java/net/inyourwalls/frank/Frank.java @@ -34,9 +34,9 @@ public class Frank implements ClientModInitializer { drawContext, client.textRenderer, handler.getSlot(CRAFTING_SLOT_INDEX).getStack().getCount(), - handler.getCookProgress(), + handler.getCookProgressPercent(), handler.getSlot(FUEL_SLOT_INDEX).getStack(), - handler.getFuelProgress(), + handler.getFuelProgressPercent(), speedMultiplier ); }); @@ -52,9 +52,9 @@ public class Frank implements ClientModInitializer { AbstractFurnaceScreen<?> screen, DrawContext context, TextRenderer renderer, - int itemsInProgress, + int itemsInProgress, float cookProgress, - ItemStack fuel, + ItemStack fuel, float fuelProgress, int speedMultiplier ) { diff --git a/src/main/java/net/inyourwalls/frank/FurnaceProgressPercentGetter.java b/src/main/java/net/inyourwalls/frank/FurnaceProgressPercentGetter.java new file mode 100644 index 0000000..2da666e --- /dev/null +++ b/src/main/java/net/inyourwalls/frank/FurnaceProgressPercentGetter.java @@ -0,0 +1,12 @@ +// FurnaceProgressPercentGetter: Gets furnace progress as a percentage. +package net.inyourwalls.frank; + +public interface FurnaceProgressPercentGetter { + default float getCookProgressPercent() { + return 0.0f; + } + + default float getFuelProgressPercent() { + return 0.0f; + } +} diff --git a/src/main/java/net/inyourwalls/frank/mixin/AbstractFurnaceScreenHandlerMixin.java b/src/main/java/net/inyourwalls/frank/mixin/AbstractFurnaceScreenHandlerMixin.java new file mode 100644 index 0000000..e705c96 --- /dev/null +++ b/src/main/java/net/inyourwalls/frank/mixin/AbstractFurnaceScreenHandlerMixin.java @@ -0,0 +1,38 @@ +// AbstractFurnaceScreenHandlerMixin: Implements percentage progress getters. +package net.inyourwalls.frank.mixin; + +import net.inyourwalls.frank.FurnaceProgressPercentGetter; +import net.minecraft.screen.AbstractFurnaceScreenHandler; +import net.minecraft.screen.PropertyDelegate; +import net.minecraft.util.math.MathHelper; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +/* +* This basically mimics the interface the class itself exposes in 1.20.2 +* onwards. Mojang doesn't appear to have changed the actual values the client +* and server share. +*/ +@Mixin(AbstractFurnaceScreenHandler.class) +public abstract class AbstractFurnaceScreenHandlerMixin implements FurnaceProgressPercentGetter { + @Shadow + private PropertyDelegate propertyDelegate; + + @Override + public float getCookProgressPercent() { + int i = this.propertyDelegate.get(2); + int j = this.propertyDelegate.get(3); + if (i == 0 || j == 0) return 0.0f; + + return MathHelper.clamp((float) i / (float) j, 0.0f, 1.0f); + } + + @Override + public float getFuelProgressPercent() { + int i = this.propertyDelegate.get(0); + int j = this.propertyDelegate.get(1); + if (j == 0) j = 200; + + return MathHelper.clamp((float) i / (float) j, 0.0f, 1.0f); + } +} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 5c676c5..047001e 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -18,10 +18,13 @@ "net.inyourwalls.frank.Frank" ] }, + "mixins": [ + "frank.mixins.json" + ], "depends": { "fabricloader": ">=0.14.22", - "fabric-api": ">=0.90.4+1.20.2", - "minecraft": "~1.20.2", + "fabric-api": ">=0.90.4+1.20.1", + "minecraft": "1.20.1", "java": ">=17" }, "suggests": {}, @@ -30,6 +33,9 @@ "links": { "frank.matrix": "https://matrix.to/#/#mod-support:inyourwalls.net" } + }, + "loom:injected_interfaces": { + "net/minecraft/class_1720": ["net/inyourwalls/frank/FurnaceProgressPercentGetter"] } } } diff --git a/src/main/resources/frank.mixins.json b/src/main/resources/frank.mixins.json new file mode 100644 index 0000000..bb4ebd0 --- /dev/null +++ b/src/main/resources/frank.mixins.json @@ -0,0 +1,12 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "net.inyourwalls.frank.mixin", + "compatibilityLevel": "JAVA_17", + "client": [ + "AbstractFurnaceScreenHandlerMixin" + ], + "injectors": { + "defaultRequire": 1 + } +} |
