From ad36711caa30a934a61b2d95ad8f898a6690d257 Mon Sep 17 00:00:00 2001 From: inyourwalls Date: Tue, 7 Nov 2023 21:54:01 -0500 Subject: implement basic functionality --- build.gradle.kts | 5 +-- gradle.properties | 2 +- src/main/java/net/inyourwalls/frank/Frank.java | 49 ++++++++++++++++++++++++-- src/main/resources/fabric.mod.json | 4 +-- 4 files changed, 52 insertions(+), 8 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 64d3c25..bb9a0e6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,8 +13,9 @@ repositories { dependencies { // Fabric/Minecraft dependencies. minecraft("com.mojang:minecraft:1.20.2") - mappings("net.fabricmc:yarn:1.20.2+build.4") - modImplementation("net.fabricmc:fabric-loader:0.14.24") + mappings("net.fabricmc:yarn:1.20.2+build.4:v2") + modImplementation("net.fabricmc:fabric-loader:0.14.23") + modImplementation("net.fabricmc.fabric-api:fabric-api:0.90.4+1.20.2") } tasks { diff --git a/gradle.properties b/gradle.properties index b865697..23483b4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ # Prevent Gradle from crashing. -org.gradle.jvmArgs=-Xmx1G +org.gradle.jvmargs=-Xmx1G org.gradle.parallel=true 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" }, -- cgit v1.3.1