From 551e06f09269cfe27022e9b9417b84044d559c10 Mon Sep 17 00:00:00 2001 From: "Jill \"oatmealine\" Monoids" Date: Tue, 28 Mar 2023 20:21:41 +0300 Subject: [PATCH] 1.19.4 port Co-authored-by: Pqtato --- build.gradle | 6 +- gradle.properties | 18 +-- .../PressableTextWithTooltipWidget.java | 25 +--- .../screen/CustomTitleScreen.java | 115 ++++++++---------- .../screen/SlideshowBackground.java | 6 +- src/main/resources/fabric.mod.json | 2 +- 6 files changed, 74 insertions(+), 98 deletions(-) diff --git a/build.gradle b/build.gradle index 2809496..0625bf1 100644 --- a/build.gradle +++ b/build.gradle @@ -16,7 +16,8 @@ repositories { // See https://docs.gradle.org/current/userguide/declaring_repositories.html // for more information about repositories. - maven { url = "https://api.modrinth.com/maven" } // LazyDFU, Suggestion Tweaker + // no longer needed, see dependencies below + // maven { url = "https://api.modrinth.com/maven" } // LazyDFU, Suggestion Tweaker maven { url = "https://maven.terraformersmc.com" } // Mod Menu maven { url = "https://maven.shedaniel.me/" } // Cloth Config } @@ -30,7 +31,8 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - modLocalRuntime("maven.modrinth:lazydfu:0.1.2") // lazydfu - improves start times + // lazydfu is no longer needed on 1.19.4+ + //modLocalRuntime("maven.modrinth:lazydfu:0.1.2") // lazydfu - improves start times //modLocalRuntime("me.shedaniel.cloth:cloth-config-fabric:${project.cloth_config_version}") { exclude(group: "net.fabricmc.fabric-api") } // required for suggestion tweaker // does not function on 1.19.2 //modLocalRuntime("maven.modrinth:suggestion-tweaker:${project.suggestion_tweaker_version}") // suggestion tweaker - dev QOL, improves command suggestions diff --git a/gradle.properties b/gradle.properties index 4b80083..775dc8d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,24 +3,24 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/develop - minecraft_version=1.19.2 - accepted_minecraft_version=1.19,1.19.1,1.19.2 - yarn_mappings=1.19.2+build.28 - loader_version=0.14.10 + minecraft_version=1.19.4 + accepted_minecraft_version=1.19.4 + yarn_mappings=1.19.4+build.1 + loader_version=0.14.18 # Mod Properties - mod_version = 1.1+1.19 - mod_version_friendly = 1.1 for 1.19.2 + mod_version = 1.2+1.19.4 + mod_version_friendly = 1.2 for 1.19.4 maven_group = zone.oat archives_base_name = gmod-title-screen # Dependencies - fabric_version=0.66.0+1.19.2 + fabric_version=0.76.0+1.19.4 # https://modrinth.com/mod/modmenu - modmenu_version=4.1.0 + modmenu_version=6.1.0-rc.4 # Dev environment # https://modrinth.com/mod/suggestion-tweaker #suggestion_tweaker_version = 1.19.1-1.3.1 # https://modrinth.com/mod/cloth-config - cloth_config_version = 8.2.88 + cloth_config_version = 10.0.96 diff --git a/src/main/java/zone/oat/gmodtitlescreen/PressableTextWithTooltipWidget.java b/src/main/java/zone/oat/gmodtitlescreen/PressableTextWithTooltipWidget.java index 1dd2215..034fb2d 100644 --- a/src/main/java/zone/oat/gmodtitlescreen/PressableTextWithTooltipWidget.java +++ b/src/main/java/zone/oat/gmodtitlescreen/PressableTextWithTooltipWidget.java @@ -3,32 +3,17 @@ package zone.oat.gmodtitlescreen; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder; -import net.minecraft.client.gui.screen.narration.NarrationPart; -import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.client.gui.tooltip.Tooltip; import net.minecraft.client.gui.widget.PressableTextWidget; -import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; @Environment(EnvType.CLIENT) public class PressableTextWithTooltipWidget extends PressableTextWidget { - protected final ButtonWidget.TooltipSupplier tooltipSupplier; + protected final Tooltip tooltip; - public PressableTextWithTooltipWidget(int x, int y, int width, int height, Text text, ButtonWidget.PressAction onPress, TextRenderer textRenderer, ButtonWidget.TooltipSupplier tooltipSupplier) { + public PressableTextWithTooltipWidget(int x, int y, int width, int height, Text text, PressAction onPress, TextRenderer textRenderer, Tooltip tooltip) { super(x, y, width, height, text, onPress, textRenderer); - this.tooltipSupplier = tooltipSupplier; - } - - @Override - public void renderTooltip(MatrixStack matrices, int mouseX, int mouseY) { - super.renderTooltip(matrices, mouseX, mouseY); - this.tooltipSupplier.onTooltip(this, matrices, mouseX, mouseY); - } - - @Override - public void appendNarrations(NarrationMessageBuilder builder) { - super.appendNarrations(builder); - this.appendDefaultNarrations(builder); - this.tooltipSupplier.supply(text -> builder.put(NarrationPart.HINT, text)); + this.tooltip = tooltip; + setTooltip(tooltip); } } diff --git a/src/main/java/zone/oat/gmodtitlescreen/screen/CustomTitleScreen.java b/src/main/java/zone/oat/gmodtitlescreen/screen/CustomTitleScreen.java index 9146892..f640fd8 100644 --- a/src/main/java/zone/oat/gmodtitlescreen/screen/CustomTitleScreen.java +++ b/src/main/java/zone/oat/gmodtitlescreen/screen/CustomTitleScreen.java @@ -9,12 +9,14 @@ import net.fabricmc.loader.api.FabricLoader; import net.minecraft.SharedConstants; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawableHelper; -import net.minecraft.client.gui.screen.*; +import net.minecraft.client.gui.screen.ConfirmLinkScreen; +import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen; import net.minecraft.client.gui.screen.option.AccessibilityOptionsScreen; import net.minecraft.client.gui.screen.option.LanguageOptionsScreen; import net.minecraft.client.gui.screen.option.OptionsScreen; import net.minecraft.client.gui.screen.world.SelectWorldScreen; +import net.minecraft.client.gui.tooltip.Tooltip; import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.PressableTextWidget; import net.minecraft.client.gui.widget.TexturedButtonWidget; @@ -26,8 +28,7 @@ import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.util.Util; import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.Vec2f; -import net.minecraft.util.math.Vec3f; +import net.minecraft.util.math.RotationAxis; import org.jetbrains.annotations.Nullable; import zone.oat.gmodtitlescreen.Mod; import zone.oat.gmodtitlescreen.ModIdentifier; @@ -36,7 +37,6 @@ import zone.oat.gmodtitlescreen.PressableTextWithTooltipWidget; import java.util.Random; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; -import java.util.function.Consumer; @Environment(EnvType.CLIENT) public class CustomTitleScreen extends Screen { @@ -51,30 +51,6 @@ public class CustomTitleScreen extends Screen { private PressableTextWidget version; - private class DisabledTooltipSupplier implements ButtonWidget.TooltipSupplier { - private final Text tooltip; - - public DisabledTooltipSupplier(Text tooltip) { - this.tooltip = tooltip; - } - - @Override - public void onTooltip(ButtonWidget button, MatrixStack matrices, int i, int j) { - if (!button.active) { - CustomTitleScreen.this.renderOrderedTooltip( - matrices, - CustomTitleScreen.this.client.textRenderer.wrapLines(this.tooltip, Math.max(CustomTitleScreen.this.width / 2 - 43, 170)), - i, j - ); - } - } - - @Override - public void supply(Consumer consumer) { - consumer.accept(this.tooltip); - } - } - private class SmallPressableTextWidget extends PressableTextWidget { public SmallPressableTextWidget(int x, int y, int width, int height, Text text, PressAction onPress, TextRenderer textRenderer) { super(x, y, width, height, text, onPress, textRenderer); @@ -96,9 +72,9 @@ public class CustomTitleScreen extends Screen { int padding = 3; RenderSystem.disableBlend(); - RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShader(GameRenderer::getPositionTexProgram); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - DrawableHelper.fill(matrices, version.x - padding, version.y - padding, version.x + version.getWidth() + padding * 2, version.y + version.getHeight() + padding * 2, 0xFF111111); + DrawableHelper.fill(matrices, version.getX() - padding, version.getY() - padding, version.getX() + version.getWidth() + padding * 2, version.getY() + version.getHeight() + padding * 2, 0xFF111111); super.renderButton(matrices, mouseX, mouseY, delta); @@ -188,39 +164,52 @@ public class CustomTitleScreen extends Screen { int buttonSectionSpacing = 6; this.addDrawableChild(new PressableTextWidget( - buttonsX, - buttonsY, - 130, - buttonHeight, - Text.translatable("menu.gmod-title-screen.singleplayer"), - button -> this.client.setScreen(new SelectWorldScreen(this)), - this.textRenderer + buttonsX, + buttonsY, + 130, + buttonHeight, + Text.translatable("menu.gmod-title-screen.singleplayer"), + button -> this.client.setScreen(new SelectWorldScreen(this)), + this.textRenderer )); this.addDrawableChild(new PressableTextWidget( - buttonsX, - buttonsY + buttonSpacing * 1, - 130, - buttonHeight, - Text.translatable("menu.gmod-title-screen.multiplayer"), - button -> { - this.client.setScreen(new MultiplayerScreen(this)); - }, - this.textRenderer + buttonsX, + buttonsY + buttonSpacing * 1, + 130, + buttonHeight, + Text.translatable("menu.gmod-title-screen.multiplayer"), + button -> { + this.client.setScreen(new MultiplayerScreen(this)); + }, + this.textRenderer )); boolean modsButtonActive = FabricLoader.getInstance().isModLoaded("modmenu"); - var modsButton = this.addDrawableChild(new PressableTextWithTooltipWidget( - buttonsX, - buttonsY + buttonSpacing * 2 + buttonSectionSpacing, - 98, - buttonHeight, - Text.translatable("menu.gmod-title-screen.modmenu").formatted(modsButtonActive ? Formatting.RESET : Formatting.GRAY), - button -> this.client.setScreen(new ModsScreen(this)), - textRenderer, - new DisabledTooltipSupplier(Text.translatable("menu.gmod-title-screen.modmenu.not-installed")) - )); - modsButton.active = modsButtonActive; + if (modsButtonActive) { + var modsButton = this.addDrawableChild(new PressableTextWidget( + buttonsX, + buttonsY + buttonSpacing * 2 + buttonSectionSpacing, + 98, + buttonHeight, + Text.translatable("menu.gmod-title-screen.modmenu"), + button -> this.client.setScreen(new ModsScreen(this)), + textRenderer + )); + modsButton.active = true; + } else { + var modsButton = this.addDrawableChild(new PressableTextWithTooltipWidget( + buttonsX, + buttonsY + buttonSpacing * 2 + buttonSectionSpacing, + 98, + buttonHeight, + Text.translatable("menu.gmod-title-screen.modmenu").formatted(Formatting.GRAY), + button -> {}, + textRenderer, + Tooltip.of(Text.translatable("menu.gmod-title-screen.modmenu.not-installed"), Text.translatable("menu.gmod-title-screen.modmenu.not-installed")) + )); + modsButton.active = false; + } this.addDrawableChild(new PressableTextWidget( buttonsX, @@ -317,21 +306,21 @@ public class CustomTitleScreen extends Screen { SlideshowBackground.render(matrices, delta, this.width, this.height); RenderSystem.disableBlend(); - RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShader(GameRenderer::getPositionTexProgram); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); int gradientWidth = (int)(this.width * 0.7); matrices.push(); matrices.translate(gradientWidth/2f, this.height/2f, 0); - matrices.multiply(Vec3f.POSITIVE_Z.getDegreesQuaternion(-90f)); + matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(-90f)); DrawableHelper.fillGradient(matrices, -(int)Math.floor(this.height/2f), -(int)Math.floor(gradientWidth/2f) - 1, (int)Math.ceil(this.height/2f), (int)Math.ceil(gradientWidth/2f), 0x7b000000, 0x00000000, 0); matrices.pop(); DrawableHelper.fill(matrices, 0, this.height - 24, this.width, this.height, 0x70111111); if (Mod.config.showGModLogo) { - RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShader(GameRenderer::getPositionTexProgram); //RenderSystem.defaultBlendFunc(); RenderSystem.enableBlend(); RenderSystem.blendFunc(GlStateManager.SrcFactor.ONE, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA); @@ -343,7 +332,7 @@ public class CustomTitleScreen extends Screen { RenderSystem.disableBlend(); RenderSystem.defaultBlendFunc(); } else { - RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShader(GameRenderer::getPositionTexProgram); RenderSystem.setShaderTexture(0, MINECRAFT_TITLE_TEXTURE); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); if (this.isMinceraft) { @@ -370,11 +359,11 @@ public class CustomTitleScreen extends Screen { if (this.splashText != null && Mod.config.showSplashText) { matrices.push(); matrices.translate(getSplashTextX(), logoY + getLogoHeight() - 10, 0.0); - matrices.multiply(Vec3f.POSITIVE_Z.getDegreesQuaternion(-20.0F)); + matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(-20.0F)); float h = 1.8F - MathHelper.abs(MathHelper.sin((float)(Util.getMeasuringTimeMs() % 1000L) / 1000.0F * (float) (Math.PI * 2)) * 0.1F); h = h * 100.0F / (float)(this.textRenderer.getWidth(this.splashText) + 32); matrices.scale(h, h, h); - drawCenteredText(matrices, this.textRenderer, this.splashText, 0, -8, 16776960); + drawCenteredTextWithShadow(matrices, this.textRenderer, this.splashText, 0, -8, 16776960); matrices.pop(); } diff --git a/src/main/java/zone/oat/gmodtitlescreen/screen/SlideshowBackground.java b/src/main/java/zone/oat/gmodtitlescreen/screen/SlideshowBackground.java index 6040494..bca112b 100644 --- a/src/main/java/zone/oat/gmodtitlescreen/screen/SlideshowBackground.java +++ b/src/main/java/zone/oat/gmodtitlescreen/screen/SlideshowBackground.java @@ -10,7 +10,7 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.util.math.Vector2f; import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.Vec3f; +import net.minecraft.util.math.RotationAxis; import zone.oat.gmodtitlescreen.ModIdentifier; import java.util.concurrent.CompletableFuture; @@ -60,7 +60,7 @@ public class SlideshowBackground { float baseScale = Math.max(width / (float) backgroundSize[0], height / (float) backgroundSize[1]); Vector2f overscan = new Vector2f(backgroundSize[0] * baseScale - width, backgroundSize[1] * baseScale - height); - RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShader(GameRenderer::getPositionTexProgram); RenderSystem.setShaderTexture(0, bg); RenderSystem.enableBlend(); RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA); @@ -71,7 +71,7 @@ public class SlideshowBackground { matrices.translate(width / 2f, height / 2f, 0f); matrices.scale(scale, scale, 1f); - matrices.multiply(Vec3f.POSITIVE_Z.getDegreesQuaternion(angle)); + matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(angle)); drawTexture( matrices, (int) Math.floor(-overscan.getX()/2f - width/2f), diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index e17033f..4eee906 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -32,7 +32,7 @@ "depends": { "fabricloader": ">=0.14.6", "fabric": "*", - "minecraft": ["1.19","1.19.1","1.19.2"], + "minecraft": ["1.19.4"], "java": ">=17", "cloth-config": ">=6.0.0" },