Один предмет в левой руке — и вместо разового баффа у игрока постоянно работающий билд: сила, скорость и воскрешение разом на одном артефакте. CloudSpheres — не зачарование поверх ванильных лимитов, а отдельная система прокачки: дроп с мобов и боссов, крафт на верстаке, NPC-кузница заклинаний. Внутри — 8 эффектов со своей шкалой размеров, 11 уникальных камней-статусов и 5 ступеней качества сферы, которые всё это ограничивают. Плагин самописный, под Paper 1.19.4, с защитой от дюпа, гибким конфигом и мягкой интеграцией с MythicMobs.
В центре системы — сфера: предмет на базе heart_of_the_sea, на котором копится несколько эффектов и статусов разом. Не расходник и не разовое зелье — сфера работает постоянно, пока лежит в офф-хенде, а её сила растёт по мере того, как игрок находит камни, повышает качество и заказывает у Заклинателя новые заклинания. Билд игрок собирает сам, камень за камнем.
У предмета два состояния. Пустой корпус — обычный стакающийся предмет. Как только на сферу наложен первый эффект или статус, она получает уникальный серийник и перестаёт быть «просто вещью» — фоновый антидюп раз в 30 секунд сканирует инвентари онлайн-игроков и удаляет дубли по серийнику, а лишний экземпляр в стаке готовой сферы срезает до одной штуки.
Главное правило: сфера действует, только пока лежит в левой руке. Сняли — эффекты и статусы отключились, а сфера осталась обычным предметом: в сундук, на аукцион, другому игроку. Гаснут эффекты не рывком: пересчёт раз в секунду с запасом длительности около 2,5 секунд, так что бафф ещё немного «дотлевает» после снятия. Идут они «тихими» — без густого облака частиц, только иконка — и не забивают чужой более сильный эффект того же типа.
Рецепт ванильный, работает на любом верстаке; флагом в конфиге его можно отключить целиком, если корпус должен доставаться только дропом или наградой.
Размер камня — это и есть уровень эффекта, и не у всех восьми типов есть все пять размеров. Восемь одинаковых камней у Заклинателя объединяются в один камень размером больше — до потолка типа. Цвет камня всегда совпадает с эффектом.
| Эффект | Что даёт | Размеры |
|---|---|---|
| Сила | Усиление (Strength) | 1–5 |
| Скорость | Скорость передвижения | 1–5 |
| Спешка | Спешка (Haste) | 1–5 |
| Живучесть | Прилив здоровья (Health Boost) | 1–5 |
| Защита | Сопротивление урону | 1–3 |
| Огонь | 1 ур. — огнестойкость; 2 ур. — плюс атаки поджигают цель | 1–2 |
| Ихтиандр | 1 ур. — водное дыхание; 2 ур. — плюс грация дельфина | 1–2 |
| Насыщение | Насыщение (Saturation) | 1 |
Классическое Усиление: урон в ближнем бою растёт от I до V. Размер камня — прямой амплификатор зелья, без скрытых множителей.
Скорость передвижения, пять размеров от I до V — самый прямолинейный эффект из восьми, без побочных механик.
Спешка добычи, пять уровней. Хорошо ложится в связку с Силой на одну сферу для фарма, если качество позволяет держать оба разом.
Прилив здоровья — сердца сверх обычных десяти, пять размеров. Не лечит текущее здоровье, а поднимает потолок максимума, пока сфера в руке.
Сопротивление урону на уровень камня, но шкала короче остальных — только три размера.
Размер здесь не сила эффекта, а переключатель механики: амплификатор всегда нулевой. 1 уровень — огнестойкость. 2 уровень добавляет боевую надстройку: удар владельца поджигает цель на 100 тиков по умолчанию (5 секунд, значение меняется в конфиге). Максимум — 2 размера.
Тоже без амплификатора. 1 уровень — водное дыхание, 2 уровень добавляет «грацию дельфина» — ускоренное плавание. Максимум 2 размера.
Насыщение — шкала из одного размера. Камень либо есть на сфере, либо нет: объединять 8 в 1 здесь просто некуда.
Уникальный камень собирается из 8 одинаковых осколков и накладывается на сферу целиком, без размеров и уровней — хватает одного, чтобы статус заработал.
| Камень | Свойство |
|---|---|
| Мягкости | Полностью убирает урон от падения |
| Радиуса | Эффекты сферы передаются союзникам в радиусе 3 блоков |
| Ярости | Здоровье владельца ниже 50% — все эффекты сферы усиливаются на 1 уровень |
| Воскрешения | Одноразовый: при смертельном уроне восстанавливает 30% здоровья, как тотем, и рассыпается |
| Энда | Эндер-жемчуг не тратится при броске |
| Харизмы | Враждебные мобы не атакуют владельца — статус спадает, как только владелец сам ударит моба |
| Вампиризма | Убийство другого игрока восстанавливает 100% здоровья |
| Повелителя Тьмы | Здоровье ниже 25% — призывает бессмертного союзного иссушителя (не портит блоки), который исчезает при здоровье выше 30%; сам владелец невосприимчив к иссушению |
| Иммунитета | Снимает слепоту, тошноту, замедление, отравление, иссушение, усталость и голод |
| Казни | У противника осталось не больше 10% здоровья — мгновенная смерть, правило действует и между игроками |
| Стаи | Призывает союзную стаю волков (по умолчанию трёх), пока сфера в левой руке — волки защищают владельца и атакуют врагов |
Полностью и безусловно отменяет урон от падения — событие урона гасится на лету. Ни порога высоты, ни шанса.
Раз в такт пересчёта (по умолчанию раз в секунду) сфера раздаёт свои эффекты — не особые камни, именно восемь обычных — всем союзникам-игрокам в радиусе 3 блоков по умолчанию; отдельный флаг умеет ограничить раздачу игроками той же scoreboard-команды.
Здоровье владельца ниже порога (по умолчанию 0,5, то есть 50%) — все текущие эффекты сферы получают бонус к уровню, по умолчанию +1. Полностью динамично: здоровье поднялось выше половины — бонус снят сам на следующем пересчёте.
Одноразовый тотем в кармане. Смертельный удар (кроме падения в Пустоту — иначе получится петля смертей) отменяется, здоровье восстанавливается до 30% от максимума по умолчанию (не меньше 1 хп), снимаются огонь и негативные Иссушение/Отравление, играют частицы и звук тотема — а камень тут же рассыпается и пропадает со сферы. Одна зарядка, дальше нужен новый.
Бросок эндер-жемчуга не тратит его — жемчуг остаётся в инвентаре, пока сфера в левой руке. Сопровождается частицами портала и звуком эндер-сундука.
Враждебные мобы не могут выбрать владельца целью — пока он не ударит первым: удар помечает именно этого моба «обозлённым» (метка на самом мобе, не глобально), и харизма на него больше не действует, а на остальных вокруг продолжает. Один флаг конфига решает, ломается ли харизма от удара вообще (по умолчанию да), другой — делает ли метка «босс» моба неуязвимым к харизме (по умолчанию нет, харизма действует и на боссов).
Срабатывает только на честном фраге игрока: убил другого игрока — здоровье восстанавливается до 100% от максимума по умолчанию. На мобов не реагирует.
Здоровье владельца ниже 25% по умолчанию — рядом появляется бессмертный союзный Иссушитель без гравитации и боссбар-полоски, висит в 3 блоках над головой и каждые 2 тика перенаводится на ближайшую вражескую сущность в 25 блоках, игнорируя других иссушителей и самого Заклинателя. Пропадает — с дымом и звуком смерти — когда здоровье поднимется выше 30% по умолчанию, либо камень снят, либо владелец вышел или умер; разрыв 25/30% нужен против мигания призыв-исчезновение на границе. Владелец полностью защищён от «своего» иссушителя, взрывы черепов не портят блоки.
Каждый пересчёт снимает с владельца эффекты из настраиваемого списка — по умолчанию слепота, тошнота, замедление, отравление, иссушение, усталость и голод, семь типов. Это зачистка раз в такт, а не истинная неуязвимость: дебафф теоретически может мигнуть на долю секунды.
После удара, если у цели осталось не больше 10% здоровья по умолчанию, на следующий такт идёт контрольная проверка — вдруг подлечилась — и если порог всё ещё не превышен, здоровье обнуляется мгновенно. Отдельный флаг решает, действует ли казнь на игроков — по умолчанию да, то есть и в PvP.
Пока сфера в руке, рядом держится стая ручных волков числом 3 по умолчанию — заспавненные, привязанные к владельцу, обычные прирученные мобы. Сфера снята, игрок вышел или умер — вся стая убирается в тот же такт подчистки.
У сферы есть качество — пять ступеней, задающих лимит слотов под эффекты и уникальные камни. Лимиты жёстко зашиты в таблицу качества, а не читаются из отдельной настройки: в конфиге есть блок с полями «максимум эффектов» и «максимум особых», но код его нигде не читает — мёртвые строки от более ранней версии баланса. Реальные лимиты — только те, что в таблице ниже, и меняются исключительно вместе со ступенью.
| Качество | Эффектов | Особых |
|---|---|---|
| Обычная | 1 | 0 |
| Необычная | 2 | 1 |
| Редкая | 2 | 2 |
| Эпическая | 3 | 2 |
| Легендарная | 3 | 3 |
Поднимается качество у Заклинателя: сфера в центр, «Ядро качества» в кольцо — лимит слотов растёт на ступень, а наложенные эффекты и статусы остаются на месте. Ядро (звезда фейерверка) падает с мобов отдельной, ещё более скупой строкой шанса либо выдаётся командой напрямую. Цвет имени сферы меняется вместе с качеством — от серого «Обычная» до золотого «Легендарная». Админ может сразу заспавнить корпус нужного качества командой выдачи, минуя всю цепочку апгрейдов.
Заклинатель — NPC на базе иллагера-заклинателя (Evoker): без ИИ, неуязвимый, без коллизии (можно пройти сквозь него), со свечением и кружащей магической аурой из частиц. Стоит там, где поставит админ, персистентен и не пропадает по дальности — но сделан на базе ванильного враждебного моба, поэтому на сложности Peaceful пропадает вместе со всеми монстрами; нужна сложность Easy и выше. Мобы не выбирают его целью, урон по нему всегда отменяется. Позиция ставится и убирается одной командой на месте игрока, хранится в конфиге и переживает перезапуск сервера.
Правый клик открывает GUI-схему: сундук на 54 ячейки, где под камни отведено девять слотов — центр и кольцо из восьми вокруг него, всё остальное решётка из стеклянных панелей плюс табличка с правилами, кнопка «ЗАКЛИНАТЬ» и слот живого превью. Превью обновляется на лету при каждом изменении сетки и показывает призрачную копию будущего результата или барьер с причиной отказа («уже есть эффект», «лимит эффектов», «уже максимальный размер») — ещё до нажатия кнопки. Раскладывать и забирать камни можно только по одному: шифт-клик, двойной клик и перенос числовыми клавишами заблокированы нарочно, а закрытие окна возвращает игроку всё, что осталось в центре и кольце.
Кнопка «Заклинать» сама распознаёт операцию по содержимому центра и кольца:
| Центр | Кольцо (8 слотов) | Результат |
|---|---|---|
| Сфера | 8 одинаковых камней эффекта (тот же тип и размер) | Наложить эффект нужного размера |
| Сфера | Ровно 1 уникальный камень | Наложить статус |
| Сфера | Ровно 1 «Ядро качества» | Поднять качество на ступень |
| Пусто | 8 одинаковых камней эффекта или 8 одинаковых осколков | Объединить в камень размером выше / собрать уникальный камень |
Каждый расклад проверяется на месте: нельзя наложить эффект, который на сфере уже есть, — только другой тип. Нельзя превысить лимит слотов текущего качества — Заклинатель называет цифру лимита прямо в сообщении об отказе. Нельзя объединить камень, уже уткнувшийся в потолок размера своего типа. Наложение эффекта или статуса подтверждается фиолетовым сообщением, звуком зачарования и частицами зачарования с тотемом; объединение и подъём качества звучат иначе — удар наковальни и левел-ап с магическими частицами; неудача — тусклый стук и красное сообщение с причиной.
Осколки — разменная монета уникальных камней: 8 одинаковых, собранные в кольцо схемы с пустым центром, превращаются в один полноценный уникальный камень. Материал у всех осколков один (аметистовый осколок), различаются только именем и текстурой под конкретный тип. Падают отдельной, более редкой строкой шанса — своим дропом, отдельно от камней эффектов.
Камни эффектов объединяются той же схемой «пусто в центре + 8 одинаковых»: восемь камней размера N дают один камень размера N+1, до потолка типа. Для эффектов со шкалой до пяти (Сила, Скорость, Спешка, Живучесть) камень пятого размера, докрафченный честно с нуля, требует 8 камней четвёртого размера, под них — 64 третьего, под те — 512 второго, а в основании — 4096 крошечных камней первого размера. На практике это находки с мобов вперемешку со слияниями, а не чистый фарм одного размера.
Три независимых броска на каждую подходящую смерть: камень эффекта, осколок и ядро качества. Каждый бросок случаен и не мешает остальным — теоретически один и тот же босс может уронить все три категории разом, просто шанс такого джекпота исчезающе мал.
| Дроп | С обычного моба | С помеченного босса (×25) |
|---|---|---|
| Камень эффекта (размер 1, случайный тип) | 1% | 25% |
| Осколок (случайный тип) | 0,4% | 10% |
| Ядро качества | 0,2% | 5% |
Обычный дроп срабатывает только с враждебных мобов — мирные существа камней не роняют, даже случайно погибнув от игрока. Тег босса это ограничение снимает: помеченная сущность роняет камни, даже если формально не относится к враждебным, — боссом можно объявить хоть кастового мифик-моба, хоть уникальную сущность стороннего ивента. Дроп можно ограничить конкретными мирами — по умолчанию действует на всех картах.
CloudSpheres мягко зависит от MythicMobs — без него плагин работает как есть, без единой ошибки. Хук собран через рефлексию, а не прямую зависимость сборки: при старте плагин проверяет, установлен ли MythicMobs, и если да — находит его менеджер мобов через отражение классов. Если MythicMobs стоит, все его мобы автоматически считаются боссами и дают повышенный шанс дропа без единой строчки настройки. Боссом можно пометить и любую другую сущность вручную — по персональному ключу в её памяти, и по умолчанию плагин уже понимает метку BossArena.
Отдельно система сфер работает как готовый слой наград для любого стороннего ивента: команда случайной выдачи возвращает то камень, то осколок, то ядро качества, то уникальный камень, то сам корпус — вызывается из любого плагина аирдропов, кейсов или квестов как обычная команда-награда. Веса результата зашиты в самой команде и не зависят от дропа с мобов:
| Результат | Шанс |
|---|---|
| Камень эффекта (случайный тип, размер смещён к малым) | 55% |
| Осколок уникального камня | 20% |
| Ядро качества | 13% |
| Готовый уникальный камень | 9% |
| Корпус сферы | 3% |
Размер камня в первой строке — не равномерное случайное число: розыгрыш стартует с размера 1 и с шансом 30% на каждом шаге поднимается ещё на ступень, так что подавляющее большинство наград — младшие размеры.
Лимиты качества прямо диктуют, сколько всего можно унести на одной сфере: Обычная — по сути демо-версия на один эффект, а полноценный «комбайн» из трёх эффектов и трёх статусов доступен только на Легендарной.
Билд на четыре эффекта разом не соберёшь: больше трёх основных не даёт ни одно качество — либо урезать список, либо тащить сферу до Легендарной.
| Команда | Что делает |
|---|---|
/sphere give <игрок> core [качество] | Выдать корпус сферы; без параметра — Обычная |
/sphere give <игрок> stone <эффект> <размер> | Выдать камень эффекта нужного типа и размера |
/sphere give <игрок> unique <тип> | Выдать готовый уникальный камень |
/sphere give <игрок> shard <тип> [кол-во] | Выдать осколки уникального камня, до 64 за раз |
/sphere give <игрок> quality [кол-во] | Выдать «Ядро качества», до 64 за раз |
/sphere give <игрок> random [качество] | Случайная награда по весам — для аирдропов, боссов, ивентов |
/sphere npc set | Поставить Заклинателя на текущей позиции |
/sphere npc remove | Убрать Заклинателя |
/sphere list | Список эффектов, уникальных камней и размеров в чат |
/sphere book | Выдать книгу-каталог «Каталог Сфер» — справочник по всей системе |
/sphere reload | Перечитать конфиг без перезапуска сервера |
Пример: /sphere give Steve stone strength 3 — средний камень Силы; /sphere give Steve core legendary — пустой корпус легендарного качества, без единого ядра. Алиасы команды: /spheres, /sfera, /сфера, /сферы.
| Право | По умолчанию | Что открывает |
|---|---|---|
sphere.admin | op | Админ-команды: give, npc, reload |
sphere.use | true (у всех) | Взаимодействие с Заклинателем (правый клик по NPC) |
Проверка прав в коде уже, чем кажется по описанию: sphere.use реально проверяется только на клике по Заклинателю. Команды /sphere list и /sphere book не проверяют вообще никакое право и доступны любому игроку без исключений.
Почти вся механика вынесена в конфиг и применяется командой /sphere reload без перезапуска сервера. Числа порогов и шансов, разобранные выше по каждому камню, — это дефолты того же файла, каждое можно подправить точечно.
| Категория предмета | Материал | CustomModelData |
|---|---|---|
| Сфера / корпус сферы | heart_of_the_sea | базовый номер |
| Камень эффекта, любой тип и размер | свой на тип (редстоун, сахар, светопыль и другие) | база + 100 × (номер эффекта + 1) + размер |
| Уникальный камень | свой на тип (мембрана фантома, эхо-осколок и другие) | база + 900 + номер типа |
| Осколок | amethyst_shard | база + 950 + номер типа |
| Ядро качества | firework_star | база + 970 |
CloudSpheres — это не одно зачарование, а целая экономика вокруг одного предмета: дроп, крафт, кузница-Заклинатель и своя система редкости, которая честно считает лимиты, узнаёт боссов по любой метке и не даёт задюпать результат.
Сундук со сферами — бесплатное дополнение к CloudSpheres. Отдельно не продаётся: покупая CloudSpheres, вы получаете и его.
Координаты падают в чат — и сервер срывается с места. Кто-то бросает шахту, кто-то стройку, все бегут в одну точку на карте, потому что там из ниоткуда вырастает сундук с фиолетовым свечением, лучом в небо и рёвом дракона на весь мир. Открыть его может не любой желающий — только тот, у кого в руке Сферический ключ. И даже с ключом успех не гарантирован никому.
CloudSphereChest — не лутбокс на кнопке, а полноценный ивент с анонсом, обратным отсчётом, охраной зоны и развязкой на весь сервер. Один сундук, один ключ на попытку — и то, повезёт или нет, решает не игрок.
Плагин ставит на карту сундук в теме Лавкрафта и Ктулху: фиолетово-чёрная подсветка, кольцо частиц «дыхания дракона», луч в небо над обычным блоком CHEST. Магии в блоке нет — это ванильный сундук без подмены модели, эффект держит связка менеджера ивента, приват-зоны и лут-таблицы вокруг него. Сменить облик можно только ресурспаком; поле custom-model-data в конфиге под это зарезервировано, но в коде не используется — конфиг сам предупреждает об этом комментарием.
Сундук появляется сам по таймеру или мгновенно по команде и ждёт, пока его не откроют единственно верным способом — Сферическим ключом. Плагин собран под Paper 1.19.4; автором в plugin.yml значится Виталий.
Ключ должен лежать именно в основной руке: код всегда проверяет getItemInMainHand() и не смотрит в оффхенд — если ключ лежит там, клик по сундуку его не засчитает. Сам ключ — не название и не текстура, а метка внутри предмета: PersistentDataContainer с ключом spherechest:sphere_key. Переименовать в наковальне случайный tripwire hook и выдать его за ключ не выйдет — детектор проверяет именно PDC-метку, а не имя или lore.
Правый клик по ивент-сундуку никогда не открывает ванильный интерфейс — плагин отменяет это всегда, даже без ключа: игрок получает только сообщение «нужен Сферический ключ», заглянуть внутрь до вскрытия нельзя. С ключом происходит бросок: ключ тратится всегда, вне зависимости от исхода — из стопки снимается одна штука, а если он был последним, рука пустеет. И только после списания решается, повезло или нет: шанс задаёт event.unlock-chance (по умолчанию 0.25, то есть 25%).
Всё отсчитывается от паузы между ивентами — event.interval-minutes, по умолчанию 120 минут, считая не от анонса, а от момента, когда предыдущий ивент реально завершился (вскрытием или истечением). Точка следующего спавна выбирается сразу, в начале паузы, — сервер 105 минут молчит, прежде чем о ней объявить.
announce.lead-minutes) до появления — первый бродкаст на весь сервер с координатами и временем ожидания.announce.update-minutes (по умолчанию 5 минут): на отметках «10 минут» и «5 минут» до появления.spawn.center-x/z), а не в круге: смещение по X и Z независимо в пределах ±spawn.radius (по умолчанию 200) — то есть зона 400×400 блоков, а не круг радиусом 200 (в коде это прямо помечено как упрощение). Высота — верхний непустой блок колонны плюс один, так что на воде сундук встанет прямо на глади.event.duration-minutes, по умолчанию 60 минут. Ключ можно пробовать сколько угодно раз, сколько угодно разным игрокам: лимита на попытки или кулдауна между ними нет.event.unlock-chance (по умолчанию 25%).cleanup.after-open-seconds (по умолчанию 300 секунд, 5 минут) — время досмотреть добычу.Голограмма над сундуком (нужен DecentHolograms) показывает статус: в ожидании — обратный отсчёт через %time%, пока сундук активен — подсказку использовать ключ. Нюанс: висит она не над будущей точкой спавна, а над центром зоны (spawn.center-x/z) — это постоянный ориентир, а не подсказка, куда бежать.
Успешное вскрытие заполняет сундук: инвентарь сначала очищается, затем по loot-slots (по умолчанию 12, диапазон 1–27) идёт столько же взвешенных бросков по всей таблице. Одна и та же запись может выпасть несколько раз подряд, другая — ни разу. Предметы ложатся не подряд слева направо, а в заранее перемешанный список из 27 ячеек — по паре первых слотов не угадать, что попалось.
Записи трёх типов. material — обычный предмет с диапазоном количества (min–max). command — консольная команда с подстановкой %player%, которая не занимает слот вообще: эффект приходит игроку напрямую, в обход инвентаря. key — ещё один Сферический ключ, кладётся как обычный предмет. Отсюда момент: если среди 12 бросков несколько раз выпадет command-запись, физических предметов в сундуке окажется меньше двенадцати — команда «съедает» бросок, но не слот.
| Запись | Категория | Вес | Шанс за бросок |
|---|---|---|---|
sphere give core | Сфера, пустой корпус | 30 | ~12% |
sphere give random | Сфера со случайным эффектом | 20 | ~8% |
| Сферический ключ | Ключ | 10 | ~4% |
| Алмаз ×1–3 | Ценное | 15 | ~6% |
| Изумруд ×1–4 | Ценное | 12 | ~5% |
| Зачарованное золотое яблоко | Ценное, редкое | 3 | ~1% |
| Золотое яблоко ×1–2 | Ценное | 10 | ~4% |
| Бутылка опыта ×5–20 | Ценное | 20 | ~8% |
| Гнилая плоть ×2–8 | Тематический «мусор» | 25 | ~10% |
| Кость ×2–6 | Тематический «мусор» | 20 | ~8% |
| Нить ×3–10 | Тематический «мусор» | 18 | ~7% |
| Отравленный картофель ×1–3 | Тематический «мусор» | 15 | ~6% |
| Слиток железа ×2–8 | Тематический «мусор» | 25 | ~10% |
| Слиток золота ×1–4 | Тематический «мусор» | 18 | ~7% |
Показательная деталь конфига: слитки железа и золота лежат в том же блоке комментариев, что гнилая плоть и картофель, — «тематический мусор». На фоне алмазов и сфер это балласт, не награда. Список, веса и loot-slots — обычные поля, набор из поставки лишь пример.
Кольцо из 24 точек «дыхания дракона» вращается вокруг сундука, луч END ROD тянется на 30 блоков вверх — оба эффекта, как все частицы в Minecraft, видны только вблизи и дальностью не настраиваются. А вот три канала оповещения — чат, звук и титул — работают на разных радиусах, и это не всегда очевидно из простого описания ивента.
spawn.world.effects.title-radius (по умолчанию 80 блоков) от точки появления.Отсюда заметная асимметрия именно в провале попытки. Текст о неудаче («ключ рассыпался в прах») видит только сам неудачник — приватным сообщением, без бродкаста в чат. Но вопль эндермена в этот момент слышит весь мир целиком, а не только тот, кто стоит у сундука: крик разлетается по всей карте анонимно, и лишь игроки поблизости увидят своими глазами, кто именно попытал удачу и остался ни с чем.
Часть добычи — не предмет, а команда, которую плагин выполняет от консоли сервера следующим тиком после удачного броска. По умолчанию в таблице две такие записи: sphere give %player% core (пустой корпус сферы без эффекта, вес 30) и sphere give %player% random (случайная сфера со случайным эффектом, вес 20) — вместе около пятой части всех бросков лут-таблицы. %player% подставляется автоматически на ник вскрывшего, команда обходит инвентарь сундука полностью — сфера прилетает игроку напрямую через плагин Spheres.
Показательно, что сам CloudSpheres нигде не заявлен зависимостью — ни жёсткой, ни мягкой: в softdepend плагина числятся только WorldEdit и DecentHolograms. CloudSphereChest просто вызывает команду sphere по имени, полагаясь, что она где-то зарегистрирована; если CloudSpheres не установлен, консоль получит ошибку неизвестной команды, а остальной ивент отработает как ни в чём не бывало — сфера просто не долетит. Получается витрина-компаньон: сферы попадают в оборот не тихой строчкой в меню выдачи, а разовым событием — хотя связка между плагинами держится на честном слове конфига, не на зависимости.
Приват — куб вокруг блока сундука, сторона которого зависит от region.size (по умолчанию 15). Считается через полуразмер: size ÷ 2 с округлением вниз (15 ÷ 2 = 7), а куб — ±7 блоков по всем осям от сундука, то есть 15×15×15 при значении по умолчанию. Нечётное число даёт ребро ровно таким же; чётное — всегда на блок больше (14 и 15 дают одинаковый куб, 16 — уже 17×17×17).
Внутри куба ProtectionListener блокирует разрушение и установку блоков, клики (кроме самого сундука — тем занимается отдельный листенер), вёдра, а из взрывов — блочных и от существ — вычёркивает задетые блоки из списка на снос, не отменяя взрыв целиком. Право spherechest.bypass (по умолчанию у op) снимает все запреты.
Защита не висит постоянно: включается ровно в момент появления блока и снимается сразу при завершении ивента. В фазе анонса (те 15 минут) её ещё нет — строить или ломать в будущей точке спавна можно свободно. После успеха — обратная картина: приват снимается мгновенно, а блок остаётся ещё cleanup.after-open-seconds (300 секунд по умолчанию) — всё это время это обычный, незащищённый сундук, который можно и разбить, а не только докрыть кликом. Несколько минут после победы — честная гонка за тем, что не забрал победитель.
event.auto-enabled: true и не трогать — плагин сам держит ритм: анонс, спавн, час на вскрытие, пауза, по кругу. Стоит заранее сверить центр и радиус зоны спавна, чтобы точка не улетела в океан или за границы обжитой территории: высота берётся по верхнему блоку колонны, а это может быть и вода. Центр — заодно точка, над которой висит голограмма ожидания./spherechest start без координат — мгновенный спавн в случайной точке зоны, минуя 15-минутный анонс. /spherechest start 250 -400 — то же самое, но в конкретной точке: например, у только что отстроенной локации или посреди отдельного события. Если в этот момент уже шла фаза ожидания автоивента, ручной запуск сбрасывает её расписание — второй сундук поверх первого не встанет, плагин откажет и попросит сперва stop./spherechest key ИмяИгрока 3 выдаёт ключи в обход обычной находки сундука — удобная награда за отдельный конкурс: игрок получает не гарантированный лут, а именно попытки, каждая всё равно с тем же шансом 25%, так что элемент риска остаётся даже в подарке./spherechest stop глушит текущий ивент и вместе с ним весь таймер автозапуска: следующий цикл сам не подхватится, потому что пересчёт паузы прописан только в точках «успех» и «истёк срок», а не в ручной остановке. Чтобы вернуть автопилот, нужно либо довести до конца ещё один ивент — любым исходом, оба варианта сами перезаведут таймер, — либо перезагрузить плагин или сервер.| Команда | Что делает |
|---|---|
/spherechest start [x z] | Запустить ивент мгновенно — с указанными координатами или в случайной точке зоны |
/spherechest stop | Принудительно завершить активный ивент (и заодно заглушить автотаймер, см. сценарии выше) |
/spherechest reload | Перечитать конфиг и лут-таблицу без рестарта сервера |
/spherechest key <игрок> [n] | Выдать игроку Сферический ключ (по умолчанию один, максимум 64 за раз) |
/spherechest info | Статус: активен ли сундук, его точка и мир, сводка по региону, включён ли автоивент, текущий шанс вскрытия |
Короткие алиасы — /sc и /schest. Пример: /sc key Виталий 5 выдаст пять ключей игроку Виталий, а /sc start 100 -50 поставит сундук на X=100 Z=−50 — высота посчитается по рельефу. Без аргументов команда печатает список подкоманд. Все подкоманды, включая info, требуют право spherechest.admin — без него плагин откажет ещё до разбора аргументов.
Стоит помнить, что info в режиме ожидания не считает реальное время до следующего спавна — команда лишь отсылает свериться с event.interval-minutes в конфиге. Живой обратный отсчёт по %time% показывает только голограмма, если стоит DecentHolograms.
spherechest.admin — доступ ко всем подкомандам /spherechest (по умолчанию — у op)spherechest.bypass — игнорирует приват-защиту зоны вокруг сундука, пока ивент активен (по умолчанию — у op)Плагин собран под Paper 1.19.4 (api-version: "1.19"). DecentHolograms не обязателен, но включает голограмму-таймер, если стоит, — плагин сам проверяет её наличие при старте. WorldEdit числится мягкой зависимостью в plugin.yml, но в коде не вызывается — историческая заготовка. Оба не нужны, чтобы ивент запускался и работал целиком.
В конфиге меняется почти всё, что видит игрок: event (авто-запуск, интервал, шанс, длительность), spawn (мир, центр, радиус зоны), announce (когда и как часто анонс), region (размер приват-куба), cleanup (время после вскрытия), key (материал, имя, lore ключа), loot-slots и loot (сама таблица), effects (голограмма, частицы, звуки на фазу, радиус и текст титула). В java-полях кэшируются только размер региона и лут-таблица — их явно пересобирает reload; остальное читается из конфига на лету, так что один /spherechest reload обновляет всё разом, без рестарта.
Лицензионная проверка встроена так же, как у прочих плагинов Cloud Delight, и стоит первой строкой при запуске плагина — раньше инициализации любых менеджеров. При license.enabled: true плагин шлёт POST на license.url с ключом и именем плагина, ждёт ответ до 5 секунд; если сервер лицензий недоступен или отвечает ошибкой — в ход идёт локальный кэш в папке плагина, но не дольше license.grace-hours (по умолчанию 24 часа) с последней успешной проверки. Явный отказ сервера — ключ неверен, занят другим IP, отозван — отключает плагин сразу, без грейс-периода. Для приватного сервера защита выключается одной строкой: license.enabled: false.
CloudSphereChest превращает обычный лут в событие на весь сервер: анонс, обратный отсчёт, честный риск потерять ключ впустую — и добыча тому, кто добежал и рискнул первым.