Перейти к содержимому

LeafRTP | Random Teleport

Быстрая случайная телепортация для всех, настраиваемая и расширяемая

FabricNeoForgePaperPurpur
Загрузчики
FabricNeoForgePaperPurpur
Скачиваний на Modrinth
12,3 тыс.
Подписчиков на Modrinth
11
версий
8
Обновлён
16 августа 202616 авг.
Опубликован
в 2026
Fully configurable messages & effects — Every message, title, and subtitle is fully configurable, with in-game effects (sounds, particles, fireworks, potions, etc.) assignable per-permission · свайп

Коротко о моде

Работает на Fabric, NeoForge, Paper и Purpur
Для Minecraft 1.20.1–26.2
Ставится только на сервер; игрокам ставить не нужно
Последняя версия — 3.2.1 от 16 августа 2026
Лицензия MIT — бесплатно
Где нужен
В игрене нуженНа сервереобязателен

Ставится только на сервер; игрокам ставить не нужно

Версии игры1.20.1–26.2
Описание переведено автоматическиПоказать оригинал (EN)

Метаданные листинга на маркетплейсе (актуальные, для справки по SEO): Заголовок: "LeafRTP" Слоган: "Детерминированный движок случайной телепортации" -->

LeafRTP - Random Teleport

Назначение

LeafRTP — это команда /rtp. Она телепортирует игрока в случайное безопасное место в мире, максимально эффективно используя процессор.

История

Мы все когда-то были игроками и все жаловались на «лаги» на серверах. Многие из нас пытались выяснить, откуда они берутся, и, честно говоря, в моих исследованиях ушли дни работы только на то, чтобы понять, что причиной проблем с производительностью был плагин случайной телепортации. Самая большая нагрузка в любом профайлере никогда не помечалась в зависимости от того, кто вызвал api — эта часть скрыта, поэтому источник тысяч лишних чанков в памяти определяется неверно. Я прошёл через стадию «виноваты пользователи» и поумнел, осознав, что лучше починить инструмент, чем говорить людям не использовать его.

В 2021 году этот проект начался как демонстрация математических принципов и как задача по оптимизации повышенной сложности. Я хотел сделать что-то, на что сообщество могло бы ссылаться, и создать новый стандарт производительности, сделать себе имя как одержимый разработчик. Вместо этого его восприняли как продукт и запросили кучу функций, поэтому я поработал над элегантностью дизайна, чтобы несколько деталей дизайна давали экспоненциальное число возможных конфигураций. В результате он немного не в мете, но понять его полностью несложно. Измеряй в чанках, определи несколько регионов и обращайся к ним через команду или api, а всё, что между этим, — нюансы дизайна сервера.

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

Мне не нравится регламентировать, как это использовать и с чем, поэтому в V2 я переработал код, чтобы использовать больше заменяемых поставщиков и потребителей, что позволяет легко программно менять проверки безопасности, проверки биомов, формы и т. д. Оптимизировать было особо нечего, поэтому я изучал практики написания кода. Честно говоря, «чистый код» — это сожаление, так как он увеличил задержку ввода, но структура дала мне довольно хорошую отправную точку для реорганизации.

Для v3 мне нужно было обновиться под современные версии игры и современные веб-платформы. У меня появились кое-какие светлые идеи насчёт оптимизаций локальности кэша, оптимизаций доступа к данным, кроссплатформенной поддержки через концепции SPI (service provider interface) и активного отслеживания, чтобы поймать любую «утечку памяти», о которой я слышал, но так и не смог воспроизвести на своей машине.

После обновления V3 и микрооптимизации процесса выбора я создал тестовый плагин, помогающий тестировать пропускную способность вплоть до 1 вызова rtp за игровой тик (20/с), который продемонстрировал падение производительности в чистой модели повторных попыток — в каждой реализации, что я тестировал, кроме этой. Я также смог убедиться, что распространённая оптимизация «использовать загруженные чанки» склонна размещать игроков в базах друг друга, усугубляя либо гриферство, либо повторные попытки — в зависимости от интеграции с приватами.

