乙烯_中国
本帖最后由 乙烯_中国 于 2017-4-11 15:40 编辑

好的,这里是乙烯。整篇文章差不多是自己开着mc一点点就着原文件和wiki自己试出来的,如果有分歧或者谬误还请指出。由于草稿一不小心发出来了,这就没办法了,剩下的一点内容我会爆肝写完的。


新快照出了几天了,advancement这个替换成就的新的系统大家都很感到新奇,正巧这次快照更新有添加一些相关内容,今天我乙烯就来和大家说一说这样的一个新的系统要怎样的玩耍。那么我们先来简单的介绍一下吧。(其中部分资料源自Minecraft Wiki,英文的
什么是advancement?

这就是advancement。(迫真)


好了,这是一个替换了成就系统的新的成就系统,嗯,大概这么看的话好像是看不出和原来的区别有多大?好像确实不大,但是现在通过这样的整理可以很方便的使用json来自定义advancement。而且你也可以很方便的添加选项卡,是不是很厉害!然后成就还是需要你逐步解锁的,不过目前的成就还不能写注解,所以很sad。
完成advancement的时候右上角会有提示,并且支持多条提示


同样的,原来的成就指令achievement也被替换成advancement,这个的用法我们之后会说到。
如何自定义advancement
整个自定义推荐直接从0自己写,如果要基于官方的修改的话,请在完全熟悉系统以及官方成就的情况下修改。
据dinnerbone在推特上说,自定义advancement是与存档绑定的,也就是说相关的自定义文件要放在存档根目录的data/advancement里。是自定义里的豪杰。我们通过解压游戏的version jar可以很容易的确定这样的一个格式
  1. advancement
  2.      adventure
  3.      recipes
  4.      story
复制代码


如何创建一个选项卡

这里就不复述中间的过程直接上结论了。这里除了recipes每一个文件夹都被视为一个单独的选项卡。如果要创建一个新的选项卡请在advancement文件夹下新建一个新的文件夹,文件夹名字从简为佳,允许存在中文但是个人并不推荐。在这个选项卡的advancement如果没有解锁的话,那么这个选项卡是不会显示的。
Recipes文件夹我暂时还没有时间进行详细的实验,但是据源码观察是利用了成就的系统决定了合成表的解锁链,比如我在进入了水(船合成表的解锁条件之一)后便解锁了船的合成,在我使用合法的格式编辑了面包的json后,进入水中便解锁了面包的合成。所以工作原理是一样的。也就是说,合成虽然暂时不能自定义,但是合成链的解锁已经可以自定义了
创建一个选项卡除了新建一个文件夹,还要求这个选项卡有一个起始成就(下文称之为根成就),并且这个起始成就不能成为任何一个成就的子成就。如果这个成就是一个其他选项卡的子成就的话,显示上不仅不会显示新建选项卡,该成就以及其子成就还会显示到其他选项卡下面。这是我们不想要的。

大概加多了会这样。
当然这时候你们大概会说了:“哎呀我们不知道怎么写成就啊”,这个你们不要急,我们马上来说。
如何写一个单独的advancement
如果你已经按照上文操作,并自己写了成就的话,你的页面大概回事这个样子的。别急,这说明你的成就已经写的很接近了,让我们来看看成就应有的标准格式。

首先,要明确的是,大致会使用json格式是自定义成就的前提条件。所以让我们来简单介绍一下json格式。
这里我就折叠一下。


好的,这里就让我们来讲一下成就的结构是怎样的。下文均为小写,辣鸡word自动给我大写了,还有全文的引号必须为半角的引号,我这里尽量自己修一修,但word看不太出来。
  1. Display
  2.     Icon
  3.     Title
  4.     Frame
  5.     Background
  6. Parent
  7. Criteria
  8.     条件名
  9.         Trigger
  10.         Conditions
  11. Requirement
  12. Rewards
  13.     Recipes
  14.     Loot
  15.     Experience
复制代码



好,接下来逐条讲解.


display
Display其下所有的都用于设置这个成就是如何显示的。


parent

criteria

Requirement

Rewards

自此全标签讲解完成,留待二楼仔细说明判据,可能会在最后放出一个单独用于示例讲解的advancement。

a





2021.12 数据,可能有更多内容好的,这里是乙烯。整篇文章差不多是自己开着mc一点点就着原文件和wiki自己试出来的,如果有分歧或者谬误还请指出。由于草稿一不小心发出来了,这就没办法了,剩下的一点内容我会爆肝写完的。


新快照出了几天了,advancement这个替换成就的新的系统大家都很感到新奇,正巧这次快照更新有添加一些相关内容,今天我乙烯就来和大家说一说这样的一个新的系统要怎样的玩耍。那么我们先来简单的介绍一下吧。(其中部分资料源自Minecraft Wiki,英文的
什么是advancement?

这就是advancement。(迫真)


好了,这是一个替换了成就系统的新的成就系统,嗯,大概这么看的话好像是看不出和原来的区别有多大?好像确实不大,但是现在通过这样的整理可以很方便的使用json来自定义advancement。而且你也可以很方便的添加选项卡,是不是很厉害!然后成就还是需要你逐步解锁的,不过目前的成就还不能写注解,所以很sad。
完成advancement的时候右上角会有提示,并且支持多条提示



同样的,原来的成就指令achievement也被替换成advancement,这个的用法我们之后会说到。
如何自定义advancement
整个自定义推荐直接从0自己写,如果要基于官方的修改的话,请在完全熟悉系统以及官方成就的情况下修改。
据dinnerbone在推特上说,自定义advancement是与存档绑定的,也就是说相关的自定义文件要放在存档根目录的data/advancement里。是自定义里的豪杰。我们通过解压游戏的version jar可以很容易的确定这样的一个格式

代码:

  1. advancement
  2.   adventure
  3.   recipes
  4.   story


如何创建一个选项卡

这里就不复述中间的过程直接上结论了。这里除了recipes每一个文件夹都被视为一个单独的选项卡。如果要创建一个新的选项卡请在advancement文件夹下新建一个新的文件夹,文件夹名字从简为佳,允许存在中文但是个人并不推荐。在这个选项卡的advancement如果没有解锁的话,那么这个选项卡是不会显示的。
Recipes文件夹我暂时还没有时间进行详细的实验,但是据源码观察是利用了成就的系统决定了合成表的解锁链,比如我在进入了水(船合成表的解锁条件之一)后便解锁了船的合成,在我使用合法的格式编辑了面包的json后,进入水中便解锁了面包的合成。所以工作原理是一样的。也就是说,合成虽然暂时不能自定义,但是合成链的解锁已经可以自定义了。
创建一个选项卡除了新建一个文件夹,还要求这个选项卡有一个起始成就(下文称之为根成就),并且这个起始成就不能成为任何一个成就的子成就。如果这个成就是一个其他选项卡的子成就的话,显示上不仅不会显示新建选项卡,该成就以及其子成就还会显示到其他选项卡下面。这是我们不想要的。

大概加多了会这样。
当然这时候你们大概会说了:“哎呀我们不知道怎么写成就啊”,这个你们不要急,我们马上来说。
如何写一个单独的advancement
如果你已经按照上文操作,并自己写了成就的话,你的页面大概回事这个样子的。别急,这说明你的成就已经写的很接近了,让我们来看看成就应有的标准格式。

首先,要明确的是,大致会使用json格式是自定义成就的前提条件。所以让我们来简单介绍一下json格式。
这里我就折叠一下。
[spoiler]Json其实并不难,但是如果使用专业的说法可能导致一些人不太容易理解。如果你不擅长或者看完也没懂的话,有两种解决办法,一个是抄,抄原版游戏文件中的json,一个是问。
{“aa”:”bb”}
这就是最简单的json格式。并不难对吧。
{“aa”:”bb”,”cc”:”dd”}
这便是两者并列的json格式。使用逗号分隔。
{“aa”:”bb”,”cc”:”dd”,”ee”:{“ff”:”gg”}}
这便是一个上下级的关系。这里使用的都是大括号或者说叫花括号。
实例的结构可以简写为
Aa
Cc
Ee
  Ff
下文的结构也是如此。
使用中括号便是代表一个列表,这个难以一言蔽之,基本上你可以看官方怎么写就好了。
字符串用”“围起来,数值则不需要。还有一种特殊的true或者false。
最后的最后,所有的括号都必须成对,并且不能有多余的逗号。[/spoiler]


好的,这里就让我们来讲一下成就的结构是怎样的。下文均为小写,辣鸡word自动给我大写了,还有全文的引号必须为半角的引号,我这里尽量自己修一修,但word看不太出来。

代码:

  1. Display
  2.     Icon
  3.     Title
  4.     Frame
  5.     Background
  6. Parent
  7. Criteria
  8.     条件名
  9.   Trigger
  10.   Conditions
  11. Requirement
  12. Rewards
  13.     Recipes
  14.     Loot
  15.     Experience



好,接下来逐条讲解.

display
Display其下所有的都用于设置这个成就是如何显示的。
[spoiler]Icon:这个用于设置成就显示的标识
例子 ,这个的写法是

代码:

  1. "icon":"minecraft:map"

写进去的必须是一个物品名字
Title:这个用于设置成就的名字
例子 ,写法为

代码:

  1. "title": "Adventure"

,同时也可以使用同时也可以使用类似tellraw指令里面的json写法,比如"

代码:

  1. title":{"text":"test","color":"red","bold":true,"italic":true}

,这样的效果为
。也可以使用多段分开的 。

这里单独说一点,title和icon两者用于根成就时,都会被使用到这个选项卡的icon和title。
Frame:这个成就的边框,如果不填则默认为圆角矩形(task)。
现在mc提供三种边框。

从左到右为task,challenge和goal。例子,

代码:

  1. "frame": "goal"

,这样的效果为

同时也决定了完成advancement完成时的右上角提示,例如如果是goal完成的话右上角会提示goal完成。
Background:这个成就选项卡的背景。这一项仅限于根成就才拥有。这个后面可以填一个可用的图片地址
例子

代码:

  1. "background": "minecraft:textures/blocks/wool_colored_cyan.png"



这样的效果为

自此display系列标签全部讲解完成。[/spoiler]

parent
[spoiler]Parent无其下标签,其自己是用于确定该成就的父成就,也就是在界面中左边与哪个成就相连。可以在不完成父成就的情况下获得该成就。
解锁或已被列出的成就会列出其所有的父成就以及两个子成就。不得写在根成就中。写法,

代码:

  1. "parent": "adventure/root"

。内容必须为一个已经存在的成就。

自此parent系列标签全部讲解完成。[/spoiler]
criteria
[spoiler]Criteria其下为需列出获得成就的条件名,可以自己定义,但是不能与其他条件重名
每个条件名其下需要有相关的判据,判据会在下方列出。每个判据会有相关的条件。每个判据我都会详细的说明。后续版本更新的我也会慢慢的补齐。
一般来说都是这样的格式

代码:

  1. "criteria": {
  2.     "这里写条件名": {
  3.    "trigger": "minecraft:xxx",
  4.    "conditions": {
  5.   这里填条件
  6.    }
  7.     }



下文会慢慢举例子。这里先把目前所有的判据都举出来
该表格翻译自Minecraft 英文Wiki
判据名
触发条件:
可用的条件
minecraft:bred_animals
玩家喂食两只动物。
"parent","partner", "child"
minecraft:brewed_potion
玩家酿出药水。
"potion"
minecraft:construct_beacon
玩家改变了信标的结构(即信标更新自己时)。
"level"
minecraft:cured_zombie_villager
玩家治愈了一只僵尸村民。
"zombie,"villager"
minecraft:enchanted_item
玩家通过附魔台对物品进行附魔(而不是通过铁砧或者命令)
"item","levels"
minecraft:enter_block
玩家进入一个方块,也就是能响应execute @p ~ ~ ~ detect ~ ~ ~ 方块 损害值
"block","state"
minecraft:entity_killed_player
实体杀死玩家。
"entity"
minecraft:impossible
无,仅可通过指令获得。

minecraft:inventory_changed
玩家的背包发生变化。
"items","slots"
minecraft:location
每秒钟(20ticks)触发一次。
"position","biome"
minecraft:player_damaged
玩家收到伤害。
"damage"
minecraft:player_hurt_entity
玩家被一个实体伤到(包括自己)。
"damage"
minecraft:player_killed_entity
玩家杀死了一个实体。
"entity"
minecraft:recipe_unlocked
玩家解锁了一个合成表(例如使用知识之书)。
"recipe"
minecraft:slept_in_bed
玩家上床。
"location"
minecraft:summoned_entity
玩家召唤一个实体(生存可用的应该都是可用的,留待测试)。
"entity"
minecraft:used_ender_eye
玩家在生成要塞的世界里使用了末影之眼。
"distance"
minecraft:villager_trade
玩家与村民交易。
"villager","item"



相关的解析与例子由于排版问题我会放在二楼。[/spoiler]
Requirement
[spoiler]这里的话便是将在Criteria中写的判据进行应用。需要注意的是,如果判据写在Criteria中而你又写了requirement,那么这个判据是不会生效的。必须在这个条目中应用。如果不写则默认需要完成所有的criteria。
如果criteria非常简单的话(只有一个)则也可以选择不写requirement,但是个人建议为了避免某些意外性质的幺蛾子,还是每个都给写上比较好。
Requirement根据不同作用有两种写法。
首先requirement的外壳是

代码:

  1. "requirements": [ ]



注意了,这里的话是有一份中括号的。
然后如果是需要a和b两个判据同时生效的话,写法为

代码:

  1. "requirements": [["a", "b"]]



注意这里是新用了一个中括号将a和b扩起来,有两对中括号。
如果需要完成任一判据即可获得成就的话,写法为

代码:

  1. "requirements": [["a"], ["b"]]



这里是用分别用一对中括号将两个判据围起来。
这两种写法是可以混用的,但是一般来说是不必要的。

代码:

  1. "requirements": [["killed_something", "has_wheat"]]

这就是一份需要杀死过生物并且拥有小麦时能解锁的写法,但是前提是你必须定义过这两个判据
自此requirement系列标签讲解完成。[/spoiler]
Rewards
[spoiler]这个标签是用来确定获得成就以获得的奖励。多用于合成表解锁。
这个标签下面都是非常简单暴力的写法,让我来就着例子和大家说明一下。

代码:

  1.    "rewards": {
  2.   "recipes": ["minecraft:crafting_table", "minecraft:iron_block"],
  3.   "loot": ["minecraft:entities/zombie", "minecraft:gameplay/fishing/treasure"],
  4.   "experience": 7
  5.     }



这里是rewards的三种子标签:recipes,内部填写物品名称,负责解锁合成表,在将来能自定义合成的时候是很方便的;loot,内部填写任一个合法的loottable名字,奖励时进行抽取随机给予,前面两种标签都可以同时在中括号里写出多种奖励;experience,奖励固定的经验数,就目前所了解到的是只能填写一个固定的数值。


这是上面loot奖励获得的腐肉(僵尸掉落),马鞍(钓鱼宝藏)。[/spoiler]
自此全标签讲解完成,留待二楼仔细说明判据,可能会在最后放出一个单独用于示例讲解的advancement。
a



LRual
额,是不是因为太高端了导致看到了都不知道该怎么回复= =
果然
从我注册到现在
如果有唯一没变的东西
那就是:当时我是小白,现在我还是小白= =

pca006132
bred那个没记错是要生出了新的生物
brewed potion其实从那药水的格子拿东西出来也行,放进去再拿出来也行
enter block准确来说是碰撞箱碰到,execute那个是错的
player hurt entity是玩家伤害到别的实体
slept in bed是成功上床,地狱的不算,因为会爆炸
还有,杀死别的实体是不包括别的玩家的。可以参考外国那个教程,已经非常的详细了

chyx
pca006132 发表于 2017-4-8 10:15
bred那个没记错是要生出了新的生物
brewed potion其实从那药水的格子拿东西出来也行,放进去再拿出来也行
e ...


execute那个是玩家的脚心在方块里面


这个是玩家的任何一个地方在里面

15357889879
1026833619 发表于 2017-4-8 04:50
额,是不是因为太高端了导致看到了都不知道该怎么回复= =
果然
从我注册到现在

66666666同样的路过

ruhuasiyu
二楼在哪???

乙烯_中国

等整体系统成型再更新

langyo_v3
等正式版本出了再写编辑器,现在先蹲坑。XD

xd_cedar
正式版出来啦出来啦!

1134443057
我突然发现我自己还不如一只猴子

skeleton小白
criteria貌似里少了这些判据:

arbitrary_player_tick
changed_dimension
consume_item
entity_hurt_player
item_durability_changed
levitation
placed_block
tame_animal

天上一片云
看了以后怀疑人生啊。猴子。。。

爱着杨海燕
正如题目所说,很简单就可以学会了,赞一个

二人世界
既然可以单独编辑存档,那以后的地图更高能了l

枷尔
spigot有个插件弄成就的

SJC20030208
顶顶顶顶顶顶顶顶顶顶顶顶顶

1204942617
所以我哪里错了啊,该怎么改啊
  1. {
  2.         "display": {
  3.                 "icon": {
  4.                         "item": "command_block"
  5.                 },
  6.                 "title": {
  7.                         "text": "Test"
  8.                 },
  9.                 "description": "test"
  10.         },
  11.         "show_toast": true,
  12.         "announce_to_chat": true,
  13.         "background": "minecraft:textures/block/iron_block.png"
  14. },
  15. "criteria": {
  16.         "has_command_block": {
  17.                 "trigger": "minecraft:inventory_changed",
  18.                 "conditions": {
  19.                         "items": [{
  20.                                 "item": "minecraft:command_block"
  21.                         }]
  22.                 }
  23.         },
  24.         "has_the_recipe": {
  25.                 "trigger": "recipe_unlocked",
  26.                 "conditions": {
  27.                         "recipe": "cs:1"
  28.                 }
  29.         }
  30. },
  31. "requirements": [
  32.         [
  33.                 "has_command_block",
  34.                 "has_the_recipe"
  35.         ]
  36. ]
  37. }
复制代码
一脸蒙蔽啊.....@乙烯_中国

乙烯_中国
1204942617 发表于 2018-8-8 10:35
所以我哪里错了啊,该怎么改啊一脸蒙蔽啊.....@乙烯_中国

你的括号未完全配对吧

1204942617
乙烯_中国 发表于 2018-8-8 18:18
你的括号未完全配对吧

怎么弄= =突然觉得成就比合成难好多啊...@乙烯_中国

BlackCB.
不能输给猴子……
判据不详细讲讲吗/?

种拔
您发的东西确实是猴子都能看懂的。可我是骡子啊

ruhuasiyu
乙烯_中国 发表于 2017-4-27 23:45
等整体系统成型再更新

二楼在哪?

z1643452507
支持一下~~

981867644
嗯...一年过去了...二楼...

大谷传奇
猴子好像还不行啊

llinxinli123148
嘻嘻嘻嘻嘻嘻嘻嘻寻寻寻寻寻寻寻寻寻寻

sevevss

等正式版本出了再写编辑器,现在先蹲坑

981867644
本帖最后由 981867644 于 2018-11-7 19:07 编辑

不知道乙烯会不会回复...
  1. {
  2.     "__comment": "Made with TheDestruc7i0n's advancements generator: https://advancements.thedestruc7i0n.ca",
  3.     "display": {
  4.         "title": {
  5.             "text": "Advancement",
  6.             "color": "gold",
  7.             "bold": false,
  8.             "strikethrough": false
  9.         },
  10.         "description": {
  11.             "text": "Description"
  12.         },
  13.         "icon": {
  14.             "item": "minecraft:stone"
  15.         },
  16.         "frame": "task",
  17.         "show_toast": true,
  18.         "announce_to_chat": true,
  19.         "hidden": false,
  20.         "background": "minecraft:textures/gui/advancements/backgrounds/stone.png"
  21.     },
  22.     "criteria": {
  23.         "123": {
  24.             "trigger": "minecraft:brewed_potion",
  25.             "conditions": {
  26.                 "potion": "minecraft:long_swiftness"
  27.             }
  28.         },
  29.         "Impossible": {
  30.             "trigger": "minecraft:brewed_potion",
  31.             "conditions": {
  32.                 "potion": "minecraft:strong_swiftness"
  33.             }
  34.         }
  35.     },
  36.     "requirements": [
  37.         [
  38.             "Impossible"
  39.         ],
  40.         [
  41.             "123"
  42.         ]
  43.     ]
  44. }
复制代码

在这段代码里我明确的用requirements区分开了“123”和“Impossible”,只需要完成其中一个要求就可以获得成就,但是在游戏里的测试却是要同时完成俩个要求才能获得成就,请问哪里出问题了

五分钟后的测试:那个...大佬...您是不是教程写反了...["1","2"]应该才是“任意完成一个”就行吧...反之["1"],["2"]是“全部完成”才对啊...


悲剧小白
成就正常完成了,但是写在recipes里的物品却没有得到

huashiwei
整合包里的任务卡住了,请问怎么重置

SolidBlock
能够修改进度组和某进度的支进度的显示顺序吗?

normanxqh
我是新手,我来学习一下,学习各位老大。

MC深坑不回头
浅显易懂! 终于能给地图加成就系统啦~想试试做分岐选项或字汇资料库!

HtYang
1.14貌似不能这么写?

怒火终烧
我忽然感觉自己不如一只猴子

CR_019
HtYang 发表于 2019-10-7 15:59
1.14貌似不能这么写?

可以啊,是不是你哪里写错了?

weihaoge123
可能这才是玩家吧,我只是个玩了几年的蔡姬

CR_019
requirements部分是不是写反了?

白色的小熊
这也太简略了吧,还是不会写

白色的小熊
请问bcakground到底怎么写

Changesite_Y
emm,可能我连猴子都不是吧

蔚然星空
下文呢下文呢?等待进食中……

as13755655140
楼主感谢分享,给你扣波666~

残夕xjdsg
MCBBS有你更精彩~

EightOneEight
本帖最后由 dirty_Rob 于 2020-3-29 21:22 编辑

为啥我还是不会???我连猴子都不如吗?json那一段我跟不没有弄懂  
补充:原来是格式错了,我觉得如果那一段json写得更清楚一点(因为我就以为是有好多个文件夹底下有一些json文件),不然别说猴子了,就是很多人都看不懂(不要说这是我给自己找的理由)   看来我还是和人很像的

q1019035584
你的教程很不错,我看过后有点思路

li_hao233
大佬问一下如果是同一个触发器想要使用多次可以吗?
比如与村民交易万次...?

2258935867
brewed potion

你的小菠萝
谢谢分享,终于搞懂了

黑黑大
完了,猴子都能学会我不如猴子了

下一页 最后一页