Продажа Механика LootAPI - Система генерации предметов [1.0]

Нет прав для покупки (250,00 ₽)
LootAPI - Система генерации предметов
Краткое описание:
Система генерации предметов с глубокими настройками
1 025
  • Лайк 0
Реакции:5 пользователей
Для версий
  1. 1.20.✘
Java
  1. Java 16
  2. Java 17
  3. Java 18
  4. Java 19
  5. Java 20
  6. Java 21

Описание​

LootAPI - Простой плагин, который может использоваться в других плагинах как зависимость для облегчения генерации предметов в сундуках\шалкерах\бочках.
С помощью этого плагина, можно воссоздать такие режимы как:
  • SkyWars
  • HungerGames
  • и другие.

Функционал​

Его особенность в том, что он генерирует предметы не примитивным образом, а строгим рандомом, и распределяет лут на некие "группы" контейнеров.

Пример:
Вы создаёте SkyWars режим, и хотите, что-бы у каждого игрока в сундуках на острове гарантированно были:
  • Полный сет брони (без лишних элементов, и без недостающих. Т. е - 1 шлем, 1 нагрудник, 1 штаны, 1 ботинки)
  • Меч, для примера каменный ИЛИ (об этом подробнее позже) железный. При чём, шанс железного меча - 50%, но если он не сгенерируется, гарантированно появится каменный.
  • С 30% шансом лук и стрелы в количестве от 10 до 32
  • С 30% шансом пузырьки опыта в количестве от 10 до 20

Код:
Java:
            // Создаём образец лута с ключом-названием "skywars"
            LootContainer loot = LootService.generateNew(new LootKey("skywars"));

            // Добавим с 100 шансом железную броню
            LootTable armour = new LootTable(100){{
                addItem(new LootItem(new ItemStack(Material.IRON_HELMET)));
                addItem(new LootItem(new ItemStack(Material.IRON_CHESTPLATE)));
                addItem(new LootItem(new ItemStack(Material.IRON_LEGGINGS)));
                addItem(new LootItem(new ItemStack(Material.IRON_BOOTS)));
            }};

            // Добавим с 50% шансом железный меч, и с 100% шансом каменный меч.
            LootTable iron_sword = new LootTable(50){{
                addItem(new LootItem(new ItemStack(Material.IRON_SWORD)));
            }};
            LootTable stone_sword = new LootTable(100){{
                addItem(new LootItem(new ItemStack(Material.STONE_SWORD)));
            }};

            // Генерация лука и стрел с шансом 30%, при чём количество стрел будет так-же рандомно от 10 до 32
            LootTable bow_set = new LootTable(30){{
                addItem(new LootItem(new ItemStack(Material.BOW)));
                addItem(new LootItem(new ItemStack(Material.ARROW), 10, 32));
            }};
           
            // Генерация бутыльков опыта с шансом 30%, в количестве от 10 до 20, так-же как и стрелы
            LootTable xp = new LootTable(30){{
                addItem(new LootItem(new ItemStack(Material.EXPERIENCE_BOTTLE), 10, 20));
            }};

            // Зарегистрируем все наши предметы
            loot.addTable(armour, iron_sword, stone_sword, bow_set, xp);

            // Добавляем условие, которое разрешит спавн каменному мечу только в том случае, если железный меч не сгенерировался
            loot.addPredicate(new LootPredicate(LootPredicate.PredicateType.IF_NOT_CONTAINS, iron_sword, stone_sword));

Несколько примеров сгенерированного нашим кодом лута:
1704468264497
1704468276504
1704468281292

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

Дополнительные функции
Каждый, настроенный для генерации лут, можно сохранить в конфиг и наоборот, загрузить, используя:
LootSerializer.saveToConfig(FileConfiguration, LootContainer, String) - для сохранения лута в конфиг, по определенному пути
LootSerializer.fromConfig(FileConfiguration, String, LootKey) - для загрузки лута из конфиг по определенному пути, используя ключ лута при его создании

Полную поддержку по плагину при покупке, предоставляю в: TG, ВК или дс: just_lofe.

Автор

just_lofe
ВерхНиз