- Баллы
- 173
- Имя в Minecraft
- OsipXD
Некоторое время назад я описывал проблему, которая сподвигла меня написать этот API. И теперь представляю готовую реализацию (правда, пока с небольшим функционалом).
MimicAPI - это API для абстракции таких RPG концепций, как уровень, класс, мана игрока и т.д. Mimic - это реализация MimicAPI для Bukkit.
Что это даст?
Если коротко, то это а-ля Vault для RPG статов.
Если подробнее, то отсутствие привязки плагинов к определенной реализации той или иной RPG концепции позволит добиться более простой совместимости RPG плагинов друг с другом и поможет избавиться от конфликтов их между собой.
Какие API существуют?
На данный момент (v0.4) существует 3 API и несколько реализаций для них:
- LevelSystem - API для работы с уровнем и опытом игрока. Позволяет добавить поддержку уровня и опыта из другого плагина.
- ClassSystem - API для проверки классов игрока. Даже если в вашем плагине нет классов вы можете проверить их у иггрока.
- ItemsRegistry - API для создания и сравнения предметов. Полезно для получения предметов из других плагинов.
Как использовать?
Если вы используете систему сборки (Gradle, Maven и т. д.) инструкцию можно найти на GitHub.
Java:
ServicesManager sm = getServer().getServicesManager();
// Получаем провайдер для системы уровней, которуюу после мы сможем
// хранить для получения систем определенных игроков
BukkitLevelSystem.Provider levelSystemFactory = sm.load(BukkitLevelSystem.Provider.class);
// Теперь получим систему уровней определённого игрока
LevelSystem levelSystem = levelSystemFactory.get(player);
// Работаем с полученной системой
int level = levelSystem.getLevel();
int exp = levelSystem.getExp();
int totalExp = levelSystem.getTotalExp();
// полный список методов смотрите в JavaDoc
Важно!
Для хранения объекта игрока внутри системы используется слабая ссылка, что позволяет нам не беспокоиться о том, что наличие инициализированной системы помешает выгрузке игрока из памяти, если он выйдет с сервера. Но из-за этого возникает риск получить IllegalStateException, если мы попытаемся воспользоваться системой после того, как игрок вышел с сервера, поэтому старайтесь, чтобы время жизни инициализированной системой было небольшим, тогда появление исключений будет сведено к нулю.
Для хранения объекта игрока внутри системы используется слабая ссылка, что позволяет нам не беспокоиться о том, что наличие инициализированной системы помешает выгрузке игрока из памяти, если он выйдет с сервера. Но из-за этого возникает риск получить IllegalStateException, если мы попытаемся воспользоваться системой после того, как игрок вышел с сервера, поэтому старайтесь, чтобы время жизни инициализированной системой было небольшим, тогда появление исключений будет сведено к нулю.
Более подробная документация есть на GitHub.
Вы всегда можете задать вопрос мне в Discord:
Лог изменений
v0.4
- Всё сначала
Последнее редактирование:
