aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/moe/nea/notenoughupdates/NotEnoughUpdates.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/moe/nea/notenoughupdates/NotEnoughUpdates.kt')
-rw-r--r--src/main/kotlin/moe/nea/notenoughupdates/NotEnoughUpdates.kt32
1 files changed, 24 insertions, 8 deletions
diff --git a/src/main/kotlin/moe/nea/notenoughupdates/NotEnoughUpdates.kt b/src/main/kotlin/moe/nea/notenoughupdates/NotEnoughUpdates.kt
index c4f3f69..ff816f5 100644
--- a/src/main/kotlin/moe/nea/notenoughupdates/NotEnoughUpdates.kt
+++ b/src/main/kotlin/moe/nea/notenoughupdates/NotEnoughUpdates.kt
@@ -2,19 +2,26 @@ package moe.nea.notenoughupdates
import com.mojang.brigadier.Command
import com.mojang.brigadier.CommandDispatcher
+import io.github.cottonmc.cotton.gui.client.CottonClientScreen
import io.ktor.client.*
import io.ktor.client.plugins.*
import io.ktor.client.plugins.contentnegotiation.*
import io.ktor.serialization.kotlinx.json.*
import kotlinx.coroutines.*
import kotlinx.serialization.json.Json
+import moe.nea.notenoughupdates.gui.RepoManagementGui
import moe.nea.notenoughupdates.repo.RepoManager
+import moe.nea.notenoughupdates.util.ConfigHolder
+import moe.nea.notenoughupdates.util.ScreenUtil.setScreenLater
import net.fabricmc.api.ClientModInitializer
import net.fabricmc.api.ModInitializer
import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource
import net.fabricmc.loader.api.FabricLoader
+import net.fabricmc.loader.api.Version
+import net.fabricmc.loader.api.metadata.ModMetadata
+import net.minecraft.client.Minecraft
import net.minecraft.commands.CommandBuildContext
import net.minecraft.network.chat.Component
import org.apache.logging.log4j.LogManager
@@ -25,15 +32,17 @@ import kotlin.coroutines.EmptyCoroutineContext
object NotEnoughUpdates : ModInitializer, ClientModInitializer {
const val MOD_ID = "notenoughupdates"
- val DATA_DIR = Path.of(".notenoughupdates").also { Files.createDirectories(it) }
val DEBUG = System.getenv("notenoughupdates.debug") == "true"
+ val DATA_DIR: Path = Path.of(".notenoughupdates").also { Files.createDirectories(it) }
+ val CONFIG_DIR: Path = Path.of("config/notenoughupdates").also { Files.createDirectories(it) }
val logger = LogManager.getLogger("NotEnoughUpdates")
- val metadata by lazy { FabricLoader.getInstance().getModContainer(MOD_ID).orElseThrow().metadata }
- val version by lazy { metadata.version }
+ val metadata: ModMetadata by lazy { FabricLoader.getInstance().getModContainer(MOD_ID).orElseThrow().metadata }
+ val version: Version by lazy { metadata.version }
val json = Json {
prettyPrint = DEBUG
ignoreUnknownKeys = true
+ encodeDefaults = true
}
val httpClient by lazy {
@@ -49,23 +58,30 @@ object NotEnoughUpdates : ModInitializer, ClientModInitializer {
val globalJob = Job()
val coroutineScope =
- CoroutineScope(EmptyCoroutineContext + CoroutineName("NotEnoughUpdates")) + SupervisorJob(globalJob)
+ CoroutineScope(EmptyCoroutineContext + CoroutineName("NotEnoughUpdates")) + SupervisorJob(globalJob)
val coroutineScopeIo = coroutineScope + Dispatchers.IO + SupervisorJob(globalJob)
private fun registerCommands(
- dispatcher: CommandDispatcher<FabricClientCommandSource>,
- @Suppress("UNUSED_PARAMETER")
- _ctx: CommandBuildContext
+ dispatcher: CommandDispatcher<FabricClientCommandSource>,
+ @Suppress("UNUSED_PARAMETER")
+ _ctx: CommandBuildContext
) {
dispatcher.register(ClientCommandManager.literal("neureload").executes {
it.source.sendFeedback(Component.literal("Reloading repository from disk. This may lag a bit."))
RepoManager.neuRepo.reload()
Command.SINGLE_SUCCESS
})
+ dispatcher.register(ClientCommandManager.literal("neu")
+ .then(ClientCommandManager.literal("repo").executes {
+ it.source.sendFeedback(Component.literal("Hi, this should work"))
+ Minecraft.getInstance().setScreenLater(CottonClientScreen(RepoManagementGui()))
+ Command.SINGLE_SUCCESS
+ }))
}
override fun onInitialize() {
- RepoManager.launchAsyncUpdate()
+ RepoManager.initialize()
+ ConfigHolder.registerEvents()
ClientCommandRegistrationCallback.EVENT.register(this::registerCommands)
}