aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/inyourwalls
diff options
context:
space:
mode:
authorinyourwalls <inyourwalls@tutanota.com>2023-11-07 21:54:01 -0500
committerinyourwalls <inyourwalls@tutanota.com>2023-11-07 21:54:01 -0500
commitad36711caa30a934a61b2d95ad8f898a6690d257 (patch)
tree4feaf266072c8ad4772751a75a274e2a6785b6f8 /src/main/java/net/inyourwalls
parent9a2907f253fee7598836633d4fe2c03651844786 (diff)
implement basic functionality
Diffstat (limited to '')
-rw-r--r--src/main/java/net/inyourwalls/frank/Frank.java49
1 files changed, 47 insertions, 2 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.");
}
}