(Новая страница: «<div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"> '''<span lang="EN-US" style="font-family:">AchievementsAPI </span>…») |
|||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
− | <div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"> | + | <div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"> |
− | '''<span lang="EN-US" style="font-family:">AchievementsAPI </span>'''<span style="font-family:">– | + | '''<span lang="EN-US" style="font-family:">AchievementsAPI </span>'''<span style="font-family:">– библиотека для создания достижений</span><span style="font-family:">. В ней содержаться два модуля: </span>''<span lang="EN-US" style="font-family:">AchievementsPopup </span>''<span style="font-family:">и </span>''<span lang="EN-US" style="font-family:">AcvievementsAPI</span>''<span style="font-family:">. Здесь описаны основные их возможности. Больше информации вы можете узнать в виде комментариев в коде библиотеки.</span> |
+ | <div class="mw-parser-output"><div class="mw-parser-output"> | ||
+ | == Загрузка == | ||
+ | |||
+ | {| border="1" cellpadding="1" cellspacing="1" | ||
+ | |- | ||
+ | | Версия | ||
+ | | Ссылка | ||
+ | | Список изменений | ||
+ | | Дата релиза | ||
+ | |- | ||
+ | | 1 | ||
+ | | [https://github.com/DDCompany/ICLibraries/releases/tag/achievements-api-v1 Скачать] | ||
+ | | | ||
+ | | 20.07.20 | ||
+ | |- | ||
+ | | '''0''' | ||
+ | | [https://github.com/DDCompany/ICLibraries/releases/tag/achievements-api-v0 Скачать] | ||
+ | | Первая версия | ||
+ | | 13.07.20 | ||
+ | |} | ||
+ | </div> </div> | ||
+ | |||
+ | == Условия использования == | ||
+ | |||
+ | *Запрещено распространение библиотеки на сторонних источниках без ссылки на официальное сообщество([https://vk.com/forestry_pe https://vk.com/forestry_pe]) | ||
+ | *Запрещено изменение кода библиотеки | ||
+ | *Запрещено явное копирование кода в другие библиотеки или моды | ||
+ | *Используя библиотеку вы автоматически соглашаетесь с описанными выше условиями | ||
+ | |||
+ | <div class="mw-parser-output"> | ||
== AchievementPopup == | == AchievementPopup == | ||
− | <span style="font-family:">Данный модуль позволяет создавать кастомные уведомления. Для этого существует метод </span>''<span lang="EN-US" style="font-family:">show</span>''<span style="font-family:">. Он добавляет уведомление в очередь на показ, из которой они последовательно показываются. Принимает объект со следующими полями: </span><br/> | + | <span style="font-family:">Данный модуль позволяет создавать кастомные уведомления. Для этого существует метод </span>''<span lang="EN-US" style="font-family:">show</span>''<span style="font-family:">. Он добавляет уведомление в очередь на показ, из которой они последовательно показываются. Принимает объект со следующими полями: </span><br/> |
{| class="MsoTableGrid" style="border-collapse:collapse; border:solid windowtext 1.0pt" | {| class="MsoTableGrid" style="border-collapse:collapse; border:solid windowtext 1.0pt" | ||
Строка 34: | Строка 64: | ||
<br/> Пример использования<span lang="EN-US" style="font-family:">:</span> | <br/> Пример использования<span lang="EN-US" style="font-family:">:</span> | ||
− | <syntaxhighlight lang="Javascript"> | + | <syntaxhighlight lang="Javascript">Callback.addCallback("ItemUse", function () { |
− | + | AchievementPopup.show({ | |
− | + | title: "Title", | |
− | + | description: "And description", | |
− | + | item: { | |
− | + | id: 264, | |
− | + | data: 0, | |
− | + | count: 1 | |
− | + | } | |
− | + | }); | |
− | + | });</syntaxhighlight> | |
− | + | </div> | |
− | |||
− | }); | ||
− | </ | ||
== AchievementAPI == | == AchievementAPI == | ||
− | <span style="font-family:">В </span>''<span lang="EN-US" style="font-family:">AchievementAPI</span>''<span style="font-family:">представлен основной функционал мода - создание достижений. Но для начала необходимо создать группу, в которой они будут | + | <span style="font-family:">В </span>''<span lang="EN-US" style="font-family:">AchievementAPI </span>''<span style="font-family:">представлен основной функционал мода - создание достижений. Но для начала необходимо создать группу, в которой они будут находиться, используя </span>''<span lang="EN-US" style="font-family:">registerGroup</span>''<span style="font-family:">(</span>''<span lang="EN-US" style="font-family:">obj)</span>'''''<span style="font-family:">,</span>'''<span style="font-family:">где </span>''<span lang="EN-US" style="font-family:">obj </span>''<span style="font-family:">– объект, описывающий группу. Все поля, которые он может содержать, описаны в таблице, приведённой далее.</span><br/> ''' ''' |
{| class="MsoTableGrid" style="border-collapse:collapse; border:solid windowtext 1.0pt" | {| class="MsoTableGrid" style="border-collapse:collapse; border:solid windowtext 1.0pt" | ||
Строка 101: | Строка 128: | ||
<span style="font-family:">Пример</span><span lang="EN-US" style="font-family:">:</span> | <span style="font-family:">Пример</span><span lang="EN-US" style="font-family:">:</span> | ||
− | < | + | <pre>AchievementAPI.registerGroup({ |
− | + | unique: "vanilla", | |
− | + | name: "Vanilla", | |
− | + | width: 600, | |
− | + | height: 250, | |
− | + | size: 100, | |
− | + | bgTexture: "end", | |
− | + | icon: { | |
− | + | id: 1 | |
− | + | } | |
− | + | });</pre> | |
− | |||
− | }); | ||
<span style="font-family:">Для регистрации самих достижений используется метод </span>''<span lang="EN-US" style="font-family:">register</span>''<span style="font-family:">(</span><span lang="EN-US" style="font-family:">groupUnique</span><span style="font-family:">,</span><span lang="EN-US" style="font-family:">obj</span><span style="font-family:">)</span>''<span style="font-family:">,</span>''<span style="font-family:">где </span>''<span lang="EN-US" style="font-family:">groupUnique </span>''<span style="font-family:">– идентификатор группы, </span>''<span lang="EN-US" style="font-family:">obj </span>''<span style="font-family:">– объект, описывающий достижений. Для указания значения первого поля можно использовать как созданную вами, так и из сторонних модов.<br/> <span style="color:red">ВНИМАНИЕ! Группа должна быть зарегистрирована до создания достижений для неё!</span></span> | <span style="font-family:">Для регистрации самих достижений используется метод </span>''<span lang="EN-US" style="font-family:">register</span>''<span style="font-family:">(</span><span lang="EN-US" style="font-family:">groupUnique</span><span style="font-family:">,</span><span lang="EN-US" style="font-family:">obj</span><span style="font-family:">)</span>''<span style="font-family:">,</span>''<span style="font-family:">где </span>''<span lang="EN-US" style="font-family:">groupUnique </span>''<span style="font-family:">– идентификатор группы, </span>''<span lang="EN-US" style="font-family:">obj </span>''<span style="font-family:">– объект, описывающий достижений. Для указания значения первого поля можно использовать как созданную вами, так и из сторонних модов.<br/> <span style="color:red">ВНИМАНИЕ! Группа должна быть зарегистрирована до создания достижений для неё!</span></span> | ||
Строка 148: | Строка 173: | ||
|- | |- | ||
| style="width:114.75pt; border:solid windowtext 1.0pt; border-top:none" width="153" | <p align="center" style="margin-bottom:.0001pt; text-align:center; padding:0cm 5.4pt 0cm 5.4pt"><span style="line-height:normal"><span lang="EN-US" style="font-family:">parent</span></span></p> | | style="width:114.75pt; border:solid windowtext 1.0pt; border-top:none" width="153" | <p align="center" style="margin-bottom:.0001pt; text-align:center; padding:0cm 5.4pt 0cm 5.4pt"><span style="line-height:normal"><span lang="EN-US" style="font-family:">parent</span></span></p> | ||
− | | style="width:208.55pt; border-top:none; border-left:none; border-bottom:solid windowtext 1.0pt; border-right:solid windowtext 1.0pt" width="278" | <p style="text-align: center;"><span style="line-height:normal"><span style="font-family:">Задаёт родителя достижения. Данный объект может содержать </span>''<span lang="EN-US" style="font-family:">unique</span>''<span style="font-family:">, идентификатор родительского достижения, и </span>''<span lang="EN-US" style="font-family:">groupUnique</span>''<span style="font-family:">, группа, в которой оно находится. Если </span>''<span lang="EN-US" style="font-family:">groupUnique</span>''<span style="font-family:">не задано, поиск родителя будет осуществляться в пределах текущей группы и, если это завершилось успехом, они будут соединены линией.</span></span></p> | + | | style="width:208.55pt; border-top:none; border-left:none; border-bottom:solid windowtext 1.0pt; border-right:solid windowtext 1.0pt" width="278" | <p style="text-align: center;"><span style="line-height:normal"><span style="font-family:">Задаёт родителя достижения. Данный объект может содержать </span>''<span lang="EN-US" style="font-family:">unique</span>''<span style="font-family:">, идентификатор родительского достижения, и </span>''<span lang="EN-US" style="font-family:">groupUnique</span>''<span style="font-family:">, группа, в которой оно находится. Если </span>''<span lang="EN-US" style="font-family:">groupUnique </span>''<span style="font-family:">не задано, поиск родителя будет осуществляться в пределах текущей группы и, если это завершилось успехом, они будут соединены линией. РОДИТЕЛЬСКОЕ ДОСТИЖЕНИЕ ДОЛЖНО БЫТЬ ЗАРЕГИСТРИРОВАНО РАНЬШЕ ДОЧЕРНЕГО!</span></span></p> |
| style="width:155.25pt; border-top:none; border-left:none; border-bottom:solid windowtext 1.0pt; border-right:solid windowtext 1.0pt" width="207" | <p align="center" style="margin-bottom:.0001pt; text-align:center; padding:0cm 5.4pt 0cm 5.4pt"> </p> | | style="width:155.25pt; border-top:none; border-left:none; border-bottom:solid windowtext 1.0pt; border-right:solid windowtext 1.0pt" width="207" | <p align="center" style="margin-bottom:.0001pt; text-align:center; padding:0cm 5.4pt 0cm 5.4pt"> </p> | ||
|- | |- | ||
Строка 163: | Строка 188: | ||
| style="width:155.25pt; border-top:none; border-left:none; border-bottom:solid windowtext 1.0pt; border-right:solid windowtext 1.0pt" width="207" | <p align="center" style="margin-bottom:.0001pt; text-align:center; padding:0cm 5.4pt 0cm 5.4pt"> </p> | | style="width:155.25pt; border-top:none; border-left:none; border-bottom:solid windowtext 1.0pt; border-right:solid windowtext 1.0pt" width="207" | <p align="center" style="margin-bottom:.0001pt; text-align:center; padding:0cm 5.4pt 0cm 5.4pt"> </p> | ||
|- | |- | ||
− | | style="width:114.75pt; border:solid windowtext 1.0pt; border-top:none" width="153" | <p align="center" style="margin-bottom:.0001pt; text-align:center; padding:0cm 5.4pt | + | | style="width:114.75pt; border:solid windowtext 1.0pt; border-top:none" width="153" | <p align="center" style="margin-bottom: 0.0001pt; text-align: center; padding: 0cm 5.4pt;"><span style="font-size:smaller;"><span style="background:white"><span style="line-height:normal"><span lang="EN-US"><span style="color:black">notCompletePopup</span></span></span></span></span></p> |
| style="width:208.55pt; border-top:none; border-left:none; border-bottom:solid windowtext 1.0pt; border-right:solid windowtext 1.0pt" width="278" | <p style="text-align: center;"><span style="line-height:normal"><span style="font-family:">Если истина, уведомление о выполнении достижения показываться не будет.</span></span></p> | | style="width:208.55pt; border-top:none; border-left:none; border-bottom:solid windowtext 1.0pt; border-right:solid windowtext 1.0pt" width="278" | <p style="text-align: center;"><span style="line-height:normal"><span style="font-family:">Если истина, уведомление о выполнении достижения показываться не будет.</span></span></p> | ||
| style="width:155.25pt; border-top:none; border-left:none; border-bottom:solid windowtext 1.0pt; border-right:solid windowtext 1.0pt" width="207" | <p align="center" style="margin-bottom:.0001pt; text-align:center; padding:0cm 5.4pt 0cm 5.4pt"><span style="line-height:normal"><span lang="EN-US" style="font-family:">false</span></span></p> | | style="width:155.25pt; border-top:none; border-left:none; border-bottom:solid windowtext 1.0pt; border-right:solid windowtext 1.0pt" width="207" | <p align="center" style="margin-bottom:.0001pt; text-align:center; padding:0cm 5.4pt 0cm 5.4pt"><span style="line-height:normal"><span lang="EN-US" style="font-family:">false</span></span></p> | ||
Строка 173: | Строка 198: | ||
<span style="font-family:"><span style="color:black">Пример:</span></span> | <span style="font-family:"><span style="color:black">Пример:</span></span> | ||
− | < | + | <pre>AchievementAPI.register("somethingGroup", { |
− | + | unique: "one", | |
− | + | name: { | |
− | + | text: "Minecraft", | |
− | + | translate: "achievements.story.root.title" | |
− | + | }, | |
− | + | description: { | |
− | + | text: "The heart and story of the game", | |
− | + | translate: "achievements.story.root.description" | |
− | + | }, | |
− | + | column: 1, | |
− | + | row: 2, | |
− | + | item: { | |
− | + | id: 2 | |
− | + | } | |
− | + | }); | |
− | + | ||
− | + | AchievementAPI.register("somethingGroup", { | |
− | + | unique: "two", | |
− | + | name: { | |
− | + | text: "Stone Age", | |
− | + | translate: "achievements.story.mine_stone.title" | |
− | + | }, | |
− | + | description: { | |
− | + | text: "Mine stone with your new pickaxe", | |
− | + | translate: "achievements.story.mine_stone.description" | |
− | + | }, | |
− | + | parent: { | |
− | + | unique: "one" | |
− | + | }, | |
− | + | column: 2, | |
− | + | row: 3, | |
− | + | item: { | |
− | + | id: 270 | |
− | + | } | |
− | + | });</pre> | |
− | |||
− | });</ | ||
<span style="font-family:"><span style="color:black">Для выдачи достижений используется метод </span></span>''<span lang="EN-US" style="font-family:"><span style="color:black">give</span></span>''<span style="font-family:"><span style="color:black">(</span></span>''<span lang="EN-US" style="font-family:"><span style="color:black">groupUnique</span></span>'''<span style="font-family:"><span style="color:black">,</span></span>'''<span lang="EN-US" style="font-family:"><span style="color:black">unique</span></span>''<span style="font-family:"><span style="color:black">). Если задано поле </span></span>''<span lang="EN-US" style="font-family:"><span style="color:black">progressMax</span></span>''<span style="font-family:"><span style="color:black">, то при вызове методы специальный счетчик будет увеличиваться на единицу, пока не будет равен значение максимального прогресса, после чего достижение будет выдано. В противном случае это произойдёт сразу.</span></span> | <span style="font-family:"><span style="color:black">Для выдачи достижений используется метод </span></span>''<span lang="EN-US" style="font-family:"><span style="color:black">give</span></span>''<span style="font-family:"><span style="color:black">(</span></span>''<span lang="EN-US" style="font-family:"><span style="color:black">groupUnique</span></span>'''<span style="font-family:"><span style="color:black">,</span></span>'''<span lang="EN-US" style="font-family:"><span style="color:black">unique</span></span>''<span style="font-family:"><span style="color:black">). Если задано поле </span></span>''<span lang="EN-US" style="font-family:"><span style="color:black">progressMax</span></span>''<span style="font-family:"><span style="color:black">, то при вызове методы специальный счетчик будет увеличиваться на единицу, пока не будет равен значение максимального прогресса, после чего достижение будет выдано. В противном случае это произойдёт сразу.</span></span> | ||
− | <span style="font-family:"><span style="color:black">Предусмотрена возможность сохранения информации о ходе выполнения достижения. Для этого необходимо вызвать метод </span></span>''<span lang="EN-US" style="font-family:"><span style="color:black">getData</span></span>''<span style="font-family:"><span style="color:black">(</span></span> | + | <span style="font-family:"><span style="color:black">Предусмотрена возможность сохранения информации о ходе выполнения достижения. Для этого необходимо вызвать метод </span></span>''<span lang="EN-US" style="font-family:"><span style="color:black">getData</span></span>''<span style="font-family:"><span style="color:black">(</span></span><span lang="EN-US" style="font-family:">),</span>'''<span style="font-family:"><span style="color:black"> </span></span>'''<span style="font-family:"><span style="color:black">который возвращает объект. В него вы можете сохранять какую-либо произвольную информацию. Пример, демонстрирующий эту функциональность:</span></span> |
− | < | + | <pre>Callback.addCallback("ItemUse", function (coords, item) { |
− | + | let data = AchievementAPI.getGroup("somethingGroup").getChild("achievement").getData(); | |
− | + | ||
− | + | if (!data[item.id]) { | |
− | + | data[item.id] = true; | |
− | + | AchievementAPI.give("somethingGroup", "achievement") | |
− | + | } | |
− | });</ | + | });</pre> |
<span style="font-family:"><span style="color:black">Нам необходимо использовать разные предметы </span></span>''<span lang="EN-US" style="font-family:"><span style="color:black">progressMax</span></span>'' <span style="font-family:"><span style="color:black">раз, чтобы выполнить достижение.</span></span> | <span style="font-family:"><span style="color:black">Нам необходимо использовать разные предметы </span></span>''<span lang="EN-US" style="font-family:"><span style="color:black">progressMax</span></span>'' <span style="font-family:"><span style="color:black">раз, чтобы выполнить достижение.</span></span> | ||
− | <span style="font-family:"><span style="color:black">Существует метод </span></span>''<span lang="EN-US" style="font-family:"><span style="color:black">loadFrom</span></span>''<span style="font-family:"><span style="color:black">(</span></span>''<span lang="EN-US" style="font-family:"><span style="color:black">path</span></span>''<span lang="EN-US" style="font-family:">)</span>'''<span style="font-family:"><span style="color:black">,</span></span>'''<span style="font-family:"><span style="color:black">который загружает информацию из </span></span><span lang="EN-US" style="font-family:"><span style="color:black">JSON</span></span> <span style="font-family:"><span style="color:black">файла. В нём могут находиться две секции – </span></span>''<span lang="EN-US" style="font-family:"><span style="color:black">groups</span></span>''<span style="font-family:"><span style="color:black">, </span></span>''<span lang="EN-US" style="font-family:"><span style="color:black">achievements</span></span>''<span style="font-family:"><span style="color:black">. Первая – массив для объектов, описывающих группы достижений, другая – объект, который хранит массивы из достижений. Ключом служит идентификатор группы. Пример такого файла</span></span><span lang="EN-US" style="font-family:"><span style="color:black">:</span></span> | + | <span style="font-family:"><span style="color:black">Существует метод </span></span>''<span lang="EN-US" style="font-family:"><span style="color:black">loadFrom</span></span>''<span style="font-family:"><span style="color:black">(</span></span>''<span lang="EN-US" style="font-family:"><span style="color:black">path</span></span>''<span lang="EN-US" style="font-family:">)</span>'''<span style="font-family:"><span style="color:black">, </span></span>'''<span style="font-family:"><span style="color:black">который загружает информацию из </span></span><span lang="EN-US" style="font-family:"><span style="color:black">JSON</span></span> <span style="font-family:"><span style="color:black">файла. В нём могут находиться две секции – </span></span>''<span lang="EN-US" style="font-family:"><span style="color:black">groups</span></span>''<span style="font-family:"><span style="color:black">, </span></span>''<span lang="EN-US" style="font-family:"><span style="color:black">achievements</span></span>''<span style="font-family:"><span style="color:black">. Первая – массив для объектов, описывающих группы достижений, другая – объект, который хранит массивы из достижений. Ключом служит идентификатор группы. Пример такого файла</span></span><span lang="EN-US" style="font-family:"><span style="color:black">:</span></span> |
<syntaxhighlight lang="Json">{ | <syntaxhighlight lang="Json">{ | ||
"groups": [ | "groups": [ | ||
Строка 287: | Строка 310: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | </div> </div> </div> </div> </div> </div> </div> </div> | |
− | |||
− | |||
− | |||
− | </div> </div> </div> |
AchievementsAPI – библиотека для создания достижений. В ней содержаться два модуля: AchievementsPopup и AcvievementsAPI. Здесь описаны основные их возможности. Больше информации вы можете узнать в виде комментариев в коде библиотеки.
Данный модуль позволяет создавать кастомные уведомления. Для этого существует метод show. Он добавляет уведомление в очередь на показ, из которой они последовательно показываются. Принимает объект со следующими полями:
Название |
Описание |
Значение по умолчанию |
title |
Заголовок |
|
color |
Цвет заголовка |
android.graphics.Color.YELLOW |
description |
Описание. Текст под заголовком |
|
item |
Иконка, задаваемая предметом |
id – 0 data – 0 count – 1 |
delay |
Кол-во тиков, которые уведомление будет находиться на экране |
80 |
Пример использования:
Callback.addCallback("ItemUse", function () {
AchievementPopup.show({
title: "Title",
description: "And description",
item: {
id: 264,
data: 0,
count: 1
}
});
});
В AchievementAPI представлен основной функционал мода - создание достижений. Но для начала необходимо создать группу, в которой они будут находиться, используя registerGroup(obj),где obj – объект, описывающий группу. Все поля, которые он может содержать, описаны в таблице, приведённой далее.
Название |
Описание |
Значение по умолчанию |
unique |
Уникальный идентификатор группы |
Обязательное поле |
name |
Название группы. Отображается в левом нижнем углу окна просмотра достижений |
|
width |
Размер области, в которой отображаются достижения по ширине и высоте соответственно |
600 |
height |
250 | |
size |
Размер достижений в области |
100 |
bgTexture |
Название текстуры в директориях ресурсов для гпи, которая используется в качестве фона области достижений. Данное изображение маштабируется до 50 пикселей и дублируется по ширине и высоте. Рекомендуемый размер – 16x16 пикселей |
|
icon |
Иконка группы, задаваемая предметом. Отображается в левом нижнем углу окна просмотра достижений |
id – 0 |
Пример:
AchievementAPI.registerGroup({ unique: "vanilla", name: "Vanilla", width: 600, height: 250, size: 100, bgTexture: "end", icon: { id: 1 } });
Для регистрации самих достижений используется метод register(groupUnique,obj),где groupUnique – идентификатор группы, obj – объект, описывающий достижений. Для указания значения первого поля можно использовать как созданную вами, так и из сторонних модов.
ВНИМАНИЕ! Группа должна быть зарегистрирована до создания достижений для неё!
В таблице приведены возможные поля объекта.
Название |
Описание |
Значение по умолчанию |
unique |
Уникальный идентификатор достижения в текущей группе. В разных группах они могут повторяться. |
Обязательное поле |
name |
Объект, задающий название/описание достижения, который может содержать поля translateи text. Первое указывает строку, которая будет локализована, если это не удалось или она не задана, будет использоваться text. |
|
description | ||
column |
Один из способов размещения достижений – позиционирование по сетке. |
|
row | ||
x |
Размещение достижений с явным указанием координат. Имеет больший приоритет, чем выравнивание по сетке, если заданы оба варианта. |
|
y | ||
parent |
Задаёт родителя достижения. Данный объект может содержать unique, идентификатор родительского достижения, и groupUnique, группа, в которой оно находится. Если groupUnique не задано, поиск родителя будет осуществляться в пределах текущей группы и, если это завершилось успехом, они будут соединены линией. РОДИТЕЛЬСКОЕ ДОСТИЖЕНИЕ ДОЛЖНО БЫТЬ ЗАРЕГИСТРИРОВАНО РАНЬШЕ ДОЧЕРНЕГО! |
|
strongDependence |
Если значение – истина, достижение не будет отображаться, пока не выполнен родитель. |
false |
type |
Тип достижения. Влияет на форму рамки и заголовок уведомления при выполнении. Существует три стандартных – default','challengeи goal. Для создания кастомной рамки необходимо в директории ресурсов для гпи создать папку achievement_bg и поместить в неё текстуры со следующими суффиксами: _completed', _'locked', _'unlocked. Для выполненных, заблокированных (родитель не выполнен),разблокированных достижений соответственно. |
default |
progressMax |
Максимальный прогресс выполнения достижения. Предназначение поля будет описано ниже. |
|
notCompletePopup |
Если истина, уведомление о выполнении достижения показываться не будет. |
false |
item |
Иконка достижения, задаваемая предметом. |
id– 0 |
Пример:
AchievementAPI.register("somethingGroup", { unique: "one", name: { text: "Minecraft", translate: "achievements.story.root.title" }, description: { text: "The heart and story of the game", translate: "achievements.story.root.description" }, column: 1, row: 2, item: { id: 2 } }); AchievementAPI.register("somethingGroup", { unique: "two", name: { text: "Stone Age", translate: "achievements.story.mine_stone.title" }, description: { text: "Mine stone with your new pickaxe", translate: "achievements.story.mine_stone.description" }, parent: { unique: "one" }, column: 2, row: 3, item: { id: 270 } });
Для выдачи достижений используется метод give(groupUnique,unique). Если задано поле progressMax, то при вызове методы специальный счетчик будет увеличиваться на единицу, пока не будет равен значение максимального прогресса, после чего достижение будет выдано. В противном случае это произойдёт сразу.
Предусмотрена возможность сохранения информации о ходе выполнения достижения. Для этого необходимо вызвать метод getData(), который возвращает объект. В него вы можете сохранять какую-либо произвольную информацию. Пример, демонстрирующий эту функциональность:
Callback.addCallback("ItemUse", function (coords, item) { let data = AchievementAPI.getGroup("somethingGroup").getChild("achievement").getData(); if (!data[item.id]) { data[item.id] = true; AchievementAPI.give("somethingGroup", "achievement") } });
Нам необходимо использовать разные предметы progressMax раз, чтобы выполнить достижение.
Существует метод loadFrom(path), который загружает информацию из JSON файла. В нём могут находиться две секции – groups, achievements. Первая – массив для объектов, описывающих группы достижений, другая – объект, который хранит массивы из достижений. Ключом служит идентификатор группы. Пример такого файла:
{
"groups": [
{
"unique": "vanilla",
"name": "Vanilla",
"width": 600,
"height": 250,
"size": 100,
"bgTexture": "end",
"icon": {
"id": 1
}
},
{
"unique": "vanilla2",
"name": "Vanilla2",
"bgTexture": "nether",
"icon": {
"id": 264
}
}
],
"achievements": {
"vanilla": [
{
"unique": "one",
"name": {
"text": "Minecraft",
"translate": "achievements.story.root.title"
},
"description": {
"text": "The heart and story of the game",
"translate": "achievements.story.root.description"
},
"column": 1,
"row": 2,
"item": {
"id": 2
}
}
],
"vanilla2": [
{
"unique": "wwww23",
"name": "test",
"column": 1,
"row": 2,
"type": "challenge",
"parent": {
"unique": "rrr23",
"groupUnique": "vanilla"
},
"item": {
"id": 4
}
}
]
}
}