保险库加载太晚

Vault loading too late

我的插件在 Vault 之前加载,即使我在 plugin.yml

中添加了 depend/load-after

我尝试了 dependsoftdependloadbefore。我什至尝试降级服务器上使用的 Vault 版本。

我什至在没有依赖的情况下尝试加载前,反之亦然。

我的plugins.yml

name: TrainsaPlugin
version: ${project.version}
main: de.gamingcraft.trainsa.TrainsaPlugin

(...)

loadbefore:
  - Vault

depend:
  - Vault

commands: (...)

我的主Class:

public final class TrainsaPlugin extends JavaPlugin {

    (...)

    public static Economy econ = null;
    public static Permission perms = null;
    public static Chat chat = null;


    @Override
    public void onEnable() {
        (...)

        if (!setupEconomy() ) {
            System.out.println("Disabled due to no Vault dependency found!");
            getServer().getPluginManager().disablePlugin(this);
            return;
        }
        setupPermissions();
        setupChat();
    }

    private boolean setupEconomy() {
        if (getServer().getPluginManager().getPlugin("Vault") == null) {
            return false;
        }
        RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
        if (rsp == null) {
            return false;
        }
        econ = rsp.getProvider();
        return econ != null;
    }

    private boolean setupChat() {
        RegisteredServiceProvider<Chat> rsp = getServer().getServicesManager().getRegistration(Chat.class);
        chat = rsp.getProvider();
        return chat != null;
    }

    private boolean setupPermissions() {
        RegisteredServiceProvider<Permission> rsp = getServer().getServicesManager().getRegistration(Permission.class);
        perms = rsp.getProvider();
        return perms != null;
    }

    @Override
    public void onDisable() {
    }

    (...)
}

日志

[22:35:43 INFO]: [TrainsaPlugin] Disabling TrainsaPlugin v1.0
(...)
[22:35:43 INFO]: Server permissions file permissions.yml is empty, ignoring it
[22:35:43 INFO]: Done (1,912s)! For help, type "help" or "?"
[22:35:43 INFO]: [Vault] Checking for Updates ...

我知道,当找不到 Vault 时,我的 main-class 会禁用我的插件,我想要它,因为它现在是必不可少的。

TL;DR:我的问题是,Vault 加载得太晚了。

在您的 plugin.yml 中添加 depend: [Vault]

有关详细信息,请参阅 this

您向 loadbefore 添加了 vault,这使得您的插件在 vault 之前加载。如果你想让 vault 在你的插件之前加载,使用 depend: [Vault,someOtherPlugin,someOtherPlugin,etc].

我通过添加

修复了它
<scope>provided</scope>

对于每个依赖项,这是 pom.xml

中的一个插件