創作內容

2 GP

advancement系統研究

作者:果凍丁│2017-05-01 00:03:52│巴幣:4│人氣:497
自從advancement加了指令
就對他產生了興趣
不過最近一直都沒碰
今天晚上終於勉強有一點收穫
來做個筆記吧
裡面蠻多是wiki有的
可以去wiki對照看看

基礎

/advancement grant <玩家> <模式> <advancement>
給玩家advancement
至於為什麼不打1個
因為數量取決於<模式>
<模式>有only until from through everything
用以下的圖當範例

以中間的黑燿石當例子

當使用only
玩家只會得到黑燿石
(only有額外用法criterion 我猜是是否啟用該偵測條件)
當使用until
玩家會得到從草地(根部)到黑燿石中間所有的advancement
(草地 木鎬 石鎬 鐵錠 岩漿桶 黑燿石)
當使用from
會得到黑燿石跟他的子項目
(黑燿石 打火機 金蘋果 終界之眼 終界石)
當使用through
會得到跟黑燿石有關的項目(through = until + from)
當使用everything
會得到所有的成就(左上四個目錄裡面的項目全部給)

/advancement revoke <玩家> <模式> <advancement>
移除該玩家的advancement
模式對照上面的範例

進階

新增自定義成就或是更改原本成就
更改原本成就只要在取名時跟原版一樣就行
可以打開minecraft/versions/最新版(目前是17w17b)/17w17b.jar
assests/minecraft/advancements來看
裡面的階層在wiki有
icon:該advancement的圖片
title:advancement的標題(wiki有兩個title 不知道是什麼意思)
frame:advancement的外框 有方(的task) 有圓的(goal) 也有波紋的(challenge)
background:該advancement的主背景(要放在root.json裡面 只有root能決定背景)
description:恩..就是描述 標題下面會有比較長的句子
parent:他前面連的advancement是誰(root不能放)
criteriaName:隨便命名吧 這是給指令用的 但是不能夠重複
trigger:啟動偵測的模式(有點像scoreboard裡面的計算方式 有蠻多方便的東西 像是每當物品欄改變時就會偵測 對指令有很大的幫助)
conditions:當trigger啟動時會比對condition 確定符合才會給advancement
requirements:好 這個我不太知道 不過因為這個 我一開始自己打時都無法成功運作 後來好像是criteriaName要跟requirements一樣 不然就不要寫requirements
recipes:給新合成表(建議跟/recipe一起使用)
loot:what? 這個能開啟怪物的loot table嗎?
experience:給經驗(沒測過單位如何)
commands:給指令


再來是自己的一些心得

當成功弄出自訂成就時
當然馬上去玩commands
首先 他可以變成指令調
當如果很長一串 而且是發生在玩家身上時
就可以用這個代替
而且 1tick完成(當然不能跑太多指令 會頓一下)

循環部分
恩...沒有想像中的那麼猛
因為他不能一次跑太多指令
加上是在很短的時間內跑完
所以要給他個收尾
/advancement grant @s[score_times=10] only 001:root
有試過不加條件
如果只放scoreboard add 1
他能跑將近1000次
就不循環了
理論上應該要跑到把我的電腦餒弄爆才對
看來有極限值
當到極限時 就不會再revoke了
要重新啟動

對了 不知道是不是系統設定
advancement grant他會最後跑
這是我測試時用的commands
"rewards":
{"commands":[
"/scoreboard players add @p time 1",
"/advancement revoke @s[tag=repeat01] only 001:test",
"/say 1",
"/say 2",
"/say 3",
"/advancement grant @s[score_time=5] only 001:test",
"/say A",
"/say B"]
}

