Плагин [FUN] RandomBox 2.5.1 — коробки удачи в Minecraft! *теперь с кастомными GUI* [1.7 | 1.8]

Hidens

Администратор
Команда форума
[IMG]


Плагин RandomBox позволяет вам использовать так называемые "коробки удачи" — контейнеры, из которых вам могут выпасть несколько случайных вещей, указанных в настройках плагина. Идея полностью взята, как можно догадаться уже по краткому описанию, из игры Warface.

Страничка на dev.bukkit | Страничка на Spigot Resources

На школосерверах с продажей креатива и/или команды /give плагин бессмыслен по 2 причинам:
  • Креатив позволяет копировать вещи 1 кликом;
  • Через /i и /give можно подделать lore (а значит, и код коробки).

Плагин тестировался на билде Spigot от 1 октября (использует BukkitAPI).


Описание работы

Плагин выдаёт коробку удачи (далее "коробку") командой /givebox <игрок> <id коробки>. После этого, игрок может эту коробку открыть командой /openbox, держа её в руках: коробка удалится, и в инвентаре появятся вещи, выпавшие из неё. В чат выведется сообщение: "Вам выпало то-то, то-то и то-то.", или сообщение об ошибке и краткое описание (например, если в инвентаре нет места).

Коробка — это обычный предмет, отличающийся от других только описанием (lore), тем, что на него наложено зачарование Защита 3 (просто для красоты, чтоб светился, можно отключить). В lore закодирован id коробки (с помощью не влияющих на отображение цветовых кодов) и написаны названия всех предметов, выпадающих из коробки и их количество. Пример на скриншоте.

Все коробки настраиваются в plugins/RandomBox/config.yml.

Формат описания коробки
YAML:
# Идентификатор коробки (указывается в команде /givebox <игрок> <id>)
# Должен быть целым положительным числом,
# желательно, в формате 990<номер по порядку> во избежание пересечения под-id с обычными предметами.
9901:
  # Вещь, которой является коробка, желательно, нестакающаяся.
  # Лучше всего подходит вагонетка с сундуком (STORAGE_MINECART).
  # Если эту вещь можно использовать (вагонетку, например, поставить на рельсы),
  # то это нельзя будет сделать, если эта вещь — коробка
  # Формат указания: цифровой id (например, "57" — алмазный блок)
  # или строковый (для предыдущего — "DIAMOND_BLOCK").
  boxItem: STORAGE_MINECART
  # Название коробки
  boxName: 'Коробка удачи'
  # Сколько вещей выпадает из коробки (если меньше общего кол-ва вещей, то коробка не будет открываться)
  itemsToSelectCount: 3
  # Проверять наличие у открывающего разрешения randombox.open.<id коробки>
  checkPermission: true
  # Открывать коробку при клике правой кнопки мыши во время держания её в руках
  openWhenClicked: true
  # Зачаровывать коробку на Защиту III?
  enchant: true
  # Делает коробки нестакающимися (если это стакающиеся предметы или блоки)
  unstackable: true
  items:
  # Вещи, выпадающие из коробки
Как видно, коробкой может быть любой предмет, при это его нельзя будет поставить на землю (если это блок), на рельсы (если это вагонетка) и вообще как либо использовать, кроме как открыть.

id предметов рекомендуется указывать числами (здесь все id), можно строками типа "DIAMOND_BLOCK", но не нужно, потому что они часто не соответствуют нормальным названиям блоков и предметов (например, "DIODE" - это повторитель).

