本教程介绍一些能够操控实体的命令。
effect[]
/effect clear <生物>
(移除所有效果)/effect give <生物> <效果> [<秒数>] [<倍率>] [<隐藏粒子>]
(给予一种效果)
基岩版:
/effect <生物> clear
(移除所有效果)/effect <生物> <效果> [<秒数>] [<强度>] [<隐藏粒子>]
(给予一种效果)
技巧[]
- 飘浮(levitation)的127级可以以最大速度飞升,而大于127会增加下落速度,128下落速度最大。
- 效果的有效参数见状态效果。
data[]
此特性为Java版独有。
/data get entity <实体>
/data merge entity <实体> <NBT标签>
/data modify entity <实体> <NBT路径> (insert|prepend|append|set|merge) ...
/data remove entity <实体> <NBT路径>
技巧[]
- 善用
/data get
命令,来查看实体的NBT标签。 - 参见区块格式以了解更多。
- 有关双引号转义见教程/原始JSON文本。
- 玩家是无法被改变NBT标签的,只能被检测。
- 如果是在命令方块中运行
/data get
的,你还可以把它复制出来,然后对其分析。
kill[]
/kill [<实体>]
注意[]
- 谨慎对含kill命令的命令方块接入高频!
spreadplayers[]
/spreadplayers <x> <z> <分散间距> <最大范围> <队伍选择> <传送目标>
/spreadplayers <x> <z> <分散间距> <最大范围> under <最大高度> <队伍选择> <传送目标>
基岩版:
/spreadplayers <x> <z> <分散间距> <最大范围> <传送目标>
技巧[]
spreadplayers
保持实体被传送的区块加载10秒左右。详见下方实例。- 由于数据的限制,
<最大范围>
至少为1.0。 - 关于实体被传送后的位置,有着这样的关系:
- 如果不使用
under
模式,实体会传送到最高表面,因此如果扩散区域存在两个可到达的平面,较低的一个不会有实体被传送。
- 如果不使用
实例[]
区块加载器[]
- 保持区块加载的方法有两种:
- 出生点区块一直会加载,可使用
/setworldspawn
改变; spreadplayers
则保持实体被传送的区块加载10秒左右。这个特性可用于世界范围的反作弊监控系统或是大型红石电路的加载。
- 出生点区块一直会加载,可使用
- 本例采用第二种方法:
summon[]
此特性为Java版独有。
/summon <实体> [<x> <y> <z>] [<NBT标签>]
技巧[]
- NBT标签部分详见区块格式。
- 在定位用的实体的NBT标签中:
wither_skull
(凋灵之首)需要把Motion
设为0。slime
(史莱姆)需要把NoAI
设为1。armor_stand
(盔甲架)通常把Invisible
设为1,也可以把Marker
设为1,后者完全不可视,一般配合探测命令使用。falling_block
(下落的方块)的BlockState
可以使一般方块具有掉落性质,再配合Passengers
可以实现单命令执行多命令。
实例[]
浮空文字[]
- 输入
/summon minecraft:armor_stand ~ ~2 ~ {CustomName:'{"text":"测试文字"}',CustomNameVisible:1b,Invisible:1b,Invulnerable:1b,NoBasePlate:1b,NoGravity:1b}
即可。
用雪球发射火球[]
- 使用高频接入
/execute as @e[type=snowball] at @s run summon fireball ~ ~ ~ {Motion:[0.0,0.0,0.0]}
,飞行的雪球撞击火球使火球获得速度,同时雪球自身因为撞击碎裂。[需要验证]
自定义生物属性:村民交易[]
1. 首先介绍相关NBT:
- VillagerData: 关于村民职业的信息。
- level: 村民当前交易选项等级。该值影响村民生成的交易选项。如果该值大于其职业最大等级,则不会生成新交易。该值在Offers字段刷新时增加。此字段也用于徽章的纹理渲染。
- profession: 含命名空间ID的值,指示此村民的职业。
- type: 含命名空间ID的值,指示此村民的种类。
- Offers: 在第一次打开交易菜单时产生
- Recipes: 交易列表
- :单个交易选项
- rewardExp: 1 或 0 (true/false) - true代表交易会提供经验球。
- maxUses: 代表在关闭选项前能进行的最大交易次数。
- buy: 第一个收购物品。
- buyB: 第二个收购物品,可能不存在。
- sell: 出售的物品。
- xp: 村民从此交易选项中能获得的经验值。
- :单个交易选项
- Recipes: 交易列表
- Xp: 此村民当前的经验值。
- VillagerData: 关于村民职业的信息。
2. 接下来举一个使用例子以说明:
- 直接复制可用的命令:
/summon minecraft:villager ~ ~ ~ {VillagerData:{profession:"minecraft:farmer"},Xp:1,Offers:{Recipes:[{maxUses:9999999,buy:{id:"minecraft:grass_block",Count:1b},buyB:{id:"minecraft:stone",Count:64b},sell:{id:"minecraft:light_blue_wool",Count:1b},xp:0},{maxUses:1,buy:{id:"minecraft:glass",Count:1b},sell:{id:"minecraft:diamond_sword",Count:1b,tag:{Enchantments:[{id:"minecraft:sharpness",lvl:5s}]}},xp:0}]}}
- 增加缩进以方便看清:
summon minecraft:villager ~ ~ ~ { VillagerData: { profession: "minecraft:farmer" }, Xp: 1, Offers: { Recipes: [ { maxUses: 9999999, buy: {id: "minecraft:grass_block", Count: 1b}, buyB: {id: "minecraft:stone", Count: 64b}, sell: {id: "minecraft:light_blue_wool", Count: 1b}, xp: 0 }, { maxUses: 1, buy: {id: "minecraft:glass", Count: 1b}, sell: {id: "minecraft:diamond_sword", Count: 1b, tag: {Enchantments: [{id: "minecraft:sharpness", lvl: 5s}]}}, xp: 0 } ] } }
3. 此条命令召唤一个村民:
- 第一种交易可以进行9999999次,收购1个草方块与64个石头,出售1个淡蓝色羊毛。
- 第二种交易可以进行1次,收购1个玻璃,出售1把钻石剑,具有锋利V魔咒。具体可用参数请见数据值。
- 由于只有有职业的村民才可交易,因此此处强制将村民的职业设为农民,并使它拥有1点经验值,以防止其失业。将 xp设为0是让村民无法获得更多经验值,从而不会解锁新的交易选项。
- 根据实际需求,你可以决定是否放置工作站点方块(本例中是堆肥桶),以让村民补货。
tp[]
/tp [<被传送实体>] <目标实体>
/tp [<被传送实体>] <x> <y> <z>
/tp [<被传送实体>] <x> <y> <z> [<y旋转角度> <x旋转角度>]
技巧[]
- 被传送玩家的视角将会和目的玩家的相同。
- 确定视角旋转的角度可以使用调试屏幕提供的数值进行计算,也可用中心显示的坐标系快速计算:
- 蓝轴不可见,红轴指左边,绿轴指上边时为(0,0)。
- 水平顺时针,也就是向右转,y角度增加。增加的上限是180,越过会变成负的角度(179>>180>>-179)。
- 竖直向上,x角度减少,反之增加。
- 配合
/execute
命令,可以做出各种各样的效果。 - 谨慎对含tp命令的命令方块接入高频!
实例[]
画面抖动[]
- 单纯地高频tp自己可以达到画面抖动的效果:
/execute as @p at @s run tp ~ ~0.15 ~
[仅Java版]或 /execute @p ~ ~ ~ tp ~ ~0.15 ~
[仅基岩版]。
自动运输[]
- 可以使用一种特定的方块(如白色羊毛),当实体踩在这种方块上时,将它们朝目标方向移动。
- 高频接入下面的命令,能使实体以20 m/s的速度向东移动:
|