Основное#
Начиная с 1.12, система достижений претерпела значительные изменения. Новая система отслеживания, увеличено количество достижений и многое другое, но теперь же у многих, кто пишет моды появился вопрос: "Как же теперь делать достижения? Опять они со своим json...". Всё на много проще чем кажется! Теперь нам достаточно создать root.json
и сами достижения в папке с ресурсами игры!
В данной статье вы научитесь делать основу для вкладки достижений.
Перейдём по пути:
└── src
└── main
└── resources
└── assets
└── tut
└── advancements
В этой папке у нас будут храниться категории (Категории хранятся в папках!). Создадим к примеру категорию craft
, в ней будут достижения связанные с крафтом. Далее создадим файл root.json
с таким содержимым:
{
"display": {
"icon": {
"item": "minecraft:stone"
},
"title": {
"translate": "advancements.tutorial.root.title"
},
"description": {
"translate": "advancements.tutorial.root.description"
},
"background": "tut:textures/gui/advancements/backgrounds/tutorial.png",
"show_toast": false,
"announce_to_chat": false
},
"criteria": {
"killed_something": {
"trigger": "minecraft:player_killed_entity"
},
"killed_by_something": {
"trigger": "minecraft:entity_killed_player"
}
},
"requirements": [["killed_something", "killed_by_something"]]
}
icon
- этот параметр отвечает за иконку нашей вкладки. Помимо переменнойitem
здесь могут быть переменныеdata
иnbt
.data
- отвечает за метадату предмета, аnbt
за данные которые хранятся в предмете.title
- это название вкладки.description
- это описание вкладки.background
- это фон, не рекомендуется использовать иконки предметов, кастомные gui и т.п. Лучше всего подойдёт текстура блока.show_toast
- показывать ли оповещение о том, что открыта вкладка с достижениями.announce_to_chat
- будет ли выводится оповещение в чат о том, что открыта вкладка с достижениями.criteria
- это критерии, которые будут отслеживаться. Так же там содержаться триггеры. (см. таблицу в конце статьи)-
requirements
- это требования, при выполнении одного из требований будет открыта вкладка. Можно так же не использоватьrequirements
, но тогда больше одного критерия создать нельзя будет. Можно будет потом изменить критерии на такую запись:"criteria": { "crafting_table": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "item": "minecraft:crafting_table" } ] } } }
-
conditions
- это условие при котором будет открыта данная вкладка. В данном случае, если предметверстак
лежит в инвентаре, то открывается вкладкаstory
. items
- массив предметов, можно добавить не тольковерстак
, но и другие предметы. Вот так добавлять:Можно так же использовать"items": [ { "item": "minecraft:crafting_table" }, { "item": "minecraft:stone" }, { "item": "minecraft:dye", "data": 5 } ]
nbt
иdata
. Теперь можете зайти в игру и выполнить один из ранее добавленных критериев!
Таблица критериев:
Критерий | Описание |
---|---|
impossible | Невозможный критерий. Применяется только в root рецептах Minecraft (задействовать можно только через команды). |
player_killed_entity | Критерий который выполняется при убийстве сущности игроком. |
entity_killed_player | Критерий который выполняется при убийстве игрока сущностью. |
enter_block | Критерий который выполняется при входе в блок (также при телепортации с помощью жемчуга Эндера). Проверяет каждый тик по 8 блоков (максимум блоков, в которых одновременно может находиться игрок). Например: касание жемчугом блока, телепортирующего на дальние острова в Энде. |
inventory_changed | Критерий который выполняется при добавлении предмета в инвентарь. |
recipe_unlocked | Критерий который выполняется при открытии нового рецепта. |
player_hurt_entity | Критерий который выполняется при ударе сущности игроком. |
entity_hurt_player | Критерий который выполняется при ударе игрока сущностью. |
enchanted_item | Критерий который выполняется при зачаровывании предмета. |
brewed_potion | Критерий который выполняется при окончании варки зелья. |
construct_beacon | Критерий который выполняется при постройке и активации маяка. |
used_ender_eye | Критерий который выполняется при использовании ока эндера. |
summoned_entity | Критерий который выполняется при призыве голема, возрождении дракона или иссушителя. |
bred_animals | Критерий который выполняется при скрещивании двух животных. |
location | Критерий который выполняется при перемещении в другую локацию. Например: найти замок в аду. |
slept_in_bed | Критерий который выполняется после сна в кровати. |
cured_zombie_villager | Критерий который выполняется при исцелении зомби жителя. |
villager_trade | Критерий который выполняется при торговле с жителем. |
item_durability_changed | Критерий который выполняется при изменении прочности предмета. |
levitation | Критерий который выполняется при левитации. |
changed_dimension | Критерий который выполняется при изменении измерения. |
tick | Критерий который выполняется каждый тик (20 раз в секунду). |
tame_animal | Критерий который выполняется при приручении животного. |
placed_block | Критерий который выполняется при установки блока. |
consume_item | Критерий который выполняется при потреблении предмета. |
effects_changed | Критерий который выполняется при изменении эффектов зелий. |
used_totem | Критерий который выполняется при использовании тотема. |
nether_travel | Критерий который выполняется при переходе в ад. |