LV. 5
GP 26

【指令】1.20.5 物品資訊更新 - 新的格式簡介 002

樓主 八寶周 babaochou
GP5 BP-

0. 前言

撐過了期末考,連 1.21 都出來了,總該回頭繼續介紹。那在上篇我們主要講述多數在個人遊玩也實用的基礎方法,而這期剩下的更多是與地圖製作相關的。

1. 重點

1.1. 善用冒險模式可防止玩家惡意破壞地圖破關
1.2. 盾牌的像素會變差,要注意圖像會變樣
1.3. 屬性變更對於地圖製作是密不可分,尤其關於自訂義道具

2. 內容

2.1. 冒險模式

在多數情況我們並不希望玩家透過破壞地圖的手段跳過辛苦設計的關卡,尤其是解謎地圖更需要透過冒險模式與設定好的道具進行破關。

那首先我們設計一把限制用來破牆的破舊石鎬

/give @p minecraft:stone_pickaxe[minecraft:can_break={blocks:'minecraft:cracked_stone_bricks'}]


但地圖並不只有破壞,還常尋找門的鑰匙,而此時限制擺放位置能避免用戶無法回收導致卡關。

/give @p minecraft:light_weighted_pressure_plate[minecraft:can_place_on={blocks:'minecraft:iron_block'}]


有更進階的需求,可以依靠以下方式,限制有向方塊的判斷

