aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build.gradle.kts4
-rw-r--r--src/main/java/net/inyourwalls/frank/Frank.java12
-rw-r--r--src/main/java/net/inyourwalls/frank/FurnaceProgressPercentGetter.java12
-rw-r--r--src/main/java/net/inyourwalls/frank/config/ConfigScreen.java1
-rw-r--r--src/main/java/net/inyourwalls/frank/mixin/AbstractFurnaceScreenHandlerMixin.java38
-rw-r--r--src/main/resources/fabric.mod.json10
-rw-r--r--src/main/resources/frank.mixins.json12
7 files changed, 79 insertions, 10 deletions
diff --git a/build.gradle.kts b/build.gradle.kts
index 032649f..bdae5b0 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -3,7 +3,7 @@ plugins {
id("fabric-loom") version "1.4-SNAPSHOT"
}
-val minecraftVersion = "1.20.2"
+val minecraftVersion = "1.20.1"
version = "1.0.0+$minecraftVersion"
group = "net.inyourwalls"
@@ -14,7 +14,7 @@ repositories {
dependencies {
// Fabric/Minecraft dependencies.
- val yarnBuild = "4"
+ val yarnBuild = "10"
minecraft("com.mojang:minecraft:$minecraftVersion")
mappings("net.fabricmc:yarn:$minecraftVersion+build.$yarnBuild:v2")
modImplementation("net.fabricmc:fabric-loader:0.14.23")
diff --git a/src/main/java/net/inyourwalls/frank/Frank.java b/src/main/java/net/inyourwalls/frank/Frank.java
index 0aebd73..8418dc4 100644
--- a/src/main/java/net/inyourwalls/frank/Frank.java
+++ b/src/main/java/net/inyourwalls/frank/Frank.java
@@ -55,7 +55,7 @@ public class Frank implements ClientModInitializer {
config.getTextColour(),
handler.getSlot(CRAFTING_SLOT_INDEX).getStack().getCount(),
speedMultiplier,
- handler.getCookProgress()
+ handler.getCookProgressPercent()
);
renderItemsSmeltable(
drawContext,
@@ -64,7 +64,7 @@ public class Frank implements ClientModInitializer {
y + 10,
config.getTextColour(),
handler.getSlot(FUEL_SLOT_INDEX).getStack(),
- handler.getFuelProgress()
+ handler.getFuelProgressPercent()
);
break;
}
@@ -78,7 +78,7 @@ public class Frank implements ClientModInitializer {
config.getTextColour(),
handler.getSlot(CRAFTING_SLOT_INDEX).getStack().getCount(),
speedMultiplier,
- handler.getCookProgress()
+ handler.getCookProgressPercent()
);
break;
}
@@ -91,7 +91,7 @@ public class Frank implements ClientModInitializer {
y,
config.getTextColour(),
handler.getSlot(FUEL_SLOT_INDEX).getStack(),
- handler.getFuelProgress()
+ handler.getFuelProgressPercent()
);
renderTimeLeft(
drawContext,
@@ -101,7 +101,7 @@ public class Frank implements ClientModInitializer {
config.getTextColour(),
handler.getSlot(CRAFTING_SLOT_INDEX).getStack().getCount(),
speedMultiplier,
- handler.getCookProgress()
+ handler.getCookProgressPercent()
);
break;
}
@@ -114,7 +114,7 @@ public class Frank implements ClientModInitializer {
y,
config.getTextColour(),
handler.getSlot(FUEL_SLOT_INDEX).getStack(),
- handler.getFuelProgress()
+ handler.getFuelProgressPercent()
);
break;
}
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/config/ConfigScreen.java b/src/main/java/net/inyourwalls/frank/config/ConfigScreen.java
index 211dee5..fa2f743 100644
--- a/src/main/java/net/inyourwalls/frank/config/ConfigScreen.java
+++ b/src/main/java/net/inyourwalls/frank/config/ConfigScreen.java
@@ -104,6 +104,7 @@ public class ConfigScreen extends Screen {
@Override
public void render(DrawContext context, int mouseX, int mouseY, float delta) {
+ super.renderBackground(context);
super.render(context, mouseX, mouseY, delta);
context.drawCenteredTextWithShadow(this.textRenderer, Text.translatable("ui.frank.config"), this.width / 2, 5, 0xffffff);
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 e02b2b5..0a46f48 100644
--- a/src/main/resources/fabric.mod.json
+++ b/src/main/resources/fabric.mod.json
@@ -21,10 +21,13 @@
"net.inyourwalls.frank.ModMenuIntegration"
]
},
+ "mixins": [
+ "frank.mixins.json"
+ ],
"depends": {
"fabricloader": ">=0.14.22",
- "fabric-screen-api-v1": ">=0.90.4+1.20.2",
- "minecraft": "~1.20.2",
+ "minecraft": "1.20.1",
+ "fabric-screen-api-v1": ">=0.90.4+1.20.1",
"java": ">=17"
},
"suggests": {},
@@ -33,6 +36,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
+ }
+}