summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/main/java/net/inyourwalls/frank/Frank.java49
-rw-r--r--src/main/resources/fabric.mod.json4
2 files changed, 48 insertions, 5 deletions
diff --git a/src/main/java/net/inyourwalls/frank/Frank.java b/src/main/java/net/inyourwalls/frank/Frank.java
index 4d9001b..805d2c4 100644
--- a/src/main/java/net/inyourwalls/frank/Frank.java
+++ b/src/main/java/net/inyourwalls/frank/Frank.java
@@ -2,15 +2,60 @@
package net.inyourwalls.frank;
import net.fabricmc.api.ClientModInitializer;
+import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents;
+import net.fabricmc.fabric.api.registry.FuelRegistry;
+import net.minecraft.client.gui.screen.ingame.FurnaceScreen;
+import net.minecraft.item.ItemStack;
+import net.minecraft.text.Text;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Frank implements ClientModInitializer {
public static final Logger LOGGER = LoggerFactory.getLogger(Frank.class);
+ private static final int CRAFTING_SLOT_INDEX = 0;
+ private static final int FUEL_SLOT_INDEX = 1;
+
@Override
public void onInitializeClient() {
- // TODO: config maybe
- LOGGER.info("Hello, world!");
+ ScreenEvents.AFTER_INIT.register((client, screen, scaledWidth, scaledHeight) -> {
+ if (screen instanceof FurnaceScreen furnace) {
+ // Determine where to draw the information.
+ int infoX = screen.width / 2 + 90;
+ int infoY = screen.height / 2 - 80;
+
+ ScreenEvents.afterRender(screen).register((_s, drawContext, mouseX, mouseY, tickDelta) -> {
+ int itemsInProgress = furnace.getScreenHandler().getSlot(CRAFTING_SLOT_INDEX).getStack().getCount();
+ int secondsLeft = itemsInProgress * 10 - (int)(furnace.getScreenHandler().getCookProgress() * 10);
+
+ ItemStack fuel = furnace.getScreenHandler().getSlot(FUEL_SLOT_INDEX).getStack();
+ int fuelItemCount = fuel.getCount();
+ Integer fuelTicks = FuelRegistry.INSTANCE.get(fuel.getItem());
+ if (fuelTicks == null) fuelTicks = 0; // Avoid null pointer exception because Java is terrible.
+ int itemsSmeltable = ((fuelTicks / 10) * fuelItemCount) / 20;
+
+ drawContext.drawTextWithShadow(
+ client.textRenderer,
+ Text.literal("ui.frank.time_left: " + secondsLeft),
+ infoX,
+ infoY,
+ 0xffffff);
+ drawContext.drawTextWithShadow(client.textRenderer, Text.literal("smeltable: " + itemsSmeltable), infoX, infoY + 10, 0xffffff);
+ drawContext.drawTextWithShadow(client.textRenderer,
+ Text.literal("fuelProgress: " + furnace.getScreenHandler().getFuelProgress()),
+ infoX,
+ infoY + 20,
+ 0xffffff
+ );
+ drawContext.drawTextWithShadow(client.textRenderer,
+ Text.literal("cookProgress: " + furnace.getScreenHandler().getCookProgress()),
+ infoX,
+ infoY + 30,
+ 0xffffff
+ );
+ });
+ }
+ });
+ LOGGER.info("Screen events registered.");
}
}
diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json
index 41c3277..d2a9d50 100644
--- a/src/main/resources/fabric.mod.json
+++ b/src/main/resources/fabric.mod.json
@@ -18,11 +18,9 @@
"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",
"java": ">=17"
},