Paper, Spigot, Folia, Fabric, NeoForge и Velocity, на Minecraft 1.21.x / 26.x


Чем он отличается

Большинство плагинов /rtp построены вокруг скрипта: «выбери место, проверь его, пробуй, пробуй снова» + «добавь функцию x». Это создаёт недетерминированные затраты на вычисления вокруг «пробуй снова». LeafRTP — это перестройка ради инженерной строгости в основах, с приоритетом стабильности под нагрузкой.

Я подробнее задокументировал детали дизайна здесь, обозначив решения по дизайну/функциям, заменяющие решения и рассмотренные альтернативы.

Пространственное отображение и память

Измерения показывают, что примерно 35-65% мира «небезопасны» для размещения — из-за океанов, лавы, пустоты.

Выборки берутся из пространственно-заполняющей спирали Архимеда — индексированного отображения из 1D в 2D. Математика с графиками распределения: Почему существует LeafRTP.

Пространственное отображение позволяет хранить и вспоминать информацию о предыдущих выборках, включая биом и причину недействительности, используя сегменты вместо сжатия изображений, так как это даёт конкретную оптимизацию — смещённые выборки. Фаза выбора локации — это поиск за константное время с периодической перестройкой таблицы, исключающей недействительные локации, например океаны, лаву, пустоту.

Предфильтр Anvil

Предфильтр Anvil (.mca) читает данные биомов и блоков прямо из файлов регионов на диске, так что можно фильтровать пакеты локаций, если мир сгенерирован, а эти локации не загружены. Это также помогает читать то, что мир действительно содержит, а не то, что предсказывает генератор. Обычные сокращения (getBiome, getHighestBlockAt) отвечают по шумовой карте генерации, которая может расходиться с реальным рельефом, если место было отредактировано или перенесено через версию Minecraft. Архитектура.

Предварительно проверенный кеш

Безопасные точки назначения готовятся с заданной скоростью, и некоторое их количество держится наготове в кеше для каждого определённого региона, так что выдача /rtp — это возврат координаты, которая уже проверена. Цифры — в разделе «Производительность» ниже.


Возможности

  • Настройка в игре — /rtp menu открывает кликабельную книгу (Paper / Folia; в остальных случаях — постраничный чат) для просмотра миров, выбора регионов и изменения настроек на лету. Включает функцию поиска.
  • Движок эффектов — частицы, звуки, фейерверки, зелья, титры на каждой фазе телепортации.
  • Тепловые карты в реальном времени — /rtp scan наносит безопасность регионов на настоящую карту в руках.
  • Экономика — плата за каждый /rtp (Vault), цена по регионам, авто-возврат при отмене.
  • 12 интеграций с приватами — GriefDefender, GriefPrevention, Lands, WorldGuard, TownyAdvanced, SaberFactions, FactionsBridge, HuskClaims, RedProtect, CrashClaim, KingdomsX, Residence.
  • PvP / боевой тег, PlaceholderAPI, кулдауны и лимиты для каждого игрока, переопределения для нескольких миров.
  • Кросс-серверный /rtp — работа на Velocity включает межсерверную связь через tcp-сокет, расширяемую аддонами.
  • Платформо-независимый движок — основной код работает на чистой Java и кастомных реализациях, что позволяет поддерживать кросс-серверность через лёгкие поставщики.
  • Документация в jar — в V3 я начал включать в jar документацию для конкретной версии на случай, если обновлю вики для новых версий.
  • Воспроизводимые бенчмарки с сырыми CSV и анализом по каждому запуску: helpers/StressTestRTP/
  • bStats включён — анонимная статистика использования помогает расставлять приоритеты в работе над платформами.
  • Подробный API с примерами — входящие в комплект аддоны служат примерами подключения для добавления проверок или изменения поведения /rtp.
  • Изменяемый SPI — большинство частей, связанных с совместимостью, можно заменить, например серверный бэкенд, экономику, проверку валидности локаций, формы, границу мира, проверки PvP, создание платформ, команды.

