LPMetaPlus - Донатные валюты через LuckPerms

Платно Для ядра LPMetaPlus - Донатные валюты через LuckPerms 1.1

Нет прав для приобретения ("199.00" ₽)
Поддерживаемые версии
  1. 1.16
  2. 1.17
  3. 1.18
  4. 1.19
  5. 1.20
  6. 1.21
Ядра и Прокси
  1. Spigot
  2. Paper
Минимальная версия Java
8
Если посмотреть на все доступные плагины на донатную валюту, то мы поймем, что наилучшей плагин найти сложно (я, лично, не нашел). Возможно, для обычного пользователя первый попавшийся и подойдет, но с части кодовой базы - он будет не лучшим, это связано либо с производительностью либо с багами/дюпами/отками.

1737473170155.png


И тогда я подумал, а почему бы не использовать для хранения донатной валюты плагин LuckPerms. Да, этот плагин, обычно, используется для создания привилегий и выдачи разных прав игрокам, но в нем уже давно есть функция мета-данных которая идеально подходит для хранения донатной валюты и не только.

Вот плюсы которые я вынес:
  1. Надежность. LuckPerms зарекомендовал себя как самый лучший плагин на права, его используют не только на СНГ серверах, но и на серверах по всему миру - это один из самых надежных, если не самый надежный плагин.

  2. Интуитивность и удобство. Что нужно в первую очередь хранить и беречь администрации сервера? - Привилегии, ведь игроки буду очень не рады если, вдруг, они потеряют то, за что заплатили свои кровные и донатные валюты не будут сбрасываться после вайпа как и привилегии. Бережем базу данных с привилегиями и заодно с ней донатную валюту.

  3. Производительность. LuckPerms также имеет, может и, не лучшую производительность, но он точно достаточно стабилен, чтобы им пользовалось столько серверов. В случае донатных валют ситуация будет аналогична, с учетом, что я полностью учел проблемые места в плагине.

  4. Легковесность. Это всего лишь один небольшой плагин вместо одного среднего у которого будет своя база данных и которая будет потреблять так или иначе ресурсы сервера. Могло быть две, будет одна — меньше нагрузки и меньше заморачиваться.

  5. Поддержка API. Скорее является плюсом для разработчиков, чем для владельцев серверов. Если обычно другие плагины на донатную валюту, особенно, самописные не имеют своего API, то в нашем случае мы имеем, мою, более удобную реализацию API и, конечно, от LuckPerms как более продвинутую.
Я уже протестировал эту систему у себя на сервере и она хорошо себя зарекомендовала по этому, я решил начать продавать этот плагин тем, кто хочет себе упростить хранение донатной валюты через LuckPerms.

Замечу, что этот плагин будет взаимодействовать со всеми функциями в LuckPerms, к примеру, синхронизация между серверами и история выдачи/трат игроков валюты будут работать, что очень полезно.

Намеренно была реализована правильное форматирование логов для истории выдачи/трат через LPMetaPlus, чтобы наглядно было видно, где вы сами командой от LuckPerms изменили мета-данную, а где через LPMetaPlus.

history.jpg


И, также, если вы вдруг не поняли, этот плагин можно использовать не только для того, чтобы создать донатную валюту, а для создания любых валют/данных в любом количестве, которые вы хотите для надежного, постоянного и безопасного хранения.

Кратковременные и частые в использовании данные, условно монеты, для хранения, все же, скорее не стоит для этого использовать.

Конфигурация:
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

silent.gif


Поддерживает выдачу мета-данной оффлайн-игрокам по нику. Все операции полностью выполняются асинхронно и не нагружают основной поток сервера. Поддерживает ядро 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%
  • Мне нравится (+1)
Реакции: domeditz, Shon и BuseSo
Автор
RE4ERKA
Просмотры
469
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Другие ресурсы пользователя RE4ERKA

Поделиться ресурсом

Последние обновления

  1. Добавлена миграция из плагина PlayerPoints!

    Добавлена команда для миграции из плагина PlayerPoints. Поддержирживает миграцию из базы-данных...
Назад
Сверху Снизу