HTTPS
https://git.nageyqma.icu/nageyqma/odin_next.git
SSH
git@git.nageyqma.icu:nageyqma/odin_next.git
HTTPS 链接可直接 git clone;推送代码请使用 SSH。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
package com.odtheking.odin
import com.odtheking.odin.commands.*
import com.odtheking.odin.events.EventDispatcher
import com.odtheking.odin.events.core.EventBus
import com.odtheking.odin.features.ModuleManager
import com.odtheking.odin.features.impl.dungeon.map.DungeonScan
import com.odtheking.odin.features.impl.render.Shenanigans
import com.odtheking.odin.utils.IrisCompatability
import com.odtheking.odin.utils.ServerUtils
import com.odtheking.odin.utils.handlers.TickTasks
import com.odtheking.odin.utils.render.ItemStateRenderer
import com.odtheking.odin.utils.skyblock.*
import com.odtheking.odin.utils.skyblock.dungeon.DungeonListener
import com.odtheking.odin.utils.skyblock.dungeon.DungeonUtils
import com.odtheking.odin.utils.skyblock.dungeon.terminals.TerminalUtils
import com.odtheking.odin.utils.ui.widget.CustomGUIImpl
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.SupervisorJob
import net.fabricmc.api.ClientModInitializer
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback
import net.fabricmc.fabric.api.client.rendering.v1.PictureInPictureRendererRegistry
import net.fabricmc.loader.api.FabricLoader
import net.fabricmc.loader.api.Version
import net.minecraft.client.Minecraft
import org.apache.logging.log4j.LogManager
import org.apache.logging.log4j.Logger
import java.io.File
import kotlin.coroutines.EmptyCoroutineContext
object OdinMod : ClientModInitializer {
val logger: Logger = LogManager.getLogger("Odin")
@JvmStatic
val mc: Minecraft = Minecraft.getInstance()
/**
* Main config file location.
* @see com.odtheking.odin.config.ModuleConfig
* @see com.odtheking.odin.config.DungeonWaypointConfig
*/
val configFile: File = File(mc.gameDirectory, "config/odin/").apply {
try {
if (isFile) delete() // Delete old bugged files that prevent creating the directory
if (!exists()) mkdirs()
} catch (e: Exception) {
println("Error initializing module config\n${e.message}")
logger.error("Error initializing module config", e)
}
}
const val MOD_ID = "odin"
val version: Version by lazy { FabricLoader.getInstance().getModContainer(MOD_ID).orElseThrow().metadata.version }
val scope = CoroutineScope(SupervisorJob() + EmptyCoroutineContext)
override fun onInitializeClient() {
ClientCommandRegistrationCallback.EVENT.register { dispatcher, _ ->
arrayOf(
mainCommand, devCommand, waypointCommand,
soopyCommand, termSimCommand, posMsgCommand,
dungeonWaypointsCommand, cataCommand
).forEach { commodore -> commodore.register(dispatcher) }
}
listOf(
this, LocationUtils, TickTasks, KuudraUtils,
ActionBarListener, ServerUtils, EventDispatcher,
DungeonListener, PartyUtils, TerminalUtils,
DungeonUtils, SplitsManager, DungeonScan,
IrisCompatability,
ModuleManager, CustomGUIImpl, Shenanigans,
).forEach { EventBus.subscribe(it) }
PictureInPictureRendererRegistry.register { ItemStateRenderer() }
}
}