# Плагин: mcDuels (Дуэли)
# Версия: 1.8+
#
# Описание:
# Плагин добавляет дуэли.
#
# Зависимости: (плагины без которых этот работать не будет)
# - UtilM https://mcdev.su/resources/utilm.73/
#
# Опциональные зависимости: (плагины без которых не будет полного функционала, но работать будет)
# - PlaceholdersAPI https://www.spigotmc.org/resources/placeholderapi.6245/
#
# Плейсхоледры:
# %mcduels_rating% - Рейтинг игрока.
#
# Регулярные выражения.
# Плагин использует регулярные выражения в качестве инструмента конфигурации.
# Пожалуйста ознакомьтесь с примерами ниже, подобные выражения неоднократно
# использованы в конфигурации по умолчанию.
#
# В данном примере регулярное выражение распространяется на команду и все подкоманды.
#
# Протестировать регулярное выражение онлайн.
# https://regex101.com/
# Выбранные галочки:
# - (FLAVOR) Java 8
# - (FUNCTION) Match
#
# Регулярное выражение "(?i)^/afk(\\s+.*)?$" и его валидность:
# "/afk" = валидно
# "/afk " = валидно
# "/aFk" = валидно
# "/AFK" = валидно
# "/afk argument1" = валидно
# "/afk argument1 argument2 argument3" = валидно
# "afk argument1" = нет
# "/af" = нет
# "/afkargument1" = нет
#
# "(?i)" - Делает нечувствительным к регистру.
# "^" — Указывает на начало строки.
# "/afk" — Буквально соответствует строке /afk.
# "(\\s+.*)?" — Это группа, которая может присутствовать или отсутствовать. Она состоит из:
# "\\s+" — Один или несколько пробелов.
# ".*" — Любое количество (включая ноль) любых символов.
# "?" — Указывает, что вся группа может присутствовать ноль или один раз.
# "$" — Указывает на конец строки.
sample_regular_expression_1: "(?i)^/afk(\\s+.*)?$"
# В данном примере регулярное выражение распространяется только на команду без подкоманд/аргументов.
#
# Протестировать регулярное выражение онлайн.
# https://regex101.com/
# Выбранные галочки:
# - (FLAVOR) Java 8
# - (FUNCTION) Match
#
# Регулярное выражение "(?i)^/kit\\s*$" и его валидность:
# "/kit" = валидно
# "/kit " = валидно
# "/kiT" = валидно
# "/KIT" = валидно
# "/kit argument1" = нет
# "/kit argument1 argument2 argument3" = нет
# "kit argument1" = нет
# "/ki" = нет
# "/kitargument1" = нет
#
# "(?i)" - Делает нечувствительным к регистру.
# "^" — Указывает на начало строки.
# "/kit" — Буквально соответствует строке /kit.
# "\\s*" — 0 и более пробелов.
# "$" — Указывает на конец строки.
sample_regular_expression_2: "(?i)^/kit\\s*$"
# В данном примере регулярное выражение распространяется команду и её алиасу без подкоманд/аргументов.
#
# Протестировать регулярное выражение онлайн.
# https://regex101.com/
# Выбранные галочки:
# - (FLAVOR) Java 8
# - (FUNCTION) Match
#
# Регулярное выражение "(?i)^/(rtp|brtp)\\s*$" и его валидность:
# "/rtp" = валидно
# "/rtp " = валидно
# "/rtP" = валидно
# "/RTP" = валидно
# "/rtp argument1" = нет
# "/rtp argument1 argument2 argument3" = нет
# "rtp argument1" = нет
# "/rt" = нет
# "/rtpargument1" = нет
# "/brtp" = валидно
# "/brtp " = валидно
# "/brtP" = валидно
# "/BRTP" = валидно
# "/brtp argument1" = нет
# "/brtp argument1 argument2 argument3" = нет
# "brtp argument1" = нет
# "/brt" = нет
# "/brtpargument1" = нет
#
# "(?i)" - Делает нечувствительным к регистру.
# "^" — Указывает на начало строки.
# "/(rtp|brtp)" — Буквально соответствует строке /rtp или /brtp.
# "\\s*" — 0 и более пробелов.
# "$" — Указывает на конец строки.
sample_regular_expression_3: "(?i)^/(rtp|brtp)\\s*$"
message:
# Поддерживается вывод сообщений в мультистрочном формате.
reload_success:
- "&aПлагин перезагружен!"
permission_denied: "&cОтказано в доступе."
duel_ended: "&eДуэль завершена!"
player_defeated: "&eИгрок &b%player% &eпотерпел поражение!"
to_start_countdown: "&eДо начала дуэли осталось &b%to_start_seconds% &eсек."
start: "&eДуэль началась!"
loot_collecting_time: "&eВремя сбора лута!"
to_collect_loot_seconds: "&eДо телепортации на спавн &b%to_collect_loot_seconds% &eсек."
duel_accepted: "&aВызов принят!"
opponent_duel_accepted: "&b%player% &eпринял вызов!"
player_left_the_game_during_the_duel_search: "&cК сожалению &b%player% &cуже вышел из игры."
duel_request_sent: "&aВызов &e%player% &aотправлен!"
player_already_in_duel: "&cЭтот игрок уже на другой дуэле."
duel_search_was_interrupted: "&eПоиск дуэли прерван."
send_amount_to_chat: "&eОтправьте в чат сумму, например &b100 &eили например &b-100 &eчтобы уменьшить текущую."
cannot_use_commands_in_duel: "&cЭта команда недоступна во время дуэли."
duel_teleport_denied_for_non_participants: "&cТелепортация в место активной дуэли, если вы не участник, запрещена."
select_opponent_first: "&cСначала выберите оппонента."
no_available_arenas: "&cСейчас нет свободных арен чтобы начать провести дуэль, попробуйте позже."
personal_duel_request_sent: "&aВызов на дуэль отправлен игроку &e%player%&a. Подождите пока он(а) ознакомится..."
personal_duel_rejected: "&eВызов на дуэль отклонён."
personal_duel_accepted: "&aВызов на дуэль принят!"
personal_duel_request_rejected: "&eИгрок &b%player% &eотклонил(а) вызов на дуэль."
personal_duel_request_accepted: "&aИгрок &e%player% &aпринял(а) вызов на дуэль!"
player_is_offline: "&cЭтот игрок сейчас не онлайн."
help:
- "&e/mcduels reload &7- перезагрузить плагин"
- "&e/mcduels help &7- показать список команд"
- "&e/mcduels kit create &7- создать набор"
- "&e/mcduels kit list &7- список наборов"
permission:
reload: mcduels.reload # Разрешение на перезагрузку этого плагина.
kit_create: mcduels.kit.create # Разрешение на создание набора "/mcduels kit create".
kit_list: mcduels.kit.list # Разрешение на чтение и изменение списка "/mcduels kit list".
# Конфигурация базы данных.
#
# Примечание:
# Раскомментируйте нужный вариант, но закомментируйте все не нужные.
# По умолчаницию раскомментирован "Пример конфигурации если база данных H2 (просто локальный файл).", а
# все остальные закомментированы.
#
# Доступные типы баз данных на данный момент:
# - H2
# - MYSQL
database:
# Пример конфигурации если база данных H2 (просто локальный файл).
type: H2
# Пример конфигурации если база данных это MySQL сервер.
# type: MYSQL
# database: "database"
# host: "127.0.0.1"
# port: 3306
# username: "username"
# password: "password"
# Модуль разрешённых команд во время дуэли.
# Другие команды будут недоступны во время дуэли.
whitelist_command_module:
# Список регулярных выражений разрешённых во время дуэли команд.
# Задайте command_regular_expression_list: [] чтобы вообще запретить любые команды во время дуэли.
whitelist_command_regular_expression_list:
- "(?i)^/spawn(\\s+.*)?$" # Я не понимаю, что это? Пожалуйста посмотрите примеры регулярных выражений вверху этого файла.
- "(?i)^/afk\\s*$"
rating_module:
# ELO — это система рейтинга, которая показывает силу игрока
# и меняет рейтинг после дуэли в зависимости от ожидаемого результата.
# Основана на вероятности победы и K-factor, который задаёт скорость изменения рейтинга.
#
# Победил сильного -> много рейтинга.
# Победил слабого -> мало.
# Проиграл слабому -> много потерял.
#
# Например с "k_factor" равным 32 распределение рейтинга будет следующее:
# 300 vs 300
# ПОБЕДА ПОРАЖЕНИЕ
# 316 284
#
# 300 vs 3000
# ПОБЕДА ПОРАЖЕНИЕ
# 332 2968
type: ELO
# Исходный рейтинг игрока.
initial_rating: 500
# K-factor, задаёт скорость изменения рейтинга.
k_factor: 32
# Конфигурация возможных экономик.
# Валюты перечисленных экономик могут быть использованы в качестве ставки.
possible_economy_module:
# Список возможных валют.
possible_economy_list:
possible_economy_1: # ID возможной валюты.
# Тип экономики.
# VAULT - Vault https://www.spigotmc.org/resources/vault.34315/
# PLAYER_POINTS - PlayerPoints https://www.spigotmc.org/resources/playerpoints.80745/
# MC_ECONOMY - mcEconomy https://mcdev.su/resources/mceconomy-krosservernyye-mul-ti-valyuty.250/
economy_type: VAULT
# ID валюты, если эта экономика поддерживает мультивалюты.
# Если не поддерживает, оставьте произвольную строку.
currency_id: "dummy"
# Символ валюты. Используется в качестве плейсхолдера сообщений и т.д.
currency_sign: "&a$"
# Плейсхолдер который показывает баланс этой валюты.
# Необходим, чтобы показать баланс соперника.
balance_amount_placeholder: "%vault_eco_balance%"
# Визуализация валюты в виде предмета в меню выбора валют.
display_item:
# Используйте материалы версии ядра на котором запускаете плагин.
# Списки всех материалов для каждой версии:
# https://helpch.at/docs/1.8.8/org/bukkit/Material.html
# https://helpch.at/docs/x.x.x/org/bukkit/Material.html
# ...
material: EMERALD
# Название предмета.
display_name: "&a$"
# Описание предмета.
description:
- "&7После клика отправьте в чат сумму, например &a100"
- "&7или например &a-100 &7чтобы уменьшить текущую&7."
- ""
- "&fВаш баланс: &a$%your_player_balance%"
- "&fБаланс соперника: &a$%opponent_player_balance%"
- "&fВыбранная сумма: &a$%selected_amount%"
- ""
- "&eКликните чтобы ввести сумму!"
possible_economy_2:
economy_type: PLAYER_POINTS
currency_id: "dummy"
currency_sign: "&9PlayerPoints"
balance_amount_placeholder: "%playerpoints_points%"
display_item:
material: LAPIS_LAZULI
display_name: "&9PlayerPoints"
description:
- "&7После клика отправьте в чат сумму, например &9100&7."
- "&7Отправьте &9-100 &7чтобы уменьшить текущее значение&7."
- ""
- "&fВаш баланс: &9%your_player_balance%"
- "&fБаланс соперника: &9%opponent_player_balance%"
- "&fВыбранная сумма: &9%selected_amount%"
- ""
- "&eКликните чтобы ввести сумму!"
possible_economy_3:
economy_type: MC_ECONOMY
currency_id: "gold"
currency_sign: "&eЗ"
balance_amount_placeholder: "%mceconomy_currency_id_gold_balance%"
display_item:
material: GOLD_NUGGET
display_name: "&fmcEconomy (&eЗолото&f)"
description:
- "&7После клика отправьте в чат сумму, например &e100&7."
- "&7Отправьте &e-100 &7чтобы уменьшить текущее значение&7."
- ""
- "&fВаш баланс: &eЗ%your_player_balance%"
- "&fБаланс соперника: &eЗ%opponent_player_balance%"
- "&fВыбранная сумма: &eЗ%selected_amount%"
- ""
- "&eКликните чтобы ввести сумму!"
possible_economy_4:
economy_type: MC_ECONOMY
currency_id: "crystal"
currency_sign: "&bК"
balance_amount_placeholder: "%mceconomy_currency_id_crystal_balance%"
display_item:
material: PRISMARINE_CRYSTALS
display_name: "&fmcEconomy (&bКристаллы&f)"
description:
- "&7После клика отправьте в чат сумму, например &b100&7."
- "&7Отправьте &b-100 &7чтобы уменьшить текущее значение&7."
- ""
- "&fВаш баланс: &bК%your_player_balance%"
- "&fБаланс соперника: &bК%opponent_player_balance%"
- "&fВыбранная сумма: &bК%selected_amount%"
- ""
- "&eКликните чтобы ввести сумму!"
# Конфигурация визуализации списка выбранных валют.
selected_economy_amount_visualizer:
# Формат строки.
entry_format: "&f- &r%currency_sign%%currency_amount%"
# Ни одной валюты не выбрано.
empty_lore:
- "&fСтавка: &8Без ставки"
# Одна и более валют выбрано.
filled_lore:
- "&fСтавка:"
- "%selected_bet_description%"
# Конфигурация тайтла обратного отсчёта до начала дуэли.
to_start_countdown_title:
title: "&eДо начала"
subtitle: "&6&l%to_start_seconds%"
in: 0 # Тиков. (1 секунда = 20 тиков) Время появления.
stay: 30 # Тиков. (1 секунда = 20 тиков) Время отображения.
out: 10 # Тиков. (1 секунда = 20 тиков) Время исчезновения.
# Конфигурация тайтла начала дуэли.
start_title:
title: "&eНачали"
subtitle: "&6&lВ бой!"
in: 0
stay: 30
out: 10
# Конфигурация тайтла обратного отсчёта до телепортации на спавн. Через сколько закончится сбор лута.
to_collect_loot_seconds_countdown_title:
title: "&eНа спавн через"
subtitle: "&6&l%to_collect_loot_seconds%"
in: 0
stay: 30
out: 10
# Конфигурация тайтла сбора лута.
time_to_collect_loot_title:
title: "&eВремя сбора лута"
subtitle: "&6&lПоторопись!"
in: 0
stay: 60
out: 10
# Конфигурация тайтла конца дуэли.
duel_ended_title:
title: "&eДуэль завершена"
subtitle: "&6&lПриходи ещё!"
in: 0
stay: 60
out: 10
# Конфигурация звука обратного отсчёта.
countdown_sound:
# Используйте звуки версии ядра на котором запускаете плагин.
# Списки всех материалов для каждой версии:
# https://helpch.at/docs/1.8.8/org/bukkit/Sound.html
# https://helpch.at/docs/x.x.x/org/bukkit/Sound.html
# ...
# Начиная с версии 1.21.3, звуки задаются как в Minecraft команде "/playsound minecraft:<название звука>", например "/playsound minecraft:ui.button.click".
sound: ui.button.click
sound_category: MASTER # 1.12+
volume: 1.0 # Громкость (от 0.0 до 2.0).
pitch: 1.0 # Искажение (от 0.0 до 2.0).
# Конфигурация звука начала дуэли.
start_sound:
sound: entity.enderman.teleport
sound_category: MASTER
volume: 1.0
pitch: 1.0
# Конфигурация звука начала сбора лута.
time_to_collect_loot_sound:
sound: entity.player.levelup
sound_category: MASTER
volume: 1.0
pitch: 1.0
# Конфигурация звука конца дуэли.
end_sound:
sound: entity.enderman.teleport
sound_category: MASTER
volume: 1.0
pitch: 1.0
# Конфигурация плейсхолдеров дуэлей.
duel_module:
duel:
type:
default_duel: # Конфигурация "Обычной дуэли".
display_name: "&aОбычная дуэль" # Название.
time_to_start_seconds: 5 # (Сек.) Время до начала дуэли.
time_to_end_seconds: 300 # (Сек.) Продолжительность дуэли.
time_to_collect_loot_seconds: 10 # (Сек.) Продолжительность сбора лута после завершения дуэли.
start_showing_messages_before_end_seconds: 3 # (Сек.) Сколько секунд до телепортации на спавн показывать на экране в качестве обратного отсчёта.
duel_props: # Свойства.
keep_inventory: false # Сохранять инвентарь при смерти (не выпадает)?
keep_level: false # Сохранять опыт при смерти (не выпадает)?
rating: false # Дуэль на рейтинг?
rating_duel: # Конфигурация "Рейтинговой дуэли".
display_name: "&6Рейтинговая дуэль" # Название.
time_to_start_seconds: 5 # (Сек.) Время до начала дуэли.
time_to_end_seconds: 300 # (Сек.) Продолжительность дуэли.
time_to_collect_loot_seconds: 10 # (Сек.) Продолжительность сбора лута после завершения дуэли.
start_showing_messages_before_end_seconds: 3 # (Сек.) Сколько секунд до телепортации на спавн показывать на экране в качестве обратного отсчёта.
duel_props:
keep_inventory: true
keep_level: true
rating: true
arena_module: # Модуль арен.
arena_list: # Список арен.
arena_1: # ID арены.
display_name: "&aАрена 1" # Название арены.
# Место появления игрока после завершения дуэли.
lobby_spawn_location:
world: world
x: 16.5
y: 4
z: -4.5
yaw: 90 # Поворот головы (от -180 до 180).
pitch: 0 # Наклон головы (от -90 до 90).
# Область/регион арены, как в WorldEdit/WorldGuard.
region:
pos_1:
world: world
x: 12
y: 3
z: 0
pos_2:
world: world
x: 2
y: 7
z: -10
# Список слотов команд.
# Например 1v1 (2 команды), 1v1v1 (3 команды) или 2v2v2v2 (4 команды по 2 точки спавна).
# Не дайте себя запутать, оставьте 2 команды (2 стороны) чтобы эта арена подходила для обычного PVP 1 на 1.
# Больше команд предназначено для сражений где много команд, к этому моменту возможно это ещё не добавлено в этот плагин.
# Не является конфигурацией дуэли, является конфигурацией места её проведения.
# Одна и та же дуэль может проводиться на разных аренах подходищх для неё.
team_slot_list:
team_slot_1: # ID слота команды.
display_name: "&bСиние" # Название слота команды.
spawn_location_list: # Список точек спавна на арене участников этой команды.
spawn_location_1: # ID точки спавна.
world: world
x: 10.5
y: 4
z: -4.5
yaw: 90
pitch: 0
team_slot_2:
display_name: "&cКрасные"
spawn_location_list:
spawn_location_1:
world: world
x: 4.5
y: 4
z: -4.5
yaw: -90
pitch: 0
gui:
main:
title: "Дуэли"
size: 45
search_default_duel:
slot:
x: 3
y: 3
item:
# Тип материала.
# Используйте материалы версии ядра на котором запускаете плагин.
# Списки всех материалов для каждой версии:
# https://helpch.at/docs/1.8.8/org/bukkit/Material.html
# https://helpch.at/docs/x.x.x/org/bukkit/Material.html
# ...
material: WOODEN_SWORD
display_name: "&fПоиск обычной дуэли"
description:
- "&fКакие правила?"
- "&7- Одолей соперника и забирай его лут."
- ""
- "&fИвентарь выпадает: &cДа"
- ""
- "&eКликните чтобы начать поиск!"
search_rating_duel:
slot:
x: 5
y: 3
item:
material: STONE_SWORD
display_name: "&fПоиск рейтинговой дуэли"
description:
- "&fКак распределяется рейтинг?"
- "&7- Победил сильного, получил много рейтинга."
- "&7- Победил слабого, получил мало."
- "&7- Проиграл слабому, много потерял."
- ""
- "&fИвентарь выпадает: &aНет"
- "&fТекущий рейтинг: &6%mcduels_rating%"
- ""
- "&eКликните чтобы начать поиск!"
personal_duel:
slot:
x: 7
y: 3
item:
material: IRON_SWORD
display_name: "&fЛичная дуэль"
description:
- "&fНастрой дуэль под себя:"
- "&7- Выбор соперника."
- "&7- Ставка валюты."
- "&7- Продолжительность дуэли."
- "&7- Выпадение лута/опыта."
- "&7- Дуэль на рейтинг."
- ""
- "&eКликните чтобы открыть!"
search_duel:
title: "Поиск дуэли"
size: 45
search_progress:
# Конфигурация плейсхолдеров этой кнопки.
placeholder:
time_elapsed:
# Цвет цифр прошедшего времени поиска.
# Используйте цвета версии ядра на котором запускаете плагин.
# Списки всех цветов для каждой версии:
# https://helpch.at/docs/1.8.8/org/bukkit/ChatColor.html
# https://helpch.at/docs/x.x.x/org/bukkit/ChatColor.html
# ...
number: AQUA
abbreviation: YELLOW
slot:
x: 5
y: 3
item:
material: REDSTONE
display_name: "&fПоиск..."
description:
- "&7Пока это меню открыто, если другой"
- "&7игрок начнёт поиск дуэли этого типа"
- "&7оппонент определится и дуэль начнётся."
- ""
- "&fТип дуэли: &r%duel_type%"
- "&fВремя поиска: &r%time_elapsed%"
- ""
- "&eЗакройте чтобы прервать поиск!"
personal_duel:
title: "Личная дуэль"
size: 45
placeholder:
selected_opponent:
exist: "&e%opponent_player_name%"
empty: "&8Не выбран"
selected_opponent_description:
- "&fСоперник: %selected_opponent%"
selected_kit:
exist: "&e%kit_display_name%"
empty: "&8Без набора"
selected_kit_description:
- "&fНабор: %selected_kit%"
select_opponent:
slot:
x: 4
y: 3
item:
material: COMPASS
display_name: "&fВыбор соперника"
description:
- "%selected_opponent_description%"
- ""
- "&eКликните чтобы выбрать!"
bet:
slot:
x: 5
y: 2
item:
material: CHEST
display_name: "&fИзменить ставку"
description:
- "&7Оба участника дуэли вносят указанные"
- "&7инициатором суммы валют. В случае победы"
- "&7всё передаётся победителю."
- ""
- "%selected_bet_description%"
- ""
- "&6ЛКМ &eчтобы выбрать!"
- "&6ПКМ &eчтобы оставить не выбранным!"
kit:
slot:
x: 6
y: 3
item:
material: DIAMOND_CHESTPLATE
display_name: "&fНабор снаряжения (кит)"
description:
- "&7Если выбран набор снаряжения, то дуэль"
- "&7будет проходить именно с предметами набора."
- "&7Ваш инвентарь вернётся по звершению дуэли."
- ""
- "%selected_kit_description%"
- ""
- "&6ЛКМ &eчтобы выбрать!"
- "&6ПКМ &eчтобы оставить не выбранным!"
start_duel:
slot:
x: 7
y: 3
disabled_button:
material: GRAY_CONCRETE
display_name: "&fОтправить вызов на дуэль"
description:
- "&7Выберите соперника чтобы"
- "&7можно было отправить вызов."
active_button:
material: LIME_CONCRETE
display_name: "&fОтправить вызов на дуэль"
description:
- ""
- "&eКликните чтобы отправить вызов!"
personal_duel_select_opponent:
title: "Выбор соперника"
size: 45
opponent:
item:
display_name: "&f%player_name%"
description:
- "&7Выбрать этого игрока в"
- "&7качестве сопреника?"
- ""
- "&eКликните чтобы выбрать!"
personal_duel_select_bet:
title: "Ставка"
size: 45
personal_duel_select_kit:
title: "Выбор набора"
size: 45
personal_duel_request:
title: "Вызов на дуэль"
size: 45
info:
slot:
x: 5
y: 3
item:
material: PAPER
display_name: "&fУсловия дуэли"
description:
- "&fСоперник: &e%initiator_player_name%"
- ""
- "&7Оба участника дуэли вносят указанные"
- "&7инициатором суммы валют. В случае победы"
- "&7всё передаётся победителю."
- "%selected_bet_description%"
- ""
- "&7Если выбран набор снаряжения, то дуэль"
- "&7будет проходить именно с предметами набора."
- "&7Ваш инвентарь вернётся по звершению дуэли."
- "%selected_kit_description%"
cancel:
slot:
x: 3
y: 3
item:
material: RED_CONCRETE
display_name: "&fОтклонить"
description:
- ""
- "&eКликните чтобы отклонить вызов!"
accept:
slot:
x: 7
y: 3
item:
material: LIME_CONCRETE
display_name: "&fПринять"
description:
- "&7Дуэль начнётся немедленно."
- "&7Пройдёт согласно условиям."
- ""
- "&eКликните чтобы принять вызов!"