Обичай Quest API
Добави към проекта си
За бърз старт, проект за шаблон на модул е достъпен в Github тук.
Ако използвате Maven или друг инструмент за управление на проекти, добавете най-новата версия на Quests чрез услугата CodeMC.
<repository>
<id>codemc-repo</id>
<url>https://repo.codemc.io/repository/maven-public/</url>
</repository>Освен ако не проектирате междуплатформен проект, ще искате да дефинирате основния артефакт.
<dependency>
<groupId>me.pikamug.quests</groupId>
<artifactId>quests-core</artifactId>
<version>VERSION</version>
</dependency>Научете интерфейса
Quests предоставя прост API за създаване на персонализирани изисквания, награди и цели. Като начало се уверете, че компилирате спрямо версия 4.0.0 или по-нова. След като приключите с това ръководство, използвайте папката Quests/modules като дестинация за вашия завършен и компилиран jar. Ако разпространявате вашия модул, не забравяйте да информирате крайния потребител за правилното местоположение на папката.
Requirements API
Изграждането на изискване на задача е много просто. За да започнете, създайте Java клас, който разширява класа като CustomRequirement. След това вижте този пример за персонализирано изискване, при което играчът трябва да има конкретно име, за да вземе задачата:
В конструктора на вашия клас можете да използвате някой от следните методи:
setName
Задава името на персонализираната цел.
setAuthor
Задава автора на персонализираната цел (ти!).
setItem
Задайте елемент, който може да се появи в плъгин за наслагване като QuestsGUI.
setDisplay
Задава как изискването да се показва при неуспех.
addStringPrompt
Добавя нова подкана за радактор с указано заглавие, описание и стойност по подразбиране за вашата персонализирана цел. Редактора на задачи може да въведе низ, който зависи от вас да анализирате
Вътре в #testRequirement е мястото където изпълнявате вашата логика, за да определите дали играчът преминава изискването, връщайки 'true', ако го направи, и 'false' ако не го направи.
Картата с данни съдържа данните, които лицето, създало задачата, й е дало. В този пример картата на данните съдържа двете стойности за „Име“ и „Отчитане на малки и големи букви“. Също така имайте предвид, че въпреки че стойностите са от тип Object, те са преобразувани вътрешно към тип String. Трябва да извършите ръчно преобразуване на типа, ако искате да получите integers, booleans стойности и др.
Rewards API
Изграждането на награда за задачи е много просто. За да започнете, създайте Java клас, който разширява класа CustomReward. След това вижте този пример за персонализирана награда, при която играчът получава GUI инвентар, който се появява, съдържащ желязо, злато и диаманти:
В конструктора на вашия клас можете да използвате някой от следните методи
setName
Задава името на персонализираната цел.
setAuthor
Задава автора на персонализираната цел (ти!).
setItem
Задайте елемент, който може да се появи в плъгин за наслагване като QuestsGUI.
setDisplay
Задава как изискването да се показва при неуспех.
addStringPrompt
Добавя нова подкана за радактор с указано заглавие, описание и стойност по подразбиране за вашата персонализирана цел. Редактора на задачи може да въведе низ, който зависи от вас да анализирате
Вътре в #giveReward е мястото където изпълнявате вашата логика, за да определите дали играчът преминава изискването, връщайки 'true', ако го направи, и 'false' ако не го направи.
Objectives API
Изграждането на цел за задача е малко по-сложно от изискванията или наградите. За да започнете, създайте Java клас, който разширява класа CustomObjective. Ако искате да хванете някой Event от Bukkit, ще трябва да внедрите класа Listener (Quests ще се погрижи за регистрацията на събитието вместо вас). След това вижте тези примери за персонализираната цел:
В конструктора на вашия клас можете да използвате някой от следните методи:
setName
Задава името на персонализираната цел.
setAuthor
Задава автора на персонализираната цел (ти!).
setItem
Задайте елемент, който може да се появи в плъгин за наслагване като QuestsGUI.
setShowCount
Определя дали редакторът на задачи може да задавя броя (брой пъти, когато играчът трябва да повтори целта). По подразбиране е "true". Това ще се прилага за всички подкани, дабавени с #addStringPrompt, освен ако не е забранено.
setCountPrompt
Задава подканящото описание за потребителя да въведе броя за целта. По подразбиране е "Въведете номер".
setDisplay
Задава начина, по който целта се показва в "/quests list" и дневника на задачите. За контейнерите използвайте %count%, за да получите стойността на #setShowCount, и #addStringPrompt заглавия за въвеждане от потребителя (като "Item Name" във втория пример). По подразбиране е "Progress: %count%".
addStringPrompt
Добавя нова подкана за радактор с указано заглавие, описание и стойност по подразбиране за вашата персонализирана цел. Редактора на задачи може да въведе низ, който зависи от вас да анализирате
Във вашият EventHandlers (ако е приложимо), определете дали играчът е изпълнил част или цялата цел и след това използвайте #incrementObjective, за да напреднете играча. Първият и вторият аргумент на #incrementObjective винаги трябва да бъдат съответно играчът и 'this'. Третият аргумент е с колко да се увеличи целта, докато последният е търсенете, към което да се приложи увеличението. Дори ако вашата цел няма брой, пак трябва да използвате #incrementObjective - използвайте увеличение от 1, за да сигнализирате, че целта е изпълнена.
Map<String, Object> съдържа данните, предоставени от редактора на задачи. В този пример ключовете за данни са имената на елементите, докато стойностите са въведените от потребителя за вашата подкана (която може да бъде null). Също така имайте предвид, че въпреки, че стойностите са от тип Object, те са преобразувани вътрешно към тип String. Трябва да извършите ръчно преобразуване на типа, ако искате да получите цели integers, booleans стойности и др.
Last updated
Was this helpful?