本教學介紹一些能夠操控實體的命令。
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的速度向東移動:
|