diff --git a/src/main/java/github/saukiya/sxitem/data/random/randoms/ScriptRandom.java b/src/main/java/github/saukiya/sxitem/data/random/randoms/ScriptRandom.java index 79e4e80d..1489636f 100644 --- a/src/main/java/github/saukiya/sxitem/data/random/randoms/ScriptRandom.java +++ b/src/main/java/github/saukiya/sxitem/data/random/randoms/ScriptRandom.java @@ -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; @@ -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(); diff --git a/src/main/resources/Item/Default/Default.yml b/src/main/resources/Item/Default/Default.yml index e696924d..8bf656cb 100644 --- a/src/main/resources/Item/Default/Default.yml +++ b/src/main/resources/Item/Default/Default.yml @@ -205,7 +205,8 @@ Default-3: - '&cs - &7正常随机&r [Color>♦&r] []' - '&cd - &7小数随机&r []' - '&ci&7/&cr - &7整数随机&r []' - - '&cj - &7脚本处理 []' + - '&cu - &7UUID随机&r []' + - '&cj - &7脚本处理&r []' - '' - "&e局部变量调用全局变量请用 ~" - "&c ~ &7在 yml 中表示 &4null" diff --git a/src/main/resources/Scripts/Default.js b/src/main/resources/Scripts/Default.js index 27cfcd07..ffaad364 100644 --- a/src/main/resources/Scripts/Default.js +++ b/src/main/resources/Scripts/Default.js @@ -10,4 +10,12 @@ function testPlayer(player, args) { } else { SXItem.getInst().getLogger().info("可以将在线成员作为实际参数运行在/si script 方法内") } +} + +// 物品内随机是这个格式 +// docker是个固定参数,具体参考RandomDocker.java +// args是个输入字符串数组, 在线的'玩家名'自动转成'玩家对象', 自动转化功能后续考虑是否砍掉或保留 +function itemScript(docker, args) { + docker.getPlayer().sendMessage("把参数发给玩家: " + args[0] + args[1]); + return args[SXItem.getRandom().nextInt(args.length)]; } \ No newline at end of file