Плагин 44kcabins - Пвп кабинки [1.0.0]

44kcabins - Пвп кабинки
Краткое описание:
Можно сказать немного улучшенная копия одного известного плагина.
7
87
Для версий
  1. 1.16.✘
  2. 1.17.✘
  3. 1.18.✘
  4. 1.19.✘
  5. 1.20.✘
  6. 1.21.✘
Java
  1. Java 16
  2. Java 17
  3. Java 21
44kCabins добавляет кабинки (арены 1v1) прямо на спавне или в любом месте карты.
Игроки заходят в регион кабинки, после чего при достижении минимального количества участников запускается дуэль с таймером старта, закрывающимися дверями, защитой от посторонних и вознаграждением победителя.

Основные возможности:
  • неограниченное число кабинок, каждая со своим регионом и настройками;
  • автоматический старт дуэли при min_players и блокировка входа/выхода во время боя;
  • защита от попадания в кабинку через эндер‑пёрлы, команды, порталы и т.п.;
  • кастомные сообщения (чат, title, subtitle, actionbar) через конфиг;
  • API для внешних аддонов (выдача наград, статистика и т.д.).

Установка​

  1. Установить Spigot/Paper подходящей версии (рекомендуется 1.16+).
  2. Скопировать 44kCabins.jar в папку plugins/.
  3. Запустить сервер, чтобы сгенерировались config.yml и базовая структура данных плагина.
  4. При необходимости остановить сервер и отредактировать config.yml, затем снова запустить.
Плагин не требует сторонних библиотек, но может использоваться как ядро для других плагинов‑аддонов через его API.

Команды и права​

Команды​

КомандаОписаниеПраво
/44kcabins helpСписок команд и краткая справка44kcabins.admin
/44kcabins selectorВыдаёт топор выделения региона кабинки44kcabins.admin
/44kcabins create <имя>Создаёт кабинку по текущему выделению44kcabins.admin
/44kcabins add_door <имя>Определяет/обновляет дверь для указанной кабинки44kcabins.admin
/44kcabins reloadПерезагружает конфиг и перечитывает кабинки44kcabins.admin


Особенности:
  • При add_door плагин автоматически подбирает материал двери: если все не воздушные блоки выделения одного материала, он используется как материал двери.

Права​

ПравоПо умолчаниюНазначение
44kcabins.adminopПолный доступ: все команды, настройка кабинок, обход ограничений
44kcabins.bypassopОбход защит входа/выхода (можно заходить/выходить в/из кабинок в любой момент)

Игроки с этими правами не ограничиваются анти‑телепортом и анти‑входом, могут контролировать дуэли и отлаживать плагин.

Настройка конфигурации​

Файл config.yml управляет:
  • глобальными сообщениями;
  • форматом отображения (чат/title/subtitle/actionbar);
  • настройками каждой кабинки (регион, таймеры, лимиты игроков, телепорты, двери).

Формат сообщений​

В блоке messages: каждое сообщение может быть:
  • одной строкой — тогда оно отправляется в чат;
  • списком строк — каждая строка может быть помечена как title/subtitle/actionbar через специальные префиксы.
Поддерживаемые префиксы:
  • $$title$$ — показать строку как title;
  • $$subtitle$$ — показать строку как subtitle;
  • $$actionbar$$ — показать строку в actionbar;
  • Строка без префикса — обычное сообщение в чат (с добавлением префикса из messages.prefix).
Пример [префиксы]:
messages:
  duel_you_win:
    - "$$title$$&aВы победили в дуэли!"
    - "$$subtitle$$&fОтличный бой."
    - "$$actionbar$$&eСоберите лут, пока есть время."
    - "&7| &fЗаходите ещё!"

Если в конфиге указан неизвестный префикс (например, $$sustitul$$), строка будет отправлена как чат‑сообщение без этого префикса, а в консоль плагин выведет предупреждение о неизвестном плейсхолдере.

Для некоторых сообщений доступны плейсхолдеры:
  • %name% — название кабинки в текстах, связанных с созданием/поиском;
  • %sec% — количество секунд (в таймерах старта дуэли и времени на лут).

Настройки кабинок​

Блок cabins: содержит набор кабинок, каждая — отдельная секция:
Кабинки:
cabins:
  example:
    region:
      pos1:
        world: world
        x: 0
        y: 64
        z: 0
      pos2:
        world: world
        x: 10
        y: 70
        z: 10
    timers:
      start: 5   # секунды до начала дуэли после набора min игроков
      end: 10    # время на лут после победы
    players:
      min: 2     # минимальное число игроков для старта
      max: 2     # максимальное количество игроков внутри
    teleport:
      winner:
        world: world
        x: 0
        y: 65
        z: 20
        yaw: 0
        pitch: 0
      outside:
        world: world
        x: 0
        y: 65
        z: 22
        yaw: 0
        pitch: 0
    doors:
      door_1:
        material: GLASS
        locations:
          loc_1:
            world: world
            x: 0
            y: 64
            z: 0
          loc_2:
            world: world
            x: 0
            y: 65
            z: 0
