diff --git a/.idea/runConfigurations/SnowyGUI__build_.xml b/.idea/runConfigurations/SnowyGUI__build_.xml index db4919b..268fa10 100644 --- a/.idea/runConfigurations/SnowyGUI__build_.xml +++ b/.idea/runConfigurations/SnowyGUI__build_.xml @@ -4,7 +4,7 @@ diff --git a/.idea/runConfigurations/SnowyGUI__build_release_.xml b/.idea/runConfigurations/SnowyGUI__build_release_.xml index 5c0c0b2..b28c475 100644 --- a/.idea/runConfigurations/SnowyGUI__build_release_.xml +++ b/.idea/runConfigurations/SnowyGUI__build_release_.xml @@ -4,7 +4,7 @@ diff --git a/build.gradle.kts b/build.gradle.kts index 28472e9..9b13fcd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -17,7 +17,7 @@ buildscript { plugins { kotlin("jvm") version "2.3.10" kotlin("plugin.serialization") version "2.3.10" - id("com.github.johnrengelman.shadow") version "8.1.1" apply false + id("com.gradleup.shadow") version "9.4.1" apply false id("architectury-plugin") version "[3.5.166, 3.6[" id("dev.architectury.loom-no-remap") version "[1.14.473, 1.15[" apply false id("com.github.ben-manes.versions") version "0.51.0" @@ -57,7 +57,7 @@ subprojects { accessWidenerPath.set(project(":common").extensions.getByType().accessWidenerPath) } } - apply(plugin = "com.github.johnrengelman.shadow") + apply(plugin = "com.gradleup.shadow") val shadowC by configurations.creating repositories { maven(url = "https://jitpack.io"); mavenCentral() @@ -102,14 +102,16 @@ subprojects { exclude("**/*.kotlin_metadata") exclude("**/*.kotlin_builtins") exclude("META-INF/maven/**/*") - archiveClassifier.set("shadow-${this@subprojects.name}") + archiveVersion.set("[${rootProject.version}+$minecraftVersion]") + archiveClassifier.set(this@subprojects.name) + destinationDirectory.set(file("$rootDir/jars")) } val shadowJar = getByName("shadowJar") as ShadowJar val shrinkJar = register("shrinkJar", proguard.gradle.ProGuardTask::class) { group = this@subprojects.group as String val dictionariesDir = "$rootDir/obfuscation" dependsOn(shadowJar) injars(shadowJar) - outjars("$buildDir/shrinkedJar/${shadowJar.outputs.files.singleFile.name}") + outjars("$rootDir/jars/shrinkedJar/${shadowJar.outputs.files.singleFile.name}") keep("class $group.snowygui.mixins.* { * ; }") keep("class $group.snowygui.fabric.FabricInit") keep("class $group.snowygui.fabric.ModMenuConf") @@ -157,6 +159,7 @@ subprojects { overloadaggressively() mergeinterfacesaggressively() } + build.get().dependsOn(if (devBuild) shadowJar else shrinkJar) getByName("modrinth").dependsOn(build) } } @@ -184,7 +187,7 @@ allprojects { compilerOptions { // https://github.com/JetBrains/kotlin/blob/master/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt freeCompilerArgs = listOf( - "-Xjvm-default=all", "-Xlambdas=indy", "-Xtype-enhancement-improvements-strict-mode", + "-jvm-default=enable", "-Xlambdas=indy", "-Xtype-enhancement-improvements-strict-mode", "-Xmultifile-parts-inherit", "-Xbackend-threads=0", "-Xno-param-assertions", "-Xno-call-assertions", "-opt-in=kotlin.RequiresOptIn", "-Xassertions=jvm", "-progressive" diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 79fe337..ab57b85 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -10,4 +10,5 @@ loom { accessWidenerPath = file("src/main/resources/${rootProject.name.lowercase()}.accessWidener") } +tasks.getByName("shadowJar").enabled = false tasks.getByName("shrinkJar").enabled = false diff --git a/common/src/main/java/fr/username404/snowygui/mixins/GammaMixin.java b/common/src/main/java/fr/username404/snowygui/mixins/GammaMixin.java index a0b8368..1cbad3b 100644 --- a/common/src/main/java/fr/username404/snowygui/mixins/GammaMixin.java +++ b/common/src/main/java/fr/username404/snowygui/mixins/GammaMixin.java @@ -2,17 +2,17 @@ package fr.username404.snowygui.mixins; import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import fr.username404.snowygui.gui.feature.GammaBoost; -import net.minecraft.client.renderer.LightTexture; +import net.minecraft.client.renderer.LightmapRenderStateExtractor; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -@Mixin(LightTexture.class) +@Mixin(LightmapRenderStateExtractor.class) abstract class GammaMixin { @ModifyExpressionValue( - method = "updateLightTexture(F)V", at = @At( + method = "extract", at = @At( value = "INVOKE", target = "Ljava/lang/Double;floatValue()F", - ordinal = 1 + ordinal = 0 ) ) public float highGamma(float original) { diff --git a/common/src/main/kotlin/fr/username404/snowygui/config/ConfigScreen.kt b/common/src/main/kotlin/fr/username404/snowygui/config/ConfigScreen.kt index 9654e04..0e4a441 100644 --- a/common/src/main/kotlin/fr/username404/snowygui/config/ConfigScreen.kt +++ b/common/src/main/kotlin/fr/username404/snowygui/config/ConfigScreen.kt @@ -6,7 +6,7 @@ import fr.username404.snowygui.gui.elements.ClickBox.Companion.sortAlphabeticall import fr.username404.snowygui.gui.feature.* import fr.username404.snowygui.utils.FontUtil import me.shedaniel.clothconfig2.gui.entries.StringListListEntry -import net.minecraft.client.gui.GuiGraphics +import net.minecraft.client.gui.GuiGraphicsExtractor as GuiGraphics import net.minecraft.client.gui.screens.Screen import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component.translatable @@ -23,8 +23,8 @@ private fun supplyComponent(string: String?): Optional = string?.run val SnowyConfigScreen: Screen = object: Screen(translationComponent) { override fun isPauseScreen(): Boolean = false - override fun render(guiGraphics: GuiGraphics, mouseX: Int, mouseY: Int, pTick: Float) { - super.renderBackground(guiGraphics, mouseX, mouseY, pTick) + override fun extractRenderState(guiGraphics: GuiGraphics, mouseX: Int, mouseY: Int, pTick: Float) { + super.extractBackground(guiGraphics, mouseX, mouseY, pTick) FontUtil.drawScaled(guiGraphics, text = "An appropriate version of the Cloth Config mod is required for the configuration of snowygui.", 16.0, 16.0, color = Colors.WHITE, scaleFactor = 0.85F diff --git a/common/src/main/kotlin/fr/username404/snowygui/gui/Element.kt b/common/src/main/kotlin/fr/username404/snowygui/gui/Element.kt index f4501bc..2f3ed2e 100644 --- a/common/src/main/kotlin/fr/username404/snowygui/gui/Element.kt +++ b/common/src/main/kotlin/fr/username404/snowygui/gui/Element.kt @@ -4,7 +4,7 @@ import com.mojang.blaze3d.vertex.VertexConsumer import fr.username404.snowygui.Snowy import fr.username404.snowygui.gui.feature.Colors import fr.username404.snowygui.utils.RenderingUtil -import net.minecraft.client.gui.GuiGraphics +import net.minecraft.client.gui.GuiGraphicsExtractor as GuiGraphics import net.minecraft.client.gui.components.events.GuiEventListener fun interface Renderable { diff --git a/common/src/main/kotlin/fr/username404/snowygui/gui/SnowyScreen.kt b/common/src/main/kotlin/fr/username404/snowygui/gui/SnowyScreen.kt index 50d1670..2c5bb63 100644 --- a/common/src/main/kotlin/fr/username404/snowygui/gui/SnowyScreen.kt +++ b/common/src/main/kotlin/fr/username404/snowygui/gui/SnowyScreen.kt @@ -1,12 +1,12 @@ package fr.username404.snowygui.gui -import net.minecraft.client.gui.GuiGraphics +import net.minecraft.client.gui.GuiGraphicsExtractor as GuiGraphics import net.minecraft.client.gui.screens.Screen import net.minecraft.network.chat.Component.translatable abstract class SnowyScreen(translatableString: String = "screen.snowy.gui", private val willPauseScreen: Boolean = false): Screen(translatable(translatableString)) { abstract val components: MutableCollection - override fun render(guiGraphics: GuiGraphics, i: Int, j: Int, f: Float) { + override fun extractRenderState(guiGraphics: GuiGraphics, i: Int, j: Int, f: Float) { components.forEach { it.display(guiGraphics) } diff --git a/common/src/main/kotlin/fr/username404/snowygui/gui/elements/ClickBox.kt b/common/src/main/kotlin/fr/username404/snowygui/gui/elements/ClickBox.kt index 71b3bbe..1e55b2d 100644 --- a/common/src/main/kotlin/fr/username404/snowygui/gui/elements/ClickBox.kt +++ b/common/src/main/kotlin/fr/username404/snowygui/gui/elements/ClickBox.kt @@ -9,7 +9,7 @@ import fr.username404.snowygui.gui.feature.Colors import fr.username404.snowygui.utils.RenderingUtil import io.github.config4k.extract import net.minecraft.client.Minecraft -import net.minecraft.client.gui.GuiGraphics +import net.minecraft.client.gui.GuiGraphicsExtractor as GuiGraphics import net.minecraft.network.chat.Component import net.minecraft.util.ARGB import kotlin.math.floor @@ -157,7 +157,7 @@ class ClickBox( } with(Minecraft.getInstance().font) { - guiGraphics?.drawString( + guiGraphics?.text( this, Component.nullToEmpty(name.string), (xi + 5 + (inclination / 2f)).toInt(), diff --git a/common/src/main/kotlin/fr/username404/snowygui/gui/feature/ButtonImpl.kt b/common/src/main/kotlin/fr/username404/snowygui/gui/feature/ButtonImpl.kt index 7bd2fea..4d88e09 100644 --- a/common/src/main/kotlin/fr/username404/snowygui/gui/feature/ButtonImpl.kt +++ b/common/src/main/kotlin/fr/username404/snowygui/gui/feature/ButtonImpl.kt @@ -6,7 +6,7 @@ import fr.username404.snowygui.config.Configuration import fr.username404.snowygui.gui.ColoredElement import fr.username404.snowygui.gui.feature.ButtonInfo.Companion.Type import fr.username404.snowygui.utils.FontUtil -import net.minecraft.client.gui.GuiGraphics +import net.minecraft.client.gui.GuiGraphicsExtractor as GuiGraphics import net.minecraft.client.input.MouseButtonEvent import kotlin.reflect.full.findAnnotation diff --git a/common/src/main/kotlin/fr/username404/snowygui/gui/feature/ButtonImplWithHud.kt b/common/src/main/kotlin/fr/username404/snowygui/gui/feature/ButtonImplWithHud.kt index 44c7ddb..1abf738 100644 --- a/common/src/main/kotlin/fr/username404/snowygui/gui/feature/ButtonImplWithHud.kt +++ b/common/src/main/kotlin/fr/username404/snowygui/gui/feature/ButtonImplWithHud.kt @@ -4,7 +4,7 @@ import fr.username404.snowygui.EventSnowy import fr.username404.snowygui.argsLambda import fr.username404.snowygui.gui.Renderable import net.minecraft.client.Minecraft -import net.minecraft.client.gui.GuiGraphics +import net.minecraft.client.gui.GuiGraphicsExtractor as GuiGraphics sealed class ButtonImplWithHud: ButtonImpl() { protected abstract val hudRenderLambda: Renderable diff --git a/common/src/main/kotlin/fr/username404/snowygui/gui/feature/Keystrokes.kt b/common/src/main/kotlin/fr/username404/snowygui/gui/feature/Keystrokes.kt index 88716f8..fd29500 100644 --- a/common/src/main/kotlin/fr/username404/snowygui/gui/feature/Keystrokes.kt +++ b/common/src/main/kotlin/fr/username404/snowygui/gui/feature/Keystrokes.kt @@ -6,7 +6,7 @@ import fr.username404.snowygui.gui.Renderable import fr.username404.snowygui.utils.FontUtil import fr.username404.snowygui.utils.RenderingUtil import net.minecraft.client.Minecraft -import net.minecraft.client.gui.GuiGraphics +import net.minecraft.client.gui.GuiGraphicsExtractor as GuiGraphics @ButtonInfo(Category.HUD) object Keystrokes: ButtonImplWithHud() { diff --git a/common/src/main/kotlin/fr/username404/snowygui/utils/FontUtil.kt b/common/src/main/kotlin/fr/username404/snowygui/utils/FontUtil.kt index 349c897..ac6e227 100644 --- a/common/src/main/kotlin/fr/username404/snowygui/utils/FontUtil.kt +++ b/common/src/main/kotlin/fr/username404/snowygui/utils/FontUtil.kt @@ -2,14 +2,14 @@ package fr.username404.snowygui.utils import net.minecraft.client.Minecraft import fr.username404.snowygui.gui.feature.Colors -import net.minecraft.client.gui.GuiGraphics +import net.minecraft.client.gui.GuiGraphicsExtractor as GuiGraphics import net.minecraft.util.ARGB object FontUtil { fun drawScaled(guiGraphics: GuiGraphics, text: String, x: Double, y: Double, scaleFactor: Float, color: Colors = Colors.BLACK) { val stack = guiGraphics.pose() stack.scale(scaleFactor, scaleFactor) - guiGraphics.drawString( + guiGraphics.text( Minecraft.getInstance().font, text, (x / scaleFactor).toInt(), (y / scaleFactor).toInt(), ARGB.opaque(color.hexValue), false diff --git a/common/src/main/kotlin/fr/username404/snowygui/utils/RenderingUtil.kt b/common/src/main/kotlin/fr/username404/snowygui/utils/RenderingUtil.kt index 2197a6c..d7b8046 100644 --- a/common/src/main/kotlin/fr/username404/snowygui/utils/RenderingUtil.kt +++ b/common/src/main/kotlin/fr/username404/snowygui/utils/RenderingUtil.kt @@ -1,8 +1,7 @@ package fr.username404.snowygui.utils -import com.mojang.blaze3d.opengl.GlStateManager import fr.username404.snowygui.gui.feature.Colors -import net.minecraft.client.gui.GuiGraphics +import net.minecraft.client.gui.GuiGraphicsExtractor as GuiGraphics import net.minecraft.util.ARGB import kotlin.math.ceil import kotlin.math.floor @@ -10,8 +9,8 @@ import kotlin.math.max import kotlin.math.min object RenderingUtil { - fun prepareDraw() = GlStateManager._enableBlend() - fun endDraw() = GlStateManager._disableBlend() + fun prepareDraw() = Unit + fun endDraw() = Unit private fun argbFromRgb(rgb: Int, opacity: Float = 1f): Int { return ARGB.color( @@ -98,7 +97,7 @@ object RenderingUtil { fun hLine(guiGraphics: GuiGraphics?, x1: Int, x2: Int, y: Int, rgb: Int, opacity: Float = 1f) { if (guiGraphics == null) return prepareDraw() - guiGraphics.hLine(x1, x2, y, argbFromRgb(rgb, opacity)) + guiGraphics.horizontalLine(x1, x2, y, argbFromRgb(rgb, opacity)) endDraw() } } diff --git a/fabric/src/main/java/fr/username404/snowygui/mixins/ZoomMixin.java b/fabric/src/main/java/fr/username404/snowygui/mixins/ZoomMixin.java index 7197831..3a3dcd3 100644 --- a/fabric/src/main/java/fr/username404/snowygui/mixins/ZoomMixin.java +++ b/fabric/src/main/java/fr/username404/snowygui/mixins/ZoomMixin.java @@ -1,20 +1,19 @@ package fr.username404.snowygui.mixins; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; import fr.username404.snowygui.fabric.OkZoomerCompatKt; import fr.username404.snowygui.gui.feature.Zoom; import net.minecraft.client.Camera; -import net.minecraft.client.renderer.GameRenderer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(GameRenderer.class) +@Mixin(Camera.class) abstract class ZoomMixin { - @Inject(at = @At(value = "RETURN"), method = "getFov(Lnet/minecraft/client/Camera;FZ)F", cancellable = true) - private void getFov(Camera camera, float f, boolean bl, CallbackInfoReturnable cir) { + @ModifyReturnValue(at = @At(value = "RETURN"), method = "calculateFov") + private static float getFov(float original) { if (Zoom.INSTANCE.getToggled() && !OkZoomerCompatKt.isOkZoomerPresent) { - cir.setReturnValue(Zoom.getNewZoom(cir.getReturnValue())); + return Zoom.getNewZoom(original); } + return original; } } diff --git a/fabric/src/main/kotlin/fr/username404/snowygui/fabric/FabricInit.kt b/fabric/src/main/kotlin/fr/username404/snowygui/fabric/FabricInit.kt index 06d44c8..48e614e 100644 --- a/fabric/src/main/kotlin/fr/username404/snowygui/fabric/FabricInit.kt +++ b/fabric/src/main/kotlin/fr/username404/snowygui/fabric/FabricInit.kt @@ -4,12 +4,13 @@ import fr.username404.snowygui.EventSnowy import fr.username404.snowygui.Snowy import fr.username404.snowygui.gui.feature.ButtonImpl import net.fabricmc.api.ClientModInitializer -import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback -import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback.EVENT +import net.fabricmc.fabric.api.client.rendering.v1.hud.HudElement +import net.fabricmc.fabric.api.client.rendering.v1.hud.HudElementRegistry import net.fabricmc.loader.api.FabricLoader import net.fabricmc.loader.launch.common.FabricLauncherBase import net.minecraft.client.DeltaTracker -import net.minecraft.client.gui.GuiGraphics +import net.minecraft.client.gui.GuiGraphicsExtractor as GuiGraphics +import net.minecraft.resources.Identifier import kotlin.io.path.exists import kotlin.io.path.isDirectory import kotlin.io.path.listDirectoryEntries @@ -19,10 +20,10 @@ import kotlin.jvm.optionals.getOrNull class FabricInit: Snowy(), ClientModInitializer { override fun onInitializeClient() { atInit() - EVENT.register( - object: HudRenderCallback, EventSnowy { + HudElementRegistry.addLast(Identifier.fromNamespaceAndPath("snowygui", "hud"), + object: HudElement, EventSnowy { override val type: String = "HudRender" - override fun onHudRender(guiGraphics: GuiGraphics, tickCounter: DeltaTracker) = fire(guiGraphics) + override fun extractRenderState(guiGraphics: GuiGraphics, tickCounter: DeltaTracker) = fire(guiGraphics) } ) }