diff options
| -rw-r--r-- | build.gradle.kts | 17 | ||||
| -rw-r--r-- | flake.lock | 44 | ||||
| -rw-r--r-- | flake.nix | 53 | ||||
| -rw-r--r-- | gradle/wrapper/gradle-wrapper.properties | 2 | ||||
| -rwxr-xr-x | gradlew | 12 | ||||
| -rw-r--r-- | gradlew.bat | 3 | ||||
| -rw-r--r-- | src/main/java/net/inyourwalls/frank/Frank.java | 2 | ||||
| -rw-r--r-- | src/main/java/net/inyourwalls/frank/ModMenuIntegration.java | 13 | ||||
| -rw-r--r-- | src/main/java/net/inyourwalls/frank/ScreenEventHandler.java | 24 | ||||
| -rw-r--r-- | src/main/java/net/inyourwalls/frank/config/ConfigScreen.java | 41 | ||||
| -rw-r--r-- | src/main/resources/fabric.mod.json | 13 |
11 files changed, 133 insertions, 91 deletions
diff --git a/build.gradle.kts b/build.gradle.kts index 92c3c31..c5fae3f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,9 +1,9 @@ plugins { java - id("net.fabricmc.fabric-loom-remap") version "1.15-SNAPSHOT" + id("net.fabricmc.fabric-loom") version "1.17-SNAPSHOT" } -val minecraftVersion = "1.21.11" +val minecraftVersion = "26.2" version = "1.0.3+$minecraftVersion" group = "net.inyourwalls" @@ -14,22 +14,17 @@ repositories { dependencies { // Fabric/Minecraft dependencies. - val yarnBuild = "4" minecraft("com.mojang:minecraft:$minecraftVersion") - mappings(loom.officialMojangMappings()) - modImplementation("net.fabricmc:fabric-loader:0.18.4") - modImplementation("net.fabricmc.fabric-api:fabric-api:0.141.3+$minecraftVersion") - - modImplementation("com.terraformersmc:modmenu:17.0.0-beta.2") + implementation("net.fabricmc:fabric-loader:0.18.4") + implementation("net.fabricmc.fabric-api:fabric-api:0.152.2+$minecraftVersion") + implementation("com.terraformersmc:modmenu:20.0.0-beta.3") } tasks { processResources { inputs.property("version", project.version) filesMatching("fabric.mod.json") { - expand(mapOf( - "version" to project.version - )) + expand("version" to project.version) } } } @@ -1,16 +1,34 @@ { "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1771848320, - "narHash": "sha256-0MAd+0mun3K/Ns8JATeHT1sX28faLII5hVLq0L3BdZU=", - "owner": "NixOS", + "lastModified": 1781577229, + "narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "2fc6539b481e1d2569f25f8799236694180c0993", + "rev": "567a49d1913ce81ac6e9582e3553dd90a955875f", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" @@ -18,8 +36,24 @@ }, "root": { "inputs": { + "flake-utils": "flake-utils", "nixpkgs": "nixpkgs" } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } } }, "root": "root", @@ -1,23 +1,40 @@ { - description = "Development environment for frank."; - - inputs.nixpkgs = { - url = "github:NixOS/nixpkgs/nixos-unstable"; + description = "Minecraft fabric mod dev env"; + inputs = { + flake-utils.url = "github:numtide/flake-utils"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; }; - outputs = { self, nixpkgs }: { - devShells.x86_64-linux.default = let pkgs = nixpkgs.legacyPackages.x86_64-linux; - in pkgs.mkShell { - buildInputs = with pkgs; [ - libglvnd - ]; + outputs = + { + self, + flake-utils, + nixpkgs, + }: + flake-utils.lib.eachDefaultSystem ( + system: + let + pkgs = nixpkgs.legacyPackages.${system}; + in + { + devShells.default = pkgs.mkShellNoCC rec { + buildInputs = with pkgs; [ + flite + libglvnd + libpulseaudio + pipewire + vulkan-loader + ]; - LD_LIBRARY_PATH = with pkgs; lib.makeLibraryPath [ libglvnd ]; - nativeBuildInputs = with pkgs.buildPackages; [ - gradle - jdk21 - jdt-language-server - ]; - }; - }; + LD_LIBRARY_PATH = nixpkgs.lib.makeLibraryPath buildInputs; + nativeBuildInputs = with pkgs; [ + gradle_9 + jdk25 + jdt-language-server + ]; + }; + + formatter = pkgs.nixfmt; + } + ); } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 19a6bde..1a70468 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright © 2015-2021 the original authors. +# Copyright © 2015 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -86,8 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -115,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -173,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -206,15 +203,14 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/gradlew.bat b/gradlew.bat index 9b42019..e509b2d 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -70,11 +70,10 @@ goto fail :execute
@rem Setup the command line
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
diff --git a/src/main/java/net/inyourwalls/frank/Frank.java b/src/main/java/net/inyourwalls/frank/Frank.java index 811545d..d992208 100644 --- a/src/main/java/net/inyourwalls/frank/Frank.java +++ b/src/main/java/net/inyourwalls/frank/Frank.java @@ -31,7 +31,7 @@ public class Frank implements ClientModInitializer { if (screen instanceof AbstractFurnaceScreen furnace) { AbstractFurnaceMenu screenHandler = (AbstractFurnaceMenu) furnace.getMenu(); ScreenEventHandler handler = new ScreenEventHandler(furnace, screenHandler, client, config); - ScreenEvents.afterRender(screen).register(handler); + ScreenEvents.afterExtract(screen).register(handler); ScreenEvents.afterTick(screen).register(handler); } }); diff --git a/src/main/java/net/inyourwalls/frank/ModMenuIntegration.java b/src/main/java/net/inyourwalls/frank/ModMenuIntegration.java index 053e871..35a3927 100644 --- a/src/main/java/net/inyourwalls/frank/ModMenuIntegration.java +++ b/src/main/java/net/inyourwalls/frank/ModMenuIntegration.java @@ -1,15 +1,12 @@ -// ModMenuIntegration: Entrypoint for integrating with Mod Menu. package net.inyourwalls.frank; import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; import net.inyourwalls.frank.config.ConfigScreen; -public class ModMenuIntegration implements ModMenuApi { - @Override - public ConfigScreenFactory<?> getModConfigScreenFactory() { - return parent -> { - return new ConfigScreen(parent, Frank.getConfig()); - }; - } +public final class ModMenuIntegration implements ModMenuApi { + @Override + public ConfigScreenFactory<?> getModConfigScreenFactory() { + return parent -> new ConfigScreen(parent, Frank.getConfig()); + } } diff --git a/src/main/java/net/inyourwalls/frank/ScreenEventHandler.java b/src/main/java/net/inyourwalls/frank/ScreenEventHandler.java index c8d4c0a..dcc64fd 100644 --- a/src/main/java/net/inyourwalls/frank/ScreenEventHandler.java +++ b/src/main/java/net/inyourwalls/frank/ScreenEventHandler.java @@ -3,15 +3,15 @@ package net.inyourwalls.frank; import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; import net.inyourwalls.frank.config.FrankConfig; import net.inyourwalls.frank.mixin.AbstractRecipeBookScreenAccessor; -import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.inventory.AbstractFurnaceScreen; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.Minecraft; import net.minecraft.network.chat.Component; import net.minecraft.world.inventory.AbstractFurnaceMenu; import net.minecraft.world.item.ItemStack; -public class ScreenEventHandler implements ScreenEvents.AfterRender, ScreenEvents.AfterTick { +public class ScreenEventHandler implements ScreenEvents.AfterExtract, ScreenEvents.AfterTick { private static final int CRAFTING_SLOT_INDEX = 0; private static final int FUEL_SLOT_INDEX = 1; private final AbstractFurnaceScreen<?> screen; @@ -34,7 +34,7 @@ public class ScreenEventHandler implements ScreenEvents.AfterRender, ScreenEvent } @Override - public void afterRender(Screen screen, GuiGraphics drawContext, int mouseX, int mouseY, float tickDelta) { + public void afterExtract(Screen screen, GuiGraphicsExtractor drawContext, int mouseX, int mouseY, float tickProgress) { int secondsLeft = this.ticksLeft / 20; int x = this.screen.width / 2 + (((AbstractRecipeBookScreenAccessor) this.screen).getRecipeBookComponent().isVisible() ? 167 : 90); int y = this.screen.height / 2 - 80; @@ -65,10 +65,10 @@ public class ScreenEventHandler implements ScreenEvents.AfterRender, ScreenEvent } } - private void renderTimeLeft(GuiGraphics drawContext, int secondsLeft, int x, int y) { + private void renderTimeLeft(GuiGraphicsExtractor drawContext, int secondsLeft, int x, int y) { int minutesLeft = secondsLeft / 60; secondsLeft %= 60; - drawContext.drawString( + drawContext.text( this.client.font, Component.translatable("ui.frank.time_left", minutesLeft, secondsLeft), x, @@ -77,8 +77,8 @@ public class ScreenEventHandler implements ScreenEvents.AfterRender, ScreenEvent ); } - private void renderItemsSmeltable(GuiGraphics drawContext, int x, int y) { - drawContext.drawString( + private void renderItemsSmeltable(GuiGraphicsExtractor drawContext, int x, int y) { + drawContext.text( this.client.font, Component.translatable("ui.frank.smeltable", itemsSmeltable), x, @@ -87,29 +87,29 @@ public class ScreenEventHandler implements ScreenEvents.AfterRender, ScreenEvent ); } - private void renderDebugValues(GuiGraphics drawContext, int x, int y) { - drawContext.drawString( + private void renderDebugValues(GuiGraphicsExtractor drawContext, int x, int y) { + drawContext.text( this.client.font, Component.literal("remainingFuelTicks: " + screenHandler.getRemainingFuelTicks()), x, y, 0xffffffff ); - drawContext.drawString( + drawContext.text( this.client.font, Component.literal("totalFuelTicks: " + screenHandler.getTotalFuelTicks()), x, y + 10, 0xffffffff ); - drawContext.drawString( + drawContext.text( this.client.font, Component.literal("currentCookingTicks: " + screenHandler.getCurrentCookingTicks()), x, y + 20, 0xffffffff ); - drawContext.drawString( + drawContext.text( this.client.font, Component.literal("totalCookingTicks: " + screenHandler.getTotalCookingTicks()), x, diff --git a/src/main/java/net/inyourwalls/frank/config/ConfigScreen.java b/src/main/java/net/inyourwalls/frank/config/ConfigScreen.java index 14f01ca..bfa73f2 100644 --- a/src/main/java/net/inyourwalls/frank/config/ConfigScreen.java +++ b/src/main/java/net/inyourwalls/frank/config/ConfigScreen.java @@ -3,7 +3,7 @@ package net.inyourwalls.frank.config; import net.inyourwalls.frank.Frank; import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.gui.components.Tooltip; @@ -81,13 +81,16 @@ public class ConfigScreen extends Screen { try { int newColour = Integer.parseInt(input, 16); modifiedConfig.setTextColour(newColour); - } catch (NumberFormatException ex) { /* how */ } + } catch (NumberFormatException ex) { + // do nothing :/ + } }); - colourField.setFilter(text -> + colourField.setMaxLength(6); + /*colourField.setFilter(text -> text.length() <= 6 && text.chars().allMatch(c -> (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F') || (c >= '0' && c <= '9') ) - ); + );*/ colourField.setValue(String.format("%x", modifiedConfig.getTextColour())); colourField.setTooltip(Tooltip.create(Component.translatable("ui.frank.config.text_colour.tooltip"))); @@ -99,23 +102,23 @@ public class ConfigScreen extends Screen { @Override public void onClose() { - this.minecraft.setScreen(this.previousScreen); + this.minecraft.setScreenAndShow(this.previousScreen); } @Override - public void render(GuiGraphics context, int mouseX, int mouseY, float delta) { - super.render(context, mouseX, mouseY, delta); - context.drawCenteredString(this.font, Component.translatable("ui.frank.config"), this.width / 2, 5, 0xffffff); + public void extractRenderState(GuiGraphicsExtractor context, int mouseX, int mouseY, float delta) { + super.extractRenderState(context, mouseX, mouseY, delta); + context.centeredText(this.font, Component.translatable("ui.frank.config"), this.width / 2, 5, 0xffffff); int labelX = this.width / 2 - Math.max(this.font.width(DISPLAY_MODE_LABEL), this.font.width(TEXT_COLOUR_LABEL)) - 4; - context.drawString( + context.text( this.font, DISPLAY_MODE_LABEL, labelX, 30, 0xffffffff ); - context.drawString( + context.text( this.font, TEXT_COLOUR_LABEL, labelX, @@ -126,7 +129,7 @@ public class ConfigScreen extends Screen { renderPreview(context, this.width / 2 - FURNACE_TEXTURE_WIDTH / 2, this.height / 2 - FURNACE_TEXTURE_HEIGHT / 2); } - private void renderPreview(GuiGraphics context, int x, int y) { + private void renderPreview(GuiGraphicsExtractor context, int x, int y) { context.blit( RenderPipelines.GUI_TEXTURED, FURNACE_UI_TEXTURE, @@ -152,14 +155,14 @@ public class ConfigScreen extends Screen { int infoY = y + 3; switch (modifiedConfig.getDisplayMode()) { case TIME_LEFT_FIRST -> { - context.drawString( + context.text( this.font, Component.translatable("ui.frank.time_left", 0, 0), infoX, infoY, 0xff000000 | modifiedConfig.getTextColour() ); - context.drawString( + context.text( this.font, Component.translatable("ui.frank.smeltable", 0), infoX, @@ -170,7 +173,7 @@ public class ConfigScreen extends Screen { } case TIME_LEFT_ONLY -> { - context.drawString( + context.text( this.font, Component.translatable("ui.frank.time_left", 0, 0), infoX, @@ -181,14 +184,14 @@ public class ConfigScreen extends Screen { } case ITEMS_SMELTABLE_FIRST -> { - context.drawString( + context.text( this.font, Component.translatable("ui.frank.smeltable", 0), infoX, infoY, 0xff000000 | modifiedConfig.getTextColour() ); - context.drawString( + context.text( this.font, Component.translatable("ui.frank.time_left", 0, 0), infoX, @@ -199,7 +202,7 @@ public class ConfigScreen extends Screen { } case ITEMS_SMELTABLE_ONLY -> { - context.drawString( + context.text( this.font, Component.translatable("ui.frank.smeltable", 0), infoX, @@ -213,7 +216,7 @@ public class ConfigScreen extends Screen { } } - private void drawCenteredText(GuiGraphics context, Font renderer, Component text, int centerX, int y, int colour) { - context.drawString(renderer, text, centerX - renderer.width(text) / 2, y, colour, false); + private void drawCenteredText(GuiGraphicsExtractor context, Font renderer, Component text, int centerX, int y, int colour) { + context.text(renderer, text, centerX - renderer.width(text) / 2, y, colour, false); } } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 5d2cbc0..3a3574e 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -18,21 +18,22 @@ "client": [ "net.inyourwalls.frank.Frank" ], - "modmenu": ["net.inyourwalls.frank.ModMenuIntegration"] + "modmenu": [ + "net.inyourwalls.frank.ModMenuIntegration" + ] }, "mixins": [ "frank.mixins.json" ], "depends": { - "fabricloader": ">=0.14.22", - "fabric-screen-api-v1": ">=0.114.2+1.21.4", - "java": ">=17", - "minecraft": "~1.21.11" + "fabricloader": ">=0.18.4", + "fabric-screen-api-v1": ">=0.152.2+26.2", + "minecraft": ">=26.2" }, "suggests": {}, "custom": { "loom:injected_interfaces": { - "net/minecraft/class_1720": ["net/inyourwalls/frank/ScreenHandlerPropertyAccessor"] + "net/minecraft/world/inventory/AbstractFurnaceMenu": ["net/inyourwalls/frank/ScreenHandlerPropertyAccessor"] } } } |
