PlaceholderAPI上的JavaScript变量使用教程
Path 0 - 什么是 JavaScript 变量?
这是 PlaceholderAPI 的一大功能。此功能可以让你在一定程度上自定义自己的变量,或是给其他的变量进行润色
比如
- 按照变量数值划分等级,如一个当等级0-9显示为菜鸟,10-19显示为大佬的变量
- 对其他变量进行润色。如把 "15408" 改写成 "15,408"
- 四舍五入。如将 "304.4180000003" 改写成 "304.42"
- 当某个值达到x的时候显示"some text",反之显示"noting"
- and more...
使用 JavaScript 变量需要有一定的编程思想。不过你也可以直接copy我的代码拿去用啦
Path 1 - 安装 JavaScript 变量
首先,你需要在游戏中,或者是控制台输入这个命令
- papi ecloud download javascript
等待提示下载完成(一串绿字)之后,重载Papi插件(/papi reload)即可。
接着打开PlaceholderAPI的插件文件夹,可以看见文件夹内多出了一个JavaScript文件夹。打开此文件夹并在内新建一个文件 "你喜欢的英文名.js" 然后保存。这样我们的准备工作就完成了
奥,对了。如果文件夹内有一个 "栗子.js" 可以删掉
Path 2 - 开始写点鬼玩意儿
用Notepad++打开此js文档,键入以下内容:
- function main() {
-
- } main();
然后,我们就可以开始写东西了。我们就来写一个当玩家等级小于10的时候显示 "菜鸟",大于10的时候显示为 "大佬" 的变量吧
那么我们先画一个草图,思路大概是这样的

好的,是不是很清晰明了?那么我们就可以开始撸代码了。
首先我们要进行第一步——获取玩家等级。一般这么获取
- function main() {
- var p_lv = parseInt("%player_level%");
- } main();
我们新建了一个名叫p_lv的变量来存储玩家的等级。
这里要注意几点。首先每一句的结尾都要带上一个分号,这是惯例。其次,如果没有特殊情况,获取一个变量值都要用这个方法
- parseInt("变量昵称");
如果不使用这个方法,可能会获得Error或者0。如果你的变量是带有小数的,那么就需要把Int换成Float
好的,我们继续。接下来就需要判断玩家的等级了。我们使用 if 这个语句来判断。差不多像这样
- function main() {
- var p_lv = parseInt("%player_level%");
- if (p_lv >= 10) {
- /* 占位 */
- }
- if (p_lv < 10) {
- /* 占位 */
- }
- } main();
大概就是这样了,这里也要注意一点,if 后面是不用分号的,是需要两个括号的
那么既然判断也完成了,我们要怎么返回一个值呢?
很简单,使用
- return "值";
现在,我们的代码就是这样了
- function main() {
- var p_lv = parseInt("%player_level%");
- if (p_lv >= 10) {
- return "大佬";
- }
- if (p_lv < 10) {
- return "菜鸟";
- }
- } main();
以此类推。你还可以添加巨佬等等,或者是把等级改成金币值。这有一份Papi变量大全可供参考http://mineplugin.org/PlaceholderAPI
这就完事了?并不。你还需要注册这个变量
Path 3 - 注册你的变量
返回PlaceholderAPI的首层文件夹,找到 javascript_placeholders.yml 文件,并在下面添加
- 随便一个英文key,推荐文件名:
- file: 你刚刚的文件.js
奥,上面有一个栗子,别复制它的格式,可以删掉。然后重载PAPI,接着你就可以在一些地方使用
- %javascript_你的key%
就可以使用你自定义的变量了。现在还不赶紧测试测试?xD
Path 4 - 更多骚操作
2楼更呗
2021.12 数据,可能有更多内容
PlaceholderAPI上的JavaScript变量使用教程
Path 0 - 什么是 JavaScript 变量?
这是 PlaceholderAPI 的一大功能。此功能可以让你在一定程度上自定义自己的变量,或是给其他的变量进行润色
比如
- 按照变量数值划分等级,如一个当等级0-9显示为菜鸟,10-19显示为大佬的变量
- 对其他变量进行润色。如把 "15408" 改写成 "15,408"
- 四舍五入。如将 "304.4180000003" 改写成 "304.42"
- 当某个值达到x的时候显示"some text",反之显示"noting"
- and more...
使用 JavaScript 变量需要有一定的编程思想。不过你也可以直接copy我的代码拿去用啦
Path 1 - 安装 JavaScript 变量
首先,你需要在游戏中,或者是控制台输入这个命令
代码:
- papi ecloud download javascript
等待提示下载完成(一串绿字)之后,重载Papi插件(/papi reload)即可。
接着打开PlaceholderAPI的插件文件夹,可以看见文件夹内多出了一个JavaScript文件夹。打开此文件夹并在内新建一个文件 "你喜欢的英文名.js" 然后保存。这样我们的准备工作就完成了
奥,对了。如果文件夹内有一个 "栗子.js" 可以删掉
Path 2 - 开始写点鬼玩意儿
用Notepad++打开此js文档,键入以下内容:
代码:
- function main() {
-
- } main();
然后,我们就可以开始写东西了。我们就来写一个当玩家等级小于10的时候显示 "菜鸟",大于10的时候显示为 "大佬" 的变量吧
那么我们先画一个草图,思路大概是这样的

