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:
parent
b56a8b0cad
commit
e22ff551df
@ -1,4 +1,4 @@
|
|||||||
architectury { common("fabric", "neoforge"); injectInjectables = false }
|
architectury { common("fabric", "neoforge"); injectInjectables = true }
|
||||||
dependencies {
|
dependencies {
|
||||||
modImplementation("net.fabricmc:fabric-loader:${rootProject.property("fabric_loader_version")}")
|
modImplementation("net.fabricmc:fabric-loader:${rootProject.property("fabric_loader_version")}")
|
||||||
modImplementation("me.shedaniel.cloth:cloth-config:${rootProject.property("clothconfig_version")}") {
|
modImplementation("me.shedaniel.cloth:cloth-config:${rootProject.property("clothconfig_version")}") {
|
||||||
|
@ -8,34 +8,30 @@ import com.typesafe.config.ConfigFactory.parseFile
|
|||||||
import com.typesafe.config.ConfigFactory.parseString
|
import com.typesafe.config.ConfigFactory.parseString
|
||||||
import com.typesafe.config.ConfigRenderOptions
|
import com.typesafe.config.ConfigRenderOptions
|
||||||
import com.typesafe.config.ConfigValueFactory
|
import com.typesafe.config.ConfigValueFactory
|
||||||
|
import dev.architectury.injectables.targets.ArchitecturyTarget
|
||||||
import fr.username404.snowygui.ClickGui
|
import fr.username404.snowygui.ClickGui
|
||||||
import fr.username404.snowygui.Snowy
|
import fr.username404.snowygui.Snowy
|
||||||
import fr.username404.snowygui.Snowy.Companion.MissingComponent
|
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.Category
|
||||||
import fr.username404.snowygui.gui.feature.Macro
|
import fr.username404.snowygui.gui.feature.Macro
|
||||||
|
import fr.username404.snowygui.gui.feature.shouldSave
|
||||||
import io.github.config4k.extract
|
import io.github.config4k.extract
|
||||||
import io.github.config4k.getValue
|
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.CoroutineStart
|
||||||
import kotlinx.coroutines.coroutineScope
|
import kotlinx.coroutines.coroutineScope
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import kotlinx.serialization.ExperimentalSerializationApi
|
|
||||||
import kotlinx.serialization.decodeFromString
|
|
||||||
import kotlinx.serialization.encodeToString
|
import kotlinx.serialization.encodeToString
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import net.minecraft.network.chat.MutableComponent
|
|
||||||
import net.minecraft.network.chat.contents.TranslatableContents
|
import net.minecraft.network.chat.contents.TranslatableContents
|
||||||
import org.jetbrains.annotations.ApiStatus
|
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.KClass
|
||||||
|
import kotlin.reflect.KProperty
|
||||||
import kotlin.reflect.full.isSuperclassOf
|
import kotlin.reflect.full.isSuperclassOf
|
||||||
|
|
||||||
@OptIn(ExperimentalSerializationApi::class)
|
|
||||||
object Configuration {
|
object Configuration {
|
||||||
@Deprecated("Use the getValue or setValue methods instead", level = DeprecationLevel.ERROR)
|
@Deprecated("Use the getValue or setValue methods instead", level = DeprecationLevel.ERROR)
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@ -54,7 +50,19 @@ object Configuration {
|
|||||||
}.toTypedArray()),
|
}.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 file: File = File(configDirectory + File.separator + "snowy.conf")
|
||||||
private val obtained: Config = run {
|
private val obtained: Config = run {
|
||||||
var result: Config = empty()
|
var result: Config = empty()
|
||||||
|
@ -9,12 +9,13 @@ import net.arikia.dev.drpc.DiscordRPC as discord_rpc
|
|||||||
@ButtonInfo(Category.MISC)
|
@ButtonInfo(Category.MISC)
|
||||||
object DiscordRPC: ButtonImpl() {
|
object DiscordRPC: ButtonImpl() {
|
||||||
private val RPCHandlers: DiscordEventHandlers = DiscordEventHandlers.Builder().build()
|
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}")
|
.Builder("Playing Minecraft ${Minecraft.getInstance().launchedVersion}")
|
||||||
.setDetails("Launched with ${Minecraft.getInstance().versionType}")
|
.setDetails("Launched with ${Minecraft.getInstance().versionType}")
|
||||||
.setBigImage("icon", "SnowyGUI")
|
.setBigImage("icon", "SnowyGUI")
|
||||||
|
}
|
||||||
override fun execAction() {
|
override fun execAction() {
|
||||||
if (toggled) discord_rpc.discordUpdatePresence(RichPresence.build())
|
if (toggled) discord_rpc.discordUpdatePresence(RichPresence.value.build())
|
||||||
else discord_rpc.discordClearPresence()
|
else discord_rpc.discordClearPresence()
|
||||||
}
|
}
|
||||||
init {
|
init {
|
||||||
|
Loading…
Reference in New Issue
Block a user