diff --git a/build.gradle b/build.gradle index 26245348..b0427448 100644 --- a/build.gradle +++ b/build.gradle @@ -8,17 +8,14 @@ plugins { dependencies { minecraft(libs.minecraft) - mappings(loom.layered() { - officialMojangMappings() - }) - modImplementation(libs.fabricLoader) - modImplementation(libs.fabricApi) + implementation(libs.fabricLoader) + implementation(libs.fabricApi) - modImplementation(libs.owoLib) + implementation(libs.owoLib) include(libs.owoSentinel) - modImplementation(libs.modMenu) + implementation(libs.modMenu) implementation(libs.sqlite) include(libs.sqlite) @@ -57,7 +54,7 @@ repositories { tasks.withType(JavaCompile).configureEach { options.encoding = "UTF-8" - options.release = 21 + options.release = 25 } java { @@ -100,8 +97,12 @@ tasks.register("cleanJar", Delete) { tasks.register("copyJar", Copy) { dependsOn cleanJar - from remapJar + from jar into "dist" } build.dependsOn copyJar + +loom { + accessWidenerPath = file("src/main/resources/civmodern.classtweaker") +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6ef60d4a..ceab91e4 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,13 +1,13 @@ [versions] -minecraft = "1.21.11" +minecraft = "26.1.2" # https://fabricmc.net/versions.html -fabricLoom = "1.15-SNAPSHOT" -fabricLoader = "0.18.4" -fabricApi = "0.141.3+1.21.11" +fabricLoom = "1.16-SNAPSHOT" +fabricLoader = "0.19.3" +fabricApi = "0.151.0+26.1.2" # https://modrinth.com/mod/owo-lib/versions?l=fabric -owo = "0.13.0+1.21.11" +owo = "0.13.0+26.1" # https://modrinth.com/mod/modmenu/versions?l=fabric -modMenu = "JWQVh32x" +modMenu = "p7gjPPpV" # https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc sqlite = "3.49.1.0" # https://mvnrepository.com/artifact/com.github.luben/zstd-jni @@ -24,6 +24,6 @@ sqlite = { group = "org.xerial", name = "sqlite-jdbc", version.ref = "sqlite" } zstd = { group = "com.github.luben", name = "zstd-jni", version.ref = "zstd" } [plugins] -fabricLoom = { id = "fabric-loom", version.ref = "fabricLoom" } +fabricLoom = { id = "net.fabricmc.fabric-loom", version.ref = "fabricLoom" } # https://github.com/GradleUp/shadow/releases #shadow = { id = "com.gradleup.shadow", version = "7.1.2" } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index d64cd491..61285a65 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 37f78a6a..5dd3c012 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.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 1aa94a42..adff685a 100755 --- a/gradlew +++ b/gradlew @@ -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. @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -55,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -84,7 +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 "${APP_HOME:-./}" > /dev/null && pwd -P ) || 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 @@ -112,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. @@ -170,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" ) @@ -203,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 7101f8e4..e509b2dd 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @@ -68,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/sh/okx/civmodern/common/AbstractCivModernMod.java b/src/main/java/sh/okx/civmodern/common/AbstractCivModernMod.java index 4055733f..b8138b07 100644 --- a/src/main/java/sh/okx/civmodern/common/AbstractCivModernMod.java +++ b/src/main/java/sh/okx/civmodern/common/AbstractCivModernMod.java @@ -15,7 +15,7 @@ import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.builder.RequiredArgumentBuilder; -import net.fabricmc.fabric.api.client.rendering.v1.SpecialGuiElementRegistry; +import net.fabricmc.fabric.api.client.rendering.v1.PictureInPictureRendererRegistry; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; import net.minecraft.client.Options; @@ -118,7 +118,7 @@ public AbstractCivModernMod() { } public final void init() { - SpecialGuiElementRegistry.register(ctx -> new BlitRenderer(ctx.vertexConsumers())); + PictureInPictureRendererRegistry.register(ctx -> new BlitRenderer(ctx.bufferSource())); CivModernPipelines.register(); registerKeyBinding(this.configBinding); diff --git a/src/main/java/sh/okx/civmodern/common/events/CommandRegistration.java b/src/main/java/sh/okx/civmodern/common/events/CommandRegistration.java index 7b95f931..b9ec13e7 100644 --- a/src/main/java/sh/okx/civmodern/common/events/CommandRegistration.java +++ b/src/main/java/sh/okx/civmodern/common/events/CommandRegistration.java @@ -1,7 +1,6 @@ package sh.okx.civmodern.common.events; import com.mojang.brigadier.CommandDispatcher; -import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.multiplayer.ClientSuggestionProvider; import net.minecraft.commands.CommandBuildContext; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/sh/okx/civmodern/common/events/PostRenderGameOverlayEvent.java b/src/main/java/sh/okx/civmodern/common/events/PostRenderGameOverlayEvent.java index 6c854121..86a1ed01 100644 --- a/src/main/java/sh/okx/civmodern/common/events/PostRenderGameOverlayEvent.java +++ b/src/main/java/sh/okx/civmodern/common/events/PostRenderGameOverlayEvent.java @@ -1,11 +1,11 @@ package sh.okx.civmodern.common.events; import java.util.Objects; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import org.jetbrains.annotations.NotNull; public record PostRenderGameOverlayEvent( - @NotNull GuiGraphics guiGraphics, + @NotNull GuiGraphicsExtractor guiGraphics, float deltaTick ) { public PostRenderGameOverlayEvent { diff --git a/src/main/java/sh/okx/civmodern/common/gui/screen/ItemsConfigScreen.java b/src/main/java/sh/okx/civmodern/common/gui/screen/ItemsConfigScreen.java index 88185371..6a239683 100644 --- a/src/main/java/sh/okx/civmodern/common/gui/screen/ItemsConfigScreen.java +++ b/src/main/java/sh/okx/civmodern/common/gui/screen/ItemsConfigScreen.java @@ -2,7 +2,7 @@ import java.util.List; import java.util.Objects; -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.Tooltip; import net.minecraft.client.input.MouseButtonEvent; @@ -154,16 +154,16 @@ protected void init() { } @Override - public void render( - final @NotNull GuiGraphics guiGraphics, + public void extractRenderState( + final @NotNull GuiGraphicsExtractor guiGraphics, final int mouseX, final int mouseY, final float delta ) { - super.render(guiGraphics, mouseX, mouseY, delta); + super.extractRenderState(guiGraphics, mouseX, mouseY, delta); - guiGraphics.renderItem(ITEM, this.itemX, this.itemY); - guiGraphics.renderItemDecorations(this.font, ITEM, this.itemX, this.itemY); + guiGraphics.item(ITEM, this.itemX, this.itemY); + guiGraphics.itemDecorations(this.font, ITEM, this.itemX, this.itemY); if (isCursorOverItem(mouseX, mouseY)) { // guiGraphics.renderTooltip(this.font, ITEM, mouseX, mouseY); diff --git a/src/main/java/sh/okx/civmodern/common/gui/screen/MapConfigScreen.java b/src/main/java/sh/okx/civmodern/common/gui/screen/MapConfigScreen.java index b1d05396..6f095ee9 100644 --- a/src/main/java/sh/okx/civmodern/common/gui/screen/MapConfigScreen.java +++ b/src/main/java/sh/okx/civmodern/common/gui/screen/MapConfigScreen.java @@ -1,7 +1,7 @@ package sh.okx.civmodern.common.gui.screen; import net.minecraft.client.Minecraft; -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.Renderable; @@ -9,7 +9,6 @@ import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.resources.Identifier; -import org.jetbrains.annotations.NotNull; import sh.okx.civmodern.common.CivMapConfig; import sh.okx.civmodern.common.ColourProvider; import sh.okx.civmodern.common.gui.DoubleValue; @@ -140,7 +139,8 @@ private HsbColourPicker addColourPicker(String title, int x, int y, int defaultC widget.setValue("#" + String.format("%06X", colourGet.get())); widget.setMaxLength(7); Pattern pattern = Pattern.compile("^(#[0-9A-F]{0,6})?$", Pattern.CASE_INSENSITIVE); - widget.setFilter(string -> pattern.matcher(string).matches()); + // TODO: Mojang removed this, couldn't figure out what to do instead, spent more time then I cared to on this + // widget.setFilter(string -> pattern.matcher(string).matches()); widget.setResponder(val -> { if (val.length() == 7) { int rgb = Integer.parseInt(val.substring(1), 16); @@ -191,12 +191,12 @@ public void mouseMoved(double d, double e) { } @Override - public void render(GuiGraphics graphics, int mouseX, int mouseY, float delta) { - graphics.drawCenteredString(this.font, this.title, this.width / 2, 15, 0xffffffff); + public void extractRenderState(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float delta) { + graphics.centeredText(this.font, this.title, this.width / 2, 15, 0xffffffff); // Don't call super since we don't want the dark or blurred background to obscure changes to the radar for (final Renderable renderable : ((ScreenAccessor) (Object) this).civmodern$getRenderables()) { - renderable.render(graphics, mouseX, mouseY, delta); + renderable.extractRenderState(graphics, mouseX, mouseY, delta); } } } diff --git a/src/main/java/sh/okx/civmodern/common/gui/screen/RadarConfigScreen.java b/src/main/java/sh/okx/civmodern/common/gui/screen/RadarConfigScreen.java index 4e633bf4..ca0b9eeb 100644 --- a/src/main/java/sh/okx/civmodern/common/gui/screen/RadarConfigScreen.java +++ b/src/main/java/sh/okx/civmodern/common/gui/screen/RadarConfigScreen.java @@ -6,7 +6,7 @@ import java.util.function.IntConsumer; import java.util.function.IntSupplier; import net.minecraft.client.Minecraft; -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.Renderable; import net.minecraft.client.gui.components.Tooltip; @@ -454,15 +454,15 @@ public void mouseMoved( } @Override - public void render( - final @NotNull GuiGraphics guiGraphics, + public void extractRenderState( + final @NotNull GuiGraphicsExtractor guiGraphics, final int mouseX, final int mouseY, final float partialTick ) { // Don't call super since we don't want the dark or blurred background to obscure changes to the radar for (final Renderable renderable : ((ScreenAccessor) (Object) this).civmodern$getRenderables()) { - renderable.render(guiGraphics, mouseX, mouseY, partialTick); + renderable.extractRenderState(guiGraphics, mouseX, mouseY, partialTick); } } diff --git a/src/main/java/sh/okx/civmodern/common/gui/widget/ColourTextEditBox.java b/src/main/java/sh/okx/civmodern/common/gui/widget/ColourTextEditBox.java index 0616796b..72176e2f 100644 --- a/src/main/java/sh/okx/civmodern/common/gui/widget/ColourTextEditBox.java +++ b/src/main/java/sh/okx/civmodern/common/gui/widget/ColourTextEditBox.java @@ -42,7 +42,8 @@ public ColourTextEditBox( super(font, x, y, width, height, Component.empty()); setColourFromInt(colourGetter.getAsInt()); setMaxLength(7); - setFilter((string) -> HEX_COLOUR_REGEX.matcher(string).matches()); + // TODO: Mojang removed this, couldn't figure out what to do instead, spent more time then I cared to on this + // setFilter((string) -> HEX_COLOUR_REGEX.matcher(string).matches()); setResponder((val) -> { if (val.length() <= 1) { return; diff --git a/src/main/java/sh/okx/civmodern/common/gui/widget/HsbColourPicker.java b/src/main/java/sh/okx/civmodern/common/gui/widget/HsbColourPicker.java index 0dcae27c..5c9ade32 100644 --- a/src/main/java/sh/okx/civmodern/common/gui/widget/HsbColourPicker.java +++ b/src/main/java/sh/okx/civmodern/common/gui/widget/HsbColourPicker.java @@ -9,11 +9,11 @@ import com.mojang.blaze3d.textures.GpuTextureView; import com.mojang.blaze3d.textures.TextureFormat; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.narration.NarrationElementOutput; import net.minecraft.client.gui.render.TextureSetup; -import net.minecraft.client.gui.render.state.BlitRenderState; +import net.minecraft.client.renderer.state.gui.BlitRenderState; import net.minecraft.client.input.MouseButtonEvent; import net.minecraft.client.renderer.RenderPipelines; import net.minecraft.network.chat.Component; @@ -71,7 +71,7 @@ public void setRVisible(boolean rvisible) { } @Override - public void renderWidget(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { + public void extractWidgetRenderState(GuiGraphicsExtractor guiGraphics, int mouseX, int mouseY, float partialTicks) { if (!rvisible) { return; } @@ -92,7 +92,7 @@ public void renderWidget(GuiGraphics guiGraphics, int mouseX, int mouseY, float guiGraphics.pose().translate(this.getX(), this.renderY + height); guiGraphics.guiRenderState - .submitGuiElement( + .addBlitToCurrentLayer( new BlitRenderState( RenderPipelines.GUI_TEXTURED, TextureSetup.singleTexture(this.saturationBrightnessTextureView, this.sampler), @@ -101,7 +101,7 @@ public void renderWidget(GuiGraphics guiGraphics, int mouseX, int mouseY, float ); guiGraphics.guiRenderState - .submitGuiElement( + .addBlitToCurrentLayer( new BlitRenderState( RenderPipelines.GUI_TEXTURED, TextureSetup.singleTexture(this.hueSelectorTextureView, this.sampler), diff --git a/src/main/java/sh/okx/civmodern/common/gui/widget/ImageButton.java b/src/main/java/sh/okx/civmodern/common/gui/widget/ImageButton.java index 3404ee24..1ca69c7b 100644 --- a/src/main/java/sh/okx/civmodern/common/gui/widget/ImageButton.java +++ b/src/main/java/sh/okx/civmodern/common/gui/widget/ImageButton.java @@ -1,6 +1,6 @@ package sh.okx.civmodern.common.gui.widget; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.narration.NarrationElementOutput; import net.minecraft.client.input.MouseButtonEvent; @@ -24,7 +24,7 @@ public void setImage(Identifier image) { } @Override - public void renderWidget(GuiGraphics guiGraphics, int i, int j, float f) { + public void extractWidgetRenderState(GuiGraphicsExtractor guiGraphics, int i, int j, float f) { int k = this.isHoveredOrFocused() ? 1 : 0; guiGraphics.blit(RenderPipelines.GUI_TEXTURED, image, this.getX(), this.getY(), 0, k * 20, this.width, this.height, 20, 40, -1); } diff --git a/src/main/java/sh/okx/civmodern/common/gui/widget/TextRenderable.java b/src/main/java/sh/okx/civmodern/common/gui/widget/TextRenderable.java index c5424a06..c90039e0 100644 --- a/src/main/java/sh/okx/civmodern/common/gui/widget/TextRenderable.java +++ b/src/main/java/sh/okx/civmodern/common/gui/widget/TextRenderable.java @@ -2,7 +2,7 @@ import java.util.Objects; import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.Renderable; import net.minecraft.network.chat.Component; import org.jetbrains.annotations.NotNull; @@ -45,8 +45,8 @@ public LeftAligned(@NotNull Font font, int x, int y, @NotNull Component text, in super(font, x, y, text, colour); } @Override - public void render(@NotNull GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { - guiGraphics.drawString(this.font, this.text, this.x, this.y, this.colour); + public void extractRenderState(@NotNull GuiGraphicsExtractor guiGraphics, int mouseX, int mouseY, float partialTick) { + guiGraphics.text(this.font, this.text, this.x, this.y, this.colour); } } @@ -58,8 +58,8 @@ public CentreAligned(@NotNull Font font, int x, int y, @NotNull Component text, super(font, x, y, text, colour); } @Override - public void render(@NotNull GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { - guiGraphics.drawCenteredString(this.font, this.text, this.x, this.y, this.colour); + public void extractRenderState(@NotNull GuiGraphicsExtractor guiGraphics, int mouseX, int mouseY, float partialTick) { + guiGraphics.centeredText(this.font, this.text, this.x, this.y, this.colour); } } @@ -71,8 +71,8 @@ public RightAligned(@NotNull Font font, int x, int y, @NotNull Component text, i super(font, x, y, text, colour); } @Override - public void render(@NotNull GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { - guiGraphics.drawString(this.font, this.text, this.x - this.font.width(this.text), this.y, this.colour); + public void extractRenderState(@NotNull GuiGraphicsExtractor guiGraphics, int mouseX, int mouseY, float partialTick) { + guiGraphics.text(this.font, this.text, this.x - this.font.width(this.text), this.y, this.colour); } } } diff --git a/src/main/java/sh/okx/civmodern/common/gui/widget/ToggleButton.java b/src/main/java/sh/okx/civmodern/common/gui/widget/ToggleButton.java index b54fe2de..ae7c632d 100644 --- a/src/main/java/sh/okx/civmodern/common/gui/widget/ToggleButton.java +++ b/src/main/java/sh/okx/civmodern/common/gui/widget/ToggleButton.java @@ -6,7 +6,7 @@ import net.minecraft.client.gui.components.Tooltip; import net.minecraft.network.chat.Component; import org.apache.commons.lang3.function.BooleanConsumer; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.input.InputWithModifiers; import org.jetbrains.annotations.NotNull; @@ -53,8 +53,8 @@ public void onPress(InputWithModifiers input) { } @Override - protected void renderContents(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { - super.renderContents(guiGraphics, mouseX, mouseY, partialTick); - renderDefaultLabel(guiGraphics.textRendererForWidget(this, GuiGraphics.HoveredTextEffects.NONE)); + protected void extractContents(GuiGraphicsExtractor guiGraphics, int mouseX, int mouseY, float partialTick) { + super.extractContents(guiGraphics, mouseX, mouseY, partialTick); + extractDefaultLabel(guiGraphics.textRendererForWidget(this, GuiGraphicsExtractor.HoveredTextEffects.NONE)); } } diff --git a/src/main/java/sh/okx/civmodern/common/map/Minimap.java b/src/main/java/sh/okx/civmodern/common/map/Minimap.java index 187397c0..8e2ed6d3 100644 --- a/src/main/java/sh/okx/civmodern/common/map/Minimap.java +++ b/src/main/java/sh/okx/civmodern/common/map/Minimap.java @@ -2,7 +2,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.RenderPipelines; import net.minecraft.client.renderer.rendertype.RenderTypes; @@ -64,7 +64,7 @@ public void onRender(PostRenderGameOverlayEvent event) { Scoreboard scoreboard = mc.level.getScoreboard(); Objective objective = scoreboard.getDisplayObjective(DisplaySlot.LIST); if (mc.options.hideGui || mc.debugEntries.isOverlayVisible() || !(!mc.options.keyPlayerList.isDown() || mc.isLocalServer() && mc.player.connection.getListedOnlinePlayers().size() <= 1 && objective == null)) { - event.guiGraphics().guiRenderState.submitPicturesInPictureState(new BlitRenderState(event.guiGraphics(), 0, 0, 0, 0, event.guiGraphics().pose(), + event.guiGraphics().guiRenderState.addPicturesInPictureState(new BlitRenderState(event.guiGraphics(), 0, 0, 0, 0, event.guiGraphics().pose(), ((source, stack) -> {}))); return; } @@ -73,7 +73,7 @@ public void onRender(PostRenderGameOverlayEvent event) { float size = config.getMinimapSize(); - GuiGraphics graphics = event.guiGraphics(); + GuiGraphicsExtractor graphics = event.guiGraphics(); Matrix3x2fStack matrices = graphics.pose(); matrices.pushMatrix(); @@ -144,11 +144,11 @@ public void onRender(PostRenderGameOverlayEvent event) { matrices.translate(-2, -2); graphics.fill(0, 0, (int) (size + 4), (int) (size + 4), 0xff000000 | provider.getBorderColour()); - graphics.guiRenderState.submitPicturesInPictureState(new BlitRenderState(graphics, 0, 0, translateX + config.getMinimapSize(), translateY + config.getMinimapSize(), matrices, + graphics.guiRenderState.addPicturesInPictureState(new BlitRenderState(graphics, 0, 0, translateX + config.getMinimapSize(), translateY + config.getMinimapSize(), matrices, ((source, stack) -> renderers.forEach(r -> r.render(source, stack))))); if (config.isShowMinimapCoords()) { - event.guiGraphics().drawCenteredString(mc.font, "%d, %s, %d".formatted(playerBX, playerBY, playerBZ), (int) (size / 2), (int) size + 6, -1); + event.guiGraphics().centeredText(mc.font, "%d, %s, %d".formatted(playerBX, playerBY, playerBZ), (int) (size / 2), (int) size + 6, -1); } if (config.isPlayerWaypointsEnabled()) { // TODO fix the player rendering above the chevron @@ -204,7 +204,7 @@ public void onRender(PostRenderGameOverlayEvent event) { matrices.scale(4, 4); int chevronColour = provider.getChevronColour() | 0xFF000000; matrices.translate(0, 0.75f); - graphics.guiRenderState.submitGuiElement(new ChevronRenderState( + graphics.guiRenderState.addGuiElement(new ChevronRenderState( CivModernPipelines.GUI_TRIANGLE_STRIP_BLEND, new Matrix3x2f(graphics.pose()), graphics.scissorStack.peek(), diff --git a/src/main/java/sh/okx/civmodern/common/map/RegionAtlasTexture.java b/src/main/java/sh/okx/civmodern/common/map/RegionAtlasTexture.java index 670fa03d..7018d9d5 100644 --- a/src/main/java/sh/okx/civmodern/common/map/RegionAtlasTexture.java +++ b/src/main/java/sh/okx/civmodern/common/map/RegionAtlasTexture.java @@ -3,7 +3,7 @@ import com.mojang.blaze3d.opengl.GlStateManager; import com.mojang.blaze3d.vertex.VertexConsumer; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.renderer.rendertype.RenderSetup; import net.minecraft.client.renderer.rendertype.RenderType; import org.lwjgl.opengl.GL; @@ -79,15 +79,15 @@ public void update(short[] colours, int x, int z, int minX, int maxX, int minZ, glGenerateMipmap(GL_TEXTURE_2D); } - public BlitRenderState.Renderer draw(GuiGraphics graphics, float x, float y, float scale) { + public BlitRenderState.Renderer draw(GuiGraphicsExtractor graphics, float x, float y, float scale) { return draw(graphics, x, y, false, scale, 0, 0, SIZE, SIZE, SIZE, SIZE, 0, 0); } - public BlitRenderState.Renderer drawLinear(GuiGraphics graphics, float x, float y, float scale, float xOff, float yOff, float xSize, float ySize, float width, float height, int translateX, int translateY) { + public BlitRenderState.Renderer drawLinear(GuiGraphicsExtractor graphics, float x, float y, float scale, float xOff, float yOff, float xSize, float ySize, float width, float height, int translateX, int translateY) { return draw(graphics, x, y, true, scale, xOff, yOff, xSize, ySize, width, height, translateX, translateY); } - private BlitRenderState.Renderer draw(GuiGraphics graphics, float x, float y, boolean linear, float scale, float xOff, float yOff, float xSize, float ySize, float width, float height, int translateX, int translateY) { + private BlitRenderState.Renderer draw(GuiGraphicsExtractor graphics, float x, float y, boolean linear, float scale, float xOff, float yOff, float xSize, float ySize, float width, float height, int translateX, int translateY) { return blit(graphics, (x / scale), (y / scale), linear, xOff / scale, yOff / scale, (width / scale), (height / scale), xSize / scale, ySize / scale, translateX, translateY); } @@ -97,18 +97,18 @@ public void delete() { }); } - private BlitRenderState.Renderer blit(GuiGraphics graphics, float renderX, float renderY, boolean linear, float textureXoffset, float texureYoffset, float renderWidth, float renderHeight, float textureWidth, float textureHeight, int translateX, int translateY) { + private BlitRenderState.Renderer blit(GuiGraphicsExtractor graphics, float renderX, float renderY, boolean linear, float textureXoffset, float texureYoffset, float renderWidth, float renderHeight, float textureWidth, float textureHeight, int translateX, int translateY) { return innerBlit(graphics, renderX, renderX + renderWidth, renderY, renderY + renderHeight, linear, renderWidth, renderHeight, textureXoffset, texureYoffset, textureWidth, textureHeight, translateX, translateY); } - private BlitRenderState.Renderer innerBlit(GuiGraphics graphics, float i, float j, float k, float l, boolean linear, float n, float o, float f, float g, float p, float q, int translateX, int translateY) { + private BlitRenderState.Renderer innerBlit(GuiGraphicsExtractor graphics, float i, float j, float k, float l, boolean linear, float n, float o, float f, float g, float p, float q, int translateX, int translateY) { return innerBlit(graphics, i, j, k, l, linear, (f + 0.0f) / p, (f + n) / p, (g + 0.0f) / q, (g + o) / q, translateX, translateY); } public static Map TEXTURES = new WeakHashMap<>(); public static Map LINEAR = new WeakHashMap<>(); - private BlitRenderState.Renderer innerBlit(GuiGraphics graphics, float i, float j, float k, float l, boolean linear, float f, float g, float h, float n, int translateX, int translateY) { + private BlitRenderState.Renderer innerBlit(GuiGraphicsExtractor graphics, float i, float j, float k, float l, boolean linear, float f, float g, float h, float n, int translateX, int translateY) { return (source, stack) -> { if (type == null) { this.texture = new RegionAbstractTexture(this); diff --git a/src/main/java/sh/okx/civmodern/common/map/WorldListener.java b/src/main/java/sh/okx/civmodern/common/map/WorldListener.java index b2ab2269..37e20801 100644 --- a/src/main/java/sh/okx/civmodern/common/map/WorldListener.java +++ b/src/main/java/sh/okx/civmodern/common/map/WorldListener.java @@ -168,7 +168,7 @@ public void onLoad(JoinEvent event) { this.minimap = new Minimap(this.waypoints, this.playerWaypoints, this.cache, this.config, this.provider); for (ChunkPos chunk : this.loadedChunks) { - LevelChunk levelChunk = level.getChunk(chunk.x, chunk.z); + LevelChunk levelChunk = level.getChunk(chunk.x(), chunk.z()); if (levelChunk != null) { this.cache.updateChunk(levelChunk); } diff --git a/src/main/java/sh/okx/civmodern/common/map/screen/EditWaypointModal.java b/src/main/java/sh/okx/civmodern/common/map/screen/EditWaypointModal.java index 403775e1..442fbdc2 100644 --- a/src/main/java/sh/okx/civmodern/common/map/screen/EditWaypointModal.java +++ b/src/main/java/sh/okx/civmodern/common/map/screen/EditWaypointModal.java @@ -12,7 +12,7 @@ import io.wispforest.owo.ui.core.Surface; import io.wispforest.owo.ui.core.VerticalAlignment; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.Button; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; @@ -86,7 +86,7 @@ public void setWaypoint(Waypoint waypoint) { builder.append("x:%s,y:%s,z:%s]".formatted(this.waypoint.x(), this.waypoint.y(), this.waypoint.z())); Minecraft.getInstance().keyboardHandler.setClipboard(builder.toString()); Minecraft.getInstance().setScreen(null); - Minecraft.getInstance().player.displayClientMessage(Component.translatable("civmodern.map.copy", Component.literal(builder.toString())).withColor(0x379FA3), false); + Minecraft.getInstance().player.sendSystemMessage(Component.translatable("civmodern.map.copy", Component.literal(builder.toString())).withColor(0x379FA3)); Minecraft.getInstance().keyboardHandler.setClipboard(builder.toString()); this.waypoint = null; }); @@ -185,11 +185,11 @@ public Waypoint getWaypoint() { } @Override - public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) { - super.render(guiGraphics, mouseX, mouseY, delta); + public void extractRenderState(GuiGraphicsExtractor guiGraphics, int mouseX, int mouseY, float delta) { + super.extractRenderState(guiGraphics, mouseX, mouseY, delta); if (visible) { this.colourPicker.setRVisible(true); - this.colourPicker.renderWidget(guiGraphics, mouseX, mouseY, delta); + this.colourPicker.extractWidgetRenderState(guiGraphics, mouseX, mouseY, delta); this.colourPicker.setRVisible(false); } } diff --git a/src/main/java/sh/okx/civmodern/common/map/screen/MapScreen.java b/src/main/java/sh/okx/civmodern/common/map/screen/MapScreen.java index 7738ac5c..eba9ac24 100644 --- a/src/main/java/sh/okx/civmodern/common/map/screen/MapScreen.java +++ b/src/main/java/sh/okx/civmodern/common/map/screen/MapScreen.java @@ -7,7 +7,7 @@ import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.Renderable; import net.minecraft.client.gui.components.Tooltip; import net.minecraft.client.gui.screens.Screen; @@ -192,7 +192,7 @@ public void setNewWaypoint(Waypoint waypoint) { } @Override - public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) { + public void extractRenderState(GuiGraphicsExtractor guiGraphics, int mouseX, int mouseY, float delta) { Matrix3x2fStack matrices = guiGraphics.pose(); float scale = (float) Minecraft.getInstance().getWindow().getGuiScale() * zoom; @@ -223,7 +223,7 @@ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) } } } - guiGraphics.guiRenderState.submitPicturesInPictureState(new BlitRenderState(guiGraphics, 0, 0, window.getGuiScaledWidth(), window.getGuiScaledHeight(), guiGraphics.pose(), + guiGraphics.guiRenderState.addPicturesInPictureState(new BlitRenderState(guiGraphics, 0, 0, window.getGuiScaledWidth(), window.getGuiScaledHeight(), guiGraphics.pose(), ((source, stack) -> renderers.forEach(r -> r.render(source, stack))))); matrices.pushMatrix(); @@ -265,7 +265,7 @@ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) matrices.translate(0, -16);//, -10); MutableComponent comp = Component.literal(str); - guiGraphics.drawString(font, comp, -font.width(comp) / 2, 0, -1, false);//, false, last, Font.DisplayMode.NORMAL, 0, 15728880, true); + guiGraphics.text(font, comp, -font.width(comp) / 2, 0, -1, false);//, false, last, Font.DisplayMode.NORMAL, 0, 15728880, true); guiGraphics.fill(-font.width(comp) / 2, -1, font.width(comp) / 2, 9, 1056964608); matrices.popMatrix(); } @@ -293,9 +293,9 @@ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) matrices.translate(0, -16); if (zoom <= 2) { MutableComponent comp = Component.literal(str); - guiGraphics.drawString(font, comp, (int) (-font.width(comp) / 2f), 0, colour, true); + guiGraphics.text(font, comp, (int) (-font.width(comp) / 2f), 0, colour, true); MutableComponent comp2 = Component.literal("(" + getAgo(waypoint.timestamp()) + ")"); - guiGraphics.drawString(font, comp2, (int) (-font.width(comp2) / 2f), 24, colour, true); + guiGraphics.text(font, comp2, (int) (-font.width(comp2) / 2f), 24, colour, true); } matrices.popMatrix(); } @@ -373,7 +373,7 @@ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) if (!str.isBlank()) { matrices.translate(0, -16); Component comp = Component.literal(str); - guiGraphics.drawString(font, comp, -font.width(comp) / 2, 0, -1); + guiGraphics.text(font, comp, -font.width(comp) / 2, 0, -1); guiGraphics.fill(-font.width(comp) / 2, -1, font.width(comp) / 2, 9, 1056964608); } matrices.popMatrix(); @@ -387,7 +387,7 @@ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) matrices.translate(prx, pry); matrices.scale(4, 4); matrices.rotate((float) Math.toRadians(player.getViewYRot(delta) % 360f)); - guiGraphics.guiRenderState.submitGuiElement(new ChevronRenderState( + guiGraphics.guiRenderState.addGuiElement(new ChevronRenderState( CivModernPipelines.GUI_TRIANGLE_STRIP_BLEND, new Matrix3x2f(guiGraphics.pose()), guiGraphics.scissorStack.peek(), @@ -425,7 +425,7 @@ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) matrices.pushMatrix(); matrices.translate((float) ((to.x - x) / scale), (float) ((to.y - y) / scale)); guiGraphics.pose().rotate(((float) Mth.atan2(dx, -dy))); - guiGraphics.guiRenderState.submitGuiElement(new LineElementRenderState( + guiGraphics.guiRenderState.addGuiElement(new LineElementRenderState( CivModernPipelines.GUI_QUADS, new Matrix3x2f(guiGraphics.pose()), guiGraphics.scissorStack.peek(), @@ -447,12 +447,12 @@ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) mapCache.addReference(key); } Short y = mapCache.getYLevel(px, pz); - guiGraphics.drawCenteredString(font, "(%d, %s, %d)".formatted(px, y == null ? "?" : Short.toString(y), pz), (int) (this.width / 2 / textScale), (int) ((this.height - 16) / textScale), -1); + guiGraphics.centeredText(font, "(%d, %s, %d)".formatted(px, y == null ? "?" : Short.toString(y), pz), (int) (this.width / 2 / textScale), (int) ((this.height - 16) / textScale), -1); matrices.popMatrix(); for (Renderable renderable : ((ScreenAccessor) this).civmodern$getRenderables()) { - renderable.render(guiGraphics, mouseX, mouseY, delta); + renderable.extractRenderState(guiGraphics, mouseX, mouseY, delta); } } diff --git a/src/main/java/sh/okx/civmodern/common/map/screen/Modal.java b/src/main/java/sh/okx/civmodern/common/map/screen/Modal.java index c5827dbc..edebadef 100644 --- a/src/main/java/sh/okx/civmodern/common/map/screen/Modal.java +++ b/src/main/java/sh/okx/civmodern/common/map/screen/Modal.java @@ -2,7 +2,7 @@ import io.wispforest.owo.ui.core.OwoUIAdapter; import io.wispforest.owo.ui.core.ParentUIComponent; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.Renderable; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.narration.NarratableEntry; @@ -20,9 +20,9 @@ protected Modal(OwoUIAdapter layout) { } @Override - public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) { + public void extractRenderState(GuiGraphicsExtractor guiGraphics, int mouseX, int mouseY, float delta) { if (visible) { - this.layout.render(guiGraphics, mouseX, mouseY, delta); + this.layout.extractRenderState(guiGraphics, mouseX, mouseY, delta); } } diff --git a/src/main/java/sh/okx/civmodern/common/map/screen/NewWaypointModal.java b/src/main/java/sh/okx/civmodern/common/map/screen/NewWaypointModal.java index 64ffe375..1478fce1 100644 --- a/src/main/java/sh/okx/civmodern/common/map/screen/NewWaypointModal.java +++ b/src/main/java/sh/okx/civmodern/common/map/screen/NewWaypointModal.java @@ -12,9 +12,8 @@ import io.wispforest.owo.ui.core.Surface; import io.wispforest.owo.ui.core.VerticalAlignment; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.Button; -import net.minecraft.client.player.LocalPlayer; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.resources.Identifier; @@ -146,11 +145,11 @@ public void open(String name, int x, int y, int z) { } @Override - public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) { - super.render(guiGraphics, mouseX, mouseY, delta); + public void extractRenderState(GuiGraphicsExtractor guiGraphics, int mouseX, int mouseY, float delta) { + super.extractRenderState(guiGraphics, mouseX, mouseY, delta); if (visible) { this.colourPicker.setRVisible(true); - this.colourPicker.renderWidget(guiGraphics, mouseX, mouseY, delta); + this.colourPicker.extractWidgetRenderState(guiGraphics, mouseX, mouseY, delta); this.colourPicker.setRVisible(false); } } diff --git a/src/main/java/sh/okx/civmodern/common/map/screen/PositionContextMenu.java b/src/main/java/sh/okx/civmodern/common/map/screen/PositionContextMenu.java index e410453f..45061b80 100644 --- a/src/main/java/sh/okx/civmodern/common/map/screen/PositionContextMenu.java +++ b/src/main/java/sh/okx/civmodern/common/map/screen/PositionContextMenu.java @@ -54,7 +54,7 @@ public void open(int targetX, Short targetY, int targetZ, int x, int z) { if (targetY != null) { Minecraft.getInstance().setScreen(null); String copied = "[x:%s,y:%s,z:%s]".formatted(targetX, targetY, targetZ); - Minecraft.getInstance().player.displayClientMessage(Component.translatable("civmodern.map.copy", Component.literal(copied)).withColor(0x379FA3), false); + Minecraft.getInstance().player.sendSystemMessage(Component.translatable("civmodern.map.copy", Component.literal(copied)).withColor(0x379FA3)); Minecraft.getInstance().keyboardHandler.setClipboard(copied); } }); diff --git a/src/main/java/sh/okx/civmodern/common/map/screen/ScalableLabelComponent.java b/src/main/java/sh/okx/civmodern/common/map/screen/ScalableLabelComponent.java index 364140c8..7ac15486 100644 --- a/src/main/java/sh/okx/civmodern/common/map/screen/ScalableLabelComponent.java +++ b/src/main/java/sh/okx/civmodern/common/map/screen/ScalableLabelComponent.java @@ -236,7 +236,7 @@ public void draw(OwoUIGraphics context, int mouseX, int mouseY, float partialTic if (hover && cx >= left && cx <= right && cy >= top - 2 && cy <= bottom + (2)) { context.fill((int) left, (int) top - 1, (int) right, (int) bottom + 1, 0xffa09f9b); } - context.drawString(this.textRenderer, renderText, (int) sx, (int) sy, this.color.get().argb(), this.shadow); + context.text(this.textRenderer, renderText, (int) sx, (int) sy, this.color.get().argb(), this.shadow); context.pop(); } @@ -247,13 +247,7 @@ public void draw(OwoUIGraphics context, int mouseX, int mouseY, float partialTic @Override public void drawTooltip(OwoUIGraphics context, int mouseX, int mouseY, float partialTicks, float delta) { super.drawTooltip(context, mouseX, mouseY, partialTicks, delta); - context.renderComponentHoverEffect(this.textRenderer, this.styleAt(mouseX - this.x, mouseY - this.y), mouseX, mouseY); - } - - @Override - public boolean shouldDrawTooltip(double mouseX, double mouseY) { - var hoveredStyle = this.styleAt((int) (mouseX - this.x), (int) (mouseY - this.y)); - return super.shouldDrawTooltip(mouseX, mouseY) || (hoveredStyle != null && hoveredStyle.getHoverEvent() != null && this.isInBoundingBox(mouseX, mouseY)); + context.setTooltipForNextFrame(this.textRenderer, text, mouseX, mouseY, null); } public boolean onMouseClick(double mouseX, double mouseY, int button) { @@ -284,11 +278,6 @@ public boolean onMouseClick(double mouseX, double mouseY, int button) { return false; } - protected Style styleAt(int mouseX, int mouseY) { - // componentStyleAtWidth was removed in 1.21.11; style hover effects are no longer supported here - return null; - } - @Override public void parseProperties(UIModel model, Element element, Map children) { super.parseProperties(model, element, children); diff --git a/src/main/java/sh/okx/civmodern/common/map/waypoints/PlayerWaypoint.java b/src/main/java/sh/okx/civmodern/common/map/waypoints/PlayerWaypoint.java index 6f75ed43..40cacb21 100644 --- a/src/main/java/sh/okx/civmodern/common/map/waypoints/PlayerWaypoint.java +++ b/src/main/java/sh/okx/civmodern/common/map/waypoints/PlayerWaypoint.java @@ -1,7 +1,7 @@ package sh.okx.civmodern.common.map.waypoints; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.components.PlayerFaceRenderer; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.components.PlayerFaceExtractor; import net.minecraft.resources.Identifier; import java.time.Instant; @@ -9,7 +9,7 @@ public record PlayerWaypoint(String playerName, UUID playerId, int x, int y, int z, Identifier playerSkin, Instant timestamp) { - public void render(GuiGraphics graphics, int colour) { - PlayerFaceRenderer.draw(graphics, playerSkin, -5, -5, 10, true, false, colour); + public void render(GuiGraphicsExtractor graphics, int colour) { + PlayerFaceExtractor.extractRenderState(graphics, playerSkin, -5, -5, 10, true, false, colour); } } diff --git a/src/main/java/sh/okx/civmodern/common/map/waypoints/Waypoint.java b/src/main/java/sh/okx/civmodern/common/map/waypoints/Waypoint.java index 83e43493..481c88e4 100644 --- a/src/main/java/sh/okx/civmodern/common/map/waypoints/Waypoint.java +++ b/src/main/java/sh/okx/civmodern/common/map/waypoints/Waypoint.java @@ -1,7 +1,7 @@ package sh.okx.civmodern.common.map.waypoints; import com.mojang.blaze3d.vertex.VertexConsumer; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderPipelines; import net.minecraft.client.renderer.rendertype.RenderType; @@ -21,11 +21,11 @@ public void render(Function type, MultiBufferSource sour buffer.addVertex(pose, -f, -f, 0).setLight(0xff).setUv(0, 0).setColor(colour); } - public void render2D(GuiGraphics guiGraphics) { + public void render2D(GuiGraphicsExtractor guiGraphics) { render2D(guiGraphics, 0xff); } - public void render2D(GuiGraphics guiGraphics, int transparency) { + public void render2D(GuiGraphicsExtractor guiGraphics, int transparency) { guiGraphics.blit(RenderPipelines.GUI_TEXTURED, resourceLocation(), -8, -8, 0, 0, 16, 16, 16, 16, transparency << 24 | colour()); } diff --git a/src/main/java/sh/okx/civmodern/common/mixins/ChatMixin.java b/src/main/java/sh/okx/civmodern/common/mixins/ChatMixin.java index 9f0331a3..b5f6a5e7 100644 --- a/src/main/java/sh/okx/civmodern/common/mixins/ChatMixin.java +++ b/src/main/java/sh/okx/civmodern/common/mixins/ChatMixin.java @@ -3,7 +3,7 @@ import com.llamalad7.mixinextras.sugar.Local; import com.llamalad7.mixinextras.sugar.ref.LocalRef; import net.minecraft.ChatFormatting; -import net.minecraft.client.GuiMessageTag; +import net.minecraft.client.multiplayer.chat.GuiMessageTag; import net.minecraft.client.gui.components.ChatComponent; import net.minecraft.network.chat.ClickEvent; import net.minecraft.network.chat.Component; @@ -22,7 +22,7 @@ @Mixin(ChatComponent.class) public class ChatMixin { @ModifyVariable( - method = "addMessage(Lnet/minecraft/network/chat/Component;Lnet/minecraft/network/chat/MessageSignature;Lnet/minecraft/client/GuiMessageTag;)V", + method = "addMessage(Lnet/minecraft/network/chat/Component;Lnet/minecraft/network/chat/MessageSignature;Lnet/minecraft/client/multiplayer/chat/GuiMessageSource;Lnet/minecraft/client/multiplayer/chat/GuiMessageTag;)V", at = @At("HEAD"), argsOnly = true ) diff --git a/src/main/java/sh/okx/civmodern/common/mixins/GuiGraphicsMixin.java b/src/main/java/sh/okx/civmodern/common/mixins/GuiGraphicsMixin.java index f4a25d67..275b1a61 100644 --- a/src/main/java/sh/okx/civmodern/common/mixins/GuiGraphicsMixin.java +++ b/src/main/java/sh/okx/civmodern/common/mixins/GuiGraphicsMixin.java @@ -1,7 +1,7 @@ package sh.okx.civmodern.common.mixins; import com.llamalad7.mixinextras.sugar.Local; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; @@ -12,9 +12,9 @@ import sh.okx.civmodern.common.AbstractCivModernMod; import sh.okx.civmodern.common.features.ExtendedItemStack; -@Mixin(GuiGraphics.class) +@Mixin(GuiGraphicsExtractor.class) public abstract class GuiGraphicsMixin { - @ModifyVariable(method = "renderItemCount", at = @At("HEAD"), argsOnly = true) + @ModifyVariable(method = "itemCount", at = @At("HEAD"), argsOnly = true) protected @Nullable String civmodern$showCompactedItem(String value, @Local(argsOnly = true) ItemStack item) { if (value != null) { return value; @@ -25,7 +25,7 @@ public abstract class GuiGraphicsMixin { } } - @ModifyConstant(method = "renderItemCount", constant = @Constant(intValue = -1)) + @ModifyConstant(method = "itemCount", constant = @Constant(intValue = -1)) protected int civmodern$colourCompactedItem(int itemColour, @Local(argsOnly = true) ItemStack item) { if (((ExtendedItemStack) (Object) item).isMarkedAsCompacted()) { return 0xff000000 | AbstractCivModernMod.getInstance().getColourProvider().getCompactedColour(); diff --git a/src/main/java/sh/okx/civmodern/common/radar/Radar.java b/src/main/java/sh/okx/civmodern/common/radar/Radar.java index d7b297fa..517d87ba 100644 --- a/src/main/java/sh/okx/civmodern/common/radar/Radar.java +++ b/src/main/java/sh/okx/civmodern/common/radar/Radar.java @@ -8,8 +8,8 @@ import io.wispforest.owo.ui.renderstate.RingElementRenderState; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.components.PlayerFaceRenderer; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.components.PlayerFaceExtractor; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.multiplayer.PlayerInfo; import net.minecraft.client.player.LocalPlayer; @@ -101,7 +101,7 @@ private void onWorldTickPing( "/civmodern_openwaypoint [x:" + pos.getX() + ",y:" + Minecraft.getInstance().player.getBlockY() + ",z:" + pos.getZ() + ",name:" + player.getScoreboardName() + "]"; - Minecraft.getInstance().player.displayClientMessage( + Minecraft.getInstance().player.sendSystemMessage( Component.translatable("civmodern.radar.enter", player.getName(), Component.literal(pos.getX() + " " + pos.getZ()) @@ -109,8 +109,8 @@ private void onWorldTickPing( .setStyle(Style.EMPTY .withClickEvent( new ClickEvent.RunCommand(lastWaypointCommand)) - .withHoverEvent(new HoverEvent.ShowText(Component.translatable("civmodern.radar.hover")))), - false); + .withHoverEvent(new HoverEvent.ShowText(Component.translatable("civmodern.radar.hover")))) + ); } if (config.isPingSoundEnabled()) { playPlayerSound("pling", player.getUUID()); @@ -127,7 +127,7 @@ private void onWorldTickPing( String lastWaypointCommand = "/civmodern_openwaypoint [x:" + pos.getX() + ",y:" + Minecraft.getInstance().player.getBlockY() + ",z:" + pos.getZ() + ",name:" + player.getScoreboardName() + "]"; - Minecraft.getInstance().player.displayClientMessage( + Minecraft.getInstance().player.sendSystemMessage( Component.translatable("civmodern.radar.leave", player.getName(), Component.literal(pos.getX() + " " + pos.getZ()) @@ -135,8 +135,8 @@ private void onWorldTickPing( .setStyle(Style.EMPTY .withClickEvent( new ClickEvent.RunCommand(lastWaypointCommand)) - .withHoverEvent(new HoverEvent.ShowText(Component.translatable("civmodern.radar.hover")))), - false); + .withHoverEvent(new HoverEvent.ShowText(Component.translatable("civmodern.radar.hover")))) + ); } } } @@ -162,7 +162,7 @@ private int radius() { return config.getRadarSize(); } - public void render(GuiGraphics guiGraphics, float delta) { + public void render(GuiGraphicsExtractor guiGraphics, float delta) { bgColour = (colourProvider.getBackgroundColour() & 0xFF_FF_FF) | (int) ((1 - config.getBackgroundTransparency()) * 255) << 24; fgColour = (colourProvider.getForegroundColour() & 0xFF_FF_FF) | (int) ((1 - config.getTransparency()) * 255) << 24; @@ -215,7 +215,7 @@ public void render(GuiGraphics guiGraphics, float delta) { guiGraphics.pose().popMatrix(); } - private void renderBoatsMinecarts(GuiGraphics guiGraphics, float delta) { + private void renderBoatsMinecarts(GuiGraphicsExtractor guiGraphics, float delta) { Minecraft minecraft = Minecraft.getInstance(); for (Entity entity : minecraft.level.entitiesForRendering()) { @@ -227,7 +227,7 @@ private void renderBoatsMinecarts(GuiGraphics guiGraphics, float delta) { } } - private void renderItems(GuiGraphics guiGraphics, float delta) { + private void renderItems(GuiGraphicsExtractor guiGraphics, float delta) { Minecraft minecraft = Minecraft.getInstance(); int i = 0; @@ -254,7 +254,7 @@ private double rescale(double dx, double dz) { return (1 / distance) * ld; } - private void renderEntity(GuiGraphics guiGraphics, Player player, Entity entity, float delta, ItemStack item, float blit, float entityScale) { + private void renderEntity(GuiGraphicsExtractor guiGraphics, Player player, Entity entity, float delta, ItemStack item, float blit, float entityScale) { double scale = config.getRadarSize() / config.getRange(); double px = player.xOld + (player.getX() - player.xOld) * delta; @@ -279,11 +279,11 @@ private void renderEntity(GuiGraphics guiGraphics, Player player, Entity entity, } guiGraphics.pose().scale(config.getIconSize() * entityScale, config.getIconSize() * entityScale); - guiGraphics.renderFakeItem(item, -8, -8); + guiGraphics.fakeItem(item, -8, -8); guiGraphics.pose().popMatrix(); } - private void renderPlayers(GuiGraphics guiGraphics, float delta) { + private void renderPlayers(GuiGraphicsExtractor guiGraphics, float delta) { Minecraft minecraft = Minecraft.getInstance(); for (RemotePlayer player : playersInRange) { @@ -321,13 +321,13 @@ private void renderPlayers(GuiGraphics guiGraphics, float delta) { } else { location = Identifier.withDefaultNamespace("textures/entity/steve.png"); } - PlayerFaceRenderer.draw(guiGraphics, location, -4, -4, 8, true, false, -1); + PlayerFaceExtractor.extractRenderState(guiGraphics, location, -4, -4, 8, true, false, -1); guiGraphics.pose().pushMatrix(); guiGraphics.pose().translate(0, 4.5f * config.getIconSize()); guiGraphics.pose().scale(0.6f * config.getTextSize(), 0.6f * config.getTextSize()); Component component = Component.literal( player.getScoreboardName() + " (" + ((int) Math.round(Math.sqrt(dx * dx + dz * dz))) + ")"); - guiGraphics.drawCenteredString(minecraft.font, component, 0, 1, -1); + guiGraphics.centeredText(minecraft.font, component, 0, 1, -1); guiGraphics.pose().popMatrix(); guiGraphics.pose().popMatrix(); @@ -335,8 +335,8 @@ private void renderPlayers(GuiGraphics guiGraphics, float delta) { } } - private void renderCircleBackground(GuiGraphics graphics) { - graphics.guiRenderState.submitGuiElement(new CircleElementRenderState( + private void renderCircleBackground(GuiGraphicsExtractor graphics) { + graphics.guiRenderState.addGuiElement(new CircleElementRenderState( OwoUIPipelines.GUI_TRIANGLE_FAN, new Matrix3x2f(graphics.pose()), graphics.scissorStack.peek(), @@ -344,9 +344,9 @@ private void renderCircleBackground(GuiGraphics graphics) { )); } - private void renderCircleBorder(GuiGraphics graphics, float radius) { + private void renderCircleBorder(GuiGraphicsExtractor graphics, float radius) { float thickness = radius == radius() ? 1f : 0.5f; - graphics.guiRenderState.submitGuiElement(new RingElementRenderState( + graphics.guiRenderState.addGuiElement(new RingElementRenderState( CivModernPipelines.GUI_TRIANGLE_STRIP_BLEND, new Matrix3x2f(graphics.pose()), graphics.scissorStack.peek(), @@ -354,7 +354,7 @@ private void renderCircleBorder(GuiGraphics graphics, float radius) { )); } - private void renderLines(GuiGraphics graphics) { + private void renderLines(GuiGraphicsExtractor graphics) { float thickness = 0.5f; float radius = radius() + 0.5f; @@ -362,7 +362,7 @@ private void renderLines(GuiGraphics graphics) { float rotationRadians = (float) Math.PI / numberOfLines; graphics.pose().pushMatrix(); for (int i = 0; i < numberOfLines; i++) { - graphics.guiRenderState.submitGuiElement(new LineElementRenderState( + graphics.guiRenderState.addGuiElement(new LineElementRenderState( CivModernPipelines.GUI_QUADS, new Matrix3x2f(graphics.pose()), graphics.scissorStack.peek(), diff --git a/src/main/java/sh/okx/civmodern/common/rendering/BlitRenderState.java b/src/main/java/sh/okx/civmodern/common/rendering/BlitRenderState.java index 2f51b6c8..f91c56ec 100644 --- a/src/main/java/sh/okx/civmodern/common/rendering/BlitRenderState.java +++ b/src/main/java/sh/okx/civmodern/common/rendering/BlitRenderState.java @@ -1,9 +1,9 @@ package sh.okx.civmodern.common.rendering; import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.navigation.ScreenRectangle; -import net.minecraft.client.gui.render.state.pip.PictureInPictureRenderState; +import net.minecraft.client.renderer.state.gui.pip.PictureInPictureRenderState; import net.minecraft.client.renderer.MultiBufferSource; import org.jetbrains.annotations.Nullable; import org.joml.Matrix3x2f; @@ -11,7 +11,7 @@ import sh.okx.civmodern.common.map.RegionAtlasTexture; public record BlitRenderState( - GuiGraphics graphics, + GuiGraphicsExtractor graphics, int x, int y, int sizeX, @@ -21,7 +21,7 @@ public record BlitRenderState( Renderer renderer ) implements PictureInPictureRenderState { public BlitRenderState( - GuiGraphics graphics, + GuiGraphicsExtractor graphics, int x, int y, int sizeX, diff --git a/src/main/java/sh/okx/civmodern/common/rendering/BlitRenderer.java b/src/main/java/sh/okx/civmodern/common/rendering/BlitRenderer.java index 8ae66d66..7c0a3f27 100644 --- a/src/main/java/sh/okx/civmodern/common/rendering/BlitRenderer.java +++ b/src/main/java/sh/okx/civmodern/common/rendering/BlitRenderer.java @@ -2,7 +2,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.gui.render.pip.PictureInPictureRenderer; -import net.minecraft.client.gui.render.state.GuiRenderState; +import net.minecraft.client.renderer.state.gui.GuiRenderState; import net.minecraft.client.renderer.MultiBufferSource; public class BlitRenderer extends PictureInPictureRenderer { @@ -18,6 +18,9 @@ public Class getRenderStateClass() { @Override public void prepare(BlitRenderState pictureInPictureRenderState, GuiRenderState guiRenderState, int i) { + // Quick check to avoid rendering when size is zero which can cause a crash + if ((pictureInPictureRenderState.sizeX() | pictureInPictureRenderState.sizeY()) == 0) return; + super.prepare(pictureInPictureRenderState, guiRenderState, i); } diff --git a/src/main/java/sh/okx/civmodern/common/rendering/ChevronRenderState.java b/src/main/java/sh/okx/civmodern/common/rendering/ChevronRenderState.java index e0f91baa..aea8a139 100644 --- a/src/main/java/sh/okx/civmodern/common/rendering/ChevronRenderState.java +++ b/src/main/java/sh/okx/civmodern/common/rendering/ChevronRenderState.java @@ -4,7 +4,7 @@ import com.mojang.blaze3d.vertex.VertexConsumer; import net.minecraft.client.gui.navigation.ScreenRectangle; import net.minecraft.client.gui.render.TextureSetup; -import net.minecraft.client.gui.render.state.GuiElementRenderState; +import net.minecraft.client.renderer.state.gui.GuiElementRenderState; import org.joml.Matrix3x2f; diff --git a/src/main/java/sh/okx/civmodern/common/rendering/CivModernPipelines.java b/src/main/java/sh/okx/civmodern/common/rendering/CivModernPipelines.java index 8a2d1ad3..7538b136 100644 --- a/src/main/java/sh/okx/civmodern/common/rendering/CivModernPipelines.java +++ b/src/main/java/sh/okx/civmodern/common/rendering/CivModernPipelines.java @@ -2,7 +2,9 @@ import com.mojang.blaze3d.pipeline.BlendFunction; import com.mojang.blaze3d.pipeline.RenderPipeline; -import com.mojang.blaze3d.platform.DepthTestFunction; +import com.mojang.blaze3d.pipeline.ColorTargetState; +import com.mojang.blaze3d.pipeline.DepthStencilState; +import com.mojang.blaze3d.platform.CompareOp; import com.mojang.blaze3d.platform.DestFactor; import com.mojang.blaze3d.platform.SourceFactor; import com.mojang.blaze3d.shaders.UniformType; @@ -11,6 +13,8 @@ import net.minecraft.client.renderer.RenderPipelines; import net.minecraft.resources.Identifier; +import java.util.Optional; + public class CivModernPipelines { public static final RenderPipeline GUI_TRIANGLE_STRIP_BLEND = RenderPipelines.register(RenderPipeline.builder(RenderPipelines.GUI_SNIPPET) .withLocation(Identifier.fromNamespaceAndPath("owo", "pipeline/gui_triangle_strip2")) @@ -22,22 +26,40 @@ public class CivModernPipelines { .build(); public static final RenderPipeline TEXT2 = RenderPipeline.builder(RenderPipelines.GUI_TEXTURED_SNIPPET) - .withDepthTestFunction(DepthTestFunction.LEQUAL_DEPTH_TEST) - .withBlend(new BlendFunction(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA, SourceFactor.ONE, DestFactor.ONE_MINUS_SRC_ALPHA)) - .withDepthWrite(true) + .withDepthStencilState(new DepthStencilState(CompareOp.LESS_THAN_OR_EQUAL, true)) + .withColorTargetState(new ColorTargetState(new BlendFunction(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA, SourceFactor.ONE, DestFactor.ONE_MINUS_SRC_ALPHA))) .withLocation(Identifier.fromNamespaceAndPath("civmodern", "pipeline/text")) .build(); public static final RenderPipeline TEXT = RenderPipeline.builder(RenderPipelines.GUI_TEXTURED_SNIPPET) - .withDepthTestFunction(DepthTestFunction.NO_DEPTH_TEST) - .withBlend(new BlendFunction(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA, SourceFactor.ONE, DestFactor.ONE_MINUS_SRC_ALPHA)) - .withDepthWrite(true) + .withDepthStencilState(new DepthStencilState(CompareOp.ALWAYS_PASS, true)) + .withColorTargetState(new ColorTargetState(new BlendFunction(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA, SourceFactor.ONE, DestFactor.ONE_MINUS_SRC_ALPHA))) .withLocation(Identifier.fromNamespaceAndPath("civmodern", "pipeline/text")) .build(); - public static final RenderPipeline.Snippet MATRICES_PROJECTION_SNIPPET = RenderPipeline.builder().withUniform("DynamicTransforms", UniformType.UNIFORM_BUFFER).withUniform("Projection", UniformType.UNIFORM_BUFFER).buildSnippet(); - public static final RenderPipeline.Snippet COLOR_WRITE = RenderPipeline.builder().withColorWrite(true).withDepthWrite(false).buildSnippet(); - public static final RenderPipeline.Snippet POSITION_TEX_COLOR_SHADER = RenderPipeline.builder(MATRICES_PROJECTION_SNIPPET).withLocation("cm/pipeline/position_tex_color").withVertexShader("core/position_tex_color").withFragmentShader("core/position_tex_color").withSampler("Sampler0").buildSnippet(); - public static final RenderPipeline REGION_DEFAULT_RENDER_PIPELINE = RenderPipeline.builder(POSITION_TEX_COLOR_SHADER, COLOR_WRITE).withLocation("cm/pipeline/pos_tex_color").withVertexFormat(DefaultVertexFormat.POSITION_TEX_COLOR, VertexFormat.Mode.QUADS).withDepthTestFunction(DepthTestFunction.LEQUAL_DEPTH_TEST).withBlend(BlendFunction.TRANSLUCENT).withCull(false).build(); + public static final RenderPipeline.Snippet MATRICES_PROJECTION_SNIPPET = RenderPipeline.builder() + .withUniform("DynamicTransforms", UniformType.UNIFORM_BUFFER) + .withUniform("Projection", UniformType.UNIFORM_BUFFER) + .buildSnippet(); + + public static final RenderPipeline.Snippet COLOR_WRITE = RenderPipeline.builder() + .withColorTargetState(new ColorTargetState(BlendFunction.OVERLAY)) + .withDepthStencilState(Optional.empty()) + .buildSnippet(); + + public static final RenderPipeline.Snippet POSITION_TEX_COLOR_SHADER = RenderPipeline.builder(MATRICES_PROJECTION_SNIPPET) + .withLocation("cm/pipeline/position_tex_color") + .withVertexShader("core/position_tex_color") + .withFragmentShader("core/position_tex_color") + .withSampler("Sampler0") + .buildSnippet(); + + public static final RenderPipeline REGION_DEFAULT_RENDER_PIPELINE = RenderPipeline.builder(POSITION_TEX_COLOR_SHADER, COLOR_WRITE) + .withLocation("cm/pipeline/pos_tex_color") + .withVertexFormat(DefaultVertexFormat.POSITION_TEX_COLOR, VertexFormat.Mode.QUADS) + .withDepthStencilState(new DepthStencilState(CompareOp.LESS_THAN_OR_EQUAL, true)) + .withColorTargetState(new ColorTargetState(BlendFunction.TRANSLUCENT)) + .withCull(false) + .build(); public static void register() { RenderPipelines.register(GUI_QUADS); diff --git a/src/main/java/sh/okx/civmodern/fabric/FabricCivModernBootstrap.java b/src/main/java/sh/okx/civmodern/fabric/FabricCivModernBootstrap.java index 8ea39410..f854dc4f 100644 --- a/src/main/java/sh/okx/civmodern/fabric/FabricCivModernBootstrap.java +++ b/src/main/java/sh/okx/civmodern/fabric/FabricCivModernBootstrap.java @@ -8,8 +8,9 @@ import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents; -import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; -import net.fabricmc.fabric.api.client.rendering.v1.world.WorldRenderEvents; +import net.fabricmc.fabric.api.client.rendering.v1.hud.HudElementRegistry; +import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderEvents; +import net.minecraft.resources.Identifier; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientSuggestionProvider; import org.apache.logging.log4j.LogManager; @@ -39,16 +40,15 @@ public void onInitializeClient() { ClientTickEvents.START_CLIENT_TICK.register((client) -> { mod.eventBus.post(new ClientTickEvent()); }); - HudRenderCallback.EVENT.register((guiGraphics, tickDelta) -> { + HudElementRegistry.addLast(Identifier.fromNamespaceAndPath("civmodern", "main"), (guiGraphics, tickDelta) -> { mod.eventBus.post(new PostRenderGameOverlayEvent(guiGraphics, tickDelta.getGameTimeDeltaPartialTick(true))); }); ClientPlayConnectionEvents.JOIN.register((handler, sender, client) -> mod.eventBus.post(new JoinEvent())); ClientPlayConnectionEvents.DISCONNECT.register((handler, client) -> mod.eventBus.post(new LeaveEvent())); - HudRenderCallback.EVENT.register(((matrixStack, tickDelta) -> mod.eventBus.post(new PostRenderGameOverlayEvent(matrixStack, tickDelta.getGameTimeDeltaPartialTick(true))))); ClientChunkEvents.CHUNK_LOAD.register((level, chunk) -> mod.eventBus.post(new ChunkLoadEvent(level, chunk))); - WorldRenderEvents.END_MAIN.register(context -> { - mod.eventBus.post(new WorldRenderLastEvent(context.matrices(), context.consumers(), Minecraft.getInstance().getDeltaTracker().getGameTimeDeltaPartialTick(true))); + LevelRenderEvents.END_MAIN.register(context -> { + mod.eventBus.post(new WorldRenderLastEvent(context.poseStack(), context.bufferSource(), Minecraft.getInstance().getDeltaTracker().getGameTimeDeltaPartialTick(true))); }); ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> mod.eventBus.post(new CommandRegistration((CommandDispatcher) (CommandDispatcher) dispatcher, registryAccess))); diff --git a/src/main/java/sh/okx/civmodern/fabric/FabricCivModernMod.java b/src/main/java/sh/okx/civmodern/fabric/FabricCivModernMod.java index d63f97a0..5d5b9e47 100644 --- a/src/main/java/sh/okx/civmodern/fabric/FabricCivModernMod.java +++ b/src/main/java/sh/okx/civmodern/fabric/FabricCivModernMod.java @@ -1,12 +1,12 @@ package sh.okx.civmodern.fabric; -import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; +import net.fabricmc.fabric.api.client.keymapping.v1.KeyMappingHelper; import net.minecraft.client.KeyMapping; import sh.okx.civmodern.common.AbstractCivModernMod; public class FabricCivModernMod extends AbstractCivModernMod { @Override public void registerKeyBinding(KeyMapping mapping) { - KeyBindingHelper.registerKeyBinding(mapping); + KeyMappingHelper.registerKeyMapping(mapping); } } diff --git a/src/main/resources/civmodern.classtweaker b/src/main/resources/civmodern.classtweaker new file mode 100644 index 00000000..959d879d --- /dev/null +++ b/src/main/resources/civmodern.classtweaker @@ -0,0 +1,3 @@ +classTweaker v1 official + +accessible class com/mojang/blaze3d/opengl/GlCommandEncoder diff --git a/src/main/resources/civmodern.common.mixins.json b/src/main/resources/civmodern.common.mixins.json index ef6b5e00..412220d5 100644 --- a/src/main/resources/civmodern.common.mixins.json +++ b/src/main/resources/civmodern.common.mixins.json @@ -2,7 +2,7 @@ "required": true, "minVersion": "0.8", "package": "sh.okx.civmodern.common.mixins", - "compatibilityLevel": "JAVA_17", + "compatibilityLevel": "JAVA_25", "mixins": [], "client": [ "BlockStateChangeMixin", diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 2224c272..0b0fc967 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -23,9 +23,10 @@ "depends": { "minecraft": "${minecraft_version}", "fabricloader": ">=${fabric_loader_version}", - "fabric": "*" + "fabric-api": "*" }, "mixins": [ "civmodern.common.mixins.json" - ] + ], + "accessWidener": "civmodern.classtweaker" }