好的,是不是很清晰明了?那么我们就可以开始撸代码了。
首先我们要进行第一步——获取玩家等级。一般这么获取
代码:
- function main() {
- var p_lv = parseInt("%player_level%");
- } main();
我们新建了一个名叫p_lv的变量来存储玩家的等级。
这里要注意几点。首先每一句的结尾都要带上一个分号,这是惯例。其次,如果没有特殊情况,获取一个变量值都要用这个方法
代码:
- parseInt("变量昵称");
如果不使用这个方法,可能会获得Error或者0。如果你的变量是带有小数的,那么就需要把Int换成Float
好的,我们继续。接下来就需要判断玩家的等级了。我们使用 if 这个语句来判断。差不多像这样
代码:
- function main() {
- var p_lv = parseInt("%player_level%");
- if (p_lv >= 10) {
- /* 占位 */
- }
- if (p_lv < 10) {
- /* 占位 */
- }
- } main();
大概就是这样了,这里也要注意一点,if 后面是不用分号的,是需要两个括号的
那么既然判断也完成了,我们要怎么返回一个值呢?
很简单,使用
代码:
- return "值";
现在,我们的代码就是这样了
代码:
- function main() {
- var p_lv = parseInt("%player_level%");
- if (p_lv >= 10) {
- return "大佬";
- }
- if (p_lv < 10) {
- return "菜鸟";
- }
- } main();
以此类推。你还可以添加巨佬等等,或者是把等级改成金币值。这有一份Papi变量大全可供参考http://mineplugin.org/PlaceholderAPI
这就完事了?并不。你还需要注册这个变量
Path 3 - 注册你的变量
返回PlaceholderAPI的首层文件夹,找到 javascript_placeholders.yml 文件,并在下面添加
代码:
- 随便一个英文key,推荐文件名:
- file: 你刚刚的文件.js
奥,上面有一个栗子,别复制它的格式,可以删掉。然后重载PAPI,接着你就可以在一些地方使用
代码:
- %javascript_你的key%
就可以使用你自定义的变量了。现在还不赶紧测试测试?xD
Path 4 - 更多骚操作
2楼更呗
咱占个位位置先,咱更不更咱也不知道,反正咱先看看
看看是不是能出个当变量符值为空时默认输出为空
变量符有默认返回内容时在原基础上增加字符的操作
变量符有默认返回内容时在原基础上增加字符的操作
本帖最后由 Link和glx 于 2020-4-23 11:38 编辑
我使用的JavaScript输出的变量有时会乱跳,比如我写个一个[血量占位符]和[等级占位符]显示
使用%javascript_血量占位符%它有时会显示等级的占位符,而且显示的是其他玩家的数值
玩家越多越会出现这种情况
我使用的JavaScript输出的变量有时会乱跳,比如我写个一个[血量占位符]和[等级占位符]显示
使用%javascript_血量占位符%它有时会显示等级的占位符,而且显示的是其他玩家的数值
玩家越多越会出现这种情况
Link和glx 发表于 2020-4-23 11:37
我使用的JavaScript输出的变量有时会乱跳,比如我写个一个[血量占位符]和[等级占位符]显示
使用%javascript ...
方法名不能相同,就是main()那个
还有你把源码贴一下我给你看看
请问 js 功能可以访问 物品的Lore内容进行判断吗
比如我要判断手中的[ 数值: 10 ] 然后在多行lore中读取本行
比如我要判断手中的[ 数值: 10 ] 然后在多行lore中读取本行
bliblibli23333 发表于 2020-4-26 20:20
请问 js 功能可以访问 物品的Lore内容进行判断吗
比如我要判断手中的[ 数值: 10 ] 然后在多行lore中读取本 ...
http://mineplugin.org/Placeholde ... 6.A0.8F_-_CheckItem
希望可以帮到你
瘟疫威胁全世界 发表于 2020-4-26 21:04
http://mineplugin.org/PlaceholderAPI#.E6.A3.80.E6.B5.8B.E7.89.A9.E5.93.81.E6.A0.8F_-_CheckItem
希 ...
虽然我已经解决了但是还是感谢你
那我分享一下吧
- var player = BukkitPlayer;
- var material = '%player_item_in_hand%';
- var line = ' ';
- function itemloreinfo() {
- if ( material !== 'AIR' ) {
- var has = player.getInventory().getItemInHand().getItemMeta().hasLore();
- var linelore = player.getInventory().getItemInHand().getItemMeta().getLore();
- }
- if ( material !== 'AIR' && has === true ) {
- var lore = player.getInventory().getItemInHand().getItemMeta().getLore().toString();
- }
- if ( material !== 'AIR' && has === true && lore.indexOf(', ,') !== -1 ) {
- lore = lore.replace(/, ,/g, ', ,');
- }
- if ( args.length == 1 ) {
- line = args[0];
- }
- if ( material === 'AIR' ) {
- // return 'AIR' when you aren't holding an item (You can change it to whatever you want)
- return 'AIR';
- } else if ( has && line === ' ' ) {
- return lore.replace(/^\[/, "").replace(/.$/,"").replace(/, /g, '\n');
- } else if ( has && line !== ' ' ) {
- var clearlore = lore.replace(/^\[/, "").replace(/.$/,"").replace(/, /g, "|").replace(/ |§0|§1|§2|§3|§4|§5|§6|§7|§8|§9|§a|§b|§c|§d|§e|§f|§o|§l|§k|§n|§m/g, "");
- var last = clearlore.lastIndexOf(line);
- // 返回 访问字符串 开始位置
- var end = clearlore.lastIndexOf("|",last);
- // 返回 访问字符串 结尾位置
- var lang = line.length;
- // 访问长度
- var new_last = last + 1 + lang;
- // 格式化开始位置 开始位置 + :位置 + 访问长度
- var new_end = end + 1 +lang;
- // 结尾位置 +1 去|
- var info = clearlore.substring(new_end,new_last);
- var test_info = clearlore.substring(end+1,new_last);
- //获取本文内容
- var over_info = test_info.substring(lang);
- //获取 返回 [输入内容] 后文字
- return linelore;
- } else {
- // return ' ' (Nothing/blank line) when the item you're holding doesn't has lore (You can change it to whatever you want)
- return ' ';
- }
- }
- itemloreinfo();
虚心学习一下PAPI的变量