You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bukkit插件中获取当前插件实例的方法求助

Bukkit插件中获取当前插件实例的方法求助

嘿,看来你卡在获取当前插件实例这一步了!看你代码里注释掉的那行p.setMetadata("OpenedMenu", new FixedMetadataValue(plugin, "main"));,这里的plugin就是你缺的当前插件实例,我给你两种实用的解决办法:

方法一:通过主类静态实例获取(最推荐)

Bukkit插件的主类(也就是你导入的cz.untitled.Untitled)通常会维护一个静态自身实例,方便其他类调用。你只需要在主类Untitled里添加这段代码:

import org.bukkit.plugin.java.JavaPlugin;

public class Untitled extends JavaPlugin {
    // 静态实例字段
    private static Untitled instance;

    @Override
    public void onEnable() {
        // 插件启动时把当前实例赋值给静态变量
        instance = this;
    }

    // 对外提供获取实例的静态方法
    public static Untitled getInstance() {
        return instance;
    }
}

之后在你的serverselectcommand类里,直接用Untitled.getInstance()就能拿到插件实例,修改那行注释的代码:

p.setMetadata("OpenedMenu", new FixedMetadataValue(Untitled.getInstance(), "main"));

方法二:通过插件管理器获取

如果不想修改主类,也可以通过Bukkit插件管理器根据插件名称获取实例:

// 这里的"Untitled"要和你plugin.yml里的name字段完全一致
Plugin plugin = Bukkit.getPluginManager().getPlugin("Untitled");
// 记得判断是否为null,避免空指针异常
if (plugin != null) {
    p.setMetadata("OpenedMenu", new FixedMetadataValue(plugin, "main"));
}

不过这种方法不如第一种可靠,万一插件名称写错或者插件未正常加载,会返回null导致报错,所以优先推荐第一种方式。

另外提醒下,你的主类Untitled必须继承JavaPlugin,这是Bukkit插件的标准要求,否则无法被服务器正确识别哦!

备注:内容来源于stack exchange,提问作者vitekform

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 08:53:02