rt,假设一个名字叫A的追踪者的5号快捷栏里有一个磁石指针(LodestoneTracked已经设为0b),这个磁石指针将指向被追踪者B。于是:
复制代码
然鹅我这样写并没有什么卵用,而且/data modify entity A Inventory[{Slot:4b}].tag.LodestonePos set value {X:0,Y:100,Z:0}会直接报错“无法修改玩家数据”,但是对于磁石指针的掉落物/data modify entity @e[...](假设这玩意选择的是磁石指针掉落物) Item.tag.LodestonePos set value {X:0,Y:100,Z:0}就有用,迷的一批现在。
- execute store result entity A Inventory[{Slot:4b}].tag.LodestonePos.X int 1 run data get entity B Pos[0]
- execute store result entity A Inventory[{Slot:4b}].tag.LodestonePos.Y int 1 run data get entity B Pos[1]
- execute store result entity A Inventory[{Slot:4b}].tag.LodestonePos.Z int 1 run data get entity B Pos[2]
然鹅我这样写并没有什么卵用,而且/data modify entity A Inventory[{Slot:4b}].tag.LodestonePos set value {X:0,Y:100,Z:0}会直接报错“无法修改玩家数据”,但是对于磁石指针的掉落物/data modify entity @e[...](假设这玩意选择的是磁石指针掉落物) Item.tag.LodestonePos set value {X:0,Y:100,Z:0}就有用,迷的一批现在。
本帖最后由 逍遥神候 于 2020-10-24 18:47 编辑
给个思路,可以不用收集玩家数据
而直接给B玩家设置为世界重生点···?
给个思路,可以不用收集玩家数据
而直接给B玩家设置为世界重生点···?
或许你可以考虑用某种物品填满玩家的所有空格子
然后clear掉指南针,再summon一个符合要求的指南针
最后再clear掉填充玩家背包的物品?
然后clear掉指南针,再summon一个符合要求的指南针
最后再clear掉填充玩家背包的物品?
逍遥神候 发表于 2020-10-24 18:46
给个思路,可以不用收集玩家数据
而直接给B玩家设置为世界重生点···?
emmm,这个考虑过,但是当"B"玩家有2个以上的时候就会乱,咱这个是给A指示最近的一个B玩家在哪
洞穴夜莺 发表于 2020-10-24 19:12
或许你可以考虑用某种物品填满玩家的所有空格子
然后clear掉指南针,再summon一个符合要求的指南针
最后再c ...
这样的话玩家A的背包岂不会疯狂抽搐(bushi
本帖最后由 LightD 于 2020-10-24 21:01 编辑
为什么不换个思路呢,让玩家丢出指南针,命令方块检测并清除,然后在该玩家附近生成个不可拾取的指南针,修改完数据后再允许拾取
首先检测玩家丢出指定指南针,检测成功则给玩家一个tag,方便执行下面的指令
循环命令方块:
复制代码
连锁命令方块,为永久执行且有条件复制代码
成品应该是这样
想保存指令可以下附件
新建文本文档.txt
(1.6 KB, 下载次数: 4)
为什么不换个思路呢,让玩家丢出指南针,命令方块检测并清除,然后在该玩家附近生成个不可拾取的指南针,修改完数据后再允许拾取
首先检测玩家丢出指定指南针,检测成功则给玩家一个tag,方便执行下面的指令
循环命令方块:
- /execute if entity @e[type=item,nbt={Item:{id:"minecraft:compass",tag:{Tags:["track"]}}}]
连锁命令方块,为永久执行且有条件
- #清除玩家扔出来的指南针
- /execute as @a[tag=fresh] run kill @e[type=item,nbt={Item:{id:"minecraft:compass",tag:{Tags:["track"]}}}]
- #重新在扔出指南针的玩家处生成一个不可拾起的指南针
- /execute at @a[tag=fresh] run summon minecraft:item ~ ~1 ~ {Tags:["1"],Item:{id:"minecraft:compass",Count:1b,Damage:0s,tag:{LodestonePos:{X:0,Y:10,Z:0},Tags:["track"],LodestoneTracked:0b,LodestoneDimension:"overworld"}},PickupDelay:32767}
- #将指南针追踪坐标改为需要追踪的玩家坐标,请给要被追踪的玩家一个t的tag(/tag 玩家 add t),只能有一个追踪玩家
- /execute as @e[type=item,nbt={Item:{id:"minecraft:compass",tag:{Tags:["track"]}}}] run data modify entity @s Item.tag.LodestonePos.X set from entity @a[tag=t,limit=1] Pos[0]
- /execute as @e[type=item,nbt={Item:{id:"minecraft:compass",tag:{Tags:["track"]}}}] run data modify entity @s Item.tag.LodestonePos.Y set from entity @a[tag=t,limit=1] Pos[1]
- /execute as @e[type=item,nbt={Item:{id:"minecraft:compass",tag:{Tags:["track"]}}}] run data modify entity @s Item.tag.LodestonePos.Z set from entity @a[tag=t,limit=1] Pos[2]
- #让指南针可被拾取,此时追踪坐标已刷新
- /execute as @e[type=item,nbt={Item:{id:"minecraft:compass",tag:{Tags:["track"]}}}] run data modify entity @s PickupDelay set value 0
- #最后清除玩家的tag
- /tag @a remove fresh
成品应该是这样
想保存指令可以下附件

本帖最后由 CR_019 于 2020-10-25 08:38 编辑
可以解决。如果不介意使用数据包。(由于使用我的数据包改制而来,以下命名空间均为cam)
写一个战利品表,如下:
复制代码
命名为cam:foo/bar
然后高频下列函数:
复制代码以上适用于主世界。下界与末地自改战利品表中的相关字段。
第一人称手部动作确实会鬼畜,可以通过延时执行函数来缓解。
(小声)为了30金粒测了一小时。
可以解决。如果不介意使用数据包。(由于使用我的数据包改制而来,以下命名空间均为cam)
写一个战利品表,如下:
- {
- "pools": [
- {
- "rolls": 1,
- "entries": [
- {
- "type": "minecraft:item",
- "name": "minecraft:compass",
- "functions": [
- {
- "function": "minecraft:set_nbt",
- "tag": "{LodestoneTracked:0b,LodestoneDimension:"minecraft:overworld"}"
- },
- {
- "function": "minecraft:copy_nbt",
- "source": "this",
- "ops": [
- {
- "source": "Item.tag.LodestonePos.Z",
- "target": "LodestonePos.Z",
- "op": "replace"
- },
- {
- "source": "Item.tag.LodestonePos.Y",
- "target": "LodestonePos.Y",
- "op": "replace"
- },
- {
- "source": "Item.tag.LodestonePos.X",
- "target": "LodestonePos.X",
- "op": "replace"
- }
- ]
- }
- ]
- }
- ]
- }
- ]
- }
命名为cam:foo/bar
然后高频下列函数:
- summon minecraft:item ~ ~ ~ {Tags:["1"],Item:{id:"minecraft:compass",Count:1b,Damage:0s,tag:{LodestonePos:{X:0,Y:0,Z:0},LodestoneTracked:0b,LodestoneDimension:"overworld"}},PickupDelay:32767}
- execute store result entity @e[tag=1,limit=1,sort=nearest] Item.tag.LodestonePos.X int 1 run data get entity B Pos[0]
- execute store result entity @e[tag=1,limit=1,sort=nearest] Item.tag.LodestonePos.Y int 1 run data get entity B Pos[1]
- execute store result entity @e[tag=1,limit=1,sort=nearest] Item.tag.LodestonePos.Z int 1 run data get entity B Pos[2]
- execute as @e[type=item,tag=1,limit=1] run loot replace entity A hotbar.4 loot cam:foo/bar
- kill @e[tag=1,type=item]
第一人称手部动作确实会鬼畜,可以通过延时执行函数来缓解。
(小声)为了30金粒测了一小时。
CR_019 发表于 2020-10-24 18:14
可以解决。如果不介意使用数据包。(由于使用我的数据包改制而来,以下命名空间均为cam)
写一个战利品表,如 ...
感动;w; 谢谢大佬
LightD 发表于 2020-10-24 20:54
为什么不换个思路呢,让玩家丢出指南针,命令方块检测并清除,然后在该玩家附近生成个不可拾取的指南针,修 ...
首先 麻烦了 直接改原来的指南针即可
其次如果要追踪 玩家需要一直按着q健 那更加惨不忍睹
Jokey_钥匙 发表于 2020-10-27 18:39
首先 麻烦了 直接改原来的指南针即可
其次如果要追踪 玩家需要一直按着q健 那更加惨不忍睹 ...
怎么直接改?data指令对玩家无效
LightD 发表于 2020-10-27 18:55
怎么直接改?data指令对玩家无效
rua影盒
利用潜影盒战利品表特殊性修改玩家背包