java30433


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 变量

      首先,你需要在游戏中,或者是控制台输入这个命令
  1. papi ecloud download javascript
复制代码

      等待提示下载完成(一串绿字)之后,重载Papi插件(/papi reload)即可。
      接着打开PlaceholderAPI的插件文件夹,可以看见文件夹内多出了一个JavaScript文件夹。打开此文件夹并在内新建一个文件 "你喜欢的英文名.js" 然后保存。这样我们的准备工作就完成了
      奥,对了。如果文件夹内有一个 "栗子.js" 可以删掉



Path 2 - 开始写点鬼玩意儿

      用Notepad++打开此js文档,键入以下内容:

  1. function main() {
  2.    
  3. } main();
复制代码


      然后,我们就可以开始写东西了。我们就来写一个当玩家等级小于10的时候显示 "菜鸟",大于10的时候显示为 "大佬" 的变量吧
      那么我们先画一个草图,思路大概是这样的
      
      好的,是不是很清晰明了?那么我们就可以开始撸代码了。
      首先我们要进行第一步——获取玩家等级。一般这么获取
  1. function main() {
  2.   var p_lv = parseInt("%player_level%");
  3. } main();
复制代码

      我们新建了一个名叫p_lv的变量来存储玩家的等级。

      这里要注意几点。首先每一句的结尾都要带上一个分号,这是惯例。其次,如果没有特殊情况,获取一个变量值都要用这个方法
  1.   parseInt("变量昵称");
复制代码

      如果不使用这个方法,可能会获得Error或者0。如果你的变量是带有小数的,那么就需要把Int换成Float

      好的,我们继续。接下来就需要判断玩家的等级了。我们使用 if 这个语句来判断。差不多像这样
  1. function main() {
  2.   var p_lv = parseInt("%player_level%");
  3.   if (p_lv >= 10) {
  4.   /* 占位 */

  5.   }
  6.   if (p_lv < 10) {
  7.   /* 占位 */

  8. }

  9. } main();
复制代码

      大概就是这样了,这里也要注意一点,if 后面是不用分号的,是需要两个括号的
      那么既然判断也完成了,我们要怎么返回一个值呢?
      很简单,使用
  1. return "值";
复制代码

      现在,我们的代码就是这样了
  1. function main() {
  2.   var p_lv = parseInt("%player_level%");
  3.   if (p_lv >= 10) {
  4.   return "大佬";
  5.   }
  6.   if (p_lv < 10) {
  7.   return "菜鸟";
  8. }

  9. } main();
复制代码


      以此类推。你还可以添加巨佬等等,或者是把等级改成金币值。这有一份Papi变量大全可供参考http://mineplugin.org/PlaceholderAPI
      这就完事了?并不。你还需要注册这个变量


Path 3 - 注册你的变量


      返回PlaceholderAPI的首层文件夹,找到 javascript_placeholders.yml 文件,并在下面添加
  1. 随便一个英文key,推荐文件名:
  2.   file: 你刚刚的文件.js
复制代码

      奥,上面有一个栗子,别复制它的格式,可以删掉。然后重载PAPI,接着你就可以在一些地方使用
  1. %javascript_你的key%
复制代码

就可以使用你自定义的变量了。现在还不赶紧测试测试?xD



Path 4 - 更多骚操作


      2楼更呗


2021.12 数据,可能有更多内容


PlaceholderAPI上的JavaScript变量使用教程


Path 0 - 什么是 JavaScript 变量?


   这是 PlaceholderAPI 的一大功能。此功能可以让你在一定程度上自定义自己的变量,或是给其他的变量进行润色
   比如


  • 按照变量数值划分等级,如一个当等级0-9显示为菜鸟,10-19显示为大佬的变量
  • 对其他变量进行润色。如把 &quot;15408&quot; 改写成 &quot;15,408&quot;
  • 四舍五入。如将 &quot;304.4180000003&quot; 改写成 &quot;304.42&quot;
  • 当某个值达到x的时候显示&quot;some text&quot;,反之显示&quot;noting&quot;
  • and more...



   使用 JavaScript 变量需要有一定的编程思想。不过你也可以直接copy我的代码拿去用啦


Path 1 - 安装 JavaScript 变量


   首先,你需要在游戏中,或者是控制台输入这个命令

代码:

  1. papi ecloud download javascript

   等待提示下载完成(一串绿字)之后,重载Papi插件(/papi reload)即可。
   接着打开PlaceholderAPI的插件文件夹,可以看见文件夹内多出了一个JavaScript文件夹。打开此文件夹并在内新建一个文件 &quot;你喜欢的英文名.js&quot; 然后保存。这样我们的准备工作就完成了
   奥,对了。如果文件夹内有一个 &quot;栗子.js&quot; 可以删掉


Path 2 - 开始写点鬼玩意儿


   用Notepad++打开此js文档,键入以下内容:


代码:

  1. function main() {
  2.    
  3. } main();



   然后,我们就可以开始写东西了。我们就来写一个当玩家等级小于10的时候显示 &quot;菜鸟&quot;,大于10的时候显示为 &quot;大佬&quot; 的变量吧
   那么我们先画一个草图,思路大概是这样的
   

   好的,是不是很清晰明了?那么我们就可以开始撸代码了。
   首先我们要进行第一步——获取玩家等级。一般这么获取

代码:

  1. function main() {
  2. var p_lv = parseInt("%player_level%");
  3. } main();

   我们新建了一个名叫p_lv的变量来存储玩家的等级。


   这里要注意几点。首先每一句的结尾都要带上一个分号,这是惯例。其次,如果没有特殊情况,获取一个变量值都要用这个方法