Посмотрите в деле

/rtp scan наносит безопасность регионов на настоящую игровую карту (зелёный — безопасно, красный — небезопасно) прямо во время проверки. /rtp info сообщает живой TPS/MSPT, кучу, процентили задержки и причины отклонений — без дополнительных метрик. Тяжёлая проверка выполняется вне тика на всех платформах. Посмотреть, как сканирование раскрашивает регион в реальном времени (видео). Подробности: Сканирование и пространственная память, Диагностика.


Требования

  • Java 21+
  • Поддерживаемый сервер — Paper, Spigot или форк семейства Bukkit (Arclight / Mohist для мостов с Forge), либо Fabric / NeoForge (1.21.x / 26.x).

Установка

  1. Закинь LeafRTP-x.y.z.jar в plugins/ (или mods/).
  2. Запусти сервер. Регион default создастся сам.
  3. Введи /rtp. Работает.
  4. Подгони размер региона под свой мир и привяжи каждый мир к региону. radius, centerX и centerZ находятся внутри блока shape: региона и измеряются в чанках, а не в блоках — radius со значением 625 покрывает 10 000 блоков. Смотри Regions и Worlds.

Советую попробовать /rtp admin

Начни отсюда: Быстрый старт и Предполагаемое использование. Полное руководство для админов автоматически распаковывается в plugins/RTP/docs/ при первом запуске и доступно онлайн в руководстве для админов.


Производительность

Каждое число ниже взято из публичного стенда: helpers/StressTestRTP/.

Полный бенчмарк против альтернативных плагинов случайной телепортации на Paper, Spigot и Folia

Строки Paper: 2 клиента с OP, спамящие /rtp подряд, очереди включены там, где плагин их предлагает, кулдауны/задержки обнулены. Прогон на Folia: 3 клиента с OP, радиус выровнен до 4096 блоков, ~600 с на плагин.

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

Метрики: Пропускная способность (TP/s, больше — лучше) | MSPT p99 (худший тик главного потока из 100 в мс, меньше — лучше) | Мин. TPS (наименьший наблюдаемый TPS; 20.00 = без просадок) | CPU / TP (CPU главного потока на успешную телепортацию).

Paper 1.20.1 / 1.21.11 — эталонный набор данных. Восемь плагинов, один и тот же стенд, один и тот же мир, одни и те же два клиента с OP.

ПлагинTP/sMSPT p99 (мс)Мин. TPSCPU / TP (мс)Успех
LeafRTP19.8420.0016.9100 %
JakesRTP20.07020.0026.0100 %
BetterRTP7.385220.0053.6100 %
HuskHomes6.237220.0052.2100 %
AdvancedRTP2.162 10019.9592.196.3 %
EzRTP1.762 90319.95139.6100 %
AsyRTP1.674 53419.9538.8100 %
EssentialsX /tpr0.964 50419.9588.975.9 % *
  • EssentialsX /tpr — это команда телепорт-запроса (рукопожатие + принятие), а не телепорт-исполнения; 5-секундный дедлайн на попытку в стенде отсекает часть задержек принятия запроса. Числа отражают характер отправки, а не поломку плагина.

Spigot 1.20.1

ПлагинTP/sMSPT p99 (мс)Мин. TPS
LeafRTP1.5236.4
JakesRTP1.042 2527.5*
BetterRTP1.333 7902.18
HuskHomes0.934 9392.59
  • JakesRTP запускался последним в порядке фаз и унаследовал давление на чанки, оставшееся от предыдущих фаз, так что его минимальный TPS нельзя однозначно приписать только JakesRTP.

Folia 26.1

(только EzRTP тоже завершил прогон на Folia; у остальных протестированных плагинов там были проблемы с совместимостью или производительностью)

ПлагинTP/sCPU / TP (мс)Зависания watchdogУспех
LeafRTP12.54.150100 %
EzRTP5.36.347 (один регион 20.4 с)96.2 %

