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

Ход матча в Extractioncraft

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

Создание матча​

/exc createMatch <contentPackage.yml> передаёт значение betterStructuresModulesContainerName из пакета контента плагину BetterStructures, который генерирует совершенно новый инстансированный мир. Сначала команда проверяет, что BetterStructures, EliteMobs и FreeMinecraftModels загружены, что игрок ещё не находится в матче и не ждёт его, а также что пакет и его модульный генератор включены.

Пока мир генерируется, игрок закреплён за этим матчем и не может присоединиться к другому или создать новый. Генерация отменяется, а недостроенный мир удаляется, если она длится дольше 15 минут, если игрок отключается или выполняет /exc leave либо если один из сопутствующих плагинов становится недоступен. Когда генерация завершается:

  • Для этого мира создаётся ExtractionMatch, который начинается в состоянии ожидания.
  • Игрок, выполнивший команду, добавляется в матч и на следующем тике телепортируется в случайно выбранную точку спавна в новом мире. Если на карте нет ни одной точки спавна, матч вместо этого отменяется.

Любой, кто попадает в матч, переводится в режим Приключение (Adventure). Прежнее местоположение и игровой режим сохраняются до переключения и восстанавливаются при выходе. Игроки остаются в матче со своим инвентарём; ничего не откладывается отдельно.

Здесь нет ни очереди, ни подбора игроков. Матч существует потому, что кто-то его создал.

Ожидание игроков​

Нет команды присоединения

/exc createMatch — единственный встроенный способ попасть в матч. Extractioncraft не регистрирует подкоманды join или наблюдения, поэтому в матче обычно находится ровно один игрок: тот, кто его создал. Другие плагины могут впускать игроков или наблюдателей через API для разработчиков; правила ниже относятся к ним.

Пока матч находится в состоянии ожидания:

  • Приём пропускает игроков вплоть до значения maxPlayers из пакета контента (8 для всех готовых пакетов Kobold Mines), отклоняя заполненный инстанс сообщением failedToJoinOngoingMatchAsPlayerInstanceIsFull.
  • Как только начался обратный отсчёт или матч перешёл в активную фазу, присоединиться в качестве игрока больше никто не может. Опоздавшие получают failedToJoinOngoingMatchAsPlayerMessage.
  • Наблюдатели принимаются, только если в пакете контента задано spectatable: true. Во всех готовых пакетах оставлено false.
  • Выйти сейчас можно без последствий: правило удаления предметов действует только после того, как матч запущен.

Старт​

Любой игрок внутри матча может выполнить /exc start.

  • Если присутствует меньше игроков, чем minPlayers, матч отказывается стартовать и всем сообщается об этом через matchFailedToStartNotEnoughPlayersMessage ($amount заменяется на необходимое количество).
  • Иначе обратный отсчёт показывает 2, 1, затем 0 с интервалом в одну секунду. Он завершается на третьем обновлении, примерно через две секунды после первого.
  • Если во время обратного отсчёта количество игроков падает ниже minPlayers, матч прерывается и сразу же завершается.
  • Повторный вызов /exc start после начала обратного отсчёта ничего не делает.

Когда обратный отсчёт завершается, матч переходит в активную фазу. Разрешаются физические взаимодействия с редстоуном, появляются инстансовые боссы карты, размещаются сундуки и бочки, а также запускаются 15-минутный таймер, сужающаяся граница мира и полоса босса с компасом. Одновременно размещаются декоративные, пока нерабочие точки эвакуации.

Таймеры​

ТаймерДлительностьДействие
Таймер матча15 минутОтображается как Timer MM:SS на боковой панели Extractioncraft, обновляется раз в секунду. На 00:00 матч завершается.
Разблокировка точек эвакуацииЧерез 1 минуту после стартаВставляется рабочая версия каждой точки эвакуации вместе с её рычагом.
Окно эвакуации20 секундЗапускается рычагом точки эвакуации.
Открытие контейнера3 секундыВремя, которое нужно простоять неподвижно, чтобы обыскать сундук или бочку.

Когда таймер матча доходит до 00:00, матч завершается, а все игроки, которые ещё внутри, удаляются как не сумевшие эвакуироваться. См. Смерть и потеря предметов.

Граница мира​

Граница центрирована по середине сгенерированной карты и изначально равна её ширине. BetterStructures вычисляет эту ширину по модульному генератору как (2 × radius − 1) × moduleSizeXZ; для готовых карт Kobold Mines это 384 блока. Раз в секунду граница устанавливается равной начальной ширине, умноженной на долю оставшегося времени, поэтому она равномерно сужается и достигает 1 блока, когда истекает 15-минутный таймер.

Дистанция предупреждения границы устанавливается равной текущей ширине границы минус 50, но не меньше 0. Поскольку Minecraft трактует дистанцию предупреждения как «за сколько блоков до границы экран начинает окрашиваться», красное предупреждающее наложение покрывает всю карту, пока ширина границы не станет меньше 100 блоков; после этого оно показывается только у края.

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

