Fix the mod on neoforge 1.21.5 by notably using the mod loader configuration directories

Signed-off-by: Username404-59 <w.iron.zombie@gmail.com>
This commit is contained in:
Username404-59 2025-04-16 17:29:49 +02:00
parent 0db5d80cf1
commit bb90bad1d1
Signed by: Username404-59
GPG Key ID: 7AB361FBB257A5D1
3 changed files with 23 additions and 14 deletions

View File

@ -1,4 +1,4 @@
architectury { common("fabric", "forge"); injectInjectables = false }
architectury { common("fabric", "forge"); injectInjectables = true }
dependencies {
modImplementation("net.fabricmc:fabric-loader:${rootProject.property("fabric_loader_version")}")
modImplementation("me.shedaniel.cloth:cloth-config:${rootProject.property("clothconfig_version")}") {

View File

@ -8,34 +8,30 @@ import com.typesafe.config.ConfigFactory.parseFile
import com.typesafe.config.ConfigFactory.parseString
import com.typesafe.config.ConfigRenderOptions
import com.typesafe.config.ConfigValueFactory
import dev.architectury.injectables.targets.ArchitecturyTarget
import fr.username404.snowygui.ClickGui
import fr.username404.snowygui.Snowy
import fr.username404.snowygui.Snowy.Companion.MissingComponent
import fr.username404.snowygui.gui.feature.shouldSave
import fr.username404.snowygui.gui.feature.Category
import fr.username404.snowygui.gui.feature.Macro
import fr.username404.snowygui.gui.feature.shouldSave
import io.github.config4k.extract
import io.github.config4k.getValue
import net.minecraft.client.Minecraft
import java.io.File
import kotlin.reflect.KProperty
import kotlinx.coroutines.CoroutineStart
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import net.minecraft.network.chat.MutableComponent
import net.minecraft.network.chat.contents.TranslatableContents
import org.jetbrains.annotations.ApiStatus
import java.io.File
import java.nio.file.Path
import kotlin.io.path.absolutePathString
import kotlin.reflect.KClass
import kotlin.reflect.KProperty
import kotlin.reflect.full.isSuperclassOf
@OptIn(ExperimentalSerializationApi::class)
object Configuration {
@Deprecated("Use the getValue or setValue methods instead", level = DeprecationLevel.ERROR)
@JvmStatic
@ -54,7 +50,19 @@ object Configuration {
}.toTypedArray()),
)
}
private val configDirectory: String = (Minecraft.getInstance().gameDirectory.absolutePath + File.separator + "config").also { File(it).mkdir() }
private val configDirectory: String =
(if (ArchitecturyTarget.getCurrentTarget() == "fabric") {
Class.forName("net.fabricmc.loader.api.FabricLoader").run {
getMethod("getConfigDir").invoke(getMethod("getInstance").invoke(null))
}
} else {
Class.forName("net.neoforged.fml.loading.FMLPaths")
.getField("CONFIGDIR")
.get(null)
.let { enum ->
enum.javaClass.getMethod("get").invoke(enum)
}
} as Path).absolutePathString()
private val file: File = File(configDirectory + File.separator + "snowy.conf")
private val obtained: Config = run {
var result: Config = empty()

View File

@ -9,12 +9,13 @@ import net.arikia.dev.drpc.DiscordRPC as discord_rpc
@ButtonInfo(Category.MISC)
object DiscordRPC: ButtonImpl() {
private val RPCHandlers: DiscordEventHandlers = DiscordEventHandlers.Builder().build()
private val RichPresence: DiscordRichPresence.Builder = DiscordRichPresence
private val RichPresence: Lazy<DiscordRichPresence.Builder> = lazy { DiscordRichPresence
.Builder("Playing Minecraft ${Minecraft.getInstance().launchedVersion}")
.setDetails("Launched with ${Minecraft.getInstance().versionType}")
.setBigImage("icon", "SnowyGUI")
}
override fun execAction() {
if (toggled) discord_rpc.discordUpdatePresence(RichPresence.build())
if (toggled) discord_rpc.discordUpdatePresence(RichPresence.value.build())
else discord_rpc.discordClearPresence()
}
init {