本帖最后由 钠钠钠镓 于 2022-12-28 14:24 编辑
已自行解决。为服务器增加启动脚本.bat文件,将Xms设为1G即可
前提:题主利用物品展示框制作了一个检测左右键的系统,基本思路为:
1.在玩家面前生成物品展示框。该展示框隐形,且装有一个隐形物品
2.若该展示框内已无物品,则判定玩家左键
3.若该展示框内物品被旋转,则判定玩家右键
4.清除已生成的展示框以重置
但随后,该系统在单人游戏与服务器表现出了不一样的行为:
*在单人游戏中,该系统可以正常运行,正常检测到玩家的左右键并输出
*在服务器中,该系统的检测功能完全不可用。仅能生成与清除物品展示框,但无法操作到展示框内的物品
在进一步的测试中发现,若生成的展示框是空的(无内置物品),在单人游戏中可以右键置入物品,但在服务器中无法置入物品,右键无反应
使用数据包和命令方块均出现了同样的问题:在单人游戏中正常生效,在服务器中无效。
以下为命令集:复制代码
在1.18.2和1.19.3均进行了测试,结果相同。使用的服务端核心为官方核心
补充:若将该系统由每刻运行改为每2刻运行,则在服务器内有概率正常生效,有概率无效。且循环间隔越大,生效概率越大
已自行解决。为服务器增加启动脚本.bat文件,将Xms设为1G即可
前提:题主利用物品展示框制作了一个检测左右键的系统,基本思路为:
1.在玩家面前生成物品展示框。该展示框隐形,且装有一个隐形物品
2.若该展示框内已无物品,则判定玩家左键
3.若该展示框内物品被旋转,则判定玩家右键
4.清除已生成的展示框以重置
但随后,该系统在单人游戏与服务器表现出了不一样的行为:
*在单人游戏中,该系统可以正常运行,正常检测到玩家的左右键并输出
*在服务器中,该系统的检测功能完全不可用。仅能生成与清除物品展示框,但无法操作到展示框内的物品
在进一步的测试中发现,若生成的展示框是空的(无内置物品),在单人游戏中可以右键置入物品,但在服务器中无法置入物品,右键无反应
使用数据包和命令方块均出现了同样的问题:在单人游戏中正常生效,在服务器中无效。
以下为命令集:
- execute as @e[type=item_frame,tag=ark.frame] at @s unless data entity @s Item positioned ~ ~-1 ~ as @p run say 左
- execute as @e[type=item_frame,tag=ark.frame] at @s if entity @s[nbt={ItemRotation:1b}] positioned ~ ~-1 ~ as @p run say 右
- execute as @e[type=item_frame,tag=ark.frame] at @s run tp @s ~ ~-1000 ~
- execute as @p at @s run summon item_frame ~ ~1 ~ {Silent:true,Item:{id:"carrot_on_a_stick",Count:1b,tag:{CustomModelData:1}},Invisible:true,Tags:["ark.frame"],Facing:5}
在1.18.2和1.19.3均进行了测试,结果相同。使用的服务端核心为官方核心
补充:若将该系统由每刻运行改为每2刻运行,则在服务器内有概率正常生效,有概率无效。且循环间隔越大,生效概率越大
判定玩家左右键的话,有些菜单插件就可以,服务器不建议使用命令方块,容易出问题
一般来说,原版服务端不会动命令的执行方式,和单人应该是一样的,这种情况应该很奇怪。根据你说的“在单人游戏中可以右键置入物品,但在服务器中无法置入物品,右键无反应”,如果抛去检测左右键的系统,连最基础的在展示框上放物品都做不到,那只有可能是进入了服务器的出生点16格保护,可以尝试在server.properties中把spawn-protection设为0后重启服务器。
本帖最后由 钠钠钠镓 于 2022-12-22 12:51 编辑
只有以该方式生成的展示框无法置入物品,手动放置的展示框可以正常置入物品,且测试时所使用的用户已有管理员权限。
另外,单次运行该系统中生成展示框的命令,也可以正常操作该展示框,例如旋转、破坏和置入物品。
不过这确实提供了一个思路,我尝试一下修改出生点区块保护范围。
补充 :经测试,修改spawn-protection后未改变该情况
louyukai 发表于 2022-12-22 10:31
一般来说,原版服务端不会动命令的执行方式,和单人应该是一样的,这种情况应该很奇怪。根据你说的“在单人 ...
只有以该方式生成的展示框无法置入物品,手动放置的展示框可以正常置入物品,且测试时所使用的用户已有管理员权限。
另外,单次运行该系统中生成展示框的命令,也可以正常操作该展示框,例如旋转、破坏和置入物品。
不过这确实提供了一个思路,我尝试一下修改出生点区块保护范围。
补充 :经测试,修改spawn-protection后未改变该情况
展示框的话,比较器可以隔着展示框的附加方块检测上面的物品旋转角度
没有物品就是0能量
有物品就是输出能量,根据旋转角度不同能量会发生变化
可以用侦测器检测红石粉能量变化,实现左右键检测
没有物品就是0能量
有物品就是输出能量,根据旋转角度不同能量会发生变化
可以用侦测器检测红石粉能量变化,实现左右键检测