Compare commits
6 Commits
2fb30b63e2
...
930cbc2f6a
Author | SHA1 | Date | |
---|---|---|---|
930cbc2f6a | |||
9503ac000b | |||
2fa0575f68 | |||
febeddb093 | |||
b4574ef5b8 | |||
dc286683a5 |
@ -3,6 +3,7 @@ import com.modrinth.minotaur.ModrinthExtension
|
||||
import com.modrinth.minotaur.dependencies.DependencyType
|
||||
import masecla.modrinth4j.model.version.ProjectVersion.VersionType
|
||||
import net.fabricmc.loom.LoomGradleExtension
|
||||
import net.fabricmc.loom.api.LoomGradleExtensionAPI
|
||||
|
||||
buildscript {
|
||||
dependencies {
|
||||
@ -17,7 +18,7 @@ plugins {
|
||||
kotlin("plugin.serialization") version "2.0.0"
|
||||
id("com.github.johnrengelman.shadow") version "8.1.1" apply false
|
||||
id("architectury-plugin") version "[3.4.160, 3.5["
|
||||
id("dev.architectury.loom") version "1.9-SNAPSHOT" apply false
|
||||
id("dev.architectury.loom") version "1.7-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"
|
||||
@ -26,7 +27,7 @@ plugins {
|
||||
|
||||
group = "fr.username404"
|
||||
version = "0.3.5"
|
||||
val groupAndName = "${rootProject.group}.${rootProject.name.toLowerCase()}"
|
||||
val groupAndName = "${rootProject.group}.${rootProject.name.lowercase()}"
|
||||
|
||||
val javaVer: String = "21"
|
||||
val sourceJavaVer: String = javaVer
|
||||
@ -50,11 +51,18 @@ subprojects {
|
||||
apply(plugin = "dev.architectury.loom")
|
||||
apply(plugin = "org.jetbrains.kotlin.plugin.serialization")
|
||||
extensions.configure<LoomGradleExtension>("loom") {
|
||||
if (this@subprojects.project.name != "common") {
|
||||
accessWidenerPath.set(project(":common").extensions.getByType<LoomGradleExtensionAPI>().accessWidenerPath)
|
||||
}
|
||||
mappingsDep = layered {
|
||||
silentMojangMappingsLicense()
|
||||
officialMojangMappings().parchment("org.parchmentmc.data:parchment-1.21:2024.06.23")
|
||||
}
|
||||
val refmap = "snowygui-${project.name}-refmap.json"
|
||||
mixin {
|
||||
useLegacyMixinAp = true
|
||||
defaultRefmapName = refmap
|
||||
}
|
||||
}
|
||||
apply(plugin = "com.github.johnrengelman.shadow")
|
||||
val shadowC by configurations.creating
|
||||
@ -110,7 +118,7 @@ subprojects {
|
||||
val dictionariesDir = "$rootDir/obfuscation"
|
||||
dependsOn(shadowJar)
|
||||
injars(shadowJar)
|
||||
outjars("$buildDir/shrinkedJar/${shadowJar.outputs.files.singleFile.name}")
|
||||
outjars("${rootProject.layout.buildDirectory}/shrinkedJar/${shadowJar.outputs.files.singleFile.name}")
|
||||
keep("class $group.snowygui.mixins.* { * ; }")
|
||||
keep("class $group.snowygui.fabric.FabricInit")
|
||||
keep("class $group.snowygui.fabric.ModMenuConf")
|
||||
@ -200,8 +208,9 @@ allprojects {
|
||||
"-opt-in=kotlin.RequiresOptIn", "-Xextended-compiler-checks", "-Xassertions=jvm", "-progressive"
|
||||
)
|
||||
jvmTarget = javaVer
|
||||
languageVersion = (kotlinSplitVersion[0] + '.' + (kotlinSplitVersion[1].toShort() + 1).toString())
|
||||
apiVersion = "${kotlinSplitVersion[0]}.${kotlinSplitVersion[1]}"
|
||||
// Uncomment when updating to architectury-loom 1.9
|
||||
//languageVersion = (kotlinSplitVersion[0] + '.' + (kotlinSplitVersion[1].toShort() + 1).toString())
|
||||
//apiVersion = "${kotlinSplitVersion[0]}.${kotlinSplitVersion[1]}"
|
||||
}
|
||||
}
|
||||
withType(JavaCompile::class) {
|
||||
@ -228,7 +237,7 @@ allprojects {
|
||||
"kotlinforforge" to rootProject.property("kotlinforforge"),
|
||||
"clothconfig" to rootProject.property("clothconfig_version"),
|
||||
"fabric_loader" to rootProject.property("fabric_loader_version"),
|
||||
"forge_version" to rootProject.property("forge_version").toString().run { substring(0, this.lastIndexOf('.') + 1) }
|
||||
"forge_version" to rootProject.property("forge_version")
|
||||
)
|
||||
inputs.properties(modProperties)
|
||||
filesNotMatching(listOf("*.png")) {
|
||||
|
@ -1,4 +1,4 @@
|
||||
architectury { common("fabric", "forge"); injectInjectables = false }
|
||||
architectury { common("fabric", "neoforge"); injectInjectables = false }
|
||||
dependencies {
|
||||
modImplementation("net.fabricmc:fabric-loader:${rootProject.property("fabric_loader_version")}")
|
||||
modImplementation("me.shedaniel.cloth:cloth-config:${rootProject.property("clothconfig_version")}") {
|
||||
@ -6,4 +6,8 @@ dependencies {
|
||||
}
|
||||
}
|
||||
|
||||
loom {
|
||||
accessWidenerPath = file("src/main/resources/${rootProject.name.lowercase()}.accessWidener")
|
||||
}
|
||||
|
||||
tasks.getByName("shrinkJar").enabled = false
|
||||
|
@ -1,11 +0,0 @@
|
||||
package fr.username404.snowygui.mixins;
|
||||
|
||||
import net.minecraft.client.OptionInstance;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
@Mixin(OptionInstance.class)
|
||||
public interface OptionValueAccessor {
|
||||
@Accessor("value")
|
||||
void setValue(Object value);
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package fr.username404.snowygui.gui.elements
|
||||
|
||||
import com.mojang.blaze3d.vertex.BufferUploader
|
||||
import com.mojang.blaze3d.vertex.DefaultVertexFormat
|
||||
import com.mojang.blaze3d.vertex.VertexFormat
|
||||
import fr.username404.snowygui.Snowy.Companion.MissingComponent
|
||||
@ -92,11 +93,13 @@ class ClickBox(
|
||||
addVertex(x, currentHeight, 0.0F).colorEnd()
|
||||
addVertex(x + width + inclination, currentHeight, 0.0F).colorEnd()
|
||||
addVertex(x + width + inclination, y + height, 0.0F).colorEnd()
|
||||
BufferUploader.drawWithShader(buildOrThrow())
|
||||
|
||||
colorShader()
|
||||
with(tessellator.begin(VertexFormat.Mode.DEBUG_LINES, DefaultVertexFormat.POSITION_COLOR)) {
|
||||
addVertex(x + inclination, y + height, 0.0F).colorEnd(Colors.WHITE_LINES.hexValue)
|
||||
addVertex(x + width, y + height, 0.0F).colorEnd(Colors.WHITE_LINES.hexValue)
|
||||
BufferUploader.drawWithShader(buildOrThrow())
|
||||
}
|
||||
}
|
||||
endDraw()
|
||||
|
@ -13,7 +13,7 @@ import net.minecraft.client.gui.GuiGraphics
|
||||
import kotlin.reflect.full.findAnnotation
|
||||
|
||||
sealed class ButtonImpl: ColoredElement(0.0, 0.0, 73, 8, opacity = 0.60F) {
|
||||
internal companion object {
|
||||
companion object {
|
||||
private fun addButtons(vararg buttons: ButtonImpl) {
|
||||
buttons.groupBy { impl ->
|
||||
ClickGui.clickBoxes.find { box ->
|
||||
|
@ -1,6 +1,5 @@
|
||||
package fr.username404.snowygui.gui.feature
|
||||
|
||||
import fr.username404.snowygui.mixins.OptionValueAccessor
|
||||
import net.minecraft.client.Minecraft
|
||||
|
||||
@ButtonInfo(Category.MISC)
|
||||
@ -10,11 +9,11 @@ object GammaBoost: ButtonImpl() {
|
||||
override fun execAction() {
|
||||
with(Minecraft.getInstance().options) {
|
||||
val gamma = gamma().get()
|
||||
@Suppress("KotlinConstantConditions")
|
||||
(gamma() as OptionValueAccessor).setValue(if (toggled) {
|
||||
gamma().value =
|
||||
if (toggled) {
|
||||
if (gamma < boost) oldGamma = gamma
|
||||
boost
|
||||
} else oldGamma)
|
||||
} else oldGamma
|
||||
}
|
||||
}
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
package fr.username404.snowygui.utils
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem
|
||||
import com.mojang.blaze3d.vertex.BufferUploader
|
||||
import com.mojang.blaze3d.vertex.DefaultVertexFormat
|
||||
import com.mojang.blaze3d.vertex.Tesselator
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer
|
||||
@ -31,11 +32,12 @@ object RenderingUtil {
|
||||
x: Double, y: Double, height: Int, width: Int,
|
||||
color: Int = Colors.TRANSPARENT(), opacity: Float = 1F
|
||||
): Unit = tessellator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR).run {
|
||||
fun VertexConsumer.colorEnd() = colorIt(color, opacity)
|
||||
fun VertexConsumer.colorIt() = colorIt(color, opacity)
|
||||
val x = x.toFloat() ; val y = y.toFloat()
|
||||
addVertex(x, y + height, 0.0F).colorEnd()
|
||||
addVertex(x + width, y + height, 0.0F).colorEnd()
|
||||
addVertex(x + width, y, 0.0F).colorEnd()
|
||||
addVertex(x, y, 0.0F).colorEnd()
|
||||
addVertex(x, y + height, 0.0F).colorIt()
|
||||
addVertex(x + width, y + height, 0.0F).colorIt()
|
||||
addVertex(x + width, y, 0.0F).colorIt()
|
||||
addVertex(x, y, 0.0F).colorIt()
|
||||
BufferUploader.drawWithShader(buildOrThrow())
|
||||
}
|
||||
}
|
||||
|
@ -2,13 +2,7 @@
|
||||
"required": true,
|
||||
"package": "fr.username404.snowygui.mixins",
|
||||
"compatibilityLevel": "JAVA_18",
|
||||
"client": [
|
||||
"KeysAccessor",
|
||||
"KeyMappings",
|
||||
"EndTickMixin",
|
||||
"TitleScreenMixin",
|
||||
"OptionValueAccessor"
|
||||
],
|
||||
"client": [],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
},
|
||||
|
3
common/src/main/resources/snowygui.accessWidener
Normal file
3
common/src/main/resources/snowygui.accessWidener
Normal file
@ -0,0 +1,3 @@
|
||||
accessWidener v2 named
|
||||
accessible field net/minecraft/client/OptionInstance value Ljava/lang/Object;
|
||||
mutable field net/minecraft/client/OptionInstance value Ljava/lang/Object;
|
3
common/src/main/resources/snowygui.common.json
Normal file
3
common/src/main/resources/snowygui.common.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"accessWidener": "snowygui.accessWidener"
|
||||
}
|
@ -32,6 +32,7 @@
|
||||
"snowygui-common.mixins.json",
|
||||
"snowygui-fabric.mixins.json"
|
||||
],
|
||||
"accessWidener": "snowygui.accessWidener",
|
||||
"depends": {
|
||||
"fabricloader": ">=${fabric_loader}",
|
||||
"fabric-language-kotlin": ">=${fabric_kotlin}",
|
||||
|
@ -3,6 +3,10 @@
|
||||
"package": "fr.username404.snowygui.mixins",
|
||||
"compatibilityLevel": "JAVA_18",
|
||||
"client": [
|
||||
"EndTickMixin",
|
||||
"TitleScreenMixin",
|
||||
"KeysAccessor",
|
||||
"KeyMappings",
|
||||
"ZoomMixin",
|
||||
"OkZoomerAlternativeMixin"
|
||||
],
|
||||
|
@ -8,7 +8,7 @@ org.gradle.unsafe.configuration-cache=on
|
||||
org.gradle.vfs.watch=true
|
||||
|
||||
minecraft=1.21
|
||||
forge_version=21.0.0-beta
|
||||
forge_version=21.0.143
|
||||
kotlinforforge=5.4.0
|
||||
kotlinVer=2.0.0
|
||||
kotlin_coroutines_version=1.7.1
|
||||
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,5 +1,5 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-milestone-3-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
@ -1,4 +1,4 @@
|
||||
architectury { platformSetupLoomIde(); forge() }
|
||||
architectury { platformSetupLoomIde(); neoForge() }
|
||||
repositories {
|
||||
maven(url = "https://maven.neoforged.net/releases/")
|
||||
maven(url = "https://thedarkcolour.github.io/KotlinForForge/")
|
||||
@ -12,8 +12,9 @@ dependencies {
|
||||
implementation("thedarkcolour:kotlinforforge:${rootProject.property("kotlinforforge")}")
|
||||
modApi("me.shedaniel.cloth:cloth-config-neoforge:${rootProject.property("clothconfig_version")}")
|
||||
implementation(project(path = ":common", configuration = "namedElements")) { isTransitive = false }
|
||||
add("developmentForge", project(path = ":common")) { isTransitive = false }
|
||||
shadowC(project(path = ":common", configuration = "transformProductionForge")) { isTransitive = false }
|
||||
|
||||
add("developmentNeoForge", project(path = ":common")) { isTransitive = false }
|
||||
shadowC(project(path = ":common", configuration = "transformProductionNeoForge")) { isTransitive = false }
|
||||
}; loom {
|
||||
runs {
|
||||
val args: MutableList<String> = mutableListOf("-Dfml.earlyprogresswindow=false")
|
@ -0,0 +1,11 @@
|
||||
package fr.username404.snowygui.forge
|
||||
|
||||
import fr.username404.snowygui.EventSnowy
|
||||
import net.neoforged.bus.api.SubscribeEvent
|
||||
import net.neoforged.neoforge.client.event.ClientTickEvent
|
||||
|
||||
object EndTickHandler: EventSnowy {
|
||||
override val type: String = "EndTick"
|
||||
@SubscribeEvent
|
||||
fun handleEndTick(event: ClientTickEvent.Post) = fire<Any>()
|
||||
}
|
@ -29,6 +29,8 @@ class ForgeInit(container: ModContainer): Snowy() {
|
||||
init {
|
||||
container.eventBus!!.run {
|
||||
addListener(this@ForgeInit::initSetup)
|
||||
register(EndTickHandler)
|
||||
register(MiscHandlers)
|
||||
register(HudHandler)
|
||||
register(ZoomHandler)
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package fr.username404.snowygui.forge
|
||||
|
||||
import fr.username404.snowygui.ClickGui
|
||||
import fr.username404.snowygui.gui.feature.ButtonImpl
|
||||
import fr.username404.snowygui.misc.AddKeyMaps
|
||||
import net.neoforged.bus.api.SubscribeEvent
|
||||
import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent
|
||||
import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent
|
||||
|
||||
object MiscHandlers {
|
||||
@SubscribeEvent
|
||||
fun handleClickGuiInit(event: RegisterMenuScreensEvent) {
|
||||
ClickGui.tick()
|
||||
ButtonImpl.initButtons()
|
||||
}
|
||||
@SubscribeEvent
|
||||
fun handleKeys(event: RegisterKeyMappingsEvent) {
|
||||
AddKeyMaps.list.forEach {
|
||||
event.register(it.key)
|
||||
}
|
||||
}
|
||||
}
|
@ -14,14 +14,14 @@ A cross-platform mod offering a useful interface.
|
||||
logoFile = "icon.png"
|
||||
|
||||
[[dependencies.snowygui]]
|
||||
modId = "cloth-config"
|
||||
modId = "cloth_config"
|
||||
mandatory = false
|
||||
versionRange = "[${clothconfig},)"
|
||||
ordering = "BEFORE"
|
||||
side = "CLIENT"
|
||||
|
||||
[[dependencies.snowygui]]
|
||||
modId = "forge"
|
||||
modId = "neoforge"
|
||||
mandatory = true
|
||||
versionRange = "[${forge_version},)"
|
||||
ordering = "NONE"
|
||||
@ -33,3 +33,9 @@ mandatory = true
|
||||
versionRange = "[${minecraft_version},)"
|
||||
ordering = "NONE"
|
||||
side = "BOTH"
|
||||
|
||||
[[mixins]]
|
||||
config = "snowygui-common.mixins.json"
|
||||
|
||||
[[mixins]]
|
||||
config = "snowygui-neoforge.mixins.json"
|
@ -11,7 +11,7 @@ pluginManagement {
|
||||
|
||||
include("common")
|
||||
include("fabric")
|
||||
include("forge")
|
||||
include("neoforge")
|
||||
|
||||
rootProject.name = "SnowyGUI"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user