首頁 游戲

Minecraft指令手冊

第一百二十六章 玩家與JSON的交互事件 下

Minecraft指令手冊 你好MC 2273 2020-08-19 17:36:32

  現(xiàn)在,我們知道玩家和JSON文本的交互方式有按住某個鍵并點擊,或者是直接點擊文本。

  只不過從廣義上來講,這都是要點擊文本。那么有沒有什么不用點擊文本就可以與文本產(chǎn)生交互事件的元素呢?

  有!這就是:hoverEvent

  hoverEvent的作用是當玩家把鼠標指針移到文字上面時產(chǎn)生的事情,而不是點擊。

  hoverEvent和上一章講的clickEvent比較類似,值都是一個對象,由action和value組成。

  有了上一章的經(jīng)驗,這兩個的作用也就不需要再講了吧?

  action有三種事件:

  show_text——顯示條平平無奇的JSON文本

  show_item——顯示一個物品的懸浮介紹文字

  show_entity——顯示一個實體

  show_text無疑是最簡單的,你可以這樣:

  {“text“:“快摸我!“,“hoverEvent“:{“action“:“show_text“,“value“:“太棒了!感覺怎么樣?“}}

  這樣子就會輸出一串文字:快摸我!

  如果你把鼠標放在了上面,你就會發(fā)現(xiàn)上面出現(xiàn)了一串文字:太棒了!感覺怎么樣?

  你也可以這樣:

  {“text“:“快摸我!“,“hoverEvent“:{“action“:“show_text“,“value“:{“text“:“太棒了!感覺怎么樣?“}}}

  或是這樣:

  {“text“:“快摸我!“,“hoverEvent“:{“action“:“show_text“,“value“:[{“text“:“太棒了!感覺怎么樣?“}]}}

  甚至是這樣:

  {“text“:“快摸我!“,“hoverEvent“:{“action“:“show_text“,“value“:[{“translate“:“%s“,“with“:[{“translate“:“%s“,“with“:[{“translate“:“%s“,“with“:[{“translate“:“%s“,“with“:[{“text“:“太棒了!感覺怎么樣?“}]}]}]}]}]}}

  都是可以達到一樣的效果的,你也可以添加一些別的元素,比如改變文字顏色什么的。

  然后是show_item,這個的作用詳細一點說,就是放在文字上面可以顯示一個物品的詳細信息,就像是你在背包里把光標移到物品上面一樣。

  show_item的value也是字符串,但是里面還要寫一個對象,所以里面的引號前面都要加上轉(zhuǎn)義符號,不理解的可以去上一章看看作者是怎么用指令放置一個帶JSON的告示牌的,那條指令里面的JSON文本就跟這里的value是差不多的。

  OK,那么具體要怎么做呢?

  在第一百零八章,我們講到了物品的通用標簽:

  “Count——物品堆疊的數(shù)量

  Slot——物品所在的欄位(為掉落物時沒有這個值)

  id——物品id,神奇的是如果你不填,那么生成出來的掉落物就是一塊石頭

  tag——這個接下來就是物品的非必填標簽了,比如ench等都在里面。”

  在這里,我們也需要用到物品的通用標簽,這里我們拿懸浮顯示一個“蘋果”的懸浮文字舉例。

  我們需要先把value外邊的JSON先給理清楚:

  {“text“:“快摸我!“,“hoverEvent“:{“action“:“show_item“,“value“:““}}

  然后我們就可以研究研究value該怎么寫了,首先肯定要加上id,這是必須的:

  “value“:“{id:\“minecraft:apple\“}“

  然后你可以試著先執(zhí)行一下:

  {“text“:“快摸我!“,“hoverEvent“:{“action“:“show_item“,“value“:“{id:\“minecraft:apple\“}“}}

  只不過光標一放上去,就顯示了一條紅色的文本:

  Invalid Item

  這句話的意思是:無效的物品

  既然無效,那么肯定就是我們有必填項沒填,可以試著加一下Count參數(shù):

  “value“:“{id:\“minecraft:apple\“,Count:1}“

  然后再試一下:

  {“text“:“快摸我!“,“hoverEvent“:{“action“:“show_item“,“value“:“{id:\“minecraft:apple\“,Count:1}“}}

  你就會發(fā)現(xiàn),你成功顯示了一個蘋果!

  只不過顯示蘋果并沒有什么奇特的,因為看起來這就跟普通的顯示文本差不多啊?

  其實并不一樣,因為這個蘋果文本和我們之前說過的translate顯示出來的翻譯文本差不多,你只要改變一下語言,再把光標一放,唉,立馬就不一樣了!而且還是實時更新,不需要更改語言后再執(zhí)行一次。

  只不過這還不是最特別的,你還可以嘗試一下把蘋果(apple)改成鉆石劍:

  {“text“:“快摸我!“,“hoverEvent“:{“action“:“show_item“,“value“:“{id:\“minecraft:diamond_sword\“,Count:1}“}}

  然后光標再一放:

  鉆石劍

  在主手時:

  1.6攻擊速度

  7攻擊傷害

  是不是一模一樣?

  那么這有什么用處呢?

  如果你平常仔細觀察,你就會發(fā)現(xiàn)如果我們使用/give指令:

  /give @s diamond_sword

  這樣子獲得一個鉆石劍,把光標放在提示消息上,也會出現(xiàn)一樣的效果。

  最后一個:show_entity

  show_entity這個和show_item差不多,value值也是字符串,仍然需要轉(zhuǎn)義,只不過從物品變成了實體而已:

  {“text“:“快摸我!“,“hoverEvent“:{“action“:“show_entity“,“value“:“{}“}}

  那么對象里面該填啥呢?可以填實體的name(名字)、type(種類)、tag(NBT標簽)和id(UUID)。

  這三個屬性可以方便我們“偽造”出一個虛擬的實體,比如我們最基礎的可以偽造一名叫做“人”的玩家:

  {“text“:“快摸我!“,“hoverEvent“:{“action“:“show_entity“,.“value“:“{name:\“人\“,type:\“minecraft:player\“}“}}

  但是當你把光標放在上面之后,你就會發(fā)現(xiàn):“唉,咋啥都沒有呢?”

  別慌,我們可以再填一個id:

  {“text“:“快摸我!“,“hoverEvent“:{“action“:“show_entity“,“value“:“{name:\“人\“,type:\“minecraft:player\“,id:\“b5bef018-4307-48c8-894c-391f7bc3d8db\“}“}}

  運行之后,唉還是沒有出現(xiàn)。

  這到底是怎么回事?

  額,這個作者也不知道,但估計是版本的問題,于是作者換了一個版本(1.13.2到1.12.2):

  /tellraw @a {“text“:“快摸我!“,“hoverEvent“:{“action“:“show_entity“,“value“:“{name:\“人\“,type:\“minecraft:player\“,id:\“b5bef018-4307-48c8-894c-391f7bc3d8db\“}“}}

  結(jié)果還是不行。

  那么或許我們可以換一種思路——使用真實存在的玩家行不行?

  為此作者又測試了一下,還是不行。

  那就算了吧,可能是特性,畢竟如果錯了,起碼應該還有一個Invalid Entity的提示信息,啥也不顯示估計是真的游戲bug了。

  那么這就代表著本章結(jié)束了嗎?

  不,還沒有!

  Minecraft 1.16更新,Mojang不用了value(我們還可以用,是支持的),轉(zhuǎn)而使用了contents參數(shù)。contents參數(shù)和value類似,但有些地方有稍稍改進,比如show_item和show_entity就再也不是字符串了,所以我們的顯示鉆石劍就要被迫改成:

  {“text“:“快摸我!“,“hoverEvent“:{“action“:“show_item“,“contents“:{“id“:“minecraft:diamond_sword“,“Count“:1}}}

  可以發(fā)現(xiàn),1.16的NBT更加JSON了,參數(shù)都要加上引號了。

  那么我們的show_entity能用了嗎?可以測試一下:

  /tellraw @a {“text“:“快摸我!“,“hoverEvent“:{“action“:“show_entity“,“contents“:{“name“:“人“,“type“:“minecraft:player“,“id“:“b5bef018-4307-48c8-894c-391f7bc3d8db“}}}

  結(jié)果還是不行,但既然到了最新版本還不行,這是否代表著我們是填對的,只不過.......

  沒有可以顯示的東西?

 ?。ㄗⅲ?.16版本,實體的name標簽已經(jīng)支持了JSON文本。)

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