Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
118 lines (110 sloc) 9.88 KB

Основное

Начиная с 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 | Критерий который выполняется при активации блока. | | 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 | Критерий который выполняется через определённое количество тиков. | | tame_animal | Критерий который выполняется при приручении животного. | | placed_block | Критерий который выполняется при установки блока. | | consume_item | Критерий который выполняется при потреблении предмета. | | effects_changed | Критерий который выполняется при изменении эффектов зелий. | | used_totem | Критерий который выполняется при использовании тотема. | | nether_travel | Критерий который выполняется при переходе в ад. |