第137章玩家与JSON的交互事件上
看,这是一段json文本输出的文字。
只不过这段文字就是一段文字,你无法操控它,或者是它操控你(???)。
如果你真的可以点击这段文字并产生一些作用,比如打开了一个新的网站,你点击文字的做法,就叫做你与文本的“交互事件”。
在json文本中,专门管理玩家与json文本的交互事件元素统称为“交互事件”。
下面,我们就来研究研究,这些交互事件元素,到底该怎么用。
第一个:insertion。
第一个也就是最简单的一个。insertion的作用就是当玩家按住shift并点击insertion所在对象显示的文字时,游戏就会自动将insertion的值填入聊天框中,且并不会覆盖已在聊天框输入的文字,比如:
{“text“:“按住shift点击有惊喜“,“insertion“:“惊喜!“}
运行之后你就会发现输出了:
按住shift点击有惊喜
这样一段普普通通的消息。但如果你点击t键打开消息界面,并按住shift点击文字,你就会发现聊天栏自动输入了:“惊喜!”二字。
这就是insertion的用法,是不是特别简单?
只不过该元素只有出现在聊天栏时,比如使用tellraw执行才有意义,你直接写在告示牌或者是书里是没有任何用处的。
然后第二个:clickevent
clickevent元素的作用就是当玩家点击文字(注意没有按shift,是直接点击的那种)所产生的事情。所以clickevent从该层面上来讲就和超链接很类似了(自信点,把“类似”去掉)。
既然是超链接,这让你想到了什么?
首当其冲的肯定就是打开网址,没错,clickevent确实可以实现。
然后呢?然后我们就不要再联想了,直接看看clickevent到底该怎么用吧。
clickevent元素的值是一个对象,即:
{“clickevent“:{}}
在clickevent值里面有两个参数:
action和value。
这两个参数都是必须填的,其中action为设置点击后会产生什么样的事情,value就是点击产生的事情所需要的值。
action有六种事件:
open_url——使用系统默认浏览器打开value的网址
open_file——打开位于value路径的文件
run_command——运行value中的指令
est_command——打开聊天栏并输入value里的值,会覆盖原本输入的消息
change_page——翻页到value页
copy_to_clipboard——将value里的值复制到粘贴板
open_url是最常用的事件,当玩家点击的时候游戏会跳出一个界面:
你确定你要打开以下网页?
然后下面还有一行粉红色的字:
永远不要打开从你不信任的人得到的链接!
接着就是三个选项:是、复制到剪贴板、否
如果选是,那么游戏将会使用默认浏览器打开;如果选复制到剪贴板,将会真的复制到你的剪贴板,只不过网页需要你自己打开浏览器复制进去;如果选否,那么恭喜你,啥也不会发生,只不过界面被关掉了而已。
那么如果我们要点击的时候打开百度搜索首页该怎么办?
很简单:
{“text“:“百度搜索“,“clickevent“:{“action“:“open_url“,“value“:“
运行,点击一下“百度搜索”再点击“是”你就发现你打开了百度。
等等,这样子做的话,那么我们是不是可以在服务器里做出一个网址大全?
嗯,一个很不错的想法,可惜你的想法早在1999年就被李兴平想到了,只不过鉴于你是在服务器里做的网址大全.......或许会因为其特殊性吸引更多的用户?
然后是第二个:open_file
open_file和open_url类似,只不过open_url是打开网上的网址,而open_file是打开本地的文件,比如:
{“text“:“你猜猜这有什么用“,“clickevent“:{“action“:“open_file“,“value“:“c:“}}
点击就可以打开c盘.......?为什么不能打开?
为什么呢?
我们找到minecraftwiki,会发现上面说了一句话:“
且出于安全原因禁止玩家使用。”
原来如此!mojang竟然考虑得如此周到!不愧是mojang!