aboutsummaryrefslogtreecommitdiff
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
parent9a2907f253fee7598836633d4fe2c03651844786 (diff)
implement basic functionality
-rw-r--r--build.gradle.kts5
-rw-r--r--gradle.properties2
-rw-r--r--src/main/java/net/inyourwalls/frank/Frank.java49
-rw-r--r--src/main/resources/fabric.mod.json4
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"
},