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以下写的,不要太高了)
硬前置:
插件:
本插件所用所有代码均为原创,不存在借用/抄袭等行为
这个插件用可以文本写出调用原生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以下写的,不要太高了)
硬前置:
插件:
本插件所用所有代码均为原创,不存在借用/抄袭等行为