切换风格

站内搜索

搜索
热搜: 模组 汉化 插件

MCArea

小喇叭+ 发布

NiceMC网易横屏时代正式到来!银河赛季正式开启!
09-20 22:35
Icon爱吃瓜谁说的
09-10 08:40
NiceMC网站是似了吗
09-08 13:45
U17217913483今天人是真的少...
08-29 18:46
NiceMC外包本账号
08-29 12:48
Icon爱吃瓜无聊ing…
08-28 13:01
08-25 20:58
NiceMC万物皆可MC,《黑神话:悟空》也是如此!
08-24 23:00
08-24 16:30
NiceMC全民科技时代正式到来!
08-23 23:06
NiceMCNotePad++作者辱华,请各位服主不要使用!
08-22 15:04
NiceMC网易我的世界【布吉岛】服务器地图泄露!原文地址:https://mcarea.top/thread-157-1-1.html
08-18 22:44
Icon爱吃瓜啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
08-18 11:53
史莱姆汉化组终于可以发小喇叭了,水一个
08-18 10:14
NiceMC↓是的,可以去kkcraft的外纪社区试用
08-18 09:47
Icon爱吃瓜↓确定是科学家专用?
08-18 07:46
NiceMC我的世界辅助(科技)大全震撼发布,原文地址:https://mcarea.top/thread-147-1-1.html
08-17 21:51
Icon爱吃瓜日常发6(1/114514)
08-17 20:31
08-17 20:30
NiceMC↓干脆给你搞个勋章叫“氪金选手”
08-17 20:19

新版本我的世界服务器的一些坑

  • 打卡等级:即来则安
  • 打卡总天数:16
  • 打卡月天数:0
  • 打卡总奖励:768
  • 最近打卡:2024-08-27 10:55:02

13

主题

15

回帖

539

积分

版主

Rank: 7Rank: 7Rank: 7

积分
539

100人记录100帖记录优秀团队吃瓜群众

发表于 2024-7-15 20:42:53 | 显示全部楼层 |阅读模式
我的世界不加execute就用@s @p @e是无效的,如果插件里有需要使用@s @p @e可能导致插件无法正常运行,下面是一个用jsboot build的一个例子:

fakeplayer/.jsboot/src/main.js:
  1. const jsboot = require("jsboot");
  2. jsboot.insertPointSet("com.jsboot.mod"); // 设置程序输入点

  3. const fakePlayer = jsboot.createFakePlayer({
  4.     name: "Steve",
  5.     uid: new Date().getTime() + "" + ~~(Math.random() * 100),
  6.     pluginBind: ["player-sign::control-into"],
  7.     tlm: jsboot.tlm.steve.steve,
  8.     op: true // 设置管理权限
  9. })
  10. function changePlayerPosition(){
  11.     if (jsboot.server.player.includes("Je_OwO")){
  12.         const position = jsboot.server.player.where("Je_OwO", "x y z");
  13.         fakePlayer.command(`/tp @s ${position}`);
  14.     }
  15. }
  16. jsboot.listener.create('player', (e)=>{
  17.     changePlayerPosition();
  18. })
  19. changePlayerPosition();
复制代码
上面的代码看似正常,实际不太正常。请看到fakePlayer.command('/tp @s ${position}');这一行,用了@s,这似乎不太正确,实际告诉我们的确无法正常使用。




那上面的代码如何修改呢?


  1. fakePlayer.command('/tp @s ${position}')
复制代码

改为
  1. fakePlayer.command('/tp @s ${position}').commandInsert("@s", fakePlayer.name)
复制代码


或者直接用js原生的replace
  1. String.prototype.replaceAll = function(s1, s2){return this.split(s1).join(s2)}
  2. fakePlayer.command('/tp @s ${position}'.replaceAll("@s", fakePlayer.name));
复制代码





此外,我们还可以直接修改jsboot的源代码
找到app/.jsboot/public/main/player/player.dg,按下Ctrl+F找
  1. JSApp.object("command", "function", OSE_MOTe)
复制代码
改为
  1. JSApp.object("command", "function", OSE_History, dejson(OSE_MOTe).name)
复制代码

将OSE_MOTe改为OSE_History(OSE_Classic已弃用)能够使命令转化为历史命令,随后用解析过的OSE_MOTe的name作为修改




如果说实在还不会,还可以在打包的时候指定
在使用jsboot build命令时,我们写:
  1. echo WHose_MOTe_NAME_PLACEAPP_&arp~S&arp~_C > build.txt & jsboot build -exec build.txt
复制代码

只不过只对/src目录的有效,其它目录无效

点评

666~: 5.0
666~: 5
  发表于 2024-7-15 21:19
史莱姆汉化组
SLM 追求卓越
懒得打字嘛,点击右侧快捷回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

论坛
总坛规
社区规定
用户协议
坛史纲要
官方
VApp
联系我们
Bilibili
反馈
Bug反馈
功能申请
论坛活动
论坛公告
功能
陆号聊天室
苹果客户端

手机版

安卓客户端

QQ群

© 2021- MCArea | 由VApp提供技术支持

声明:本网站与微软、Mojang及网易无任何从属关系。