SNSpawners — спавнеры, которые не спавнят мобов | Ноль лагов | Стак · Склад · GUI · HEX

Плагин SNSpawners — спавнеры, которые не спавнят мобов | Ноль лагов | Стак · Склад · GUI · HEX 1.7.26

Создайте и подтвердите аккаунт для скачивания
Поддерживаемые версии
  1. 1.21
Ядра и Прокси
  1. Paper
Минимальная версия Java
21
SNSpawners

Спавнеры, которые не спавнят мобов

Бесплатно · Открытый исходный код · MIT

────────────────────────────────────────────────────────────


В чём проблема

На SkyBlock спавнеры — это вся экономика. И они же — источник лагов номер один.

Обычная ферма работает так:

спавнер тикает → создаёт мобов (Entity) → мобы тикают, ищут путь, толкаются
→ умирают → роняют предметы (снова Entity) → воронка засасывает (снова тики)

Пятьсот спавнеров в приватах, помноженные на эту цепочку, — это 8 TPS и «сервер лагает» в чате каждые пять минут.


Что делает SNSpawners

Вырезает цепочку целиком. Ванильный спавн глушится, а лут рассчитывается математически и складывается в виртуальный склад спавнера. Игрок забирает его из меню или включает автовыгрузку в привязанный сундук.

Мобов нет. Предметов на земле нет. Воронки под фермой не нужны.


Чем отличается от бесплатных стакеров

Стакеры вроде WildStacker или RoseStacker уменьшают количество сущностей: вместо 200 зомби — один со счётчиком. Это помогает, но сущности остаются: они тикают, их надо убивать, лут всё равно падает на землю.

Режим «спавнер вообще не спавнит мобов, а сразу выдаёт лут по вероятностям» до сих пор встречается только в платных плагинах. Здесь он есть, и он бесплатный.


Главное инженерное решение

Наивная реализация стакающихся спавнеров бросает кубик на каждого моба. Стак из 2048 спавнеров × 4 моба за цикл × 180 пропущенных циклов = 1.5 миллиона бросков на один спавнер при загрузке чанка. Это и есть тот фриз, за который ругают стакеры.

SNSpawners не перебирает — он берёт выборку из распределения целиком:

  • сколько раз выпал предмет — биномиальное распределение B(n, p)
  • сколько всего штук — сумма n равномерных величин

Пока попыток мало (по умолчанию до 64) — считается честным перебором, результат математически неотличим от ванильного. Выше порога включается аппроксимация: нормальная при большом среднем, пуассоновская при редких событиях.

Замеры производительности и точности
Скорость — 200 000 вызовов, прогретый JIT:

стак ×1 (n = 1 000) 29 нс на вызов
стак ×100 000 (n = 100 000 000) 29 нс на вызов

Стоимость расчёта не зависит от размера стака.

Точность — отклонение среднего от теоретического:

n=1e6 p=0.025 среднее 24999.6 ожидалось 25000 отклонение 0.002 %
n=1e6 p=0.000005 среднее 4.98 ожидалось 5 отклонение 0.5 %
n=32 p=0.5 среднее 15.99 ожидалось 16 отклонение 0.085 %

  • Производство ленивое. Спавнер не тикает вообще. Он помнит момент последнего расчёта, и догон считается одной формулой — час простоя или месяц стоят одинаково.
  • Жёсткий тик-бюджет. Обход идёт кольцевым курсором по плоскому массиву: max-per-tick спавнеров за запуск, остальные достанутся следующему. Время одного тика не зависит от количества спавнеров на сервере — растёт только время полного круга.
  • Удаление за O(1) — перестановка с последним элементом, без сдвига хвоста.
  • Данные лежат в блоке (PersistentDataContainer), внешней базы нет: ни I/O при выключении, ни миграций, ничего не разъезжается при откате бэкапа мира.
  • Компактный склад. Ванильный дроп не имеет NBT, поэтому склад хранится строкой id=количество, а не Base64 от сериализованного инвентаря — в десятки раз меньше и быстрее.
  • Голограммы на TextDisplay — без ИИ и физики, помечены непостоянными: в файл чанка не пишутся, дубли после рестарта невозможны. Текст пересобирается только при реальном изменении.


