Правой кнопкой — и мир вокруг перестаёт быть предсказуемым. Один взмах решает, кто сегодня взлетит в небо, а кто просто ослепнет.
Командный посох — донат-предмет для Paper 1.19.4 от студии Cloud Delight, внутренний номер в линейке — ТЗ №54 (отсюда и диапазон модели под ресурс-пак: 54xxxx — у Cloud Delight так пронумерована вся серия «Staff»). Внешне это обычная палка со счётчиком зарядов, который виден прямо в описании предмета. Устроен посох как маленькая рулетка: правый клик тратит один заряд и запускает один из десяти заранее собранных наборов команд-эффектов — какой именно, каждый раз решает случай. Игрок не выбирает эффект и не целится заранее — только жмёт и смотрит на результат.
Срабатывает только основная рука — удар посохом во второй руке не считается и не удваивает эффект; реагируют оба вида ПКМ, по воздуху и по блоку, а сама палка при этом перестаёт вести себя как ванильная. Из всех включённых наборов плагин взвешенным случайным выбором берёт ровно один: у каждого набора свой вес, и чем он больше — тем чаще выпадает именно этот набор. Из коробки все десять весят одинаково, по единице, — значит и шанс на каждый ровно 1 к 10, без фаворитов.
Команды набора летят не от игрока, а от консоли — с правами оператора, в обход собственных прав игрока, — но в его контексте: «ближайший», «все игроки», «случайный» и относительные координаты считаются вокруг кастера, как будто он сам ввёл команду от рута. Если координата завязана на направление взгляда, а не просто на высоту, обёртка дополнительно фиксирует разворот кастера — иначе она считалась бы от направления консоли, то есть в никуда.
Заряд списывается, только если набор реально сработал: если мир в чёрном списке или включённых наборов не осталось вовсе, активация не тратится — игрок получает только предупреждение в чат. Настоящий расход всегда сопровождается всплывающей подписью над хотбаром с остатком — она же обновляется просто при переключении на посох в инвентарном ряду, даже без единого удара. Остаток дублируется в описании предмета: строка с плейсхолдером переписывается плагином на лету при каждом изменении счётчика.
Опознаётся посох по внутренней метке, а не по названию или материалу — смена облика в конфиге не сломает уже выданные экземпляры, они донашивают прежний материал, новый достаётся только посохам, выданным после правки. У палки по умолчанию нет прочности, поэтому убывающей шкалы на предмете нет — учёт держится в подписи и описании; материал с прочностью добавляет и полоску на самом предмете.
Когда заряды заканчиваются, один экземпляр рассыпается с сообщением в чат. Если в руке была стопка одинаковых посохов — потеряется только один: у остальных свой собственный счётчик, который эта потеря не трогает.
«Ближайший игрок» технически включает и самого кастера — расстояние до себя всегда ноль, так что без поправок посох в первую очередь наказывал бы того, кто его держит. Плагин лечит это на лету: перед запуском в каждый селектор, отбирающий игроков («ближайший», «все», «случайный», «любая сущность»), автоматически подставляется минимальная дистанция — по умолчанию 2 блока, и сам кастер выпадает из выборки. Если дистанция уже задана вручную — как в большинстве наборов — поправка её не трогает; если не задана, но есть другие условия отбора, минимальная дистанция просто добавляется к ним. Исключение одно — прямое обращение «сам кастер»: если набор осознанно должен бить по хозяину, поправка его демонстративно не касается. Сам радиус — не заклинание, а обычное число в конфиге: можно сузить, расширить или обнулить вовсе.
Ровно десять записей в конфиге, и из коробки у всех одинаковый вес — единица, то есть шанс на любой конкретный набор ровно 1 к 10. У каждого — своя реплика в чат после срабатывания и свой список эффектов; что выпадет — от безобидного дебафа до тротила и Иссушителя.
| # | Реплика в чате | Что происходит |
|---|---|---|
| 1 | «Всё вокруг ослепло» | Слепота на 30 секунд у всего живого в радиусе 100 блоков от кастера — экран гаснет разом у всех вокруг, у игроков и мобов без разбора. |
| 2 | «Ближайший игрок голодает» | Ближайший игрок (2–15 блоков) получает голод такой силы, что сытость обнуляется почти мгновенно и держится так все 60 секунд. |
| 3 | «Всех подбросило» | Левитация на 30 секунд у всего живого в радиусе 100 блоков — толпу разом поднимает в воздух, мобов тоже. |
| 4 | «Ближайшего подкинуло ввысь» | Ближайшего игрока (2–15 блоков) телепортирует строго вверх на 100 блоков от текущей точки — без страховки, а падение с такой высоты в обычных условиях смертельно. |
| 5 | «Взрыв у ближайшего» | Ближайшему (2–15 блоков) дают резист шестого уровня на 5 секунд и тут же кладут под ноги заряженный тротил — разбор риска ниже. |
| 6 | «Ближайшего телепортнуло» | Самый сложный набор из десяти и один из самых рискованных — полный разбор ниже. |
| 7 | «Орда зомби пробудилась» | У каждого игрока в радиусе до 1000 блоков от кастера — практически у всех на сервере разом — материализуется зомби прямо на его точке, без предупреждения. |
| 8 | «Иссушитель призван на 60 секунд» | У случайного (не обязательно ближайшего) игрока в 2–15 блоках появляется Иссушитель; плагин запоминает, кого не было на карте до удара, и снимает именно новых — ровно через 60 секунд. |
| 9 | «Ближайший усилен и ослаблен разом» | Ближайший (2–15 блоков) на 30 секунд получает сопротивление, огнестойкость, поспешность, скорость и регенерацию четвёртого уровня — и тут же слабость того же уровня и той же длительности, ощутимо режущую урон в ближнем бою. |
| 10 | «Ярость и хаос вокруг» | Ближайший (2–15 блоков) получает силу шестого уровня, отравление и слепоту на 15 секунд, а всё живое в более широком радиусе — 20 блоков — на те же 15 секунд ловит медлительность и усталость от добычи. |
Наборы 1, 2, 3, 9 и 10 не убивают напрямую — слепота, голод, левитация, смесь бафов и дебафов не выносят игрока в ноль сами по себе. Неприятно, местами обидно (особенно голод или слабость посреди боя), но без летального исхода как такового.
Наборы 4, 7 и 8 — честно, без прикрас, реальная угроза жизни. Бросок на 100 блоков вверх в наборе 4 не сопровождается никакой страховкой от падения: без тотема, элитры или иной защиты обратный полёт вниз для игрока смертелен. Орда из набора 7 материализуется у каждого игрока на сервере внезапно и в упор — для того, кто не в броне и без оружия под рукой, это настоящий бой без предупреждения. А Иссушитель из набора 8, хоть и живёт всего 60 секунд, за это время успевает и закидывать черепами, и наносить приличный урон вблизи — этого более чем достаточно, чтобы убить неподготовленного. В этот же список честно попадает и бросок из набора 6 — с отдельным нюансом, разбор чуть ниже.
Выглядит страшнее всего: тротил в упор. На деле — почти безопасный трюк. Сопротивление шестого уровня на 5 секунд ставится до тротила, а штатный запал заряженной тротиловой глыбы — около 4 секунд, так что взрыв застаёт жертву ещё под защитой: урона по факту почти нет, зато взрывной волной картинно расшвыривает — сопротивление гасит урон, но не отменяет отдачу. Самый «бутафорский» взрыв из десяти.
Три действия подряд. Сначала ближайшего игрока телепортирует далеко в направлении, куда в этот момент смотрел сам кастер, — точку назначения задаёт взгляд хозяина посоха, а не жертвы, и место приземления — как повезёт: хоть в воду, хоть на камни, хоть в пустоту. Затем вокруг кастера (а не вокруг телепортированного) расчищается воздушный куб 5×5×5 — единственная в десятке зачистка блоков, и именно на ней висит принудительная проверка привата и WorldGuard (подробности в следующем разделе): в защищённой точке зачистка тихо пропускается, телепорт всё равно срабатывает. Третьей командой снова выбирается ближайший к кастеру игрок в 2–15 блоках — и получает плавное падение. Проблема в том, что это, как правило, уже не тот, кого телепортировало: после такого броска жертва оказывается далеко за пределами этого радиуса, страховка достаётся случайному соседу кастера, а сам улетевший падает уже без неё. Несмотря на замысел «телепорт плюс мягкая посадка», по факту это один из самых рискованных наборов десятки, а не самый вежливый.
Веса, реплики и сами команды каждого набора — это конфиг, а не хардкод: не устраивает баланс — правишь текстовый файл, а не пересобираешь плагин.
Команды посоха идут от консоли — то есть в обход обычных прав игрока, и без отдельной проверки это превратило бы спавн или чужой приват в решето. Поэтому у самых разрушительных команд — по умолчанию это заливка блоков, установка блока и призыв существ — есть отдельная сверка на точке, где в момент удара стоит хозяин посоха, а не тот, кого телепортировало или кому призвало зомби за тысячу блоков. Если строить там нельзя по региону WorldGuard или это чей-то приват CloudPrivates — конкретно эта команда набора тихо пропускается, а остальные, безобидные эффекты того же набора всё равно отрабатывают полностью. Отсюда и практический вывод: защита страхует то место, где стоит сам стреляющий, а не базы случайных игроков, до которых достаёт орда или Иссушитель, — за них отвечают уже их собственные защиты, не посох.
Обе интеграции — мягкие зависимости: плагин не тянет за собой ни WorldGuard, ни CloudPrivates, а опознаёт их через отражение классов, если они реально стоят на сервере. Нет плагина — проверка просто не мешает. А если плагин есть, но версия незнакомая и ожидаемые методы не находятся, поведение двух интеграций расходится: CloudPrivates в такой ситуации трактуется консервативно — точка на всякий случай считается приватной, и деструктив блокируется; WorldGuard же, наоборот, просто перестаёт участвовать в проверке и ничего не блокирует. Асимметрия осознанная: лучше один раз перебдеть с чужим приватом, чем недобдеть с регионом, — а о самой несовместимости админ и так увидит предупреждение в консоли при старте.
Список опасных команд, оба переключателя уважения защит и список миров, где посох выключен целиком, — всё в конфиге. У набора 6 есть ещё и своя принудительная сверка: она держит проверку включённой для его зачистки воздуха, даже если оба общих переключателя однажды выключат ради производительности на остальных наборах.
Смысл посоха не в силе, а в непредсказуемости: из десяти исходов условно безопасным можно назвать разве что набор 5, а остальные так или иначе настроены сработать по-крупному. Продавать его стоит как рулетку и повод для историй в чате, а не как усиление — сравнивать с бронёй или прокачкой тут неуместно, зато уместно продавать как аттракцион.
/cstaff give <игрок> [активации] выдаёт посох онлайн-игроку. Без третьего аргумента число зарядов берётся из default-uses конфига; с явным числом используется оно — например, /cstaff give Виталий выдаст посох с зарядами по умолчанию, а /cstaff give Виталий 25 — ровно с 25 активациями. Если в инвентаре нет места, посох упадёт под ноги игроку, а не потеряется молча. /cstaff reload перечитывает конфиг на лету, без перезапуска сервера. Обе команды понимают табуляцию: после give подсказываются ники игроков онлайн, а на месте числа активаций — типовые варианты. Работают и алиасы /commandstaff, и кириллический /посох.
Всего одно право — commandstaff.admin (по умолчанию есть у операторов). Оно нужно только для выдачи посоха и перезагрузки конфига через /cstaff — без него команда откажет с сообщением об отсутствии прав. На само использование посоха право не требуется вовсе: кому выдали в руки, тот и активирует, вне зависимости от прав в целом.
Материал, название, номер модели под ресурс-пак и текст описания с плейсхолдером остатка задаются в конфиге. Опознаётся посох по внутренней метке, а не по материалу или названию, так что смена облика ничего не сломает у уже выданных экземпляров.
fill-check и wither-lifetime-seconds добавляются в любой набор просто по факту наличия. В конфиге уже лежит отключённый пример-заготовка одиннадцатого набора с пояснением по каждому полю.Правки применяются командой /cstaff reload — без перезапуска сервера. Отдельно в конфиге живёт лицензионный блок: онлайн-проверка ключа с грейс-периодом на случай недоступности сервера лицензий; для приватного сервера защита выключается одним флагом.
Десять наборов — это не десять кнопок на выбор. Это десять причин держать руку на посохе и не знать заранее, что будет дальше.