uiopjklkk
如题,有没有办法可以让自己写的一个插件中的一个变量值在整个服务器中都可以被调用到。

纱夜
在public class下声明的public static field
应该是最简单的 任何地方都可以调用的方法了

你指的是怎么样的调用到?

uiopjklkk
阴阳师元素祭祀 发表于 2020-11-29 11:56
在public class下声明的public static field
应该是最简单的 任何地方都可以调用的方法了

比方说在任意插件的配置文件里只要带上这个 变量名 就可以调用到这个变量的值或者方法

天辉胡萝卜
uiopjklkk 发表于 2020-11-29 12:03
比方说在任意插件的配置文件里只要带上这个 变量名 就可以调用到这个变量的值或者方法 ...

似乎不太可能

除非其他插件主动调用你自己的api

uiopjklkk
疾风暗影 发表于 2020-11-29 12:07
似乎不太可能

除非其他插件主动调用你自己的api

明白了明白了 非常感谢

纱夜
uiopjklkk 发表于 2020-11-29 12:03
比方说在任意插件的配置文件里只要带上这个 变量名 就可以调用到这个变量的值或者方法 ...

任意插件不太可能

[转载][API] PlaceholderAPI —— 插件前置API/PAPI变量 <API/前置> [全版本]
https://www.mcbbs.net/thread-964539-1-1.html
(出处: Minecraft(我的世界)中文论坛)


但是使用了papi的插件 还是有可能的
你的插件向papi提供变量
其他插件解析配置文件的时候会从papi尝试解析

那么就有可能做到

uiopjklkk
阴阳师元素祭祀 发表于 2020-11-29 12:18
任意插件不太可能

[转载][API] PlaceholderAPI —— 插件前置API/PAPI变量 <API/前置> [全版本]

也就是说我如果调用papi的API写一个papi的附属,这样的话在支持papi的插件上我就可以调用这个变量了吧

William_Shi
uiopjklkk 发表于 2020-11-29 12:24
也就是说我如果调用papi的API写一个papi的附属,这样的话在支持papi的插件上我就可以调用这个变量了吧 ...
我就可以调用这个变量了吧

你是希望自己的两个插件之间可以相互通信?事实上由于Bukkit的PluginClassLoader的存在,两个服务端插件之间完全可以通信,不需要额外借助papi

DefineEvil
uiopjklkk 发表于 2020-11-29 12:03
比方说在任意插件的配置文件里只要带上这个 变量名 就可以调用到这个变量的值或者方法 ...

这个需求在使用官方jvm,不永久修改服务端和其他插件字节码,和不使用javaagent的情况下可能无法实现

Itsusinn
依赖注入可以做到

Itsusinn
或者你可以设置系统的环境变量,这是入侵程度最低的

Itsusinn
在kotlin协程中有Channel,vertx有event bus,你想说的大概是这种东西。

2911225886
MCBBS有你更精彩~