Skip to content

Commit

Permalink
[feat] 优化默认物品体验
Browse files Browse the repository at this point in the history
Signed-off-by: Saukiya <[email protected]>
  • Loading branch information
Saukiya committed Dec 7, 2023
1 parent f4c7f36 commit a3e3bd0
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package github.saukiya.sxitem.data.random.randoms;

import github.saukiya.sxitem.SXItem;
import github.saukiya.sxitem.data.ScriptManager;
import github.saukiya.sxitem.data.random.IRandom;
import github.saukiya.sxitem.data.random.RandomDocker;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

import java.util.ArrayList;
import java.util.List;
Expand All @@ -20,12 +21,14 @@ public String replace(String key, RandomDocker docker) {
// key = script.function#666,1,aaa
Matcher matcher = pattern.matcher(key);
if (matcher.matches()) {
String[] stringArgs = matcher.group(3).split(",");// 如果直接用string[] 那可能数字是字符串
// Object[] args = new Object[stringArgs.length];// 除非转换成int或者double?反正放进js里都是数
Object[] args = matcher.group(3).split(",");
for (int i = 0; i < args.length; i++) {
Player player = Bukkit.getPlayerExact(args[i].toString());
if (player != null) args[i] = player;
}
Object result;
ScriptManager scriptManager = SXItem.getScriptManager();
try {
result = scriptManager.callFunction(matcher.group(1), matcher.group(2), docker, stringArgs);
result = SXItem.getScriptManager().callFunction(matcher.group(1), matcher.group(2), docker, args);
} catch (Exception e) {
e.printStackTrace();
return e.getMessage();
Expand Down
3 changes: 2 additions & 1 deletion src/main/resources/Item/Default/Default.yml
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,8 @@ Default-3:
- '&cs - &7正常随机&r [<s:<s:品质>Color>♦&r] [<s:AAA:BBB:CCC>]'
- '&cd - &7小数随机&r [<d:2.3_6>]'
- '&ci&7/&cr - &7整数随机&r [<i:1_7>]'
- '&cj - &7脚本处理 [<j:Default.testFunction#arg>]'
- '&cu - &7UUID随机&r [<u:random>]'
- '&cj - &7脚本处理&r [<j:Default.itemScript#QAQ,QWQ,???,!!!>]'
- ''
- "&e局部变量调用全局变量请用 ~"
- "&c ~ &7在 yml 中表示 &4null"
Expand Down
8 changes: 8 additions & 0 deletions src/main/resources/Scripts/Default.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,12 @@ function testPlayer(player, args) {
} else {
SXItem.getInst().getLogger().info("可以将在线成员作为实际参数运行在/si script 方法内")
}
}

// 物品内随机<j:Default.itemScript#QAQ,QWQ>是这个格式
// docker是个固定参数,具体参考RandomDocker.java
// args是个输入字符串数组, 在线的'玩家名'自动转成'玩家对象', 自动转化功能后续考虑是否砍掉或保留
function itemScript(docker, args) {
docker.getPlayer().sendMessage("把参数发给玩家: " + args[0] + args[1]);
return args[SXItem.getRandom().nextInt(args.length)];
}

0 comments on commit a3e3bd0

Please sign in to comment.