首頁 游戲

Minecraft指令手冊

第一百二十五章 玩家與JSON的交互事件 上

Minecraft指令手冊 你好MC 2635 2020-08-18 18:58:28

  看,這是一段JSON文本輸出的文字。

  只不過這段文字就是一段文字,你無法操控它,或者是它操控你(???)。

  如果你真的可以點擊這段文字并產生一些作用,比如打開了一個新的網站,你點擊文字的做法,就叫做你與文本的“交互事件”。

  在JSON文本中,專門管理玩家與JSON文本的交互事件元素統(tǒng)稱為“交互事件”。

  下面,我們就來研究研究,這些交互事件元素,到底該怎么用。

  第一個:insertion。

  第一個也就是最簡單的一個。insertion的作用就是當玩家按住Shift并點擊insertion所在對象顯示的文字時,游戲就會自動將insertion的值填入聊天框中,且并不會覆蓋已在聊天框輸入的文字,比如:

  {“text“:“按住Shift點擊有驚喜“,“insertion“:“驚喜!“}

  運行之后你就會發(fā)現輸出了:

  按住Shift點擊有驚喜

  這樣一段普普通通的消息。但如果你點擊T鍵打開消息界面,并按住Shift點擊文字,你就會發(fā)現聊天欄自動輸入了:“驚喜!”二字。

  這就是insertion的用法,是不是特別簡單?

  只不過該元素只有出現在聊天欄時,比如使用tellraw執(zhí)行才有意義,你直接寫在告示牌或者是書里是沒有任何用處的。

  然后第二個:clickEvent

  clickEvent元素的作用就是當玩家點擊文字(注意沒有按Shift,是直接點擊的那種)所產生的事情。所以clickEvent從該層面上來講就和超鏈接很類似了(自信點,把“類似”去掉)。

  既然是超鏈接,這讓你想到了什么?

  首當其沖的肯定就是打開網址,沒錯,clickEvent確實可以實現。

  然后呢?然后我們就不要再聯想了,直接看看clickEvent到底該怎么用吧。

  clickEvent元素的值是一個對象,即:

  {“clickEvent“:{}}

  在clickEvent值里面有兩個參數:

  action和value。

  這兩個參數都是必須填的,其中action為設置點擊后會產生什么樣的事情,value就是點擊產生的事情所需要的值。

  action有六種事件:

  open_url——使用系統(tǒng)默認瀏覽器打開value的網址

  open_file——打開位于value路徑的文件

  run_command——運行value中的指令

  suggest_command——打開聊天欄并輸入value里的值,會覆蓋原本輸入的消息

  change_page——翻頁到value頁

  copy_to_clipboard——將value里的值復制到粘貼板

  open_url是最常用的事件,當玩家點擊的時候游戲會跳出一個界面:

  你確定你要打開以下網頁?

  

  然后下面還有一行粉紅色的字:

  永遠不要打開從你不信任的人得到的鏈接!

  接著就是三個選項:是、復制到剪貼板、否

  如果選是,那么游戲將會使用默認瀏覽器打開;如果選復制到剪貼板,將會真的復制到你的剪貼板,只不過網頁需要你自己打開瀏覽器復制進去;如果選否,那么恭喜你,啥也不會發(fā)生,只不過界面被關掉了而已。

  那么如果我們要點擊的時候打開百度搜索首頁該怎么辦?

  很簡單:

  {“text“:“百度搜索“,“clickEvent“:{“action“:“open_url“,“value“:“

  運行,點擊一下“百度搜索”再點擊“是”你就發(fā)現你打開了百度。

  等等,這樣子做的話,那么我們是不是可以在服務器里做出一個網址大全?

  嗯,一個很不錯的想法,可惜你的想法早在1999年就被李興平想到了,只不過鑒于你是在服務器里做的網址大全.......或許會因為其特殊性吸引更多的用戶?

  然后是第二個:open_file

  open_file和open_url類似,只不過open_url是打開網上的網址,而open_file是打開本地的文件,比如:

  {“text“:“你猜猜這有什么用“,“clickEvent“:{“action“:“open_file“,“value“:“C:\\“}}

  點擊就可以打開C盤.......?為什么不能打開?

  為什么呢?

  我們找到Minecraft WIKI,會發(fā)現上面說了一句話:“

  且出于安全原因禁止玩家使用?!?p>  原來如此!Mojang竟然考慮得如此周到!不愧是Mojang!

  所以open_file無法在游戲里運行,但是在游戲外,比如你開發(fā)的mod,就可以運行。

  open_file在Minecraft的作用就是用于游戲自動產生的消息中,比如你按了F2截圖,你就會發(fā)現你可以點擊消息中的帶有下劃線文字部分來打開你的截圖照片。

 ?。ǖ鹊?,那么用在MC函數中可以運行嗎?)

  第三個:run_command

  run_command就比較直白了:運行指令。比如:

  {“text“:“你猜猜這有什么用“,“clickEvent“:{“action“:“run_command“,“value“:“/give @p diamond“}}

  運行,并點擊一下文字,你會發(fā)現你獲得了一顆鉆石!

  但如果你忘記在value的開頭打上/,那么你就會發(fā)現你發(fā)送了一條消息:give @p diamond

  這是怎么回事?

  這就要聯系到run_command的運作方式了。

  在聊天消息以及書里,當一位玩家點擊了帶有run_command屬性的clickEvent那段文字,游戲就會默認該玩家為指令執(zhí)行者,并自動在該玩家的聊天欄輸入value里的指令并發(fā)送。

  所以說,run_command就只是點擊發(fā)送消息咯?

  沒錯就是這樣的,具體能不能執(zhí)行只能看該玩家的權限等級了。

  那么該怎么樣讓不夠等級的玩家也能使用run_command運行指令呢?

  用告示牌就行了。

  但是在告示牌上面怎么寫JSON?。?p>  很簡單,用指令放置一個帶有JSON的告示牌就行了,比如上面這條指令就可以:

  /setblock ~~~ minecraft:sign{Text1:“{\“text\“:\“你猜猜這有什么用\“,\“clickEvent\“:{\“action\“:\“run_command\“,\“value\“:\“give @p diamond\“}}“}

  (注:此為1.13版本指令,低于該版本或高于該版本均無法使用,其他版本:

  低于1.13——/setblock ~~~ minecraft:standing_sign 0 replace {Text1:“{\“text\“:\“你猜猜這有什么用\“,\“clickEvent\“:{\“action\“:\“run_command\“,\“value\“:\“give @p diamond\“}}“}

  高于1.13——/setblock ~~~ minecraft:oak_sign{Text1:“{\“text\“:\“你猜猜這有什么用\“,\“clickEvent\“:{\“action\“:\“run_command\“,\“value\“:\“give @p diamond\“}}“})

  運行一下,你就會發(fā)現出現了一個告示牌,如果你一直點這個告示牌,那么你就一直會獲得鉆石。(注意不是左鍵啊,是右鍵)

  而且,就算你撤了你的op,你還是可以獲得鉆石。

  并且!在告示牌上,你是不需要在value的開頭加上\的。

  為什么?

  因為在告示牌上,你點擊了告示牌,游戲會檢查告示牌的JSON,發(fā)現了clickEvent,游戲就會發(fā)現這個JSON不簡單,于是檢查了一下clickEvent,發(fā)現了run_command。

  此時游戲恍然大悟,然后游戲就把value交給了服務器處理。服務器會把這條value按照命令方塊處理指令的方式來處理,這個時候指令執(zhí)行地點就是告示牌,指令執(zhí)行者就是命令方塊。

  而命令方塊處理指令本身也就不需要加上/,自然告示牌上的JSON運行指令也就不需要加上/了。

  第四個:suggest_command

  suggest_command很簡單,就是玩家點擊時將value的值覆蓋(注意這個詞)到玩家的聊天欄輸入框,玩家可以自由選擇要回車,還是刪掉。這很簡單就不再多說了。

  第五個:change_page

  change_page這個是專門給書用的,就是在書里點擊文字就可以自動跳轉到value值的頁面,比如:

  /give @a written_book{author:“你好MC“,title:“《Minecraft指令手冊》第一卷“,pages:[“{\“text\“:\“第五章:坐標\“,\“clickEvent\“:{\“action\“:\“change_page\“,\“value\“:4}}“,““,““,““]}

 ?。ù藶?.13版本指令)

  獲得一本由你好MC寫的“《Minecraft指令手冊》第一卷”,然后在第一頁里顯示著:

  第五章:坐標

  點擊這串文字,就會自動跳轉到3-4頁。

  如果你細心觀察上面的指令,你就會發(fā)現這里的value不是字符串,而是數字。

  沒錯,change_page屬性的value只能是數字值,不能選擇字符串或者是布爾值。

  這就是change_page的用法。

  第六個:copy_to_clipboard

  這是在1.15版本才加入的新功能,作用就是玩家點擊時可以自動將value值復制到玩家的剪貼板,通過這個功能或許可以方便我們讓服務器更加的智能化。

  由于篇幅有限,剩下的內容我們下章再講。

  ——————————————

  clickEvent各事件可用性:

  open_url——聊天界面、書

  open_file——無法在游戲里使用

  run_command——聊天界面、書、告示牌

  suggest_command——聊天界面

  change_page——書

  copy_to_clipboard——聊天界面、書

按 “鍵盤左鍵←” 返回上一章  按 “鍵盤右鍵→” 進入下一章  按 “空格鍵” 向下滾動
目錄
目錄
設置
設置
書架
加入書架
書頁
返回書頁
指南