- Поддерживаемые версии
- 1.16
- 1.17
- 1.18
- 1.19
- 1.20
- 1.21
- Ядра и Прокси
- Spigot
- Paper
- Минимальная версия Java
- 8
Если посмотреть на все доступные плагины на донатную валюту, то мы поймем, что наилучшей плагин найти сложно (я, лично, не нашел). Возможно, для обычного пользователя первый попавшийся и подойдет, но с части кодовой базы - он будет не лучшим, это связано либо с производительностью либо с багами/дюпами/отками.
И тогда я подумал, а почему бы не использовать для хранения донатной валюты плагин LuckPerms. Да, этот плагин, обычно, используется для создания привилегий и выдачи разных прав игрокам, но в нем уже давно есть функция мета-данных которая идеально подходит для хранения донатной валюты и не только.
Вот плюсы которые я вынес:
Замечу, что этот плагин будет взаимодействовать со всеми функциями в LuckPerms, к примеру, синхронизация между серверами и история выдачи/трат игроков валюты будут работать, что очень полезно.
Намеренно была реализована правильное форматирование логов для истории выдачи/трат через LPMetaPlus, чтобы наглядно было видно, где вы сами командой от LuckPerms изменили мета-данную, а где через LPMetaPlus.
И, также, если вы вдруг не поняли, этот плагин можно использовать не только для того, чтобы создать донатную валюту, а для создания любых валют/данных в любом количестве, которые вы хотите для надежного, постоянного и безопасного хранения.
Кратковременные и частые в использовании данные, условно монеты, для хранения, все же, скорее не стоит для этого использовать.
Конфигурация:
Хотите, чтобы в консоли не было лишних сообщений о выдачи донатной валюты? Тогда просто добавьте в конце команды флаг -silent, к примеру, полная команда будет выглядеть так:
/meta give RUBIES 100 RE4ERKA -silent
Поддерживает выдачу мета-данной оффлайн-игрокам по нику. Все операции полностью выполняются асинхронно и не нагружают основной поток сервера. Поддерживает ядро Folia.
Имеет исходный код, чтобы вы могли убедиться в безопасности, качестве и надежности кода. Плагин не будет обфусцироваться после покупки.
Класс для работы с API: LPMetaPlus/src/main/java/me/re4erka/lpmetaplus/api/LPMetaPlusAPI.java at master · RE4ERKA/LPMetaPlus
Подключение зависимости: JitPack | Publish JVM and Android libraries
Обязательно используем try-catch блоки, они обезопасят наш код от утечки памяти если вдруг во время выполнения кода произойдет ошибка. Все изменения нужно, также, обязательно делать в блоке с передаваемой переменной editor, чтобы избежать избыточных обращений к базе данных.
И тогда я подумал, а почему бы не использовать для хранения донатной валюты плагин LuckPerms. Да, этот плагин, обычно, используется для создания привилегий и выдачи разных прав игрокам, но в нем уже давно есть функция мета-данных которая идеально подходит для хранения донатной валюты и не только.
Вот плюсы которые я вынес:
- Надежность. LuckPerms зарекомендовал себя как самый лучший плагин на права, его используют не только на СНГ серверах, но и на серверах по всему миру - это один из самых надежных, если не самый надежный плагин.
- Интуитивность и удобство. Что нужно в первую очередь хранить и беречь администрации сервера? - Привилегии, ведь игроки буду очень не рады если, вдруг, они потеряют то, за что заплатили свои кровные и донатные валюты не будут сбрасываться после вайпа как и привилегии. Бережем базу данных с привилегиями и заодно с ней донатную валюту.
- Производительность. LuckPerms также имеет, может и, не лучшую производительность, но он точно достаточно стабилен, чтобы им пользовалось столько серверов. В случае донатных валют ситуация будет аналогична, с учетом, что я полностью учел проблемые места в плагине.
- Легковесность. Это всего лишь один небольшой плагин вместо одного среднего у которого будет своя база данных и которая будет потреблять так или иначе ресурсы сервера. Могло быть две, будет одна — меньше нагрузки и меньше заморачиваться.
- Поддержка API. Скорее является плюсом для разработчиков, чем для владельцев серверов. Если обычно другие плагины на донатную валюту, особенно, самописные не имеют своего API, то в нашем случае мы имеем, мою, более удобную реализацию API и, конечно, от LuckPerms как более продвинутую.
Замечу, что этот плагин будет взаимодействовать со всеми функциями в LuckPerms, к примеру, синхронизация между серверами и история выдачи/трат игроков валюты будут работать, что очень полезно.
Намеренно была реализована правильное форматирование логов для истории выдачи/трат через LPMetaPlus, чтобы наглядно было видно, где вы сами командой от LuckPerms изменили мета-данную, а где через LPMetaPlus.
И, также, если вы вдруг не поняли, этот плагин можно использовать не только для того, чтобы создать донатную валюту, а для создания любых валют/данных в любом количестве, которые вы хотите для надежного, постоянного и безопасного хранения.
Кратковременные и частые в использовании данные, условно монеты, для хранения, все же, скорее не стоит для этого использовать.
Конфигурация:
YAML:
types:
FLOWERS:
display_name: '&eЦветочки'
default_value: 0
symbol: ❀
# https://luckperms.net/wiki/Context
default_contexts:
world: spawn
command:
enabled: false
message: ''
alias: []
RUBIES:
display_name: '&cРубины'
default_value: 0
symbol: ◆
command:
enabled: true
permission: lpmetaplus.command.rubies
message: 'Ваш баланс: &c%balance% %symbol%'
alias:
- ruby
- рубины
RUBLES:
display_name: '&aРубли'
default_value: 0
symbol: ₽
command:
enabled: true
message: 'Ваш баланс: &a%balance% %symbol%'
alias:
- ruble
- рубли
Хотите, чтобы в консоли не было лишних сообщений о выдачи донатной валюты? Тогда просто добавьте в конце команды флаг -silent, к примеру, полная команда будет выглядеть так:
/meta give RUBIES 100 RE4ERKA -silent
Поддерживает выдачу мета-данной оффлайн-игрокам по нику. Все операции полностью выполняются асинхронно и не нагружают основной поток сервера. Поддерживает ядро Folia.
Имеет исходный код, чтобы вы могли убедиться в безопасности, качестве и надежности кода. Плагин не будет обфусцироваться после покупки.
API для разработчиков
Пример работы с API:
Java:
public void test() {
// Получаем экземпляр API плагина.
final LPMetaPlusAPI api = LPMetaPlusAPI.getInstance();
final String name = "RE4ERKA";
// Асинхронная работа с сессией с поиском по нику.
// Работает с любыми оффлайн игроками.
api.openSession(name).thenAccept(session -> {
try (Session ignored = session) {
testSession(session);
}
});
// Работа с сессией для онлайн игроков.
try (MetaSession session : api.openSession(player)) {
testSession(session);
}
final Key key = Key.of("RUBIES");
// Более короткие методы.
final int balance = api.getBalance(player, key);
api.set(player, key, 500);
api.give(player, key, 45);
api.take(player, key, 1);
}
private void testSession(@NotNull MetaSession session) {
// Получить количество рубинов.
final Key key = Key.of("RUBIES");
final boolean silent = false;
final int balance = session.get(key);
// Изменить количество рубинов.
session.edit(editor -> {
editor.set(key, 10);
editor.give(key, 99);
editor.take(key, 33);
}, silent);
}
Класс для работы с API: LPMetaPlus/src/main/java/me/re4erka/lpmetaplus/api/LPMetaPlusAPI.java at master · RE4ERKA/LPMetaPlus
Подключение зависимости: JitPack | Publish JVM and Android libraries
Обязательно используем try-catch блоки, они обезопасят наш код от утечки памяти если вдруг во время выполнения кода произойдет ошибка. Все изменения нужно, также, обязательно делать в блоке с передаваемой переменной editor, чтобы избежать избыточных обращений к базе данных.
- Зависимости
- LuckPerms
- Исходный код
- https://github.com/RE4ERKA/LPMetaPlus
- Команды и права
- Команды:
/lpmetaplus set <тип> <количество> <ник> (-silent)
/lpmetaplus give <тип> <количество> <ник> (-silent)
/lpmetaplus take <тип> <количество> <ник> (-silent)
/lpmetaplus get <тип> <ник>
/lpmetaplus migrate <плагин> <тип базы-данных>
/lpmetaplus reload
/lpmetaplus help
Права:
lpmetaplus.command.set
lpmetaplus.command.give
lpmetaplus.command.take
lpmetaplus.command.get
lpmetaplus.command.migrate
lpmetaplus.command.reload
Заполнители:
%meta_<type>%
%meta_<type>_display_name%
%meta_<type>_symbol%
%meta_<type>_with_symbol%