taboolib icon indicating copy to clipboard operation
taboolib copied to clipboard

为什么启动后无Plugin实例

Open Liangbai2333 opened this issue 9 months ago • 11 comments

我在site.liangbai.cobblemonwiki包下声明了插件site.liangbai.cobblemonwiki.CobblemonWiki

package site.liangbai.cobblemonwiki

import taboolib.common.platform.Plugin
import taboolib.common.platform.function.info
import taboolib.module.configuration.Config
import taboolib.module.configuration.ConfigFile

object CobblemonWiki : Plugin() {
    @Config
    lateinit var config: ConfigFile

    override fun onLoad() {
        println("loading ")
    }

    override fun onEnable() {
        println(123)
        println(456)
        info("enabling wiki")
    }

    override fun onActive() {
        println("setuping...")
    }
}

但是我发现启动后,不论是onLoad, onEnable, onActive周期,都没输出内容

于是我赶紧跑去检查build.gradle.kts

group = "site.liangbai.cobblemonwiki"
version = "1.0.0"

taboolib {
    description {
        dependencies {
            name("CobblemonLegendarySpawner").optional(true)
        }
    }

    env {
        install(Basic)
        install(Bukkit)
        install(MinecraftChat)
        install(BukkitUtil)
        install(BukkitNMS)
        install(BukkitNMSUtil)
    }
}

dependencies {
    minecraft("net.minecraft:minecraft:${rootProject.property("minecraft_version")}")
    mappings(loom.officialMojangMappings())

    modCompileOnly("com.cobblemon:fabric:1.6.1+1.21.1")
    compileOnly("me.clip:placeholderapi:2.11.6")
    compileOnly(fileTree("libs"))

    implementation(project(":common"))
}

于是我什么问题都发现不了,和我之前的写法一样,但是就这个插件的实例无法注入

于是我尝试用反射获取并输出BukkitPlugin#pluginInstance的classname,结果plugininstance空指针了

baby, tell me why, tell me

Liangbai2333 avatar Apr 04 '25 08:04 Liangbai2333

但是这个config正常注入了,我的命令都可以使用

Liangbai2333 avatar Apr 04 '25 08:04 Liangbai2333

第一点,Taboolib 一般不提供混合端支持。第二,请给出服务端参数

TheFloodDragon avatar Apr 04 '25 08:04 TheFloodDragon

第一点,Taboolib 一般不提供混合端支持。第二,请给出服务端参数

不不不,我的其他所有taboolib插件在这个服务端都可以正常加载,除了这个CobblemonWiki,并且我把插件做了模块化处理,同级模块的其他插件都可以正常加载

rootProject.name = "CobblemonCollection"
include("common")
...其他插件
include("CobblemonWiki")

除了这个CobblemonWiki,并且我的写法一模一样,所以我很疑惑

Liangbai2333 avatar Apr 04 '25 08:04 Liangbai2333

服务端是arclight-fabric-1.21.1-1.0.1-SNAPSHOT

Liangbai2333 avatar Apr 04 '25 08:04 Liangbai2333

尝试加了一个新模块

package site.liangbai.cobblemonmodifycard

import taboolib.common.platform.Plugin
import taboolib.common.platform.function.info

object CobblemonModifyCard : Plugin() {
    override fun onEnable() {
        info("successfully running plugin!")
    }
}

build.gradle.kts:

import io.izzel.taboolib.gradle.*

group = "site.liangbai.cobblemonmodifycard"
version = "1.0.0"

taboolib {
    env {
        install(Basic)
        install(Bukkit)
        install(MinecraftChat)
        install(BukkitUtil)
        install(BukkitNMS)
        install(BukkitNMSUtil)
    }
}

dependencies {
    minecraft("net.minecraft:minecraft:${rootProject.property("minecraft_version")}")
    mappings(loom.officialMojangMappings())

    modCompileOnly("com.cobblemon:fabric:1.6.1+1.21.1")
    compileOnly("me.clip:placeholderapi:2.11.6")

    implementation(project(":common"))
}

然后这个是成功运行的,正常打印info的字符串,我不知道我哪里出错了

Liangbai2333 avatar Apr 04 '25 08:04 Liangbai2333

Image

你自己搞的多模块,用的不是 tb 给的多模块模板吧? 你反编译一下构建出来的插件,看看 tb 是否被打包到了插件的包下

我没搞明白你这个项目是怎么配置的,怎么一会 cobblemonwiki 一会 cobblemonmodifycard,你能不能详细的贴一下你这个项目是怎么配置的,是多模块项目吗?把所有构建文件都贴一下,或者开一个仓库

Micalhl avatar Apr 04 '25 10:04 Micalhl

Image

你自己搞的多模块,用的不是 tb 给的多模块模板吧? 你反编译一下构建出来的插件,看看 tb 是否被打包到了插件的包下

我没搞明白你这个项目是怎么配置的,怎么一会 cobblemonwiki 一会 cobblemonmodifycard,你能不能详细的贴一下你这个项目是怎么配置的,是多模块项目吗?把所有构建文件都贴一下,或者开一个仓库

反编译看了,都在site.liangbai.cobblemonwiki这个包下,包括taboolib

Liangbai2333 avatar Apr 04 '25 11:04 Liangbai2333

Image 你自己搞的多模块,用的不是 tb 给的多模块模板吧? 你反编译一下构建出来的插件,看看 tb 是否被打包到了插件的包下 我没搞明白你这个项目是怎么配置的,怎么一会 cobblemonwiki 一会 cobblemonmodifycard,你能不能详细的贴一下你这个项目是怎么配置的,是多模块项目吗?把所有构建文件都贴一下,或者开一个仓库

反编译看了,都在site.liangbai.cobblemonwiki这个包下,包括taboolib

用tb的单/多模块模板重新初始化项目

Micalhl avatar Apr 04 '25 11:04 Micalhl

同样情况,我不是多模块,在Fabric+TabooLib的混合环境下开发,版本是1.21.1,onEnable无法被执行

YuaZer avatar Apr 10 '25 14:04 YuaZer

同样情况,我不是多模块,在Fabric+TabooLib的混合环境下开发,版本是1.21.1,onEnable无法被执行

目前注解是正常的,所以我目前的临时方案是用@Awake

YuaZer avatar Apr 10 '25 14:04 YuaZer

Image 你自己搞的多模块,用的不是 tb 给的多模块模板吧? 你反编译一下构建出来的插件,看看 tb 是否被打包到了插件的包下 我没搞明白你这个项目是怎么配置的,怎么一会 cobblemonwiki 一会 cobblemonmodifycard,你能不能详细的贴一下你这个项目是怎么配置的,是多模块项目吗?把所有构建文件都贴一下,或者开一个仓库

反编译看了,都在site.liangbai.cobblemonwiki这个包下,包括taboolib

方便的话,看看plugin.yml和插件主类的反编译源码?

ConstasJ avatar May 04 '25 08:05 ConstasJ