實際上的順序是
[23:54:40] [Server thread/INFO]: [jellywayne: 將玩家 jellywayne 的 time 分數設為 1]
[23:54:40] [Server thread/INFO]: [jellywayne: Revoked the entire advancement '001:test' from jellywayne]
[23:54:40] [Server thread/INFO]: [jellywayne] 1
[23:54:40] [Server thread/INFO]: [jellywayne] 2
[23:54:40] [Server thread/INFO]: [jellywayne] 3
[23:54:40] [Server thread/INFO]: [jellywayne: 將玩家 jellywayne 的 time 分數設為 2]
[23:54:40] [Server thread/INFO]: [jellywayne: Revoked the entire advancement '001:test' from jellywayne]
[23:54:40] [Server thread/INFO]: [jellywayne] 1
[23:54:40] [Server thread/INFO]: [jellywayne] 2
[23:54:40] [Server thread/INFO]: [jellywayne] 3
[23:54:40] [Server thread/INFO]: [jellywayne: 將玩家 jellywayne 的 time 分數設為 3]
[23:54:40] [Server thread/INFO]: [jellywayne: Revoked the entire advancement '001:test' from jellywayne]
[23:54:40] [Server thread/INFO]: [jellywayne] 1
[23:54:40] [Server thread/INFO]: [jellywayne] 2
[23:54:40] [Server thread/INFO]: [jellywayne] 3
[23:54:40] [Server thread/INFO]: [jellywayne: 將玩家 jellywayne 的 time 分數設為 4]
[23:54:40] [Server thread/INFO]: [jellywayne: Revoked the entire advancement '001:test' from jellywayne]
[23:54:40] [Server thread/INFO]: [jellywayne] 1
[23:54:40] [Server thread/INFO]: [jellywayne] 2
[23:54:40] [Server thread/INFO]: [jellywayne] 3
[23:54:40] [Server thread/INFO]: [jellywayne: 將玩家 jellywayne 的 time 分數設為 5]
[23:54:40] [Server thread/INFO]: [jellywayne: Revoked the entire advancement '001:test' from jellywayne]
[23:54:40] [Server thread/INFO]: [jellywayne] 1
[23:54:40] [Server thread/INFO]: [jellywayne] 2
[23:54:40] [Server thread/INFO]: [jellywayne] 3
[23:54:40] [Server thread/INFO]: [jellywayne: 將玩家 jellywayne 的 time 分數設為 6]
[23:54:40] [Server thread/INFO]: [jellywayne: Revoked the entire advancement '001:test' from jellywayne]
[23:54:40] [Server thread/INFO]: [jellywayne] 1
[23:54:40] [Server thread/INFO]: [jellywayne] 2
[23:54:40] [Server thread/INFO]: [jellywayne] 3
[23:54:40] [Server thread/INFO]: [jellywayne] A
[23:54:40] [Server thread/INFO]: [jellywayne] B
[23:54:40] [Server thread/INFO]: [jellywayne: Granted the entire advancement '001:test' to jellywayne]
[23:54:40] [Server thread/INFO]: [jellywayne] A
[23:54:40] [Server thread/INFO]: [jellywayne] B
[23:54:40] [Server thread/INFO]: [jellywayne: Granted the entire advancement '001:test' to jellywayne]
[23:54:40] [Server thread/INFO]: [jellywayne] A
[23:54:40] [Server thread/INFO]: [jellywayne] B
[23:54:40] [Server thread/INFO]: [jellywayne: Granted the entire advancement '001:test' to jellywayne]
[23:54:40] [Server thread/INFO]: [jellywayne] A
[23:54:40] [Server thread/INFO]: [jellywayne] B
[23:54:40] [Server thread/INFO]: [jellywayne: Granted the entire advancement '001:test' to jellywayne]
[23:54:40] [Server thread/INFO]: [jellywayne] A
[23:54:40] [Server thread/INFO]: [jellywayne] B
[23:54:40] [Server thread/INFO]: [jellywayne: Granted the entire advancement '001:test' to jellywayne]
[23:54:40] [Server thread/INFO]: [jellywayne] A
[23:54:40] [Server thread/INFO]: [jellywayne] B

不知道是不是因為snapshot的關係
總之 如果要用重複的話
advancement grant 最好放最後一個

另外 原本想要試試用advancement做CG圖(應該是CG圖吧)
會有很多碎片 每得一個advancement就會在advancement的頁面出現一塊拼圖
當做成就 所有的成就完成時就可以看到一個完整的圖片
不過第一張圖片好像也會在分頁選擇上
會怪怪的 可能要放棄root的advancement
看來目前只能想到指令條壓縮跟特殊偵測了

P.S. 打這篇時 minecraft的鸚鵡有時會發出奇怪叫聲 MD嚇死
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3561498
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 2 篇留言

voteban
發現自己跟不上時代的步伐

05-01 01:25

果凍丁
對指令來說只要知道trigger跟condition可以用就差不多啦 搞不好不太會用到05-01 06:44
腦內模擬
好像原版的recipe解鎖也是利用進度系統...

04-06 19:03

我要留言提醒:您尚未登入,請先登入再留言

2喜歡★jellywayne99 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:11/23 製圖日常--... 後一篇:更好的偵測水中...

追蹤私訊切換新版閱覽

作品資料夾

zzz54872qw所有人
【敬啟:無法重來的你。】第一集終於完成!謝謝一直以來持續閱讀的讀者們!看更多我要大聲說21分前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】