diff options
11 files changed, 67 insertions, 77 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/config/core/config/gui/GuiPositionEditor.kt b/src/main/java/at/hannibal2/skyhanni/config/core/config/gui/GuiPositionEditor.kt index 0adf1bed5..bd50b46e3 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/core/config/gui/GuiPositionEditor.kt +++ b/src/main/java/at/hannibal2/skyhanni/config/core/config/gui/GuiPositionEditor.kt @@ -30,7 +30,6 @@ import at.hannibal2.skyhanni.utils.KeyboardManager import at.hannibal2.skyhanni.utils.NumberUtil.roundTo import at.hannibal2.skyhanni.utils.compat.GuiScreenUtils import at.hannibal2.skyhanni.utils.compat.SkyhanniBaseScreen -import net.minecraft.client.Minecraft import net.minecraft.client.gui.inventory.GuiContainer import net.minecraft.client.renderer.GlStateManager import org.lwjgl.input.Keyboard @@ -115,8 +114,9 @@ class GuiPositionEditor( GlStateManager.pushMatrix() width = getScaledWidth() height = getScaledHeight() - val mouseX = Mouse.getX() * width / Minecraft.getMinecraft().displayWidth - val mouseY = height - Mouse.getY() * height / Minecraft.getMinecraft().displayHeight - 1 + + val (mouseX, mouseY) = GuiScreenUtils.mousePos + for ((index, position) in positions.withIndex()) { var elementWidth = position.getDummySize(true).x var elementHeight = position.getDummySize(true).y @@ -154,8 +154,8 @@ class GuiPositionEditor( override fun mouseClicked(originalX: Int, priginalY: Int, mouseButton: Int) { super.mouseClicked(originalX, priginalY, mouseButton) - val mouseX = Mouse.getX() * width / Minecraft.getMinecraft().displayWidth - val mouseY = height - Mouse.getY() * height / Minecraft.getMinecraft().displayHeight - 1 + val (mouseX, mouseY) = GuiScreenUtils.mousePos + for (i in positions.indices.reversed()) { val position = positions[i] val elementWidth = position.getDummySize().x @@ -222,8 +222,8 @@ class GuiPositionEditor( for (position in positions) { if (!position.clicked) continue - val mouseX = Mouse.getX() * width / Minecraft.getMinecraft().displayWidth - val mouseY = height - Mouse.getY() * height / Minecraft.getMinecraft().displayHeight - 1 + val (mouseX, mouseY) = GuiScreenUtils.mousePos + val elementWidth = position.getDummySize(true).x val elementHeight = position.getDummySize(true).y grabbedX += position.moveX(mouseX - grabbedX, elementWidth) @@ -236,13 +236,14 @@ class GuiPositionEditor( super.handleMouseInput() val mw = Mouse.getEventDWheel() if (mw == 0) return - val mx = Mouse.getEventX() * width / mc.displayWidth - val my = height - Mouse.getEventY() * height / mc.displayHeight - 1 + + val (mouseX, mouseY) = GuiScreenUtils.mousePos + val hovered = positions.firstOrNull { it.clicked } ?: positions.lastOrNull { val size = it.getDummySize() GuiRenderUtils.isPointInRect( - mx, my, + mouseX, mouseY, it.getAbsX() - border, it.getAbsY() - border, size.x + border * 2, size.y + border * 2, ) diff --git a/src/main/java/at/hannibal2/skyhanni/data/TitleManager.kt b/src/main/java/at/hannibal2/skyhanni/data/TitleManager.kt index 95dbe1577..2647768db 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/TitleManager.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/TitleManager.kt @@ -5,9 +5,9 @@ import at.hannibal2.skyhanni.events.ProfileJoinEvent import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule import at.hannibal2.skyhanni.utils.ChatUtils import at.hannibal2.skyhanni.utils.SimpleTimeMark +import at.hannibal2.skyhanni.utils.compat.GuiScreenUtils import io.github.notenoughupdates.moulconfig.internal.TextRenderUtils import net.minecraft.client.Minecraft -import net.minecraft.client.gui.ScaledResolution import net.minecraft.client.renderer.GlStateManager import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import org.lwjgl.opengl.GL11 @@ -61,9 +61,8 @@ object TitleManager { fun onRenderOverlay(event: GuiRenderEvent.GuiOverlayRenderEvent) { if (endTime.isInPast()) return - val scaledResolution = ScaledResolution(Minecraft.getMinecraft()) - val width = scaledResolution.scaledWidth - val height = scaledResolution.scaledHeight + val width = GuiScreenUtils.scaledWindowWidth + val height = GuiScreenUtils.scaledWindowHeight GlStateManager.enableBlend() GlStateManager.tryBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0) diff --git a/src/main/java/at/hannibal2/skyhanni/features/chroma/ChromaShader.kt b/src/main/java/at/hannibal2/skyhanni/features/chroma/ChromaShader.kt index bb78592fa..0f34258fb 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/chroma/ChromaShader.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/chroma/ChromaShader.kt @@ -3,6 +3,7 @@ package at.hannibal2.skyhanni.features.chroma import at.hannibal2.skyhanni.config.features.chroma.ChromaConfig.Direction import at.hannibal2.skyhanni.data.MinecraftData import at.hannibal2.skyhanni.mixins.transformers.AccessorMinecraft +import at.hannibal2.skyhanni.utils.compat.GuiScreenUtils import at.hannibal2.skyhanni.utils.shader.Shader import at.hannibal2.skyhanni.utils.shader.Uniform import net.minecraft.client.Minecraft @@ -17,7 +18,7 @@ abstract class ChromaShader(vertex: String, fragment: String) : Shader(vertex, f override fun registerUniforms() { registerUniform(Uniform.UniformType.FLOAT, "chromaSize") { - ChromaManager.config.chromaSize * (Minecraft.getMinecraft().displayWidth / 100f) + ChromaManager.config.chromaSize * (GuiScreenUtils.displayWidth / 100f) } registerUniform(Uniform.UniformType.FLOAT, "timeOffset") { var ticks = diff --git a/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/RenderBackground.kt b/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/RenderBackground.kt index 357b61a0c..6a44d5861 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/RenderBackground.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/RenderBackground.kt @@ -7,9 +7,8 @@ import at.hannibal2.skyhanni.data.GuiEditManager.getAbsY import at.hannibal2.skyhanni.features.gui.customscoreboard.CustomScoreboard.backgroundConfig import at.hannibal2.skyhanni.utils.ColorUtils.toChromaColor import at.hannibal2.skyhanni.utils.RenderUtils +import at.hannibal2.skyhanni.utils.compat.GuiScreenUtils import at.hannibal2.skyhanni.utils.renderables.Renderable -import net.minecraft.client.Minecraft -import net.minecraft.client.gui.ScaledResolution import net.minecraft.util.ResourceLocation object RenderBackground { @@ -74,8 +73,8 @@ object RenderBackground { val position = CustomScoreboard.config.position - val scaledWidth = ScaledResolution(Minecraft.getMinecraft()).scaledWidth - val scaledHeight = ScaledResolution(Minecraft.getMinecraft()).scaledHeight + val scaledWidth = GuiScreenUtils.scaledWindowWidth + val scaledHeight = GuiScreenUtils.scaledWindowHeight val elementWidth = (renderable.width * position.effectiveScale).toInt() val elementHeight = (renderable.height * position.effectiveScale).toInt() diff --git a/src/main/java/at/hannibal2/skyhanni/features/inventory/HarpFeatures.kt b/src/main/java/at/hannibal2/skyhanni/features/inventory/HarpFeatures.kt index 05cdf94c3..604e3a7d0 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/inventory/HarpFeatures.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/inventory/HarpFeatures.kt @@ -20,9 +20,9 @@ import at.hannibal2.skyhanni.utils.LorenzUtils import at.hannibal2.skyhanni.utils.RegexUtils.anyMatches import at.hannibal2.skyhanni.utils.RegexUtils.matches import at.hannibal2.skyhanni.utils.SimpleTimeMark +import at.hannibal2.skyhanni.utils.compat.GuiScreenUtils import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern import net.minecraft.client.Minecraft -import net.minecraft.client.gui.ScaledResolution import net.minecraft.client.gui.inventory.GuiChest import net.minecraft.client.player.inventory.ContainerLocalMenu import net.minecraft.item.Item @@ -37,7 +37,7 @@ object HarpFeatures { private val config get() = SkyHanniMod.feature.inventory.helper.harp private var lastClick = SimpleTimeMark.farPast() - private const val closeButtonSlot = 40 + private const val CLOSE_BUTTON_SLOT = 40 private val buttonColors = listOf('d', 'e', 'a', '2', '5', '9', 'b') @@ -118,10 +118,9 @@ object HarpFeatures { } // Copied from Minecraft Code to update the scale val minecraft = Minecraft.getMinecraft() - val scaledresolution = ScaledResolution(minecraft) - val i = scaledresolution.scaledWidth - val j = scaledresolution.scaledHeight - minecraft.currentScreen.setWorldAndResolution(minecraft, i, j) + val width = GuiScreenUtils.scaledWindowWidth + val height = GuiScreenUtils.scaledWindowHeight + minecraft.currentScreen.setWorldAndResolution(minecraft, width, height) } @SubscribeEvent @@ -170,7 +169,7 @@ object HarpFeatures { if (!config.quickRestart) return if (!isMenuGui(InventoryUtils.openInventoryName())) return - if (event.slot?.slotNumber != closeButtonSlot) return + if (event.slot?.slotNumber != CLOSE_BUTTON_SLOT) return if (openTime.passedSince() > 2.seconds) return event.container.inventory.filterNotNull().indexOfFirst { songSelectedPattern.anyMatches(it.getLore()) diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/RoundedRectangleOutlineShader.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/RoundedRectangleOutlineShader.kt index 2a5e131fa..ed43b348d 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/misc/RoundedRectangleOutlineShader.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/misc/RoundedRectangleOutlineShader.kt @@ -1,8 +1,8 @@ package at.hannibal2.skyhanni.features.misc +import at.hannibal2.skyhanni.utils.compat.GuiScreenUtils import at.hannibal2.skyhanni.utils.shader.Shader import at.hannibal2.skyhanni.utils.shader.Uniform -import net.minecraft.client.Minecraft object RoundedRectangleOutlineShader : Shader("rounded_rect_outline", "rounded_rect_outline") { @@ -14,7 +14,7 @@ object RoundedRectangleOutlineShader : Shader("rounded_rect_outline", "rounded_r var halfSize: FloatArray = floatArrayOf(0f, 0f) var centerPos: FloatArray = floatArrayOf(0f, 0f) set(value) { - field = floatArrayOf(value[0], Minecraft.getMinecraft().displayHeight - value[1]) + field = floatArrayOf(value[0], GuiScreenUtils.displayHeight - value[1]) } var borderThickness: Float = 5f var borderBlur: Float = 0.3f diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/compacttablist/TabListRenderer.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/compacttablist/TabListRenderer.kt index e95c02e8b..6fa91f7bf 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/misc/compacttablist/TabListRenderer.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/misc/compacttablist/TabListRenderer.kt @@ -10,10 +10,10 @@ import at.hannibal2.skyhanni.utils.KeyboardManager.isActive import at.hannibal2.skyhanni.utils.LorenzUtils import at.hannibal2.skyhanni.utils.RegexUtils.matches import at.hannibal2.skyhanni.utils.TabListData +import at.hannibal2.skyhanni.utils.compat.GuiScreenUtils import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern import net.minecraft.client.Minecraft import net.minecraft.client.gui.Gui -import net.minecraft.client.gui.ScaledResolution import net.minecraft.client.renderer.GlStateManager import net.minecraft.entity.player.EnumPlayerModelParts import net.minecraftforge.client.event.RenderGameOverlayEvent @@ -100,8 +100,7 @@ object TabListRenderer { } val minecraft = Minecraft.getMinecraft() - val scaledResolution = ScaledResolution(minecraft) - val screenWidth = scaledResolution.scaledWidth / 2 + val screenWidth = GuiScreenUtils.scaledWindowWidth / 2 val x = screenWidth - totalWidth / 2 val y = 10 diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/visualwords/VisualWordGui.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/visualwords/VisualWordGui.kt index 5fa8f6b78..b4e12945c 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/misc/visualwords/VisualWordGui.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/misc/visualwords/VisualWordGui.kt @@ -14,6 +14,7 @@ import at.hannibal2.skyhanni.utils.OSUtils import at.hannibal2.skyhanni.utils.RegexUtils.matchMatcher import at.hannibal2.skyhanni.utils.SoundUtils import at.hannibal2.skyhanni.utils.StringUtils.convertToFormatted +import at.hannibal2.skyhanni.utils.compat.GuiScreenUtils import com.google.gson.JsonObject import kotlinx.coroutines.launch import net.minecraft.client.Minecraft @@ -106,8 +107,8 @@ open class VisualWordGui : GuiScreen() { guiLeft = (width - sizeX) / 2 guiTop = (height - sizeY) / 2 - mouseX = Mouse.getX() * width / Minecraft.getMinecraft().displayWidth - mouseY = height - Mouse.getY() * height / Minecraft.getMinecraft().displayHeight - 1 + mouseX = GuiScreenUtils.mouseX + mouseY = GuiScreenUtils.mouseY GlStateManager.pushMatrix() drawRect(guiLeft, guiTop, guiLeft + sizeX, guiTop + sizeY, 0x50000000) diff --git a/src/main/java/at/hannibal2/skyhanni/utils/RenderUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/RenderUtils.kt index 7cf104269..be2904f87 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/RenderUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/RenderUtils.kt @@ -40,7 +40,6 @@ import net.minecraft.item.ItemStack import net.minecraft.util.AxisAlignedBB import net.minecraft.util.MathHelper import net.minecraft.util.ResourceLocation -import org.lwjgl.input.Mouse import org.lwjgl.opengl.GL11 import java.awt.Color import java.nio.FloatBuffer @@ -96,15 +95,6 @@ object RenderUtils { highlight(color, x, y) } - fun getMouseX(): Int { - return Mouse.getX() * GuiScreenUtils.scaledWindowWidth / Minecraft.getMinecraft().displayWidth - } - - fun getMouseY(): Int { - val height = GuiScreenUtils.scaledWindowHeight - return height - Mouse.getY() * height / Minecraft.getMinecraft().displayHeight - 1 - } - fun highlight(color: Color, x: Int, y: Int) { GlStateManager.disableLighting() GlStateManager.disableDepth() @@ -514,8 +504,8 @@ object RenderUtils { fun Position.transform(): Pair<Int, Int> { GlStateManager.translate(getAbsX().toFloat(), getAbsY().toFloat(), 0F) GlStateManager.scale(effectiveScale, effectiveScale, 1F) - val x = ((getMouseX() - getAbsX()) / effectiveScale).toInt() - val y = ((getMouseY() - getAbsY()) / effectiveScale).toInt() + val x = ((GuiScreenUtils.mouseX - getAbsX()) / effectiveScale).toInt() + val y = ((GuiScreenUtils.mouseY - getAbsY()) / effectiveScale).toInt() return x to y } @@ -1760,13 +1750,13 @@ object RenderUtils { return } - val scaledRes = ScaledResolution(Minecraft.getMinecraft()) - val widthIn = width * scaledRes.scaleFactor - val heightIn = height * scaledRes.scaleFactor - val xIn = x * scaledRes.scaleFactor - val yIn = y * scaledRes.scaleFactor + val scaleFactor = ScaledResolution(Minecraft.getMinecraft()).scaleFactor + val widthIn = width * scaleFactor + val heightIn = height * scaleFactor + val xIn = x * scaleFactor + val yIn = y * scaleFactor - RoundedTextureShader.scaleFactor = scaledRes.scaleFactor.toFloat() + RoundedTextureShader.scaleFactor = scaleFactor.toFloat() RoundedTextureShader.radius = radius.toFloat() RoundedTextureShader.smoothness = smoothness.toFloat() RoundedTextureShader.halfSize = floatArrayOf(widthIn / 2f, heightIn / 2f) @@ -1795,13 +1785,13 @@ object RenderUtils { * It is best kept at its default. */ fun drawRoundRect(x: Int, y: Int, width: Int, height: Int, color: Int, radius: Int = 10, smoothness: Int = 1) { - val scaledRes = ScaledResolution(Minecraft.getMinecraft()) - val widthIn = width * scaledRes.scaleFactor - val heightIn = height * scaledRes.scaleFactor - val xIn = x * scaledRes.scaleFactor - val yIn = y * scaledRes.scaleFactor + val scaleFactor = ScaledResolution(Minecraft.getMinecraft()).scaleFactor + val widthIn = width * scaleFactor + val heightIn = height * scaleFactor + val xIn = x * scaleFactor + val yIn = y * scaleFactor - RoundedRectangleShader.scaleFactor = scaledRes.scaleFactor.toFloat() + RoundedRectangleShader.scaleFactor = scaleFactor.toFloat() RoundedRectangleShader.radius = radius.toFloat() RoundedRectangleShader.smoothness = smoothness.toFloat() RoundedRectangleShader.halfSize = floatArrayOf(widthIn / 2f, heightIn / 2f) @@ -1841,15 +1831,15 @@ object RenderUtils { radius: Int = 10, blur: Float = 0.7f, ) { - val scaledRes = ScaledResolution(Minecraft.getMinecraft()) - val widthIn = width * scaledRes.scaleFactor - val heightIn = height * scaledRes.scaleFactor - val xIn = x * scaledRes.scaleFactor - val yIn = y * scaledRes.scaleFactor + val scaleFactor = ScaledResolution(Minecraft.getMinecraft()).scaleFactor + val widthIn = width * scaleFactor + val heightIn = height * scaleFactor + val xIn = x * scaleFactor + val yIn = y * scaleFactor val borderAdjustment = borderThickness / 2 - RoundedRectangleOutlineShader.scaleFactor = scaledRes.scaleFactor.toFloat() + RoundedRectangleOutlineShader.scaleFactor = scaleFactor.toFloat() RoundedRectangleOutlineShader.radius = radius.toFloat() RoundedRectangleOutlineShader.halfSize = floatArrayOf(widthIn / 2f, heightIn / 2f) RoundedRectangleOutlineShader.centerPos = floatArrayOf(xIn + (widthIn / 2f), yIn + (heightIn / 2f)) diff --git a/src/main/java/at/hannibal2/skyhanni/utils/compat/GuiScreenUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/compat/GuiScreenUtils.kt index 376ecec74..d2f22dc57 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/compat/GuiScreenUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/compat/GuiScreenUtils.kt @@ -5,7 +5,9 @@ import net.minecraft.client.gui.ScaledResolution import org.lwjgl.input.Mouse object GuiScreenUtils { + private val mc get() = Minecraft.getMinecraft() + val scaledWindowHeight get() = //#if MC < 1.16 @@ -30,7 +32,6 @@ object GuiScreenUtils { //$$ mc.window.width //#endif - val displayHeight get() = //#if MC < 1.16 @@ -39,11 +40,11 @@ object GuiScreenUtils { //$$ mc.window.height //#endif - val globalMouseX get() = Mouse.getX() - val globalMouseY get() = Mouse.getY() + private val globalMouseX get() = Mouse.getX() + private val globalMouseY get() = Mouse.getY() + + val mouseX get() = globalMouseX * scaledWindowWidth / displayWidth - val mouseX - get() = globalMouseX * scaledWindowWidth / displayWidth val mouseY: Int get() { val height = this.scaledWindowHeight @@ -56,4 +57,5 @@ object GuiScreenUtils { //#endif } + val mousePos: Pair<Int, Int> get() = mouseX to mouseY } diff --git a/src/main/java/at/hannibal2/skyhanni/utils/renderables/RenderableTooltips.kt b/src/main/java/at/hannibal2/skyhanni/utils/renderables/RenderableTooltips.kt index b6c4225ba..906371bf4 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/renderables/RenderableTooltips.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/renderables/RenderableTooltips.kt @@ -4,9 +4,9 @@ import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule import at.hannibal2.skyhanni.utils.ItemUtils.getLore import at.hannibal2.skyhanni.utils.LorenzColor import at.hannibal2.skyhanni.utils.RenderUtils +import at.hannibal2.skyhanni.utils.compat.GuiScreenUtils import at.hannibal2.skyhanni.utils.renderables.RenderableUtils.renderXAligned import net.minecraft.client.Minecraft -import net.minecraft.client.gui.ScaledResolution import net.minecraft.client.renderer.GlStateManager import net.minecraft.client.renderer.RenderHelper import net.minecraft.item.ItemStack @@ -43,10 +43,9 @@ object RenderableTooltips { val tips = tooltip.tips if (tips.isEmpty()) return - val x = RenderUtils.getMouseX() + 12 - val y = RenderUtils.getMouseY() - if (tips.size > 1) 1 else -7 + val x = GuiScreenUtils.mouseX + 12 + val y = GuiScreenUtils.mouseY - if (tips.size > 1) 1 else -7 val borderColorStart = tooltip.getBorderColor() - val scaled = ScaledResolution(Minecraft.getMinecraft()) val isSpacedTitle = tooltip.isSpacedTitle() val tooltipTextWidth = tips.maxOf { it.width } @@ -54,19 +53,19 @@ object RenderableTooltips { val tooltipY = when { y < 16 -> 4 // Limit Top - y + tooltipHeight > scaled.scaledHeight -> { - if (tooltip.snapsToTopIfToLong && tooltipHeight + 8 > scaled.scaledHeight) + y + tooltipHeight > GuiScreenUtils.scaledWindowHeight -> { + if (tooltip.snapsToTopIfToLong && tooltipHeight + 8 > GuiScreenUtils.scaledWindowHeight) 4 // Snap to Top if to Long else - scaled.scaledHeight - tooltipHeight - 6 // Limit Bottom + GuiScreenUtils.scaledWindowHeight - tooltipHeight - 6 // Limit Bottom } else -> { y - 10 // normal } } - val tooltipX = if (x + tooltipTextWidth + 4 > scaled.scaledWidth) { - scaled.scaledWidth - tooltipTextWidth - 4 // Limit Right + val tooltipX = if (x + tooltipTextWidth + 4 > GuiScreenUtils.scaledWindowWidth) { + GuiScreenUtils.scaledWindowWidth - tooltipTextWidth - 4 // Limit Right } else { x // normal } |
