本帖最后由 SPGoding 于 2019-10-13 01:11 编辑

众所周知 50a加入了局部坐标这一概念(参见新闻版和这里

我刚刚用这个做出检查鼠标指针指的石头
花了我大约5分钟

没有使用任何marker实体/记分板/nbt

只用了3个指令 1个函数(其中一个指令是可以省略的)



  1. #chyx:ray
  2. execute unless entity @s[distance=..6] run say none
  3. execute if entity @s[distance=..6] if block ~ ~ ~ stone run say 1
  4. execute if entity @s[distance=..6] unless block ~ ~ ~ stone positioned ^ ^ ^0.005 run function chyx:ray
复制代码


原理很好懂 就是如果检查距离超过了6格  那么放弃 并且输出none
如果发现石头  那么就停止 并且输出1
如果仍未发现 那么往前进0.005(可自行在速度和准确度上决定)
当然 如果你不需要输出none  那么第一个指令可以省掉的
当然咯 因为玩家的眼睛离他的原点有一些距离
游戏里使用的时候应该输入execute as @a at @s anchored eyes positioned ^ ^ ^ anchored feet run function chyx:ray(由命令方块时)
或者execute anchored eyes positioned ^ ^ ^ anchored feet run function chyx:ray(聊天栏)

将命令更新到了最新版本的格式
原文内容附在如下

—— SPGoding