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


结城希亚
在主类加上public static Plugin plugin;

在onEnable里加上
plugin = this;

然后其他类需要的时候,前面加上“主类名.plugin”就行了

Gerry5126
结城希亚 发表于 2020-5-8 19:23
在主类加上public static Plugin plugin;

在onEnable里加上

谢谢大佬

结城希亚

我推荐另一种方法
  1.      Plugin config = Bukkit.getPluginManager().getPlugin("插件名");
  2.             File file1=new File(config.getDataFolder(),"config.yml");
  3.             FileConfiguration config1=YamlConfiguration.loadConfiguration(file1);
复制代码



可以直接扔到其他类里

直接用config1代替getConfig(),这样更方便,而且还支持其他文件


William_Shi
主类继承javaplugin
getConfig这个方法是JavaPlugin的方法
虽然你主类里没出现这个方法
但是因为JavaPlugin里面有了这个方法,你没覆写也可以调用父类的方法


从其他类获取主类的方法很多
比如主类里通过向其他类构造函数传参this
或者PluginManager#getPlugin
或者主类写一个getInstance方法返回this等


反正任何获取主类实例的方法
其思路绝不应当是通过JavaPluginClassLoader强行新建主类实例就对了
(顺便吐槽不遵守双亲委派啊啊啊)

stevexu
我的方法是在主类中
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
这个插件用这一直很舒服

MC_longxi
这个插件用这一直很舒服

Gerry5126
MC_longxi 发表于 2020-5-11 12:16
这个插件用这一直很舒服

哥你回复错帖了吧。。

黎子柒
jjjooo233 发表于 2020-5-11 13:11
哥你回复错帖了吧。。

你可以在主类公开一个变量,类型是主类的名字,变量名自己定

AdvancedMical
直接把咱自己某个插件主类部分放上来了
  1. package cn.mcdawncity.revivecoinsystem;

  2. import org.bukkit.plugin.java.JavaPlugin;

  3. public class Main extends JavaPlugin {

  4.     public static Main instance = null;

  5.     public static Main getInstance(){
  6.         return instance;
  7.     }

  8.     @Override
  9.     public void onEnable(){
  10.         instance = this;
  11.     }
复制代码

然后在其他类直接Main.getInstance().getConfig().xxxxxxxx就可以了

天不生我阿瑾
结城希亚 发表于 2020-5-8 19:23
在主类加上public static Plugin plugin;

在onEnable里加上

感谢大佬,这种方法在开发中怎么叫?

William_Shi
天不生我阿瑾 发表于 2020-6-19 17:45
感谢大佬,这种方法在开发中怎么叫?

静态变量
https://www.runoob.com/java/java-variable-types.html

说白了就是每个插件的主类是单例化的
所以可以用一个静态变量代表主类的实例本身

第一页 上一页 下一页 最后一页