RT
在主类外面使用getConfig()报错
在主类外面使用getConfig()报错

在主类加上public static Plugin plugin;
在onEnable里加上
plugin = this;
然后其他类需要的时候,前面加上“主类名.plugin”就行了
在onEnable里加上
plugin = this;
然后其他类需要的时候,前面加上“主类名.plugin”就行了
结城希亚 发表于 2020-5-8 19:23
在主类加上public static Plugin plugin;
在onEnable里加上
谢谢大佬
我推荐另一种方法
- Plugin config = Bukkit.getPluginManager().getPlugin("插件名");
- File file1=new File(config.getDataFolder(),"config.yml");
- FileConfiguration config1=YamlConfiguration.loadConfiguration(file1);
可以直接扔到其他类里
直接用config1代替getConfig(),这样更方便,而且还支持其他文件
主类继承javaplugin
getConfig这个方法是JavaPlugin的方法
虽然你主类里没出现这个方法
但是因为JavaPlugin里面有了这个方法,你没覆写也可以调用父类的方法
从其他类获取主类的方法很多
比如主类里通过向其他类构造函数传参this
或者PluginManager#getPlugin
或者主类写一个getInstance方法返回this等
反正任何获取主类实例的方法
其思路绝不应当是通过JavaPluginClassLoader强行新建主类实例就对了
(顺便吐槽不遵守双亲委派啊啊啊)
getConfig这个方法是JavaPlugin的方法
虽然你主类里没出现这个方法
但是因为JavaPlugin里面有了这个方法,你没覆写也可以调用父类的方法
从其他类获取主类的方法很多
比如主类里通过向其他类构造函数传参this
或者PluginManager#getPlugin
或者主类写一个getInstance方法返回this等
反正任何获取主类实例的方法
其思路绝不应当是通过JavaPluginClassLoader强行新建主类实例就对了
(顺便吐槽不遵守双亲委派啊啊啊)
我的方法是在主类中
public static FileConfiguration config;
然后onEnable() 加载完插件后
config = getConfig();
这样用 主类.config 就能使用
public static FileConfiguration config;
然后onEnable() 加载完插件后
config = getConfig();
这样用 主类.config 就能使用
stevexu 发表于 2020-5-10 14:23
我的方法是在主类中
public static FileConfiguration config;
然后onEnable() 加载完插件后
这样的话 reloadConfig() 貌似就要自己写额外逻辑了,config变成了YamlConfiguation的copy,所以reload也没办法改变config里面的值
这个插件用这一直很舒服
这个插件用这一直很舒服
MC_longxi 发表于 2020-5-11 12:16
这个插件用这一直很舒服
哥你回复错帖了吧。。
jjjooo233 发表于 2020-5-11 13:11
哥你回复错帖了吧。。
你可以在主类公开一个变量,类型是主类的名字,变量名自己定
直接把咱自己某个插件主类部分放上来了
复制代码
然后在其他类直接Main.getInstance().getConfig().xxxxxxxx就可以了
- package cn.mcdawncity.revivecoinsystem;
- import org.bukkit.plugin.java.JavaPlugin;
- public class Main extends JavaPlugin {
- public static Main instance = null;
- public static Main getInstance(){
- return instance;
- }
- @Override
- public void onEnable(){
- instance = this;
- }
然后在其他类直接Main.getInstance().getConfig().xxxxxxxx就可以了
结城希亚 发表于 2020-5-8 19:23
在主类加上public static Plugin plugin;
在onEnable里加上
感谢大佬,这种方法在开发中怎么叫?
天不生我阿瑾 发表于 2020-6-19 17:45
感谢大佬,这种方法在开发中怎么叫?
静态变量
https://www.runoob.com/java/java-variable-types.html
说白了就是每个插件的主类是单例化的
所以可以用一个静态变量代表主类的实例本身