Skip to content

Создание токенов

Здесь вы узнаете, как создавать токены, которые можно обменивать на косметику, а также как настроить фильтрацию выдачи предметов и систему редкости.

Настройка токенов (tokens.yml)

В файле tokens.yml вы настраиваете сам предмет токена и правила его работы.

Ниже приведены три примера:

  1. Простой токен: Выдает конкретный предмет.
  2. Зимний токен (Whitelist): Выдает только предметы с тегом "winter".
  3. Обычный токен (Blacklist): Выдает любые предметы, КРОМЕ сезонных.
yaml
tokens:
  # Пример 1: Токен на конкретную косметику
  simple_token:
    item:
      display: '&6Простой токен'
      amount: 1
      material: LEATHER_HORSE_ARMOR # также можно использовать nexo/item-adder/craft-engine
      lore:
        - ''
        - '&9Обменяйте простой токен!'
        - ''
      unbreakable: true
      glow: false
      hide-attributes: true
      modeldata: 10006
    cosmetic: cosmetic-id # ID косметики, которую игрок гарантированно получит.
    exchangeable: true # Если true, косметику можно вернуть обратно в токен через меню.

  # Пример 2: Зимний токен (Только зимние вещи)
  winter_lootbox:
    item:
      display: '&bЗимний Ваучер'
      amount: 1
      material: SNOWBALL
      lore:
        - '&7Нажмите ПКМ, чтобы получить'
        - '&7случайную зимнюю шапку!'
      unbreakable: true
      glow: true
      hide-attributes: true
      modeldata: 0
    type: HAT # Тип косметики для рандома.
    cosmetic: santa_hat # Иконка этой косметики будет показана в меню обмена как "Результат".
    exchangeable: false
    
    # Система фильтрации
    filter:
      mode: WHITELIST # Белый список: выдавать ТОЛЬКО предметы с этими тегами
      tags:
        - "winter"
        - "christmas"

  # Пример 3: Обычный токен (Исключает сезонные вещи)
  normal_hat_token:
    item:
      display: '&eСлучайная Шапка'
      amount: 1
      material: PAPER
      lore:
        - '&7Выдает любую шапку,'
        - '&7кроме сезонных событий.'
      unbreakable: true
      glow: false
      hide-attributes: true
      modeldata: 101
    type: HAT
    cosmetic: fedora_hat
    exchangeable: false
    
    # Система фильтрации
    filter:
      mode: BLACKLIST # Черный список: НЕ выдавать предметы с этими тегами
      tags:
        - "winter"
        - "halloween"
        - "summer"

Настройка косметики (cosmetics.yml)

Чтобы система фильтрации и редкости работала, вам необходимо добавить соответствующие параметры (tags и rarity) в конфиг самой косметики.

Вот полный пример настройки косметики с новыми параметрами:

yaml
cosmetics:
  # Пример сезонной косметики (Выпадет из winter_lootbox)
  santa_hat:
    type: HAT
    permission: "ecosmetics.hat.santa"
    colored: true
    item:
      display: "&cШапка Санты"
      material: LEATHER_HORSE_ARMOR
      lore:
        - "&7Веселого Рождества!"
        - ""
        - "&eРедкость: Легендарная"
      unbreakable: true
      glow: false
      hide-attributes: true
      modeldata: 10005
      texture: ""
      color: "#FF0000"
    
    # Шанс выпадения (Вес).
    # 10 - это редко, по сравнению с обычными предметами (100).
    rarity: 10
    
    # Теги для фильтрации токенами
    tags: 
      - "winter"
      - "christmas"

  # Пример обычной косметики (Выпадет из normal_hat_token)
  fedora_hat:
    type: HAT
    permission: "ecosmetics.hat.fedora"
    colored: true
    item:
      display: "&7Федора"
      material: LEATHER_HORSE_ARMOR
      lore:
        - "&7Классическая шляпа."
        - ""
        - "&eРедкость: Обычная"
      unbreakable: true
      glow: false
      hide-attributes: true
      modeldata: 10008
      texture: ""
      color: "#333333"
    
    # Высокий вес = выпадает часто
    rarity: 100
    
    # Тегов нет (или можно добавить "common")
    tags: []

Как работает тип (type)?

Доступны следующие типы:

  • HAT (Шляпы)
  • BAG (Рюкзаки)
  • WALKING_STICK (Трости)
  • BALLOON (Воздушные шары)
  • SPRAY (Спреи)
  • ALL (Выбирает из всех категорий сразу)

Если вы указали type в конфиге токена, он превращается в Ваучер (Лутбокс). При использовании он выдаст случайную косметику указанного типа, которой у игрока еще нет.

Система фильтрации (Filter)

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

Доступные режимы (mode):

  1. WHITELIST (Белый список):

    • Токен выдаст косметику, у которой есть хотя бы один тег из списка tags.
    • Пример: Если указать тег winter, токен будет выдавать только косметику, у которой в конфиге тоже есть тег winter.
  2. BLACKLIST (Черный список):

    • Токен выдаст любую косметику, у которой НЕТ ни одного тега из списка tags.
    • Пример: Если указать тег winter, токен будет выдавать все шляпы, КРОМЕ зимних.
  3. NONE (или если секция filter отсутствует):

    • Фильтрация отключена, выпадают абсолютно все предметы выбранного типа (кроме тех, что уже есть у игрока).

Система редкости (Rarity)

При выдаче случайной косметики плагин учитывает параметр rarity, указанный в cosmetics.yml. Это работает по системе весов (Weighted Random):

  • Предмет с rarity: 100 будет выпадать в 10 раз чаще, чем предмет с rarity: 10.
  • Если rarity не указан, по умолчанию он равен 100.

Рекомендация по настройке:

  • Обычные (Common): 100
  • Редкие (Rare): 50
  • Эпические (Epic): 25
  • Легендарные (Legendary): 10

Важные заметки

  • Приоритет: Если в токене указан конкретный cosmetic: id (и не указан type), то параметры фильтрации и редкости игнорируются - токен выдаст этот конкретный предмет.
  • Иконка в меню: Если вы используете случайный токен (type), обязательно укажите в поле cosmetic ID любой существующей косметики (например, самой простой шляпы). Её иконка будет использоваться в меню обмена (в слоте результата), чтобы игрок понимал, что он получит косметику, а не пустоту.
  • Обмен (Refund): Если exchangeable: true, игрок может вернуть уже открытую косметику и получить этот токен обратно в инвентарь. Это делается через меню косметики нажатием Shift + ЛКМ по уже имеющемуся предмету. Работает только при наличии места в инвентаре.