Эвакуация​

  1. Найдите точку эвакуации. Полоса босса в верхней части экрана представляет собой полосу компаса: она показывает маркер ⦿ для каждой точки эвакуации в пределах 90° от направления вашего взгляда, примерно по 3° на символ. Полоса появляется сразу после старта матча, но первую минуту остаётся пустой — маркеры рисуются только для рабочих точек эвакуации, а они не размещаются до срабатывания таймера разблокировки.
  2. Щёлкните правой кнопкой мыши по рычагу на точке эвакуации. Рычаг убирается, всем игрокам в радиусе 10 блоков сообщается «You have triggered an exit!», и для этой точки открывается единственное 20-секундное окно эвакуации.
  3. Стойте внутри зоны эвакуации — куба 7 × 7 × 7 блоков с центром в блоке точки эвакуации. Пока вы внутри, вы видите Extracting! in N seconds!.
  4. Выход за пределы зоны показывает Extraction cancelled!, но окно продолжает идти. Если вернуться внутрь до его закрытия, это всё равно засчитается.
  5. Когда окно закрывается, все, кто стоит внутри, эвакуируются одновременно: Victory / Extraction successful!. Они удаляются из матча и сохраняют всё, что несут с собой.
Одно окно на точку эвакуации

Каждая точка эвакуации открывает одно окно за матч. Обработчик принимает рычаг в пределах 10 блоков от ещё не использованной точки эвакуации. Рычаг рядом с уже использованной точкой ничего особенного не делает и переключается как обычный рычаг.

Смерть и потеря предметов​

В матчах Extractioncraft у каждого игрока одна жизнь, а возрождения и сундука смерти нет.

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

Способ выхода определяет, что происходит с предметами игрока после того, как матч перешёл в активную фазу:

Как вы покинули матчСохраняется ли добыча?
Эвакуировались через точку эвакуацииДа, с привязкой
Выключение сервера или /exc reloadДа, с привязкой
Смерть, /exc leave, /exc quit или отключение во время активного матчаНет, при конфигурации по умолчанию
Были внутри, когда истёк 15-минутный таймерНет, при конфигурации по умолчанию
Вышли, пока матч ещё ожидал или шёл обратный отсчётДа, без изменений

«Нет» означает, что при deleteItemsOnFailToExtract: true (по умолчанию) очищаются весь инвентарь, предмет на курсоре и сетка крафта. При значении false при таких выходах предметы вместо этого привязываются. Привязка закрепляет каждый непривязанный предмет за уходящим игроком, пока включены чары EliteMobs Soulbind; уже привязанные предметы сохраняют своего владельца.

Игроки, которые ещё находятся внутри, когда обратный отсчёт прерывается из-за нехватки minPlayers, удаляются при завершении матча, и их предметы остаются нетронутыми, потому что матч так и не начался. Потеря предметов касается только игроков, которые находились в матче, когда он начался.

Защита мира​

Инстансированный мир матча защищён на протяжении всего своего существования:

  • Игроки не могут ломать или ставить блоки, использовать костную муку, выливать вёдра, редактировать таблички или наносить урон ландшафту. Взрывы, огонь, течение жидкостей, опадание листвы и ванильный спавн мобов заблокированы, а полёт на элитрах отключён.
  • Сундуки, бочки и другие контейнеры нельзя открыть; контейнеры матча обыскиваются так, как описано в разделе добыча из контейнеров. Двери, люки и калитки использовать нельзя. Рамки, стойки для брони и цветочные горшки защищены.
  • Физические взаимодействия с редстоуном, например нажимные пластины, заблокированы, пока матч не перейдёт в активную фазу. Эта настройка не блокирует все виды взаимодействий с редстоуном.
  • PvP заблокировано, когда в пакете контента установлено pvpEnabled: false.
  • Игроки в матче не могут телепортироваться никаким способом, который не запустил сам матч, включая команды, жемчуг Края и плоды хоруса. Другие игроки не могут телепортироваться в мир матча, если у них нет extractioncraft.match.bypass (по умолчанию: op).
  • Во время обратного отсчёта и активной фазы любой посторонний в мире матча без extractioncraft.match.bypass отправляется на точку появления основного мира.

Администраторы могут использовать /exc protection bypass для проверок блоков и взаимодействий, которые учитывают флаг обхода у игрока. Он не обходит ограничения телепортации матча, запрет PvP или все правила мира.

Завершение матча​

Матч завершается, когда из него удаляется последний активный игрок (после эвакуации, смерти, выхода или отключения), когда истекает 15-минутный таймер или когда во время обратного отсчёта игроков становится меньше минимума. Все, кто ещё внутри, исцеляются и удаляются, Extractioncraft останавливает задачи границы, компаса, табло и частиц этого матча, а все остальные, кто остался в мире, например персонал с правом обхода, отправляются на точку появления основного мира.

Затем завершение матча запрашивает безвозвратное удаление его временного мира. Удаление пропускается, если мир нельзя выгрузить; пока плагин включён, удаление папки ждёт пять секунд и дополнительно проверяет, что мир не был загружен снова.

Матчи также сворачиваются при отключении плагина, что включает /exc reload и выключение сервера. Матчи, которые ещё генерируются, отменяются, а игроки в активных матчах сохраняют свои предметы, как описано выше.