PlaceholderAPI
使用PAPI类需要导入PlaceholderAPI模块 导入示例:
const { PAPI } = require('./GMLIB-LegacyRemoteCallApi/lib/BEPlaceholderAPI-JS');
注意:
若无特殊说明,PlaceholderAPI相关API需要可在任意时间调用。
注册玩家PAPI
PAPI.registerPlayerPlaceholder(func: function, pluginName: String, PAPIName: String)
参数:
- func: 获取玩家相关信息的一个函数。此函数的传入参数必须为玩家对象,返回值必须为String。
- pluginName: 你的插件的名字,用于检索对应插件注册的PAPI.
- PAPIName: 注册的PlaceholderAPI的名字,注意不要用
%
包裹
返回值:Boolean
(是否注册成功)
[JavaScript]
function getPlayerUuid(pl) {
return pl.uuid;
}
PAPI.registerPlayerPlaceholder(getPlayerUuid, "MyPlugin", "pl_uuid");
// 这样就注册了一个PAPI,为 "%pl_uuid%"
注册服务器PAPI
PAPI.registerServerPlaceholder(func: function, pluginName: String, PAPIName: String)
参数:
- func: 获取不包含特定玩家相关信息的一个函数。此函数没有传入参数,返回值必须为String。
- pluginName: 你的插件的名字,用于检索对应插件注册的PAPI.
- PAPIName: 注册的PlaceholderAPI的名字,注意不要用
%
包裹
返回值:Boolean
(是否注册成功)
[JavaScript]
function getOnlinePlayersCount() {
return mc.getAllPlayers().length.toString();
}
PAPI.registerServerPlaceholder(getOnlinePlayersCount, "MyPlugin", "server_online_players");
// 这样就注册了一个PAPI,为 "%server_online_players%"
注册带变量的API
这里以注册服务器PAPI变量演示
PAPI.registerServerPlaceholder(func: function, pluginName: String, PAPIName: String)
[JavaScript]
const { PAPI } = require('./GMLIB-LegacyRemoteCallApi/lib/BEPlaceholderAPI-JS');
const { Minecraft } = require("./GMLIB-LegacyRemoteCallApi/lib/GMLIB_API-JS");
function getAverageTps(param) {
let tps = Minecraft.getServerAverageTps();
let fix = param["<fixed>"];
return tps.toFixed(fix);
};
// 这里的<fixed>就是带参数的变量,只要是<>包裹的都可以,但请注意!
/** 变量前后一定要加“_”和其他字符串区分!!!不然param给的会和其他字符串串一起 */
PAPI.registerServerPlaceholder(getOnlinePlayersCount, "MyPlugin", "%server_average_tps_<fixed>%");
// 这样就注册了一个PAPI,为 "%server_average_tps_<fixed>%"
翻译包含PAPI的字符串
PAPI.translateString(str: String [, pl:Player])
参数:
- str: 需要翻译的字符串,里面可以包含不止一个PAPI,可以有其他无关内容
- pl: 玩家对象,选填。如果填写了玩家对象,这个字符串里面的关于该玩家对象的变量也会被翻译。
返回值:String
(翻译了全部PAPI变量的字符串)
[JavaScript]
let result1 = PAPI.translateString("服务器mspt:%server_mspt%, 服务器TPS:%server_tps%");
// 这样就得到的result1就是翻译了全部PAPI的语句。例如 服务器mspt:1.919810, 服务器TPS:20.000000
let result2 = PAPI.translateString("服务器mspt:%server_mspt%, 玩家名:%player_name%", pl);
// 这样就得到的result2就是翻译了全部PAPI的语句。例如 服务器mspt:1.919810, 玩家名:蔡徐坤
获取已注册的全部PAPI
PAPI.getAllPAPI()
返回值:List<String>
(一个包含全部PAPI的数组)
[JavaScript]
let All_PAPI = PAPI.getAllPAPI();
注销一个PAPI
PAPI.unRegisterPlaceholder(papi: String)
参数:
- papi: 需要注销的PAPI(不要带
%
包裹)
返回值:Boolean
(是否注销成功)
[JavaScript]
PAPI.unRegisterPlaceholder("server_mspt")
获取一个非玩家PAPI变量的值(不建议使用)
PAPI.getValue(papi: String)
参数:
- papi: 需要翻译的PAPI(不要带
%
包裹)
返回值:String
(翻译后的PAPI)
[JavaScript]
PAPI.PAPI.getValue("server_mspt");
注意: 不建议单独使用此API,你可以使用PAPI.translateString()一次性翻译全部PAPI
获取一个玩家PAPI变量的值(不建议使用)
PAPI.getValueByPlayer(papi: String, pl: Player)
参数:
- papi: 需要翻译的PAPI(不要带
%
包裹) - pl: 玩家对象
返回值:String
(翻译后的PAPI)
[JavaScript]
PAPI.getValueByPlayer("player_name", pl);
注意: 不建议单独使用此API,你可以使用PAPI.translateString()一次性翻译全部PAPI