本帖最后由 SPGoding 于 2019-10-13 01:11 编辑
众所周知 50a加入了局部坐标这一概念(参见新闻版和这里)
我刚刚用这个做出检查鼠标指针指的石头
花了我大约5分钟
没有使用任何marker实体/记分板/nbt
只用了3个指令 1个函数(其中一个指令是可以省略的)
复制代码
原理很好懂 就是如果检查距离超过了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(聊天栏)
众所周知 50a加入了局部坐标这一概念(参见新闻版和这里)
我刚刚用这个做出检查鼠标指针指的石头
花了我大约5分钟
没有使用任何marker实体/记分板/nbt
只用了3个指令 1个函数(其中一个指令是可以省略的)
- #chyx:ray
- execute unless entity @s[distance=..6] run say none
- execute if entity @s[distance=..6] if block ~ ~ ~ stone run say 1
- 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
ruhuasiyu 发表于 2017-12-12 17:21
这个可以
@pineapple_ 你要的放置方块的效果可以用这个
是的,这就是我要的那个!
目前我所知道的由于局部坐标淘汰的东西:
船的水平免穷举
选择器r(distance)画圆
刷怪蛋生成一些模组内需要用的特殊方块(本帖)
没想到这个居然是通过局部坐标解决的
另外rua你的模组里的刷怪蛋是不是也该改改了
预谋开坑1.13rpg/pve地图
pineapple_ 发表于 2017-12-12 21:27
是的,这就是我要的那个!
目前我所知道的由于局部坐标淘汰的东西:
但是我不太确定,比如说手上有一个特殊方块,然后放置的时候手上的物品已经消失了,这时候怎么检测这个玩家?
本帖最后由 pineapple_ 于 2017-12-12 22:30 编辑
这样行不
#scoreboard objectives add use_block useitem.xxx
tag @a[nbt={SlectedItem:…}] add keep_block
execute as @a[tag=keep_block,score…] run function chyx:ray
#对@a[tag=used_block]和@e[tag=block]操作
tag @a remove use_block
tag @a remove keep_block
ruhuasiyu 发表于 2017-12-12 21:36
但是我不太确定,比如说手上有一个特殊方块,然后放置的时候手上的物品已经消失了,这时候怎么检测这个玩 ...
这样行不
#scoreboard objectives add use_block useitem.xxx
tag @a[nbt={SlectedItem:…}] add keep_block
execute as @a[tag=keep_block,score…] run function chyx:ray
#chyx:ray
execute unless entity @s[distance=..7] run say none
execute if entity @s[distance=.7.] if block ~ ~ ~ stone run tag @a[tag=keep_block,score…] add used_block
execute if entity @s[distance=..7] unless block ~ ~ ~ stone offset ^ ^ ^0.005 run function chyx:ray
summon area_effect_cloud ~ ~ ~ {Tags:["block"]}
#对@a[tag=used_block]和@e[tag=block]操作
tag @a remove use_block
tag @a remove keep_block
本帖最后由 玄素 于 2017-12-12 22:09 编辑
标记留1tick延迟,或者复制代码即可跨tick检测物品
当然说的话,还是顺带获取一下Count做个减法比较稳妥就是
看起来我又忘了useitem.....
ruhuasiyu 发表于 2017-12-12 21:36
但是我不太确定,比如说手上有一个特殊方块,然后放置的时候手上的物品已经消失了,这时候怎么检测这个玩 ...
标记留1tick延迟,或者
- execute as @a[tag=xxx] ......
- ......
- tag @a remove xxx
- tag @a[nbt={}] add xxx
当然说的话,还是顺带获取一下Count做个减法比较稳妥就是
有局部坐标,导什么弹.jpg
长知识啊!!!天哪
对了说起来你有没有遇到过实际与局部坐标设置不同的情况?比如我弄个使用钓竿往前跑一段距离的玩意,但多次试验后并不一定是往前跑,甚至还会停在原地不动的情况,以及我今天用你这个也发生了类似的事,站在原地时可以正确检测范围内指向是否为石头,移动一下之后就一万个none了
雷鸣·翾鹗 发表于 2018-1-6 14:42
对了说起来你有没有遇到过实际与局部坐标设置不同的情况?比如我弄个使用钓竿往前跑一段距离的玩意,但多次 ...
表示没懂
我用我的这个是时一边跑跑跳跳没有什么问题啊
66666666666666666666666666666666666
这么高端 我在服务器里试试去
这波操作很可以--- ---
您好,我的版本是 18w 16a
我执行这段代码貌似报offset这里出错,我在其他地方也试了下,貌似我这个版本不支持offset
不知道具体是什么问题导致的
我执行这段代码貌似报offset这里出错,我在其他地方也试了下,貌似我这个版本不支持offset
不知道具体是什么问题导致的
可以的,很棒棒,虽然没看
可以的,很棒棒,虽然没看
感觉很厉害
.....................
支持支持支持支持支持支持
楼主您好
请问在使用这个命令时
execute as @a at @s anchored eyes positioned ^ ^ ^ anchored feet run function chyx:ray为什么还需要再输入anchored feet呢?
请问在使用这个命令时
execute as @a at @s anchored eyes positioned ^ ^ ^ anchored feet run function chyx:ray为什么还需要再输入anchored feet呢?
汉子我都认识 咋凑到一起就看不懂了呢
厉害~~~~~~~~~~
感谢感谢666
可以a ~~~
牛的牛的牛的
学到了 大佬讲的很详细
谢谢楼主的分享很用心
感谢大佬的分享
感谢分享,之前一直想搞个相关的东西来着
牛啊,很好,楼主,谢谢