Поля:
  • region.pos1/pos2 — два угла кубоида региона кабинки;
  • timers.start — обратный отсчёт до начала дуэли (секунд), когда набрано минимум игроков;
  • timers.end — время на сбор лута после победы до авто‑телепорта победителя;
  • players.min/max — минимальное/максимальное число игроков в кабинке;
  • teleport.winner — точка, куда будет телепортирован победитель после окончания времени на лут;
  • teleport.outside — точка, куда телепортируются игроки, которых нужно вывести наружу (например, посторонние);
  • doors.door_1 — описание двери: material и набор координат блоков двери.
При использовании команд create / add_door все нужные структуры в cabins.<имя> генерируются автоматически, админ обычно лишь правит числа и сообщения.


Игровая логика​

Жизненный цикл дуэли​

  1. Игроки заходят в регион кабинки (через движение или телепорты).
  2. При достижении min_players запускается таймер timers.start, который оповещает игроков о времени до старта (чат/actionbar/title, настраивается через messages.duel_starting_countdown).
  3. По истечении таймера:
    • двери закрываются;
    • состояние кабинки становится «в бою»;
    • урон разрешён только между участниками внутри этой кабинки;
    • посторонние не могут войти (ни движением, ни телепортом, включая эндер‑пёрлы).
  4. При смерти одного игрока второй объявляется победителем:
    • выводится сообщение duel_you_win;
    • запускается таймер timers.end (время на лут) с отображением duel_loot_timer;
    • по окончании победитель телепортируется в teleport.winner, двери открываются, состояние кабинки возвращается в «ожидание».

Защита от посторонних и телепортов [BETA]​

  • Любой телепорт, перемещающий игрока из‑вне внутрь региона кабинки, проходит проверку:
    • если кабина в бою и игрок не участник — телепорт отменяется и выводится сообщение;
    • если кабина заполнена (players.max) — телепорт отменяется;
  • Телепорты участника дуэли из кабинки наружу во время боя блокируются (команды, эндер‑пёрлы, порталы и т.д.), чтобы нельзя было уйти из боя нечестно;
  • Игроки в режиме наблюдателя (/gamemode spectator) не ограничиваются и могут пролётывать через регионы свободно;
  • Игроки с 44kcabins.admin или 44kcabins.bypass также не ограничены защитой, что позволяет модераторам контролировать дуэли.

Аддоны и API​

Плагин предоставляет простой API, позволяющий другим плагинам интегрироваться с 44kCabins (например, выдавать награды за победу, записывать статистику, интегрировать экономику через Vault и т.п.).

Доступ к API​

В другом плагине:
  1. В plugin.yml аддона указать зависимость:
    depend: [44kCabins]
  2. В коде аддона получить API:

API:
import com.fourkay.cabins.Main;
import com.fourkay.cabins.api.CabinsAPI;

public class MyAddon extends JavaPlugin {

    private CabinsAPI cabinsAPI;

    @Override
    public void onEnable() {
        Main cabins = (Main) getServer().getPluginManager().getPlugin("44kCabins");
        if (cabins == null || !cabins.isEnabled()) {
            getLogger().severe("44kCabins не найден, отключаем аддон.");
            getServer().getPluginManager().disablePlugin(this);
            return;
        }

        this.cabinsAPI = cabins.getApi();
    }
}

Возможности API (основные методы)​

Интерфейс CabinsAPI даёт доступ к:
  • получению кабинки по имени или локации;
  • списку всех кабинок;
  • определению, в какой кабинке находится игрок и в дуэли ли он;
  • чтению/изменению настроек minPlayers/maxPlayers (с автосохранением в конфиге);
  • принудительному завершению дуэли в конкретной кабинке.
Такой подход с отдельным API принят и в других дуэль‑плагинах, что позволяет легко писать внешние расширения.

Автор

4yro4ka

Еще ресурсы от 4yro4ka

Разрывная Молния | Executable Items
Разрывная Молния | Executable Items
Снежок, разящий молнией в месте и радиусе приземления
Executable Items | Меч "Пожиратель" (фишки в описании)
Executable Items | Меч "Пожиратель" (фишки в описании)
Добавляет меч с вампиризмом и прокачкой его уровня.
ExecutableItems | Посох грома (фишки в описании)
ExecutableItems | Посох грома (фишки в описании)
В данной конфигурации учтено: использование на спавне (запрещено), лимит (можно редактировать)
ExecutableItems | Зелье "Слепая надежда" (фишки в описании)
ExecutableItems | Зелье "Слепая надежда" (фишки в описании)
После употребления данного зелья, врагов в радиусе трижды ударяет очень мощная молния. (Настраеваемо
ВерхНиз