From 434f11b8a2b3275306669e32b7ef66040bb2598e Mon Sep 17 00:00:00 2001 From: KoSHeroff Date: Sat, 25 Jul 2026 01:37:04 +0500 Subject: [PATCH] MC 26.1 (beta): add 26.1.2 NeoForge target 26.1 is the released MC line (NeoForge 26.1.2.86 is non-beta), MCEF 2.2.0-26.1.1 supports it. Add the 26.1.2-neoforge target (Java 25). 26.1 keeps the pre-26.2 screen API: Minecraft.screen / setScreen (the gui.screen()/gui.setScreen() move happened in 26.2). Narrow those guards from >=26 to >=26.2-neoforge so 26.1 falls back to client.screen, same as 1.21.11. Everything else (sendSystemMessage, GuiGraphicsExtractor, MouseHandler.onButton) is identical across 26.1/26.2. CI: 26.1.2 added to the build matrix and release (beta, non-blocking). Verified in-game on a real 26.1.2 NeoForge client: WebGUI bridge ready, Chromium initialized. Stable targets + 26.2 unaffected. --- .github/workflows/build.yml | 3 +++ .github/workflows/release.yml | 23 +++++++++++++++++++ settings.gradle | 5 ++-- src/main/java/land/webgui/WebGUIClient.java | 2 +- src/main/java/land/webgui/WebGUIKeys.java | 6 ++--- src/main/java/land/webgui/WebHudOverlay.java | 16 ++++++------- .../webgui/WebviewPageToClientBridge.java | 2 +- versions/26.1.2-neoforge/gradle.properties | 6 +++++ 8 files changed, 48 insertions(+), 15 deletions(-) create mode 100644 versions/26.1.2-neoforge/gradle.properties diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fd0aa2e..0e59a2c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,6 +31,9 @@ jobs: - version: 26.2-neoforge java: '25' beta: true + - version: 26.1.2-neoforge + java: '25' + beta: true steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d896403..2cfc818 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -71,6 +71,13 @@ jobs: env: GRADLE_OPTS: -Xmx2g + - name: Build 26.1.2 NeoForge (beta) + if: steps.check.outputs.release == 'true' + continue-on-error: true + run: ./gradlew :26.1.2-neoforge:build --no-daemon + env: + GRADLE_OPTS: -Xmx2g + # Gate distribution on the full launch/server verification: nothing is # tagged or shipped unless the mod actually boots. - name: Launch test (Fabric) @@ -182,6 +189,22 @@ jobs: changelog-file: CHANGELOG.md files: versions/26.2-neoforge/build/libs/!(*-@(dev|sources|javadoc)).jar + - name: Publish 26.1.2 NeoForge to Modrinth (beta) + if: steps.check.outputs.release == 'true' + continue-on-error: true + uses: Kir-Antipov/mc-publish@v3.3 + with: + modrinth-id: tDw1xQja + modrinth-token: ${{ secrets.MODRINTH_TOKEN }} + modrinth-featured: false + name: WebGUI ${{ steps.meta.outputs.version }} (26.1.2 NeoForge, beta) + version: ${{ steps.meta.outputs.version }}+mc26.1.2-neoforge + version-type: beta + loaders: neoforge + game-versions: '26.1.2' + changelog-file: CHANGELOG.md + files: versions/26.1.2-neoforge/build/libs/!(*-@(dev|sources|javadoc)).jar + # mc-publish can report success without actually creating a version (e.g. # a token lacking the "Create versions" scope). Confirm every version is # really on Modrinth so a green run can't lie. diff --git a/settings.gradle b/settings.gradle index 31b533d..32c0189 100644 --- a/settings.gradle +++ b/settings.gradle @@ -16,9 +16,10 @@ stonecutter { centralScript = 'build.gradle' create(rootProject) { - // 26.2-neoforge is BETA: MC 26.2 + NeoForge beta; no Fabric target yet - // because Yarn mappings for 26.x are not published. + // MC 26 (NeoForge only — Yarn mappings for 26.x are not published). + // 26.2 is still a NeoForge beta; 26.1 is the released line. version '26.2-neoforge', '26.2-neoforge' + version '26.1.2-neoforge', '26.1.2-neoforge' version '1.21.11-fabric', '1.21.11-fabric' version '1.21.11-neoforge', '1.21.11-neoforge' version '1.21.1-fabric', '1.21.1-fabric' diff --git a/src/main/java/land/webgui/WebGUIClient.java b/src/main/java/land/webgui/WebGUIClient.java index a7905d1..1398d46 100644 --- a/src/main/java/land/webgui/WebGUIClient.java +++ b/src/main/java/land/webgui/WebGUIClient.java @@ -183,7 +183,7 @@ private static void handleOpenPayload(Minecraft client, int mode, String url) { } String u = url == null || url.isBlank() ? StartUrls.primary() : url; if (mode == WebviewNetworking.MODE_GUI) { - //? if >=26 { + //? if >=26.2-neoforge { client.gui.setScreen(new WebViewScreen(u)); //? } else { client.setScreen(new WebViewScreen(u)); diff --git a/src/main/java/land/webgui/WebGUIKeys.java b/src/main/java/land/webgui/WebGUIKeys.java index 1432467..506ade2 100644 --- a/src/main/java/land/webgui/WebGUIKeys.java +++ b/src/main/java/land/webgui/WebGUIKeys.java @@ -100,7 +100,7 @@ public static void tick(MinecraftClient client) { if (!WebHudOverlay.isHudVisible() || client.currentScreen != null) { //? } else { /*while (hudInteractive.consumeClick()) { - //? if >=26 { + //? if >=26.2-neoforge { if (!WebHudOverlay.isHudVisible() || client.gui.screen() != null) { //? } else { if (!WebHudOverlay.isHudVisible() || client.screen != null) { @@ -127,7 +127,7 @@ private static void tryOpenMainMenu(MinecraftClient client) { } //? } else { /*private static void tryOpenMainMenu(Minecraft client) { - //? if >=26 { + //? if >=26.2-neoforge { if (client.gui.screen() instanceof WebViewScreen) { //? } else { if (client.screen instanceof WebViewScreen) { @@ -144,7 +144,7 @@ private static void tryOpenMainMenu(MinecraftClient client) { } return; } - //? if >=26 { + //? if >=26.2-neoforge { client.gui.setScreen(new WebViewScreen(WebGUIMainMenuUrl.getUrl())); //? } else { client.setScreen(new WebViewScreen(WebGUIMainMenuUrl.getUrl())); diff --git a/src/main/java/land/webgui/WebHudOverlay.java b/src/main/java/land/webgui/WebHudOverlay.java index 0620c7d..163af7d 100644 --- a/src/main/java/land/webgui/WebHudOverlay.java +++ b/src/main/java/land/webgui/WebHudOverlay.java @@ -66,7 +66,7 @@ public static boolean shouldDeliverHudBrowserInput(MinecraftClient client) { //? if fabric { boolean hasGui1 = client.currentScreen != null; //? } else { - /*//? if >=26 { + /*//? if >=26.2-neoforge { boolean hasGui1 = client.gui.screen() != null; //? } else { boolean hasGui1 = client.screen != null; @@ -92,7 +92,7 @@ public static boolean shouldForwardHudArrowKeys(MinecraftClient client) { //? if fabric { boolean hasGui2 = client.currentScreen != null; //? } else { - /*//? if >=26 { + /*//? if >=26.2-neoforge { boolean hasGui2 = client.gui.screen() != null; //? } else { boolean hasGui2 = client.screen != null; @@ -118,7 +118,7 @@ public static boolean shouldBlockVanillaWorldInteractions(MinecraftClient client //? if fabric { if (client == null || client.currentScreen != null) { //? } else { - /*//? if >=26 { + /*//? if >=26.2-neoforge { if (client == null || client.gui.screen() != null) { //? } else { if (client == null || client.screen != null) { @@ -144,7 +144,7 @@ public static void tickCursor(MinecraftClient client) { //? if fabric { if (client.currentScreen != null) { //? } else { - /*//? if >=26 { + /*//? if >=26.2-neoforge { if (client.gui.screen() != null) { //? } else { if (client.screen != null) { @@ -191,13 +191,13 @@ public static void applyServerOpen(MinecraftClient client, String url) { //? if fabric { if (client.currentScreen != null) { //? } else { - /*//? if >=26 { + /*//? if >=26.2-neoforge { if (client.gui.screen() != null) { //? } else { if (client.screen != null) { //? }*/ //? } - //? if >=26 { + //? if >=26.2-neoforge { /*client.gui.setScreen(null);*/ //? } else { client.setScreen(null); @@ -221,7 +221,7 @@ public static void toggleHud(MinecraftClient client) { //? if fabric { if (client.currentScreen instanceof WebViewScreen) { //? } else { - /*//? if >=26 { + /*//? if >=26.2-neoforge { if (client.gui.screen() instanceof WebViewScreen) { //? } else { if (client.screen instanceof WebViewScreen) { @@ -268,7 +268,7 @@ public static void toggleInteractive(MinecraftClient client) { //? if fabric { boolean hasGui7 = client.currentScreen != null; //? } else { - /*//? if >=26 { + /*//? if >=26.2-neoforge { boolean hasGui7 = client.gui.screen() != null; //? } else { boolean hasGui7 = client.screen != null; diff --git a/src/main/java/land/webgui/WebviewPageToClientBridge.java b/src/main/java/land/webgui/WebviewPageToClientBridge.java index 79f2791..958e4f6 100644 --- a/src/main/java/land/webgui/WebviewPageToClientBridge.java +++ b/src/main/java/land/webgui/WebviewPageToClientBridge.java @@ -79,7 +79,7 @@ private static void dispatch(String request, CefQueryCallback callback) { if (mc.currentScreen instanceof WebViewScreen) { mc.currentScreen.close(); //? } else { - /*//? if >=26 { + /*//? if >=26.2-neoforge { if (mc.gui.screen() instanceof WebViewScreen) { mc.gui.screen().onClose(); //? } else { diff --git a/versions/26.1.2-neoforge/gradle.properties b/versions/26.1.2-neoforge/gradle.properties new file mode 100644 index 0000000..2f1bcce --- /dev/null +++ b/versions/26.1.2-neoforge/gradle.properties @@ -0,0 +1,6 @@ +minecraft_version=26.1.2 +loader_type=neoforge +neoforge_version=26.1.2.86 +mcef_version=2.2.0-26.1.1-neoforge +minecraft_range=[26.1.2,26.1.2] +java_version=25