7 зависаний watchdog у EzRTP (один регион не отвечал 20.4 с) — это собственная запись сервера о синхронных вызовах World.loadChunk в потоках регионов; LeafRTP не сделал ни одного. Для справки: адаптер Pro для Folia прошёл тот же прогон на 13.5 TP/s. Результат бесплатной сборки на Folia обеспечивает общий движок rtp-core, а не адаптер только для Pro.

Оговорки. Малое число клиентов (2 на Paper, 3 на Folia); провал EzRTP в прогоне на Folia подтверждается собственным логом watchdog сервера, независимо от тестового стенда. Плагины-конкуренты часто обновляются; исправления приветствуются через issue на GitHub с опровергающим воспроизведением или ссылкой на документацию.

Полная методология, сырые CSV, анализ по каждому прогону: helpers/StressTestRTP/. Видеобенчмарк /rtp на кастомном генераторе мира: youtu.be/V0NyNK9JydM.

Команды, плейсхолдеры, мягкие зависимости

Команды (полный справочник: руководство администратора)

  • /rtp — телепортирует в регион по умолчанию для вашего текущего мира или открывает gui (в зависимости от аддонов).
  • /rtp [параметр]=[значение] — указать region=, world=, player= или временные переопределения.
  • /rtp reload — перезагрузить всю конфигурацию с диска.
  • /rtp scan start|pause|resume|reset|cancel — построить пространственную память, обходя регион (переименовано из /rtp fill в 2.x). Демо: youtu.be/Ftjy1zw_S04.
  • /rtp menu — интерактивное меню-книга.

PlaceholderAPI

  • %rtp_player_status% — idle, waiting, teleporting, ...
  • %rtp_total_queue_length%, %rtp_public_queue_length%, %rtp_personal_queue_length%
  • %rtp_teleport_world%, %rtp_teleport_x%, %rtp_teleport_y%, %rtp_teleport_z%

Мягкие зависимости (все опциональны): Vault (для опциональной платы за экономику), PlaceholderAPI, ProtocolLib. PaperLib больше не требуется.

FAQ

В: Как сделать, чтобы /rtp не лагал сервер, и почему LeafRTP быстрее других плагинов случайной телепортации? О: Большинство вызовов /rtp обслуживаются из заранее подготовленной очереди — чанки уже загружены и проверены на безопасность до того, как вы введёте команду. Два проектных решения делают поддержание этой очереди дешёвым: постоянная пространственная память для каждого региона (плагин запоминает, какие сектора мира не прошли проверки на безопасность, поэтому спиральный селектор пропускает известные плохие участки вместо бесконечного перебора) и асинхронный предфильтр вне тика (файлы регионов Anvil читаются напрямую, чтобы отсеять небезопасные биомы/блоки до загрузки любого чанка, так что проверка кандидатов никогда не блокирует главный поток). Заранее подготовленная очередь — лишь видимая верхушка: пространственная память держит выбор кандидатов в разумных рамках, а асинхронный предфильтр уводит проверку из тикового цикла.

В: Сложно ли настроить LeafRTP, и есть ли в нём экономика, GUI и эффекты частиц? О: Нет, и да. Закиньте jar, и /rtp сразу работает, на регионе default, созданном для вас. Подгоните этот регион под свой мир — форму, радиус, центр — и /rtp menu сделает это прямо в игре без правки YAML. В него входят кликабельное меню GUI, экономика Vault (плата за телепортацию с ценой для каждого региона), движок эффектов частиц / звуков / фейерверков, живые теплокарты и двенадцать интеграций с плагинами приватов.

В: Почему теперь он называется "LeafRTP", а не просто "RTP"? О: "RTP" — это общий термин для случайной телепортации, поэтому старое название было почти невозможно найти — оно пересекалось со всеми другими плагинами случайной телепортации, командами и темами на форумах в поиске и индексах магазинов. "LeafRTP" — это отдельное, индексируемое имя, которое однозначно указывает на этот плагин, при этом команда /rtp, rtp-api, пути к конфигам и файлы данных остаются точно такими же. Для существующих установок ничего не меняется — только публичное название.

