pxrpg服务器 4/16/2023, 1:29:34 PM
插件介绍

这个插件用可以文本写出调用原生java类的相关代码
有些插件可能没有PlaceholderAPI变量,但是你又想拿到他的某些数据,就可以使用这个插件进行
这个插件可以让你随意添加其他插件的PlaceholderAPI变量
并进行详细处理
放入本体和前置插件重启服务端,在插件启动成功后,会在目录 `plugin/pxpapi/code/papi` 生成 `测试.yml` 示例文件




示例文件

#可以随意添加任意节点
#
# 调用的变量格式为: %pxpapi_文件名:节点1.节点2....%
#
# 支持套娃,但是不推荐,能一次性执行完的,就用代码执行, 对于papi的变量解析来讲是有性能损耗的
#

a:
  #变量: %pxpapi_测试:a.b% = "返回的内容"
  b: '"返回的内容"'

测试2:
  测试3:

  #变量: %pxpapi_测试:测试2.测试3.测试4%
  #也支持返回的内容含有 papi 变量
  测试4: '"%player_name%"'
  #变量: %pxpapi_测试:测试2.测试3.测试5%

  #也支持这种格式的套娃
  测试5: '"%pxpapi_测试:name%"'

#获取玩家相关的信息请先记得判定一下是不是null


#%pxpapi_测试:name%
#玩家名
name: |-
  if(player == null) return "无玩家";
  return player.getName();

#%pxpapi_测试:hp%
#玩家的生命值整数
#返回任意类型的内容都可以
hp: |-
  if(player == null) return 0;
  return (int)player.getHealth();

#%pxpapi_测试:level%
#玩家原版等级
level: |-
  if(player == null) return 0;
  return player.getLevel();

#%papi_测试:max-hp%
#玩家的最大生命值整数
max-hp: |-
  if(player == null) return 0;
  return (int)player.getMaxHealth();

#%pxpapi_测试:random%
#随机0~1的小数
random: Math.random()


#%pxpapi_测试:random1%
#30%概率返回 true
#70%概率返回 false
random1: return Math.random()

#%pxpapi_测试:server-online%
#服务器在线人数
server-online: |-
  return Bukkit.getOnlinePlayers().size();


#%pxpapi_测试:server-online-str%
#还可以组合字符串
server-online-str: |-
  return "当前在线玩家数量为: " + Bukkit.getOnlinePlayers().size();

#%pxpapi_测试:server-online-str2%
#还可以利用变量组合字符串
server-online-str2: |-
  String ret = "当前在线玩家数量为: " + Bukkit.getOnlinePlayers().size();
  return ret;



#%pxpapi_测试:log%
#在控制台打印谁触发了这个变量
log: |-
  if(player != null) {
    System.out.println("玩家 " + player.getName() + " 触发了 log 变量");
  }
  return "";复制代码



如何使用

可以在code/papi文件夹下面创建多个yml文件进行分类管理
调用的方法是 %pxpapi_文件名:节点1.节点2...%






新建变量及如果和写java代码

这里就在`测试.yml`里面添加了
#调用变量: %pxpapi_测试:新变量%新变量: |-  return "新变量内容";复制代码
这里不局限于字符串(String)类型,任何类型都可以返回
这里可以使用一个参数: player
实际上在底层这就是一个方法   
public Object 匿名方法(org.bukkit.entity.Player player){...}复制代码
拿玩家的等级:#%pxpapi_测试:level%level: |-  #可以直接使用player对象,  getLevel() 是获取玩家的当前等级  return player.getLevel();复制代码





导入新的类

插件默认导入的类
org.bukkit下的所有类

java.lang所有类
如果需要导入其他的类,请使用import语句
如:
#调用变量: %pxpapi_测试:skillapi主职业等级%复制代码也支持别名模式
#调用变量: %pxpapi_测试:skillapi主职业等级%
skillapi主职业等级: |-
  import com.sucy.skill.SkillAPI as 技能API;
  import com.sucy.skill.api.player.PlayerData as 玩家数据;
  import com.sucy.skill.api.player.PlayerClass as 玩家职业;
  玩家数据 playerData = 技能API.getPlayerData(player);
  if(playerData == null) return "没有skillapi数据";
  玩家职业 mainClass = playerData.getMainClass();
  return mainClass.getLevel();复制代码也支持全路径模式
#调用变量: %pxpapi_测试:skillapi主职业等级%
skillapi主职业等级: |-
  com.sucy.skill.api.player.PlayerData playerData = com.sucy.skill.SkillAPI.getPlayerData(player);
  if(playerData == null) return "没有skillapi数据";
  com.sucy.skill.api.player.PlayerClass mainClass = playerData.getMainClass();
  return mainClass.getLevel();复制代码
也可以在`plugins\PxPapi\code\env-imports.yml`文件内进行全局导入
env-import-class:
- 'com.sucy.skill.SkillAPI'
- 'com.sucy.skill.api.player.PlayerData'
- com.sucy.skill.api.player.PlayerClass'复制代码这样重载后就会默认导入这些类,供这个插件使用,上面的代码就可以简化成
#调用变量: %pxpapi_测试:skillapi主职业等级%
skillapi主职业等级: |-
  PlayerData playerData = SkillAPI.getPlayerData(player);
  if(playerData == null) return "没有skillapi数据";
  PlayerClass mainClass = playerData.getMainClass();
  return mainClass.getLevel();复制代码
还支持字符串组合处理:
#调用变量: %pxpapi_测试:skillapi主职业等级%
skillapi主职业等级: |-
  PlayerData playerData = SkillAPI.getPlayerData(player);
  if(playerData == null) return "没有skillapi数据";
  PlayerClass mainClass = playerData.getMainClass();
  return "你当前等级为: " + mainClass.getLevel();复制代码



简单示例

假设示例都写在`测试.yml`内
#调用变量: %pxpapi_测试:等级称号%
等级称号: |-复制代码#调用变量: %pxpapi_测试:饱食度名称%
饱食度名称: |-
  if(player.getFoodLevel() >= 20){
    return "§a快撑死了";
  }else if(player.getFoodLevel() > 15) return "吃的很饱";
  else if(player.getFoodLevel() > 10) return "吃饭半分饱";
  return "§7要饿死了";复制代码#调用变量: %pxpapi_测试:武器名字%复制代码更多的可以发挥想象吧



不支持的格式

不支持lambada表达式
不支持一维以上的数组
不支持写泛型
不支持注解@
暂不支持try异常捕获
暂不支持new匿名内部类


支持java原生代码
支持单行注释,注释块
怎么写java代码就怎么写这个




插件下载(以及前置)

硬前置: PlaceholderAPI(需自行下载,基于版本2.10.4以下写的,不要太高了)
硬前置:

插件:







本插件所用所有代码均为原创,不存在借用/抄袭等行为

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