代码:

  1. parseInt("变量昵称");

   如果不使用这个方法,可能会获得Error或者0。如果你的变量是带有小数的,那么就需要把Int换成Float


   好的,我们继续。接下来就需要判断玩家的等级了。我们使用 if 这个语句来判断。差不多像这样

代码:

  1. function main() {
  2. var p_lv = parseInt("%player_level%");
  3. if (p_lv >= 10) {
  4. /* 占位 */

  5. }
  6. if (p_lv < 10) {
  7. /* 占位 */

  8. }

  9. } main();

   大概就是这样了,这里也要注意一点,if 后面是不用分号的,是需要两个括号的
   那么既然判断也完成了,我们要怎么返回一个值呢?
   很简单,使用

代码:

  1. return "值";

   现在,我们的代码就是这样了

代码:

  1. function main() {
  2. var p_lv = parseInt("%player_level%");
  3. if (p_lv >= 10) {
  4. return "大佬";
  5. }
  6. if (p_lv < 10) {
  7. return "菜鸟";
  8. }

  9. } main();



   以此类推。你还可以添加巨佬等等,或者是把等级改成金币值。这有一份Papi变量大全可供参考http://mineplugin.org/PlaceholderAPI
   这就完事了?并不。你还需要注册这个变量


Path 3 - 注册你的变量



   返回PlaceholderAPI的首层文件夹,找到 javascript_placeholders.yml 文件,并在下面添加

代码:

  1. 随便一个英文key,推荐文件名:
  2. file: 你刚刚的文件.js

   奥,上面有一个栗子,别复制它的格式,可以删掉。然后重载PAPI,接着你就可以在一些地方使用

代码:

  1. %javascript_你的key%

就可以使用你自定义的变量了。现在还不赶紧测试测试?xD


Path 4 - 更多骚操作



   2楼更呗



java30433
咱占个位位置先,咱更不更咱也不知道,反正咱先看看

名副其实
看看是不是能出个当变量符值为空时默认输出为空
变量符有默认返回内容时在原基础上增加字符的操作

Link和glx
本帖最后由 Link和glx 于 2020-4-23 11:38 编辑

我使用的JavaScript输出的变量有时会乱跳,比如我写个一个[血量占位符]和[等级占位符]显示
使用%javascript_血量占位符%它有时会显示等级的占位符,而且显示的是其他玩家的数值
玩家越多越会出现这种情况

java30433
Link和glx 发表于 2020-4-23 11:37
我使用的JavaScript输出的变量有时会乱跳,比如我写个一个[血量占位符]和[等级占位符]显示
使用%javascript ...

方法名不能相同,就是main()那个
还有你把源码贴一下我给你看看

Ray_Hughes
请问 js 功能可以访问 物品的Lore内容进行判断吗
比如我要判断手中的[ 数值: 10 ] 然后在多行lore中读取本行

java30433
bliblibli23333 发表于 2020-4-26 20:20
请问 js 功能可以访问 物品的Lore内容进行判断吗
比如我要判断手中的[ 数值: 10 ] 然后在多行lore中读取本 ...

http://mineplugin.org/Placeholde ... 6.A0.8F_-_CheckItem
希望可以帮到你

Ray_Hughes
瘟疫威胁全世界 发表于 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
希 ...

虽然我已经解决了但是还是感谢你
那我分享一下吧

  1. var player = BukkitPlayer;
  2. var material = '%player_item_in_hand%';

  3. var line = ' ';

  4. function itemloreinfo() {
  5.    if ( material !== 'AIR' ) {
  6.        var has = player.getInventory().getItemInHand().getItemMeta().hasLore();
  7.        var linelore = player.getInventory().getItemInHand().getItemMeta().getLore();
  8.    }

  9.    if ( material !== 'AIR' && has === true ) {
  10.        var lore = player.getInventory().getItemInHand().getItemMeta().getLore().toString();
  11.    }

  12.    if ( material !== 'AIR' && has === true && lore.indexOf(', ,') !== -1 ) {
  13.        lore = lore.replace(/, ,/g, ',  ,');
  14.    }

  15.    if ( args.length == 1 ) {
  16.        line = args[0];
  17.    }

  18.    if ( material === 'AIR' ) {
  19.    // return 'AIR' when you aren't holding an item (You can change it to whatever you want)
  20.        return 'AIR';
  21.    } else if ( has && line === ' ' ) {
  22.        return lore.replace(/^\[/, "").replace(/.$/,"").replace(/, /g, '\n');
  23.    } else if ( has && line !== ' ' ) {
  24.        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, "");

  25.        var last = clearlore.lastIndexOf(line);
  26.        // 返回 访问字符串 开始位置
  27.        var end = clearlore.lastIndexOf("|",last);
  28.        // 返回 访问字符串 结尾位置
  29.        var lang = line.length;
  30.        // 访问长度
  31.        var new_last = last + 1 + lang;
  32.        // 格式化开始位置 开始位置 + :位置 + 访问长度
  33.        var new_end = end + 1 +lang;
  34.        // 结尾位置 +1 去|
  35.        var info = clearlore.substring(new_end,new_last);
  36.        var test_info = clearlore.substring(end+1,new_last);
  37.        //获取本文内容
  38.        var over_info = test_info.substring(lang);
  39.        //获取 返回 [输入内容] 后文字
  40.        return linelore;
  41.    } else {
  42.    // return ' ' (Nothing/blank line) when the item you're holding doesn't has lore (You can change it to whatever you want)
  43.        return ' ';
  44.    }

  45. }
  46. itemloreinfo();
复制代码

jrx233
虚心学习一下PAPI的变量

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