Возможности

  • Стакинг с автослиянием при установке рядом; лимит выдаётся правом snspawners.stack.<число>
  • Виртуальный склад с вместимостью по уровню и поведением при переполнении: STOP / VOID / REPLACE
  • Оффлайн-накопление с потолком — защита от «выключил сервер на месяц»
  • 5 уровней улучшений: скорость, удача (аналог Looting), вместимость склада
  • Автовыгрузка в привязанный сундук, бочку или шалкер
  • Автопродажа — лут сразу в деньги, с настраиваемой комиссией сервера
  • Три GUI-меню: спавнер, постраничный склад, лестница улучшений — всё редактируется в gui.yml
  • Голограммы над спавнером с произвольными строками
  • Защита: только владелец, иммунитет к взрывам и поршням, чёрный список миров
  • HEX и градиенты во всех текстах
  • Каждое сообщение настраивается отдельно: канал доставки, префикс, звук, тайминги


Конфигурация

файлчто настраивает
config.ymlпроизводительность, стакинг, защита, склад, голограммы, звуки
spawners.yml16 типов мобов с таблицами лута и ценами, 5 уровней улучшений
messages.yml45 сообщений — каждое со своим каналом, префиксом и звуком
gui.ymlвсе предметы всех меню: слоты, материалы, имена, описания

Ядра

Поддерживаются:
  • Paper 1.21+
  • Purpur
  • Pufferfish
  • Leaf, Gale и любые другие форки Paper

Не поддерживаются:
  • Spigot, CraftBukkit, Bukkit — используются Paper-only API (Adventure, RegistryAccess, Display-сущности)
  • Folia — региональная многопоточность требует отдельного планировщика

Совместимость с другими плагинами
  • Работает поверх любых плагинов приватов (WorldGuard, GriefPrevention, ASkyBlock и прочих): обработчики стоят на HIGHEST с ignoreCancelled, поэтому отмена защитой срабатывает раньше.
  • Не конфликтует со стакерами сущностей — мобов просто нет.
  • Ванильные спавнеры из подземелий подхватываются при первом взаимодействии (отключается в stacking.adopt-natural-spawners).
Установка

  1. Скачай SNSpawners-1.0.0.jar
  2. Положи в папку plugins/
  3. Перезапусти сервер
  4. При желании поставь Vault и любой экономический плагин

Конфиги создадутся сами при первом запуске.


────────────────────────────────────────────────────────────

Somikyy

You must be logged in to see this link.

Разработка плагинов и 3D-моделей

В канале выходят новые плагины линейки SN — все бесплатные и с открытым исходным кодом.
Там же можно заказать плагин или модель под свой проект.

Лицензия MIT: используй на коммерческих серверах, включай в сборки, правь под себя.
Атрибуция приветствуется, но не обязательна.


Понравился плагин? Загляни в You must be logged in to see this link.
Зависимости
Обязательных нет. Плагин самодостаточен: ни одной библиотеки внутри, ни одного хард-депенда снаружи.
Команды и права
Команды

Основная команда: /snspawners · Алиасы: /snsp, /spawners

командаописаниеправо
/snsp helpсписок команд
/snsp give <игрок> <тип> [кол-во] [стак]выдать спавнеры игрокуsnspawners.command.give
/snsp infoстатистика и реальное время обхода в мсsnspawners.command.info
/snsp typesсписок доступных типов
/snsp reloadперезагрузить все конфиги без рестартаsnspawners.command.reload

У всех аргументов работает автодополнение по Tab.

Права

правопо умолчаниючто даёт
snspawners.useвсеоткрывать меню своих спавнеров
snspawners.placeвсеставить спавнеры
snspawners.stack.<число>персональный лимит стака; берётся максимальное из выданных, но не выше stacking.max-stack
snspawners.autosellдоступ к переключателю автопродажи
snspawners.bypassоператоробход проверки владельца спавнера
snspawners.command.giveоператорвыдача спавнеров
snspawners.command.infoоператорпросмотр статистики
snspawners.command.reloadоператорперезагрузка конфигов
snspawners.adminоператорвсё вышеперечисленное сразу
Автор
somikyy
Скачивания
1
Просмотры
22
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Поделиться ресурсом

Назад
Сверху Снизу