monun / kommand

GNU General Public License v3.0
96 stars 22 forks source link

Having requirement issue when changed RootNode properties on initialization #43

Closed ghost closed 1 year ago

ghost commented 1 year ago

RootNode에서 description, fallbackPrefix, usage 항목들을 수정하려고 하면 Kommand가 이미 Initialize된 상태이기에 다음과 같은 오류가 발생합니다:

[16:51:16] [Server thread/ERROR]: Error occurred while enabling Kommand v3.1.4 (Is it up to date?)
java.lang.IllegalArgumentException: Cannot redefine description after initialization
    at io.github.monun.kommand.internal.AbstractKommandNode$kommandField$1.beforeChange(AbstractKommandNode.kt:37) ~[kommand-3.1.3-reobf.jar:?]
    at kotlin.properties.ObservableProperty.setValue(ObservableProperty.kt:37) ~[?:?]
    at io.github.monun.kommand.internal.RootNodeImpl.setDescription(RootNodeImpl.kt:25) ~[kommand-3.1.3-reobf.jar:?]
    at io.github.monun.kommand.plugin.KommandPlugin$onEnable$1$1.invoke(KommandPlugin.kt:56) ~[kommand-3.1.3-reobf.jar:?]
    at io.github.monun.kommand.plugin.KommandPlugin$onEnable$1$1.invoke(KommandPlugin.kt:54) ~[kommand-3.1.3-reobf.jar:?]
    at io.github.monun.kommand.PluginKommand$register$1.invoke(Kommand.kt:48) ~[kommand-3.1.3-reobf.jar:?]
    at io.github.monun.kommand.PluginKommand$register$1.invoke(Kommand.kt:48) ~[kommand-3.1.3-reobf.jar:?]
    at io.github.monun.kommand.internal.AbstractKommand.register(AbstractKommand.kt:46) ~[kommand-3.1.3-reobf.jar:?]
    at io.github.monun.kommand.Kommand$Companion.register(Kommand.kt) ~[kommand-3.1.3-reobf.jar:?]
    at io.github.monun.kommand.PluginKommand.register(Kommand.kt:48) ~[kommand-3.1.3-reobf.jar:?]
    at io.github.monun.kommand.plugin.KommandPlugin$onEnable$1.invoke(KommandPlugin.kt:54) ~[kommand-3.1.3-reobf.jar:?]
    at io.github.monun.kommand.plugin.KommandPlugin$onEnable$1.invoke(KommandPlugin.kt:53) ~[kommand-3.1.3-reobf.jar:?]
    at io.github.monun.kommand.KommandKt.kommand(Kommand.kt:59) ~[kommand-3.1.3-reobf.jar:?]
    at io.github.monun.kommand.plugin.KommandPlugin.onEnable(KommandPlugin.kt:53) ~[kommand-3.1.3-reobf.jar:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:281) ~[paper-api-1.20-R0.1-SNAPSHOT.jar:?]
    at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:189) ~[paper-1.20.jar:git-Paper-4]
    at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:104) ~[paper-1.20.jar:git-Paper-4]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:507) ~[paper-api-1.20-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.craftbukkit.v1_20_R1.CraftServer.enablePlugin(CraftServer.java:563) ~[paper-1.20.jar:git-Paper-4]
    at org.bukkit.craftbukkit.v1_20_R1.CraftServer.enablePlugins(CraftServer.java:474) ~[paper-1.20.jar:git-Paper-4]
    at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:638) ~[paper-1.20.jar:git-Paper-4]
    at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:437) ~[paper-1.20.jar:git-Paper-4]
    at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:308) ~[paper-1.20.jar:git-Paper-4]
    at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1103) ~[paper-1.20.jar:git-Paper-4]
    at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:320) ~[paper-1.20.jar:git-Paper-4]
    at java.lang.Thread.run(Thread.java:833) ~[?:?]
[16:51:16] [Server thread/INFO]: [Kommand] Disabling Kommand v3.1.4

코드 순서를 "Property들을 먼저 설정 한 이후 Initialize 하기"로 바꾸니 lateinit property인 kommand가 Initialize가 되지 않았다면서 뻗더라고요... 제가 해결 할 수 있는 문제는 아닌 것 같아서 이슈 남깁니다.

마이너한 버그니까 원하실때 수정하시면 될듯...? 몰?루

monun commented 1 year ago

코드도 같이 올려주세요

ghost commented 1 year ago

코드도 같이 올려주세요

kommand-plugin 코드 동일하고 RootNode에 프로퍼티 넣으면 발생합니다.

ghost commented 1 year ago