В: Работает ли он с Iris / Terra / кастомными генераторами датапаков? О: Да. Файлы регионов читаются напрямую, поэтому модифицированные и пространственно-именованные ID биомов и блоков сохраняются. Настройка не требуется. Поскольку данные о биомах берутся из заполненных файлов .mca, а не из живого генератора/поиска по карте шума, `/rtp biome=` остаётся корректным даже в мирах, которые были предварительно сгенерированы в другом месте или перенесены между версиями Minecraft, где привязка биомов к сиду сместилась.

В: Поддерживаете ли вы треугольные / ромбовидные формы регионов? О: Используйте форму Polygon — треугольник это полигон с 3 вершинами, а ромб — это повёрнутый квадрат, так что обе формы уже выражаются без отдельного типа формы.

В: Нужен ли мне Chunky или другой предгенератор? О: Нет, но они хорошо работают вместе. /rtp scan обходит регион вне тиков, проверяет безопасность и генерирует любые чанки, до которых доходит, если их ещё нет на диске (через собственный генератор мира сервера), записывая при этом, какие секторы небезопасны, в постоянную пространственную память. Отдельный предгенератор остаётся опциональным: запустите Chunky сначала, если хотите, чтобы вся карта была на диске заранее, и тогда scan будет дёшево читать эти чанки через предфильтр Anvil вместо того, чтобы генерировать их на ходу.

В: Я на NeoForge. О: NeoForge — это полноценно поддерживаемая платформа на Minecraft 1.21.x / 26.x — просто закиньте мод.

В: Я на Forge. О: Запустите Arclight или Mohist (официально поддерживаются) и используйте этот jar. Нативный адаптер для Forge не планируется.

В: Память и MSPT — стоит ли беспокоиться? О: LeafRTP обменивает ограниченный объём RAM (очередь, ограниченная cacheCap) на скорость. TPS не должен падать ниже ~19 только из-за LeafRTP на здоровом сервере; всплески MSPT во время генерации новых областей ожидаемы — это цена генерации чанков, а не RTP.

В: Как сообщить об ошибке? О: Issue на GitHub с версией сервера, версией LeafRTP, платформой, соответствующими файлами конфигов и разделом лога с ошибкой. Смотрите руководство администратора для полного шаблона воспроизведения.

Политика поддержки сообщества (прочитайте перед созданием issue)

Поддержка бесплатной сборки — на уровне сообщества и по мере возможностей. Один мейнтейнер выпускает исправления, когда правильно оформленные issue поступают.

  • Поддержка охватывает баги и вопросы по конфигурации, после того как вы прочитали руководство администратора.
  • Отчёты об ошибках требуют воспроизведения: версия сервера, версия LeafRTP, платформа (Spigot / Paper / форк), config.yml, regions/, safety.yml и соответствующий раздел server.log. У отчётов без этого один раз запрашивают недостающее, затем закрывают.
  • "Оно не работает" — это не отчёт об ошибке. Расскажите, что вы сделали, что ожидали и что произошло на самом деле.
  • Время ответа: никаких SLA для бесплатной сборки. Критические проблемы безопасности проходят вне очереди.
  • Запросы функций через issue на GitHub. Приоритет следует опубликованному роадмапу, а не количеству тикетов.

Ссылки

Частые вопросы

Как установить LeafRTP | Random Teleport?

Установите Fabric под свою версию Minecraft, скачайте LeafRTP | Random Teleport под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.

Для каких версий Minecraft есть LeafRTP | Random Teleport?

У LeafRTP | Random Teleport есть сборки для Minecraft 1.20.1–26.2.

Нужен ли LeafRTP | Random Teleport на сервере?

Ставится только на сервер; игрокам ставить не нужно

Лицензия и источник
MIT Licenseможно свободно использовать и распространять с указанием автора
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее