diff --git a/build.gradle.kts b/build.gradle.kts index c8cff83..02f657a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -25,21 +25,21 @@ implementation("com.ibm.icu:icu4j:75.1") implementation("com.lmax:disruptor:4.0.0") implementation("com.sun.mail:jakarta.mail:2.0.1") - implementation("commons-codec:commons-codec:1.17.1") + implementation("commons-codec:commons-codec:1.17.0") implementation("commons-io:commons-io:2.16.1") implementation("io.netty:netty-all:4.1.111.Final") implementation("jakarta.mail:jakarta.mail-api:2.1.3") - implementation("net.dv8tion:JDA:5.0.1") + implementation("net.dv8tion:JDA:5.0.0-beta.24") implementation("org.apache.commons:commons-compress:1.26.2") implementation("org.apache.commons:commons-dbcp2:2.12.0") - implementation("org.apache.commons:commons-lang3:3.15.0") + implementation("org.apache.commons:commons-lang3:3.14.0") implementation("org.apache.httpcomponents.client5:httpclient5:5.3.1") implementation("org.apache.logging.log4j:log4j-core:2.23.1") implementation("org.apache.logging.log4j:log4j-slf4j2-impl:2.23.1") - implementation("org.jline:jline:3.26.3") - implementation("org.jline:jline-terminal-jansi:3.26.3") - implementation("org.jsoup:jsoup:1.18.1") - implementation("org.mariadb.jdbc:mariadb-java-client:3.4.1") + implementation("org.jline:jline:3.26.2") + implementation("org.jline:jline-terminal-jansi:3.26.2") + implementation("org.jsoup:jsoup:1.17.2") + implementation("org.mariadb.jdbc:mariadb-java-client:3.4.0") implementation("org.python:jython-standalone:2.7.3") implementation("org.seleniumhq.selenium:selenium-edge-driver:4.22.0") implementation("org.seleniumhq.selenium:selenium-java:4.22.0") diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ab79162..db4c326 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists \ No newline at end of file diff --git a/src/main/kotlin/net/taehui/twilight/Twilight.kt b/src/main/kotlin/net/taehui/twilight/Twilight.kt index c2555eb..8275cb5 100644 --- a/src/main/kotlin/net/taehui/twilight/Twilight.kt +++ b/src/main/kotlin/net/taehui/twilight/Twilight.kt @@ -67,7 +67,7 @@ TVSystem.loadAllowedTV() AbilityClassSystem.loadAbilityClass() - AbilitySystem.loadAbility(false) + AbilitySystem.load(false) EdgeSystem.loadEdge() LevelSystem.loadLevel() TitleSystem.loadTitle() @@ -82,9 +82,7 @@ TVSystem.handleSystem() WitSystem.handleSystem() - AutoSystem.handleSystem() try { - val sslContext = Files.newInputStream(Paths.get("Twilight.jks")).use { val keyStore = KeyStore.getInstance(KeyStore.getDefaultType()) keyStore.load(it, Configure.javaCipherStore.pw0) @@ -105,6 +103,7 @@ } } } finally { + WitSystem.dispose() TVSystem.dispose() PlatformSystem.dispose() AwilightHandler.dispose() diff --git a/src/main/kotlin/net/taehui/twilight/awilight/AwilightAvatar.kt b/src/main/kotlin/net/taehui/twilight/awilight/AwilightAvatar.kt index 50bd72c..fb12d55 100644 --- a/src/main/kotlin/net/taehui/twilight/awilight/AwilightAvatar.kt +++ b/src/main/kotlin/net/taehui/twilight/awilight/AwilightAvatar.kt @@ -362,7 +362,7 @@ }.findAny().orElse("") }, this, text.handlerID, it ).also { tmpComputer -> - logFuture { + Thread { var isOK = false try { if (tmpComputer.noteID.isNotEmpty()) { @@ -377,7 +377,7 @@ setNoteFile(it.siteID) } } - } + }.apply { isDaemon = true }.start() } } } @@ -387,13 +387,13 @@ EventOuterClass.Event.EventID.COMPILED -> { synchronized(defaultComputerCSX) { if (eventText == defaultComputer?.handlerID) { - logFuture { + Thread { try { defaultComputer?.handleNotes(w) } finally { defaultComputer?.stop() } - } + }.apply { isDaemon = true }.start() } } } diff --git a/src/main/kotlin/net/taehui/twilight/system/AbilitySystem.kt b/src/main/kotlin/net/taehui/twilight/system/AbilitySystem.kt index 8dc5a84..09009af 100644 --- a/src/main/kotlin/net/taehui/twilight/system/AbilitySystem.kt +++ b/src/main/kotlin/net/taehui/twilight/system/AbilitySystem.kt @@ -108,7 +108,7 @@ } } - private fun loadFile(defaultAbility: DefaultAbility) { + private fun loadAbility(defaultAbility: DefaultAbility) { val jm = ObjectMapper() val abilityMap = defaultAbility.abilityMap noteIDAbilityMap[AbilityClassSystem.AbilityClassVariety.ETC]?.wipe() @@ -179,7 +179,7 @@ logInfo("Learned Ability") } - fun loadAbility(getAbility: Boolean) { + fun load(getAbility: Boolean) { val jm = ObjectMapper() val defaultAbility = jm.readValue( TwilightComponent.ABILITY_ENTRY_PATH.resolve("Default.json").toFile().absoluteFile, @@ -188,7 +188,7 @@ if (getAbility) { getAbility(defaultAbility) } - loadFile(defaultAbility) + loadAbility(defaultAbility) } fun getAbility( diff --git a/src/main/kotlin/net/taehui/twilight/system/AutoSystem.kt b/src/main/kotlin/net/taehui/twilight/system/AutoSystem.kt deleted file mode 100644 index 6d4d516..0000000 --- a/src/main/kotlin/net/taehui/twilight/system/AutoSystem.kt +++ /dev/null @@ -1,52 +0,0 @@ -package net.taehui.twilight.system - -import net.taehui.twilight.Logger -import net.taehui.twilight.TwilightComponent -import org.apache.commons.io.FilenameUtils -import java.nio.file.* -import java.util.concurrent.Executors -import java.util.concurrent.ScheduledExecutorService - -object AutoSystem : Logger { - private val ses: ScheduledExecutorService = Executors.newSingleThreadScheduledExecutor { - Executors.defaultThreadFactory().newThread(it).apply { - isDaemon = true - } - } - private val ws = FileSystems.getDefault().newWatchService() - - fun handleSystem() { - logFuture { - ws.use { - TwilightComponent.SYSTEM_ENTRY_PATH.register(ws, StandardWatchEventKinds.ENTRY_MODIFY) - TwilightComponent.DEFAULT_NOTE_ENTRY.register(ws, StandardWatchEventKinds.ENTRY_MODIFY) - TwilightComponent.DEFAULT_UI_ENTRY.register(ws, StandardWatchEventKinds.ENTRY_MODIFY) - while (true) { - val tws = ws.take() - tws.pollEvents().forEach { - val filePath = (tws.watchable() as Path).resolve(it.context() as Path) - val fileName = filePath.fileName.toString() - when (filePath.parent.fileName.toString()) { - "Note", "UI" -> { - if (FilenameUtils.isExtension(fileName, "zip") || FilenameUtils.isExtension( - fileName, - "rar" - ) - ) { - Configure.loadDefaultDate() - } - } - - "System" -> { - when (fileName) { - "Awilight.py" -> AwilightHandler.loadAwilight() - } - } - } - } - tws.reset() - } - } - } - } -} diff --git a/src/main/kotlin/net/taehui/twilight/system/Configure.kt b/src/main/kotlin/net/taehui/twilight/system/Configure.kt index 722ddfe..7db1beb 100644 --- a/src/main/kotlin/net/taehui/twilight/system/Configure.kt +++ b/src/main/kotlin/net/taehui/twilight/system/Configure.kt @@ -87,6 +87,7 @@ class Mode { var platform = false var tv = false + @JsonIgnore var pause = false } @@ -111,8 +112,10 @@ lateinit var www: Www lateinit var nhn: NHN var awilightCount = 0 + @JsonIgnore var defaultNoteDate = 0L + @JsonIgnore var defaultUIDate = 0L @@ -123,17 +126,11 @@ it[this] = it[text] ?: throw RuntimeException(it.name) } } + defaultNoteDate = Files.getLastModifiedTime(TwilightComponent.DEFAULT_NOTE_ENTRY).to(TimeUnit.MILLISECONDS) + defaultUIDate = Files.getLastModifiedTime(TwilightComponent.DEFAULT_UI_ENTRY).to(TimeUnit.MILLISECONDS) logInfo("Loaded Configure") saveConfigure() - - loadDefaultDate() - } - - fun loadDefaultDate() { - defaultNoteDate = Files.getLastModifiedTime(TwilightComponent.DEFAULT_NOTE_ENTRY).to(TimeUnit.MILLISECONDS) - defaultUIDate = Files.getLastModifiedTime(TwilightComponent.DEFAULT_UI_ENTRY).to(TimeUnit.MILLISECONDS) - logInfo("Loaded Default Date") } fun saveConfigure() { diff --git a/src/main/kotlin/net/taehui/twilight/system/IO.kt b/src/main/kotlin/net/taehui/twilight/system/IO.kt index 37e99cc..3345760 100644 --- a/src/main/kotlin/net/taehui/twilight/system/IO.kt +++ b/src/main/kotlin/net/taehui/twilight/system/IO.kt @@ -503,7 +503,7 @@ if (w.size > 1) { when (w[1]) { "ability" -> { - AbilitySystem.loadAbility(true) + AbilitySystem.load(true) continue } } @@ -516,7 +516,7 @@ TVSystem.loadAllowedTV() AbilityClassSystem.loadAbilityClass() - AbilitySystem.loadAbility(false) + AbilitySystem.load(false) EdgeSystem.loadEdge() LevelSystem.loadLevel() TitleSystem.loadTitle() diff --git a/src/main/kotlin/net/taehui/twilight/system/WitSystem.kt b/src/main/kotlin/net/taehui/twilight/system/WitSystem.kt index 7ec00c8..37155be 100644 --- a/src/main/kotlin/net/taehui/twilight/system/WitSystem.kt +++ b/src/main/kotlin/net/taehui/twilight/system/WitSystem.kt @@ -13,6 +13,10 @@ private val witMap = ConcurrentHashMap (() -> Unit)>>>() + fun dispose() { + ses.shutdown() + } + fun handleLoop(src: Any, date: LocalDateTime, loopCount: Int, toHandle: (LocalDateTime) -> Unit) { if (loopCount != 0) { witMap.getOrPut(src) {