완전히 새 프로젝트에 새 kommand입니다. 버전은 모두 업데이트 했습니다.

JavaPlugin:

        kommand {
            register("shadowdeath") {

                usage = "shadowdeath"
                description = "Shadowdeath Plugin Command"
                // 이 위에 두줄 없으면 돌아가요

                requires { isOp }
                register(this) // From ShadowdeathKommand.kt
            }
        }

ShadowdeathKommand:

object ShadowdeathKommand {
    fun register(builder: RootNode) {
        builder.apply {
            executes {
                sender.sendMessage(text("Hello World!"))
            }
        }
    }
}

Stacktrace:

[20:40:26 INFO]: [Shadowdeath] Enabling Shadowdeath v0.0.1
[20:40:26 ERROR]: Error occurred while enabling Shadowdeath v0.0.1 (Is it up to date?)
java.lang.IllegalArgumentException: Cannot redefine usage after initialization
    at io.github.monun.kommand.internal.AbstractKommandNode$kommandField$1.beforeChange(AbstractKommandNode.kt:37) ~[?:?]
    at kotlin.properties.ObservableProperty.setValue(ObservableProperty.kt:37) ~[?:?]
    at io.github.monun.kommand.internal.RootNodeImpl.setUsage(RootNodeImpl.kt:26) ~[?:?]
    at io.github.lambdynma.shadowdeath.plugin.ShadowdeathPlugin$onEnable$1$1.invoke(ShadowdeathPlugin.kt:44) ~[Shadowdeath.jar:?]
    at io.github.lambdynma.shadowdeath.plugin.ShadowdeathPlugin$onEnable$1$1.invoke(ShadowdeathPlugin.kt:42) ~[Shadowdeath.jar:?]
    at io.github.monun.kommand.PluginKommand$register$1.invoke(Kommand.kt:48) ~[?:?]
    at io.github.monun.kommand.PluginKommand$register$1.invoke(Kommand.kt:48) ~[?:?]
    at io.github.monun.kommand.internal.AbstractKommand.register(AbstractKommand.kt:46) ~[?:?]
    at io.github.monun.kommand.Kommand$Companion.register(Kommand.kt) ~[?:?]
    at io.github.monun.kommand.PluginKommand.register(Kommand.kt:48) ~[?:?]
    at io.github.lambdynma.shadowdeath.plugin.ShadowdeathPlugin$onEnable$1.invoke(ShadowdeathPlugin.kt:42) ~[Shadowdeath.jar:?]
    at io.github.lambdynma.shadowdeath.plugin.ShadowdeathPlugin$onEnable$1.invoke(ShadowdeathPlugin.kt:41) ~[Shadowdeath.jar:?]
    at io.github.monun.kommand.KommandKt.kommand(Kommand.kt:59) ~[?:?]
    at io.github.lambdynma.shadowdeath.plugin.ShadowdeathPlugin.onEnable(ShadowdeathPlugin.kt:41) ~[Shadowdeath.jar:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:281) ~[paper-api-1.20.1-R0.1-SNAPSHOT.jar:?]
    at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:189) ~[paper-1.20.1.jar:git-Paper-43]
    at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:104) ~[paper-1.20.1.jar:git-Paper-43]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:507) ~[paper-api-1.20.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.craftbukkit.v1_20_R1.CraftServer.enablePlugin(CraftServer.java:636) ~[paper-1.20.1.jar:git-Paper-43]
    at org.bukkit.craftbukkit.v1_20_R1.CraftServer.enablePlugins(CraftServer.java:547) ~[paper-1.20.1.jar:git-Paper-43]
    at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:636) ~[paper-1.20.1.jar:git-Paper-43]
    at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:435) ~[paper-1.20.1.jar:git-Paper-43]
    at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:308) ~[paper-1.20.1.jar:git-Paper-43]
    at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1101) ~[paper-1.20.1.jar:git-Paper-43]
    at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:318) ~[paper-1.20.1.jar:git-Paper-43]
    at java.lang.Thread.run(Thread.java:833) ~[?:?]
ghost commented 1 year ago

코드 순서를 "Property들을 먼저 설정 한 이후 Initialize 하기"로 바꾸니 lateinit property인 kommand가 Initialize가 되지 않았다면서 뻗더라고요... 제가 해결 할 수 있는 문제는 아닌 것 같아서 이슈 남깁니다.

kommand-core를 직접 수정해서 해결하려고 했다가 실패했다는 의미입니다. 별 다른 의미는 없어요.

ghost commented 1 year ago

알아서 수정하실것 같다 생각해서 일단 닫습니다 어차피 계정 바꿔야해서