diff --git a/build.gradle.kts b/build.gradle.kts index 0a72c12..2854b83 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -29,5 +29,8 @@ tasks { filesMatching("paper-plugin.yml") { expand(props) } + filesMatching("*.yml") { + expand(props) + } } } diff --git a/src/main/java/dev/loki/config/ConfigManager.java b/src/main/java/dev/loki/config/ConfigManager.java index 0b74072..a14987f 100644 --- a/src/main/java/dev/loki/config/ConfigManager.java +++ b/src/main/java/dev/loki/config/ConfigManager.java @@ -17,6 +17,7 @@ public class ConfigManager { private GameConfig gameConfig; private MessagesConfig messagesConfig; private SkillCheckConfig skillCheckConfig; + private FileConfiguration mainConfig; public ConfigManager(mdbd plugin) { this.plugin = plugin; @@ -27,6 +28,7 @@ public class ConfigManager { } public void loadConfigs() { + this.mainConfig = loadConfig("config.yml"); this.locationsConfig = new LocationsConfig(loadConfig("locations.yml")); this.gameConfig = new GameConfig(loadConfig("game.yml")); this.messagesConfig = new MessagesConfig(loadConfig("messages.yml")); @@ -84,4 +86,8 @@ public class ConfigManager { public SkillCheckConfig getSkillCheck() { return skillCheckConfig; } + + public FileConfiguration getMainConfig() { + return mainConfig; + } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..ec91e1e --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,49 @@ +# ============================================ +# Mdbd Plugin - Главный конфиг +# Версия: ${version} +# ============================================ + +# Основные настройки плагина +settings: + # Язык сообщений (пока только встроенный) + language: "ru" + + # Отладочный режим + debug: false + + # Автосохранение каждые X минут + auto-save-minutes: 5 + +# Настройки игры +game: + # Минимум игроков для старта + min-players: 5 + + # Максимум игроков + max-players: 5 + + # Обратный отсчёт в лобби (секунды) + lobby-countdown: 60 + + # Задержка перед назначением ролей (секунды) + role-assign-delay: 5 + +# Визуальные настройки +display: + # Использовать титры при старте игры + use-title-on-start: true + + # Показывать ActionBar с прогрессом + use-action-bar: true + + # Показывать Scoreboard (боковую панель) + use-sidebar: true + + # Формат прогресс-бара + progress-bar: + length: 20 + filled: "█" + empty: "░" + # Цвета в формате &#rrggbb + color-filled: "�FF00" + color-empty: "&#FF0000" diff --git a/src/main/resources/game.yml b/src/main/resources/game.yml new file mode 100644 index 0000000..34f4812 --- /dev/null +++ b/src/main/resources/game.yml @@ -0,0 +1,138 @@ +# ============================================ +# Mdbd Plugin - Игровой баланс +# ============================================ + +# Лобби +lobby: + # Минимум игроков для старта + min-players: 5 + + # Максимум игроков + max-players: 5 + + # Обратный отсчёт (секунд) + countdown-seconds: 60 + + # Задержка перед назначением ролей (секунд) + role-assign-delay: 5 + +# Генераторы +generators: + # Всего генераторов на карте + total-count: 7 + + # Сколько нужно починить для ворот + required-count: 5 + + # Время починки одного генератора (секунд) + repair-seconds: 80 + + # Скорость отката без чинильщика (%/сек) + regression-rate: 0.25 + + # Скорость отката после пинка (%/сек) + kick-regression-rate: 2.5 + + # Длительность отката после пинка (секунд) + kick-duration-seconds: 30 + +# Крюки +hooks: + # Длительность Фазы 1 (секунд) + stage1-seconds: 60 + + # Длительность Фазы 2 (секунд) + stage2-seconds: 60 + + # Интервал борьбы на Фазе 2 (секунд) + struggle-interval: 2 + + # Максимум крюков на одного выжившего + max-hooks: 3 + +# Скорости (% от нормальной) +movement: + # Киллер + killer: 115 + + # Киллер с выжившим + killer-carry: 92 + + # Выживший шагом + survivor-walk: 100 + + # Выживший спринт + survivor-sprint: 150 + + # Выживший в нокдауне (ползком) + survivor-crawl: 30 + + # Длительность истощения (секунд) + exhaustion-duration: 3 + + # Кулдаун истощения (секунд) + exhaustion-cooldown: 5 + +# Лечение +healing: + # Самолечение (секунд) + self-heal-seconds: 30 + + # Лечение другого (секунд) + other-heal-seconds: 16 + + # Бонус аптечки (0.5 = в 2 раза быстрее) + medkit-bonus: 0.5 + + # Прерывание при движении + interrupt-on-move: true + +# Киллер +killer: + # Кулдаун атаки (секунд) + attack-cooldown: 2.5 + + # Дальность атаки (блоков) + attack-range: 3.0 + + # Длительность оглушения паллетом (секунд) + pallet-stun-seconds: 2.5 + + # Время ломания паллета (секунд) + pallet-break-seconds: 3.0 + + # Радиус ужаса (блоков) + terror-radius: 32 + +# Окна +window: + # Быстрый волт выжившего (секунд) + vault-survivor-fast: 1.0 + + # Медленный волт выжившего (секунд) + vault-survivor-slow: 1.5 + + # Волт киллера (секунд) + vault-killer: 1.5 + + # Блокировка после 3 волтов подряд (секунд) + vault-block-seconds: 15 + +# Эндгейм +endgame: + # Время открытия ворот (секунд) + gate-open-seconds: 20 + + # Время до коллапса (секунд) + collapse-seconds: 120 + + # Открытие сундуков (секунд) + chest-open-seconds: 3 + +# Люк +hatch: + # Минимум живых для открытия люка + min-survivors-for-open: 1 + + # Условие: живых < починенных генераторов + require-more-gens-than-survivors: true diff --git a/src/main/resources/locations.yml b/src/main/resources/locations.yml new file mode 100644 index 0000000..7733a27 --- /dev/null +++ b/src/main/resources/locations.yml @@ -0,0 +1,59 @@ +# ============================================ +# Mdbd Plugin - Координаты объектов +# Устанавливайте через /dbdsetup set <тип> +# ============================================ + +# Лобби (спавн перед игрой) +lobby: + world: "world" + x: 0.0 + y: 100.0 + z: 0.0 + yaw: 0.0 + pitch: 0.0 + +# Генераторы (7 штук) +# Формат: "world,x,y,yaw,pitch" +generators: [] +# Пример: +# - "world,100.5,64.0,200.5,0.0,0.0" +# - "world,150.5,64.0,250.5,90.0,0.0" + +# Крюки (обычно 4-6) +hooks: [] +# Пример: +# - "world,120.5,65.0,180.5,0.0,0.0" + +# Паллеты (много) +pallets: [] +# Пример: +# - "world,110.5,64.0,190.5,0.0,0.0" + +# Окна (много) +windows: [] + +# Сундуки с лутом (3-4) +chests: [] + +# Тотемы (5) +totems: [] + +# Ворота выхода (2) +exitgates: [] + +# Спавн киллера (1 точка) +killer-spawn: [] + +# Спавны выживших (4 точки) +survivor-spawns: [] + +# ============================================ +# Команды для настройки: +# /dbdsetup set generator - Установить генератор +# /dbdsetup set hook - Установить крюк +# /dbdsetup set pallet - Установить паллет +# /dbdsetup set chest - Установить сундук +# /dbdsetup set totem - Установить тотем +# /dbdsetup set gate - Установить ворота +# /dbdsetup set lobby - Установить лобби +# ============================================ diff --git a/src/main/resources/messages.yml b/src/main/resources/messages.yml new file mode 100644 index 0000000..d866caf --- /dev/null +++ b/src/main/resources/messages.yml @@ -0,0 +1,119 @@ +# ============================================ +# Mdbd Plugin - Сообщения +# Поддерживаются цвета в формате &#rrggbb +# ============================================ + +# Префикс всех сообщений плагина +prefix: "&#FF6B00&l[DBD]&r " + +# Сообщения игры +game: + # Старт/конец + start: "�FF00Игра началась! Бегите от Киллера!" + end-victory-escape: "&#FFD700Выжившие сбежали! Победа!" + end-victory-killer: "&#DC143CКиллер победил!" + + # Ожидание + waiting: "&#FFFF00Ожидание игроков... (%s/%s)" + countdown: "&#FFA500До начала: %s секунд" + countdown-short: "&#FF0000%s..." + + # Роли + role-killer: "&#DC143CВы Киллер! Поймайте всех выживших." + role-survivor: "�CED1Вы Выживший! Почините генераторы и сбегите." + +# Генераторы +generator: + repair-start: "�CED1Вы начали чинить генератор..." + repair-stop: "WCEEBВы остановились." + repair-complete: "�FF00✓ Генератор активирован! (%s/%s)" + repair-progress: "&#FFD700Прогресс: %s%%" + + skillcheck-success: "�FF00Отлично! +%s%%" + skillcheck-super: "&#FFD700Великолепно! +%s%%" + skillcheck-fail: "&#FF0000✗ Провал! -%s%%" + + explosion: "&#FF4500⚠ Взрыв генератора!" + regression: "&#FF6347Генератор откатывается..." + kicked: "&#FF4500Киллер пнул генератор!" + +# Киллер +killer: + terror-near: "B0000Сердце колотится..." + terror-medium: "&#FF4500Опасно рядом..." + terror-far: "&#FFA500Киллер где-то рядом" + + chase-start: "&#FF0000⚠ Киллер преследует вас!" + chase-stop: "�FF00Вы ушли от погони." + + hit: "&#DC143CВы ранены! Ищите укрытие!" + down: "B0000Вы в нокдауне! Ползите!" + pickup: "󃕐Киллер поднял вас..." + hook: "B0082Вас повесили на крюк!" + +# Выжившие +survivor: + heal-self-start: "�FA9AЛечите себя..." + heal-self-complete: "�FF00Вылечены!" + heal-other-start: "�FA9AЛечите союзника..." + heal-other-complete: "�FF00Союзник вылечен!" + heal-interrupt: "&#FFD700Лечение прервано!" + + sprint-exhausted: "&#FF8C00Вы устали... (Истощение)" + sprint-ready: "�FF00Можно бежать!" + + pallet-drop: "&#DEB887Вы бросили паллет!" + pallet-stun: "&#FFD700Киллер оглушён! Уходите!" + + vault-fast: "�CED1Быстрый прыжок!" + vault-slow: "WCEEBМедленный прыжок..." + + rescue-start: "�CED1Спасаете с крюка..." + rescue-complete: "�FF00Союзник спасён!" + +# Крюки +hook: + stage1: "&#FFFF00Крюк: Фаза 1 — Не двигайтесь" + stage2: "&#FFA500Крюк: Фаза 2 — БОРИТЕСЬ!" + struggle-success: "�FF00Успех! Держитесь!" + struggle-fail: "&#FF0000Провал! Этап ускорен!" + sacrifice: "B0000☠ Вы жертвованы..." + +# Предметы +item: + found: "&#FFD700Найдено: %s" + + medkit-use: "�FA9AИспользуете аптечку..." + medkit-depleted: "&#FF6347Аптечка закончилась" + + flashlight-blind: "&#FFFF00Ослепили киллера! Уходите!" + flashlight-depleted: "&#FF6347Батарейка села" + + key-hatch: "�CED1Ключ открывает люк!" + map-reveal: "WCEEBОбъекты показаны на карте" + + chest-opening: "&#FFD700Открываете сундук..." + chest-found: "�FF00Нашли: %s" + +# Эндгейм +endgame: + gates-powered: "�FF00Ворота запитаны! Бегите!" + gates-opening: "&#FFD700Открываете ворота..." + + hatch-open: "B0082Люк открыт! Сбегите!" + hatch-escape: "�FF00✓ Вы сбежали через люк!" + + collapse-warning: "&#FF0000⚠ КОЛЛАПС ЧЕРЕЗ %s СЕК!" + collapse-start: "B0000КОЛЛАПС НАЧАЛСЯ! БЕГИТЕ!" + + escape: "�FF00✓ ПОБЕГ!" + +# Ошибки +error: + no-permission: "&#FF0000У вас нет прав!" + not-in-game: "&#FF6347Вы не в игре!" + already-in-game: "&#FF6347Вы уже в игре!" + game-full: "&#FF6347Игра заполнена!" + no-game: "&#FF6347Нет активной игры!" + not-survivor: "&#FF6347Только для выживших!" + not-killer: "&#FF6347Только для киллера!" diff --git a/src/main/resources/skillcheck.yml b/src/main/resources/skillcheck.yml new file mode 100644 index 0000000..74cde8e --- /dev/null +++ b/src/main/resources/skillcheck.yml @@ -0,0 +1,120 @@ +# ============================================ +# Mdbd Plugin - Настройки Skill Check (QTE) +# ============================================ + +# Цвета в формате &#rrggbb +colors: + # Зона успеха (зелёная) + zone-success: "�FF00" + + # Зона супер-успеха (золотая, бонус) + zone-super: "&#FFD700" + + # Стрелка (белая) + arrow: "&#FFFFFF" + + # Фон трека (тёмно-серый) + background: "񑘕" + + # Текст титра (жёлтый) + text-title: "&#FFFF00" + + # Подзаголовок (белый) + text-subtitle: "&#FFFFFF" + + # Цвет провала (красный) + fail: "&#FF0000" + +# Размеры зон (в градусах) +zones: + # Зона обычного успеха (±градусов от цели) + success-size: 15 + + # Зона супер-успеха (меньше = сложнее) + super-size: 5 + +# Вращение +rotation: + # Скорость вращения (оборотов в секунду) + speed: 3.0 + + # Направление: CLOCKWISE или COUNTER_CLOCKWISE + direction: "CLOCKWISE" + + # Случайное направление для каждого скиллчека + variation: true + + # Случайная начальная позиция + random-start: true + +# Тайминги +timing: + # Минимальный интервал между скиллчеками (в тиках, 20 = 1 сек) + min-interval: 80 + + # Максимальный интервал (в тиках) + max-interval: 200 + + # Время на реакцию (тиков после входа в зону) + reaction-window: 20 + + # Задержка перед показом скиллчека (тиков) + pre-delay: 5 + +# Награды и штрафы (в процентах от прогресса) +rewards: + # Обычный успех: +% к прогрессу + success-bonus: 5.0 + + # Супер-успех: +% к прогрессу + super-bonus: 10.0 + +penalties: + # Провал: -% от прогресса + fail-penalty: 10.0 + + # Радиус алерта киллера при провале (блоков) + fail-alert-range: 16 + + # Визуальный взрыв при провале + fail-explosion: true + + # Громкость звука взрыва (0.0 - 1.0) + explosion-volume: 0.8 + +# Визуальные эффекты +visual: + # Показывать трек движения + show-track: true + + # Показывать стрелку + show-arrow: true + + # Анимация при успехе + flash-on-success: true + + # Тряска экрана при провале + screenshake-on-fail: true + + # Альтернативный режим через BossBar (вместо Title) + use-boss-bar: false + +# Звуки +sounds: + # Звук при появлении скиллчека + appear: "BLOCK_NOTE_BLOCK_PLING" + appear-volume: 0.5 + + # Звук успеха + success: "ENTITY_PLAYER_LEVELUP" + success-volume: 0.6 + + # Звук супер-успеха + super: "ENTITY_PLAYER_LEVELUP" + super-volume: 1.0 + super-pitch: 1.5 + + # Звук провала + fail: "BLOCK_ANVIL_LAND" + fail-volume: 0.8 + fail-pitch: 0.8