diff options
Diffstat (limited to '')
| -rw-r--r-- | src/main/java/net/inyourwalls/frank/Frank.java | 49 |
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."); } } |