Формат описания вещи
YAML:
# Любое уникальное название, не влияет ни на что
item1:
  # Если добавлена эта секция, то вместе
  # с выдачей предмета будет выполнены
  # команды из этого списка с заданными
  # аргументами
  #
  # В данном примере игрок получит
  # 10 уровней опыта
  # Чтобы выполнить только команды, поставьте
  # id предмета 0 или AIR
  commands:
    # Любое название, не влияет ни на что
    command1:
      # Название команды без / вместе
      # с аргументами.
      line: 'xp give %player% 10L'
      # Выполнять команду от имени
      # консоли (true) или игрока (false)
      fromConsole: true
  # id предмета
  item: DIAMOND_SWORD
  # Data value предмета (то, которое через двоеточие)
  data: 0
  # Количество предметов в стаке
  amount: 1
  # Название предмета (может быть цветным)
  # Обязательный параметр! Иначе не будет имени предмета
  # в описании к коробке.
  name: '&cАлмазный меч'
  # Описание предмета (может быть цветным)
  # Каждая строчка — отдельный пункт
  # - 'текст строки'
  lore:
  - '&7Этот меч выпал'
  - '&7из коробки удачи.'
  # Зачарования любого уровня и типа
  # Формат: <Зачарование>:<уровень>
  enchants:
    sharpness: 8
    unbreaking: 5
    fire: 4
    knockback: 2
  # Сообщение, которое будет показано всем игрокам,
  # Rкогда эта вещь выпадет. Чтобы это отключить, удалите
  # этот параметр или оставьте пустым.
  broadcastMessage: '&6%player% вытянул охрененный меч из коробки!'
  # Шанс выпадения вещи
  chance: 15
Код:
power — Сила лука
flame — Огненные стрелы
infinity — Бесконечные стрелы
punch — Отбрасывание лука
sharpness — Острота
bane, baneofarthropods, bane_of_arthropods — Урон насекомым
smite — Урон нежити
efficiency — Эффективность
unbreaking — Прочность
fire, fireaspect, fire_aspect — Поджигание мечом
knockback — Отбрасывание мечом
fortune — Увеличение дропа руд
looting — Увеличение дропа с мобов
luck, luckofthesea, luck_of_the_sea — Более редкие вещи при рыбалке
lure — Клюёт чаще
respiration — Воздух под водой медленнее кончается
protection — Защита от всего урона
blast, blastprotection, blast_protection — Защита от взрывов
feather, featherfalling, feather_falling — Уменьшение урона от падения
fireprotection, fire_protection — Защита от огня
projectile, projectileprotection, projectile_protection — Защита от стрел
silk, silktouch, silk_touch — Добыча блоков в их настоящем виде (камень, трава вместо булыжника и земли)
thorns — Часть урона вернётся напавшему
aqua, aquaaffinity, aqua_affinity — Блоки под водой добываются быстрее
Шанс — целое число больше нуля. Чем больше доля данного шанса в сумме шансов всех вещей, тем чаще он будет выпадать. Чтобы каждая вещь выпадала с равной вероятностью, поставьте у всех вещей одинаковые шансы.

Команды
  • /givebox <игрок> <id коробки>: выдать коробку игроку.
  • /openbox: открыть коробку, которая находится у вас в руках.
  • /randombox, /rb: информация о плагине: версия, автор и краткое описание.
  • /randombox reload: перезагрузить настройки с диска.
  • /randombox list: отобразить список коробок в конфиге
Permissions
  • randombox.*: Разрешает выполнять все команды.
  • randombox.main: Разрешает выполнять команду /randombox без аргументов.
  • randombox.main.reload: Разрешает перезагружать плагин.
  • randombox.openbox: Разрешает открывать коробки.
  • randombox.givebox: Разрешает выдавать коробки игрокам.
  • randombox.infinitebox: При открытии коробка не исчезает.
  • randombox.open.<id коробки>: разрешает открывать коробку id. Проверяется, только если в настройках коробки checkPermission установлено в true.
  • randombox.open.*: разрешает открывать все коробки. Проверяется, только если в настройках коробки checkPermission установлено в true.
Дополнительно

В конфиге есть булев параметр debug — включает вывод некоторой информации в консоль, типа рассчитанных вероятностей.

Есть раздел strings — в нём хранятся все строки, выводимые в чат на двух языках (русском и чуть ломанном английском, за переключение отвечает параметр locale), а также префикс сообщений и строка "Выпадающие предметы:" из описания коробки.

Скачать

dev.bukkit: скачать

Известные ошибки
  • Что будет, если изменить id коробки в конфиге? Все коробки со старым id, выданные до этого, перестанут открываться.
  • Что будет, если изменить выпадающие вещи? Открыв любую коробку, выданную до этого, игроки немного удивятся — в описании одни вещи, а выпали другие.
Статистика

[IMG]
 
Сверху