{predicates:{blocks:'minecraft:furnace',state:{facing:'north'}}

2.2. 地圖範本

在生存模式中你是否有過經驗,意外弄丟地圖導致無法複製?如果你記得編號就能夠利用以下介紹的指令將其拿回。但通常在生存中我們頂多再跑一趟建個新的地圖,從來沒人關心地圖編號。

然而地圖製作者則可能需要給與特定地區的冒險地圖,因此需要紀錄特定的編號,作為任務道具或依此讓商人進行販售。此時就會用到 map_id 的參數。

這邊順便介紹一個古早的工具 MC Map Item Tool ,你可以透過該工具將圖片轉成地圖檔,你只要接著將檔案更新到 .minecraft >> saves >> |地圖名稱| >> data 之中。那要注意如果是覆蓋舊的地圖且玩家在遊戲之中,拿起舊的地圖會讓暫存檔覆蓋掉我們剛上傳的新檔,請離開存檔後重新進入。

那此時我要拿出生成好的地圖,切記要使用 filled_map 而不是空白的 map 喔。

/give @p minecraft:filled_map[minecraft:map_id=0]


而在通常我們所拿到的地圖會是黑色的字樣,此時能夠透過 map_color 與 RGB 碼進行調整。

/give @p minecraft:filled_map[minecraft:map_color=16711680]


而實際上還有 map_decorations 用來在世界的指定座標加上標示(ex: 旗幟),但太麻煩了還不如編輯圖片並轉檔,還能夠自訂義任何想要的標籤。

P.S. 對,我發現我 RGB 色碼不是想像中的單純轉 9 碼,上一篇的藥水釀造我會再找時間修改。

2.3. 旗幟製作

在原版之中製作旗幟用織布機是非常簡單,但如果今天我們想要設計一個旗手(Standard Bearer)的職業,增強範圍內的友軍力量,此時就會牽涉到許多只能靠指令生成的部分,而旗幟就必須在過程中同時生成。

各位可以找到如 Minecraft Banner Gallery 該網站尋找設計,但目前生成的指令大多還是舊版的縮寫模式,但目前需要使用設計的全名,各位需要依照該 Minecraft Wiki 中的 Resource Name 對照圖案進行設計。

想想段考前我還必須撬開 .jar 檔 ... 廢話不多說我們開始吧,指令順序與製作的工序是一樣的,此次範例我挑選該較簡單的旗幟


我們複製指令下來先找個好用的編輯器修改圖樣與顏色的參數,順道將 Pattern 與 Color 改成小寫,刪除 Patterens: 與其 { } ,最後將 BlockEntityTag 改為更簡單的 banner_patterns 參數。

/give @p minecraft:white_banner[minecraft:banner_patterns=[{color:"black",pattern:"straight_cross"},{color:"white",pattern:"straight_cross"},{color:"black",pattern:"flower"},{color:"white",pattern:"flower"}]]


那接著我們若想弄出一個蝦趴的盾牌,我們同樣要依靠 banner_patterns 設定圖樣,但此時我們知道盾牌是無法染色的,因此我們需要依靠 base_color 設定底色。

但由於盾牌會縮小旗幟圖樣,直接用同樣辦法製作會拿到個白色盾牌,為了展示我刪除剛才的圖樣設定的最後道工序,將指令改成以下樣貌。

/give @p minecraft:shield[minecraft:base_color="white", minecraft:banner_patterns=[{color:"black",pattern:"straight_cross"},{color:"white",pattern:"straight_cross"},{color:"black",pattern:"flower"}]]

2.4. 玩家頭顱

依靠玩家頭顱設計裝飾或 NPC 也是常見的手法,而我們再也不用依賴長到天邊的 UUID,可以直接依靠玩家的名稱來取得頭顱了。

/give @p minecraft:player_head[profile={name:'CavalryHill'}]

這邊再先推薦個網站 Minecraft Heads,上面有多樣的選擇可以使用還附帶搜尋功能。逛過各位能發現上面並沒有公開用戶名稱,但這個網站更新很快已經有提供 1.20.6 的程式碼了。以下取站上的一顆蘋果為案例。

可以看到其多加了 properties: [{name:”textures”, value: “|TEXTURE VALUE|”}] 之架構,如果 datapack 需要自行客製化成就的時候還大概了解如何找起。

/give @p minecraft:player_head[minecraft:custom_name='{"text":"Apple","color":"gold","underlined":true,"bold":true,"italic":false}',minecraft:lore=['{"text":"Custom Head ID: 60982","color":"gray","italic":false}','{"text":"www.minecraft-heads.com","color":"blue","italic":false}'],profile={id:[I;661117833,194662243,-1247430837,-551990915],properties:[{name:"textures",value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjU0YTA5YzhlMzZjYzA5M2UzNzUzMjg3YTVjYWM0YjM3ZTU2NTRjYTUxOGM2NTgyYWI5OWNhYTk1MTM0NTk1ZSJ9fX0="}]}] 1

2.5. 煙火設計

說起來有些雞肋,在鞘翅出現的年代沒多少人注目煙火這過往奢侈的玩意兒。

設計的方式是類似的,但 firework_explosion 是針對煙火球,而 fireworks 是針對做好的煙火。

除了客製化結合許多設計之外,我要講的是 fireworks 的 flight_duration 參數,目前測試最大值是 159,其代表煙火飛升到爆炸的秒數,同時代表能給予鞘翅的驅動時長。在最大值之下飛過 1000 的高度都還綽綽有餘,但也代表不太適合作為跑圖的工具,因為 power 太強只能仰賴 crash landing 進行迫降 …

關於煙火的效果與 shape 參數可參考此篇 Minecraft Wiki 視覺化理解。

/give @p minecraft:firework_rocket[minecraft:fireworks={explosions:[{shape:'large_ball',colors:[16711680],has_trail:true}],flight_duration:2}]

2.6. 屬性變更

一直以來物品的屬性變更是極具重要的方法,其不只能設定武器的傷害,或者提供 % 加成,甚至限制物品要裝備特定位置才會觸發設定的效果。

這邊搬出有提供生成 /give 指令的網站 Gamer Geeks,目前也更新到 1.20.5 了,我們進入到 Attributes 分頁,必須說新的格式實在是長的有些噁心。


關於 operation 分為三種, additive 直接加上指定數值,add_multiplied_base 是將增加幾倍給物品數值,而 add_multiplied_total 則是增加幾倍玩家總和數值。

而在這網站目前缺少的便是前陣子炒熱的 scale,用來調整生物的大小。不過變成巨人走路的距離也沒有改變實在有點智障 …

/give @a iron_chestplate[attribute_modifiers={modifiers:[{type:"generic.scale",amount:10,slot:chest,operation:add_multiplied_base,name:"generic.armor",uuid:[I;-124514,39357,205617,-78714]}]}]

3. 後話

在過程中我決定跳過許多功能,比如上膛的弩箭與不可撿取的功能,界伏盒與皮帶的內容物,磁石指針,要嘛是有點雞肋,要麼是結構簡單卻長。還是希望我所篩選下來的功能都能滿足多數,若覺得有缺少的也歡迎另做詢問。

話說差個三周,先機似乎就沒有了 … 各大常用的指令生成工具大都已建立起來,只剩下些細微的功能講 …

< Jun. 14, 2024 - 23:42 更新 >
另外我將兩篇重新整理成一份到我個人的部落格上,歡迎各位拜訪一下還很殘破的網頁 o.o,近期應該會聚焦 JavaScript 基礎跟 Google Drive 的 Apps Script 兩個主題。
https://babaochou2420.com/2024/06/14/minecraft-1-20-5-item_cmd_update/
5
-
未登入的勇者,要加入 2 樓的討論嗎?
板務人員: