Compare commits

...

10 Commits

Author SHA1 Message Date
Username404-59 d60d506c6c
Fix indentation errors in ClickBox.kt
Signed-off-by: Username404-59 <w.iron.zombie@gmail.com>
2024-05-25 17:55:29 +02:00
Username404-59 c58eee6631
Fix font rendering
Signed-off-by: Username404-59 <w.iron.zombie@gmail.com>
2024-05-25 17:53:15 +02:00
Username404-59 c204db0d47
Remove a useless import in Keystrokes.kt
Signed-off-by: Username404-59 <w.iron.zombie@gmail.com>
2024-05-24 23:10:38 +02:00
Username404-59 aebff3e15e
Depend on the right forge version
Signed-off-by: Username404-59 <w.iron.zombie@gmail.com>
2024-05-24 23:10:37 +02:00
Username404-59 01c420b4cc
Update dependencies
Signed-off-by: Username404-59 <w.iron.zombie@gmail.com>
2024-05-24 23:10:37 +02:00
Username404-59 bc10ffa2cf
Update gradle
Signed-off-by: Username404-59 <w.iron.zombie@gmail.com>
2024-05-24 23:10:37 +02:00
Username404 5563e59603
Update parchment mappings
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2024-02-25 15:45:09 +01:00
Username404 2772d52217
Port to 1.20
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2024-02-25 15:45:09 +01:00
Username404 f4834255ec
Port to 1.19.4
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2024-02-25 15:45:07 +01:00
Username404 771820f72f
Use 22w16b versions of dependencies
Signed-off-by: Username404 <w.iron.zombie@gmail.com>
2024-02-25 15:43:20 +01:00
15 changed files with 76 additions and 67 deletions

View File

@ -13,11 +13,11 @@ buildscript {
}
plugins {
kotlin("jvm") version "1.9.22"
kotlin("plugin.serialization") version "1.9.22"
kotlin("jvm") version "1.9.24"
kotlin("plugin.serialization") version "1.9.24"
id("com.github.johnrengelman.shadow") version "8.1.1" apply false
id("architectury-plugin") version "[3.4.124, 3.5["
id("dev.architectury.loom") version "1.4-SNAPSHOT" apply false
id("dev.architectury.loom") version "1.5-SNAPSHOT" apply false
id("com.github.ben-manes.versions") version "0.51.0"
id("net.kyori.indra.git") version "3.1.3"
id("org.cqfn.diktat.diktat-gradle-plugin") version "1.2.5"
@ -51,7 +51,7 @@ subprojects {
apply(plugin = "org.jetbrains.kotlin.plugin.serialization")
extensions.configure<LoomGradleExtension>("loom") {
mappingsDep = layered {
officialMojangMappings().parchment("org.parchmentmc.data:parchment-${rootProject.architectury.minecraft}:2022.02.13")
officialMojangMappings().parchment("org.parchmentmc.data:parchment-1.20.1:2023.06.26")
}
silentMojangMappingsLicense()
val refmap = "snowygui-${project.name}-refmap.json"
@ -75,8 +75,8 @@ subprojects {
implementation("$kotlinX:kotlinx-serialization-core:$serializationVer")
implementation("$kotlinX:kotlinx-serialization-json:$serializationVer")
listOf(
"com.typesafe:config:1.4.2",
"io.github.config4k:config4k:0.5.0",
"com.typesafe:config:1.4.3",
"io.github.config4k:config4k:0.6.0",
"com.github.Vatuu:discord-rpc:1.6.2"
).forEach { implementation(it); shadowC(it) { isTransitive = false; exclude("com.sun.jna") } }
"minecraft"("com.mojang:minecraft:${rootProject.property("minecraft")}")

View File

@ -1,8 +1,6 @@
package fr.username404.snowygui.config
import com.mojang.blaze3d.vertex.PoseStack
import fr.username404.snowygui.ClickGui
import fr.username404.snowygui.utils.FontUtil
import fr.username404.snowygui.gui.elements.ClickBox
import fr.username404.snowygui.gui.elements.ClickBox.Companion.buttonsMax
import fr.username404.snowygui.gui.elements.ClickBox.Companion.sortAlphabetically
@ -11,6 +9,8 @@ import fr.username404.snowygui.gui.feature.Colors
import fr.username404.snowygui.gui.feature.Macro
import fr.username404.snowygui.gui.feature.Keystrokes
import fr.username404.snowygui.gui.feature.Zoom
import fr.username404.snowygui.utils.FontUtil
import net.minecraft.client.gui.GuiGraphics
import net.minecraft.client.gui.screens.Screen
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.Component.translatable
@ -27,9 +27,9 @@ private fun supplyComponent(string: String?): Optional<Component> = string?.run
val SnowyConfigScreen: Screen = object: Screen(translationComponent) {
override fun isPauseScreen(): Boolean = false
override fun render(poseStack: PoseStack, i: Int, j: Int, f: Float) {
super.renderBackground(poseStack)
FontUtil.drawScaled(poseStack,
override fun render(guiGraphics: GuiGraphics, i: Int, j: Int, f: Float) {
super.renderBackground(guiGraphics)
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
)

View File

@ -5,10 +5,11 @@ import fr.username404.snowygui.Snowy
import fr.username404.snowygui.gui.feature.Colors
import fr.username404.snowygui.utils.RenderingUtil
import fr.username404.snowygui.utils.RenderingUtil.colorEnd
import net.minecraft.client.gui.GuiGraphics
import net.minecraft.client.gui.components.events.GuiEventListener
fun interface Renderable {
fun render(poseStack: PoseStack?)
fun render(guiGraphics: GuiGraphics?)
}
abstract class Element(
@ -28,13 +29,13 @@ abstract class Element(
private var caughtError: Boolean = false
fun fromRenderable(r: Renderable, x: Double, y: Double, width: Int, height: Int): Element {
return object: Element(x, y, width, height) {
override fun render(poseStack: PoseStack?) = r.render(poseStack)
override fun render(guiGraphics: GuiGraphics?) = r.render(guiGraphics)
}
}
}
open fun display(stack: PoseStack? = null) {
open fun display(guiGraphics: GuiGraphics? = null) {
if (!hidden && !caughtError) try {
render(stack)
render(guiGraphics)
} catch (t: Throwable) {
with(Snowy.logs) {
error("An element from snowy threw an error: \n\t$t")

View File

@ -1,14 +1,14 @@
package fr.username404.snowygui.gui
import com.mojang.blaze3d.vertex.PoseStack
import net.minecraft.client.gui.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<Element>
override fun render(poseStack: PoseStack, i: Int, j: Int, f: Float) {
override fun render(guiGraphics: GuiGraphics, i: Int, j: Int, f: Float) {
components.forEach {
it.display(poseStack)
it.display(guiGraphics)
}
}
override fun isPauseScreen(): Boolean = willPauseScreen

View File

@ -1,7 +1,6 @@
package fr.username404.snowygui.gui.elements
import com.mojang.blaze3d.vertex.DefaultVertexFormat
import com.mojang.blaze3d.vertex.PoseStack
import fr.username404.snowygui.Snowy.Companion.MissingComponent
import fr.username404.snowygui.config.Configuration
import com.mojang.blaze3d.vertex.VertexFormat
@ -16,6 +15,8 @@ import fr.username404.snowygui.utils.RenderingUtil.prepareDraw
import fr.username404.snowygui.utils.RenderingUtil.tessellator
import io.github.config4k.extract
import net.minecraft.client.Minecraft
import net.minecraft.client.gui.Font
import net.minecraft.client.gui.GuiGraphics
import net.minecraft.network.chat.Component
import org.jetbrains.annotations.ApiStatus
import java.util.TreeSet
@ -32,9 +33,9 @@ class ClickBox(
if (sortAlphabetically)
TreeSet(compareBy(String.CASE_INSENSITIVE_ORDER) { it.title })
else LinkedHashSet()
override fun display(stack: PoseStack?) {
override fun display(guiGraphics: GuiGraphics?) {
hidden = buttons.isEmpty() || hidden
super.display(stack)
super.display(guiGraphics)
}
@JvmField
@ -44,7 +45,7 @@ class ClickBox(
opacity = 0.75F
) {
override val color: Int get() = this@ClickBox.color
override fun render(poseStack: PoseStack?) {
override fun render(guiGraphics: GuiGraphics?) {
prepareDraw()
colorShader(); defaultRectFunc()
endDraw()
@ -76,7 +77,7 @@ class ClickBox(
const val clickboxHeightOffset: Int = 80
private const val inclination: Double = 2.5
}
override fun render(poseStack: PoseStack?) {
override fun render(guiGraphics: GuiGraphics?) {
val currentHeight = y + (height + clickboxHeightOffset)
prepareDraw()
with(buffer) {
@ -93,11 +94,11 @@ class ClickBox(
vertex(x + width + inclination, y + height, 0.0).colorEnd()
tessellator.end()
colorShader()
begin(VertexFormat.Mode.DEBUG_LINES, DefaultVertexFormat.POSITION_COLOR)
vertex(x + inclination, y + height, 0.0).colorEnd(Colors.WHITE_LINES.hexValue)
vertex(x + width, y + height, 0.0).colorEnd(Colors.WHITE_LINES.hexValue)
tessellator.end()
colorShader()
begin(VertexFormat.Mode.DEBUG_LINES, DefaultVertexFormat.POSITION_COLOR)
vertex(x + inclination, y + height, 0.0).colorEnd(Colors.WHITE_LINES.hexValue)
vertex(x + width, y + height, 0.0).colorEnd(Colors.WHITE_LINES.hexValue)
tessellator.end()
}
endDraw()
@ -105,18 +106,23 @@ class ClickBox(
buttonsProgressBar.apply {
x = this@ClickBox.x + this@ClickBox.width - 3
y = this@ClickBox.y + this@ClickBox.height + 3
}.display(poseStack)
}.display(guiGraphics)
buttons.forEachIndexed { num, button ->
val fullHeight = (y + height.toDouble())..(y + height + clickboxHeightOffset)
button.also {
it.x = x + 3
it.y = y + 3 + height + (((num + 1) - barStage) * 9)
it.hidden = if ((num + 1) <= 8) ((it.y) !in fullHeight) else ((it.y + it.height) !in fullHeight)
}.display(poseStack)
}.display(guiGraphics)
}
}
if (poseStack != null) {
Minecraft.getInstance().font.draw(poseStack, name.string, x.toFloat() + 5, y.toFloat() + 1.5F, Colors.TRANSPARENT.hexValue)
guiGraphics?.run {
with(Minecraft.getInstance().font) {
drawInBatch(name.string,
(x + 5).toFloat(), (y + 2).toFloat(), Colors.TRANSPARENT.hexValue, false,
pose().last().pose(), bufferSource(), Font.DisplayMode.NORMAL, 0, 15728880, isBidirectional
)
}
}
}
}

View File

@ -1,15 +1,15 @@
package fr.username404.snowygui.gui.feature
import com.mojang.blaze3d.vertex.PoseStack
import fr.username404.snowygui.ClickGui
import fr.username404.snowygui.Snowy
import fr.username404.snowygui.config.Configuration
import fr.username404.snowygui.gui.ColoredElement
import fr.username404.snowygui.utils.FontUtil
import fr.username404.snowygui.gui.feature.ButtonInfo.Companion.Type
import fr.username404.snowygui.utils.FontUtil
import fr.username404.snowygui.utils.RenderingUtil.colorShader
import fr.username404.snowygui.utils.RenderingUtil.endDraw
import fr.username404.snowygui.utils.RenderingUtil.prepareDraw
import fr.username404.snowygui.utils.RenderingUtil.colorShader
import net.minecraft.client.gui.GuiGraphics
import kotlin.reflect.full.findAnnotation
sealed class ButtonImpl: ColoredElement(0.0, 0.0, 73, 8, opacity = 0.60F) {
@ -90,12 +90,12 @@ sealed class ButtonImpl: ColoredElement(0.0, 0.0, 73, 8, opacity = 0.60F) {
lightDown()
}; return false
}
final override fun render(poseStack: PoseStack?) {
final override fun render(guiGraphics: GuiGraphics?) {
prepareDraw()
colorShader(); defaultRectFunc()
endDraw()
if (poseStack != null) {
FontUtil.drawScaled(poseStack, title, x + 1, y + 1, 0.75F)
if (guiGraphics != null) {
FontUtil.drawScaled(guiGraphics, title, x + 1, y + 1, 0.75F)
}
}
}

View File

@ -1,13 +1,13 @@
package fr.username404.snowygui.gui.feature
import com.mojang.blaze3d.vertex.PoseStack
import fr.username404.snowygui.EventSnowy
import fr.username404.snowygui.argsLambda
import fr.username404.snowygui.gui.Renderable
import net.minecraft.client.gui.GuiGraphics
sealed class ButtonImplWithHud: ButtonImpl() {
protected abstract val hudRenderLambda: Renderable
private val generatedLambda: argsLambda = { hudRenderLambda.render(it.first() as PoseStack?) }
private val generatedLambda: argsLambda = { hudRenderLambda.render(it.first() as GuiGraphics?) }
final override fun execAction() {
EventSnowy["HudRender"].run {
if (toggled) add(generatedLambda)

View File

@ -1,12 +1,12 @@
package fr.username404.snowygui.gui.feature
import com.mojang.blaze3d.vertex.PoseStack
import fr.username404.snowygui.config.Configuration
import fr.username404.snowygui.gui.ColoredElement
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
@ButtonInfo(Category.HUD)
object Keystrokes: ButtonImplWithHud() {
@ -41,14 +41,14 @@ object Keystrokes: ButtonImplWithHud() {
return dynamicOpacity[i]
}
private fun drawKey(x: Double, y: Double, key: Int, poseStack: PoseStack? = null) {
private fun drawKey(x: Double, y: Double, key: Int, guiGraphics: GuiGraphics?) {
RenderingUtil.prepareDraw()
RenderingUtil.drawRectangle(
x, y, height / 2, height / 2,
color = color, opacity = getDynamicOpacity(key).toFloat()
)
RenderingUtil.endDraw()
poseStack?.let {
guiGraphics?.let {
FontUtil.drawScaled(
it, keysArray.first[key].translatedKeyMessage.string.uppercase(),
x + height.toDouble() / 5.5, y + height.toDouble() / 6.5,
@ -57,11 +57,11 @@ object Keystrokes: ButtonImplWithHud() {
}
}
private fun getNewPos(i: Int) = x + (i * (2 + (height / 2)))
override fun render(poseStack: PoseStack?) = with(RenderingUtil) {
override fun render(guiGraphics: GuiGraphics?) = with(RenderingUtil) {
for (i in 0 until 3) {
drawKey(getNewPos(i), y, i, poseStack)
drawKey(getNewPos(i), y, i, guiGraphics)
}
drawKey(getNewPos(1), y - (height / 2) - 2, 3, poseStack)
drawKey(getNewPos(1), y - (height / 2) - 2, 3, guiGraphics)
}
}
override val hudRenderLambda = Renderable {

View File

@ -1,13 +1,14 @@
package fr.username404.snowygui.utils
import com.mojang.blaze3d.vertex.PoseStack
import net.minecraft.client.Minecraft
import fr.username404.snowygui.gui.feature.Colors
import net.minecraft.client.gui.GuiGraphics
object FontUtil {
fun drawScaled(stack: PoseStack, text: String, x: Double, y: Double, scaleFactor: Float, color: Colors = Colors.BLACK) {
fun drawScaled(guiGraphics: GuiGraphics, text: String, x: Double, y: Double, scaleFactor: Float, color: Colors = Colors.BLACK) {
val stack = guiGraphics.pose()
stack.scale(scaleFactor, scaleFactor, scaleFactor)
Minecraft.getInstance().font.draw(stack, text, (x / scaleFactor).toFloat(), (y / scaleFactor).toFloat(), color.hexValue)
guiGraphics.drawString(Minecraft.getInstance().font, text, (x / scaleFactor).toInt(), (y / scaleFactor).toInt(), color.hexValue, false)
val factorToOriginal = 1F / scaleFactor
stack.scale(factorToOriginal, factorToOriginal, factorToOriginal)
}

View File

@ -8,6 +8,7 @@ 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.loader.api.FabricLoader
import net.minecraft.client.gui.GuiGraphics
import kotlin.io.path.exists
import kotlin.io.path.isDirectory
import kotlin.io.path.listDirectoryEntries
@ -20,7 +21,7 @@ class FabricInit: Snowy(), ClientModInitializer {
EVENT.register(
object: HudRenderCallback, EventSnowy {
override val type: String = "HudRender"
override fun onHudRender(matrixStack: PoseStack?, tickDelta: Float) = fire(matrixStack)
override fun onHudRender(guiGraphics: GuiGraphics?, tickDelta: Float) = fire(guiGraphics)
}
)
}

View File

@ -37,7 +37,7 @@
"fabric-language-kotlin": ">=${fabric_kotlin}",
"fabric-resource-loader-v0": "*",
"fabric-rendering-v1": "*",
"minecraft": ">=${minecraft_version}"
"minecraft": ">=1.19-alpha.22.16.b"
},
"recommends": {
"cloth-config2": ">=${clothconfig}"

View File

@ -8,6 +8,6 @@ object HudHandler: EventSnowy {
override val type: String = "HudRender"
@SubscribeEvent
fun handleRendering(event: RenderGuiEvent.Post) {
fire(event.poseStack)
fire(event.guiGraphics)
}
}

View File

@ -23,7 +23,7 @@ side = "CLIENT"
[[dependencies.snowygui]]
modId = "forge"
mandatory = true
versionRange = "[37,)"
versionRange = "[${forge_version},)"
ordering = "NONE"
side = "BOTH"

View File

@ -7,16 +7,16 @@ org.gradle.parallel=true
org.gradle.unsafe.configuration-cache=on
org.gradle.vfs.watch=true
minecraft=1.18.1
forge_version=39.1
kotlinforforge=3.1.0
kotlinVer=1.6.0
kotlin_coroutines_version=1.5.0
serializationVer=1.3.1
fabric_loader_version=0.11.7
fabric_language_kotlin=1.7.0+kotlin.1.6.0
fabric_resource_loader_version=0.4.14+713c266865
fabric_rendering_api_version=1.10.6+713c266865
fabric_api_base_version=0.3.0+a02b4463d5
clothconfig_version=6.2.57
modmenu_version=3.0.1
minecraft=1.20
forge_version=46.0
kotlinforforge=4.3.0
kotlinVer=1.8.22
kotlin_coroutines_version=1.7.1
serializationVer=1.5.1
fabric_loader_version=0.14.19
fabric_language_kotlin=1.9.5+kotlin.1.8.22
fabric_resource_loader_version=0.11.7+f7923f6d27
fabric_rendering_api_version=3.0.6+b3afc78b27
fabric_api_base_version=0.4.29+b04edc7a27
clothconfig_version=11.0.99
modmenu_version=7.0.0

View File

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-rc-1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists