Описание OvRandomTeleport: Данный плагин представляет из себя продвинутый плагин на рандомную телепортацию с абстрактными каналами для телепорта, которые можно настроить максимально гибко для максимального удобства использования.
На создание плагина натолкнула новость о том, что irandomteleport будет навсегда заброшен, а также то, что не весь его функционал был доступен на новейших версиях игры.
Функционал и особенности:
Возможность создавать множество каналов телепортации со своими функциями
Асинхронный поиск локации
3 режима телепортации - обычный, возле игроков и возле регионов worldguard
Кастомная команда для телепортации
Возможность устанавливать кулдауны до телепортации
Опциональный боссбар обратного отсчета телепортации для каждого канала
Возможность указывать отдельные действия до и после телепорта, а также во время обратного отсчета до телепортации для каждого канала
Опциональный запрет на движение, телепортацию, получение и нанесение урона для каждого канала
Блеклист и вайтлист блоков и биомов на которые канал может телепортировать игроков
Функция отключения телепорта в регионы worldguard и города towny для каждого канала
Телепорт на РТП при первом входе / попадании в пустоту / респавне опционально для каждого канала
Возможность устанавливать квадратную или круглую область допустимой телепортации
Поддержка разных измерений (обычный мир, незер, энд)
Опциональная цена на рандомную телепортацию
Поддержка PlaceholderAPI
Конфигурация плагина:
Code (Text):
# Основные настройки
main_settings:
# Форматирование текста.
# LEGACY - цвет через & и hex &#
# LEGACY_ADVANCED - улучшенный аналог legacy с поддержкой &## формата hex
# MINIMESSAGE - цвет через <цвет>
# MINIMESSAGE был добавлен в новых версиях (1.17+)
serializer: LEGACY
# Команда рандомной телепортации (указывается без /)
# (Работает только на Paper)
rtp_command: 'rtp'
# Алиасы к команде рандомной телепортации
rtp_aliases: ['randomteleport', 'ovrandomteleport']
# Название дефолтного канала.
# Указанный канал будет использован в качестве основного при вводе команды /rtp
# Если канал не указан - то игроку будет необходимо ввести имя канала вручную
default_channel: 'default'
# Сколько максимум игроков могут телепортироваться одновременно
# Выставляйте отталкиваясь от онлайна вашего сервера
max_teleporting: 30
# Включить ли поддержку PlaceholderAPI?
papi_support: true
# Отправлять ли анонимную статистику (советую не отключать)
enable_metrics: true
# Проверять ли на наличие обновлений (советую не отключать)
update_checker: true
# Настройки работы с прокси
proxy:
# Включена ли поддержка прокси
enabled: false
# Имя сервера в сети
server_id: 'server1'
# Каналы рандомной телепортации
# Вы можете создавать свои каналы, основываясь на уже заранее заготовленных в плагине
channels:
# Базовый канал (право на использование - rtp.channel.имя_канала т.е. в данном случае rtp.channel.default)
default:
# Имя файла, где будет располагаться настройка канала. (Данный файл должен присутствовать в папке channels)
# Если имя не указано - настройка осуществляется в самом конфиге (по аналогии с deluxemenus)
file: 'default.yml'
# Канал который будет телепортировать игрока рядом с другими игроками
# Дистанция телепортации варьируется, от 30 до 60 блоков от игрока
near:
# Вы можете вынести все настройки в этот конфиг, если вам так будет проще.
file: 'near.yml'
# Канал который будет телепортировать игрока рядом с регионами
# Дистанция телепортации варьируется, от 30 до 60 блоков от игрока
base:
file: 'base.yml'
# Сообщения плагина (сообщения от prefix до fail_to_find_location могут применяться к каналам)
# Формат хекса - &#IIIDDD
# Если вы хотите отключить сообщение - укажите ''
messages:
prefix: '&7&l(&5&lOvRandomTeleport&7&l) &6»&r'
# Сообщения ниже могут быть применены так же и к каналам
no_perms: '%prefix% &cУ вас не достаточно прав на использование данного канала.'
invalid_world: '%prefix% &fВы не можете использовать данный канал рандомной телепортации в этом мире.'
not_enough_players: '%prefix% &cНа сервере не достаточно игроков чтобы телепортироваться по данному каналу. Нужно: &6%required% игроков.'
not_enough_money: '%prefix% &cУ вас не достаточно денег чтобы телепортироваться по данному каналу. Стоимость: &6%required% монет.'
not_enough_hunger: '%prefix% &cУ вас не достаточно очков голода чтобы телепортироваться по данному каналу. Необходимо: &6%required%.'
not_enough_experience: '%prefix% &cУ вас не достаточно очков опыта чтобы телепортироваться по данному каналу. Необходимо: &6%required%.'
cooldown: '%prefix% &fВы еще не можете телепортироваться по данному каналу. Подождите еще &6%time%'
moved_on_teleport: '%prefix% &cВы двинулись! Телепортация отменена.'
teleported_on_teleport: '%prefix% &cВы телепортировались в процессе РТП! Телепортация отменена.'
damaged_on_teleport: '%prefix% &cВы получили урон! Телепортация отменена.'
damaged_other_on_teleport: '%prefix% &cВы нанесли урон! Телепортация отменена.'
fail_to_find_location: '%prefix% &6Не удалось подобрать необходимую локацию. Попробуйте снова позже!'
# Далее идут сообщения команды rtp и т.д.
incorrect_channel: '%prefix% &cУказанного канала рандомной телепортации не существует!'
channel_not_specified: '%prefix% &cВам необходимо указать канал рандомной телепортации!'
canceled: '%prefix% &aТелепортация отменена!'
too_much_teleporting: '%prefix% &cСейчас телепортируется слишком много игроков! Попробуйте позже.'
# Заполнители плейсхолдеров PlaceholderAPI
placeholders:
no_cooldown: '&aКулдаун отсутствует!'
no_value: '&cОтсутствует'
# Плейсхолдеры времени
time:
hours: ' ч. '
minutes: ' мин. '
seconds: ' сек. '
# Раздел для админских команд
admin:
reload: '%prefix% &aПлагин успешно перезагружен!'
unknown_argument: '%prefix% &cВы ввели недопустимы(й/е) аргумент(ы) к команде!'
player_not_found: '%prefix% &cУказанный игрок не найден!'
admin_help: |-
%prefix% Помощь по админ.командам.
&a/rtp admin reload &f- перезагрузить плагин
&a/rtp admin forceteleport <игрок> <канал> &8<force> &f- телепортировать игрока по указанному каналу
Code (Text):
# Название канала (используется в плейсхолдерах)
name: 'Стандартный'
# Режим работы канала
# DEFAULT - стандартный режим работы (просто телепортирует на рандомные координаты)
# NEAR_PLAYER - телепортирует игрока рядом с другими игроками (/rtp player проще говоря)
# NEAR_REGION - телепортирует игрока рядом с регионом worldguard (/rtp base проще говоря)
type: DEFAULT
# Миры в которых действует канал
# Если игрок телепортируется по данному каналу в одном из этих миров - телепорт будет именно в этом мире
active_worlds:
- 'world'
- 'world_nether'
- 'world_the_end'
# Должен ли канал телепортировать игрока в тот мир, который будет первым в списке active_worlds
# в случае если игрок пытается телепортироваться через него из другого мира? (полезно в случае, если канал должен вызываться из мира спавна например)
teleport_to_first_world: true
# На какой сервер в сети будет перемещать канал, если режим proxy включён
# Имена берутся из конфигурации прокси, однако в основном конфиге плагина также должны быть указаны корректные названия!
# Если указано '' или же режим proxy не включён - то это не будет иметь эффекта
server_to_move: ''
# Сколько игроков должно быть на сервере, чтобы по каналу можно было телепортироваться? (-1 чтобы отключить)
min_players_to_use: -1
# Сколько тиков игрок должен быть неуязвим после телепортации через канал RTP (-1 чтобы отключить)
invulnerable_after_teleport: 15
# Разрешить ли телепортироваться по каналу при помощи команды?
allow_in_command: true
# Разрешить ли обходить лимитёр максимального числа телепортов для этого канала?
# Может быть полезно для каналов со спецификацией void, чтобы игроки всегда могли телепортироваться по ним
bypass_max_teleport_limit: false
# Какая заготовка будет использована для дальнейших настроек канала? (Указывается в templates.yml)
# Используется, если какая-либо настройка не указывается в канале на прямую, но должна в нём присутствовать
# Если указано '' - то это не будет иметь эффекта
template: ''
# Отдельные спецификации канала
specifications:
# Телепортировать ли игрока на РТП при первом входе?
teleport_on_first_join: false
# Из каких миров должна работать телепортация на РТП из пустоты.
# Полезно использовать если нужен телепорт после падения в яму
# Если указано [] - не будет телепортировать при падении в пустоту
void_worlds: []
# Уровень пустоты. Если игрок опустится на данную высоту и void_worlds не пуст - он будет телепортирован.
# Если не указан - используется ванильное значение уровня пустоты для вашей версии. (0/-60)
void_level: 0
# Из каких миров должна работать телепортация на РТП при респавне.
# Принцип работы тот же, как у void_worlds
respawn_worlds: []
# Настройка цены телепортации по данному каналу
costs:
# Тип используемой валюты
# VAULT - будет использован vault api (предполагает наличие менеджера экономики, по типу EssentialsX или CMI)
# PLAYERPOINTS - будет использован апи плагина PlayerPoints
money_type: VAULT
# Цена телепортации в монетах (-1 чтобы отключить)
money_cost: -1
# Цена телепортации в единицах голода
hunger_cost: -1
# Цена телепортации в единицах очков опыта
experience_cost: -1
# Принцип выбора локации
location_generation_options:
# Форма заготовки для поиска локации
# SQUARE - прямоугольник. При нем min_x/z и max_x/z являются 2мя противоположными сторонами прямоугольника
# ROUND - круг. При нем min_x/z и max_x/z являются 2мя противоположными сторонами прямоугольника, через который будет построен круг (или овал), вписывающийся в данный прямоугольник
shape: SQUARE
# Фрмат генерации локации
# RECTANGULAR - мы строим одну геометрическую фигуру для генерации локации (строится фигура между max_x/z и min_x/z в зависимости от shape)
# RADIAL - строятся геометрические 2 фигуры, между которыми создаётся зона телепортации (строятся фигуры с максимальным max_x/z и минимальным min_x/z радиусами от center_x/z)
gen_format: RECTANGULAR
# Координаты
min_x: -1000
max_x: 1000
min_z: -1000
max_z: 1000
# Координаты при работе с форматом генерации RADIAL
center_x: 0
center_z: 0
# Координаты при работе с NEAR_<ЧТО-ТО>
# Какое может быть самое близкое и самое далёкое расстояние от точки локации исходного объекта
min_near_point_distance: 30
max_near_point_distance: 60
# Максимальное кол-во попыток найти локацию для телепорта (нужно, чтобы не застрять в бесконечном цикле поиска локации)
max_location_attempts: 50
# Ориентировка центра локации на игрока
# Вместо дефолтного center_x и center_z использует локацию игрока как центральную
player_oriented_center: false
# Настройки кулдаунов
cooldown:
# Дефолтный кулдаун для телепортации (-1 чтобы отключить)
default_cooldown: 60
# Кулдауны на телепортации в секундах для каждой группы (Поставьте {} чтобы отключить кулдауны для групп вообще, -1 чтобы отключить кулдаун для группы)
# Для корректной работы выставьте в конфиге LuckPerms vault-group-use-displaynames: false
group_cooldowns:
vip: 30
premium: 10
# Кулдаун до телепортации (-1 чтобы отключить)
default_pre_teleport_cooldown: 5
# Кулдауны до телепортации в секундах для каждой группы (Поставьте {} чтобы отключить кулдауны для групп вообще, -1 чтобы отключить кулдаун для группы)
pre_teleport_group_cooldowns:
vip: 1
# Если группа игрока не указана в списке, то будет браться кулдаун для самой последней группы из списка, вместо дефолтного
use_last_group_cooldown: false
# Действия при истечении кулдауна. (Поставьте [] чтобы отключить)
expire_actions:
- '[MESSAGE] &7&l(&5&lOvRandomTeleport&7&l) &6» &fКулдаун на рандомную телепортацию истёк!'
- '[SOUND] ENTITY_EXPERIENCE_ORB_PICKUP;1.0;1.0'
# Настройка боссбара обратного отсчета
# Не активен, если кулдаун до телепортации < 0
bossbar:
# Включен ли боссбар
enabled: true
# Настройки боссбара
# Доступные цвета боссбара: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/boss/BarColor.html
# Доступные стили боссбара: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/boss/BarStyle.html
title: '&fТелепортация через: &5%time%'
color: WHITE
style: SEGMENTED_12
# Должен ли прогресс боссбара быть плавным?
smooth_progress: false
# Настройка партиклов
particles:
# Настройка анимации до телепорта
# Не активна, если кулдаун до телепортации < 0
pre_teleport:
# Включены ли партиклы
enabled: false
# Анимация на выбор: BASIC, CAGE
animation: BASIC
# Нужно ли отправлять партиклы только игроку, который телепортируется?
send_only_to_player: true
# Какие будут партиклы в анимации
# Будут по порядку
id:
- FLAME
# Сколько будет изначальных точек отсчета для анимации
# Для BASIC - обозначает кол-во летающих вокруг игрока точек
# Для CAGE - обозначает кол-во точек окружности клетки
dots: 16
# Сколько будет линий анимации (используется только для CAGE)
lines: 8
# Сколько будет точек в линии анимации (используется только для CAGE)
dots_per_line: 8
# Как будут располагаться основные круги у клетки (используется только для CAGE)
# Указывается сверху вниз
circles_offset:
- '2.0'
- '0.0'
# На каком расстоянии от игрока будут появляться партиклы
radius: 1.25
# Как быстро должны разлетаться партиклы (0.0 чтобы они были статичными)
particle_speed: 0.0
# Какова будет скорость анимации
speed: 4.0
# Должна ли анимация быть инвертированной
# Против часовой, а не по часовой и не сверху вниз, а снизу вверх (в случае если jumping: false)
invert: false
# Должна ли анимация быть "прыгающей"
jumping: true
# Должна ли анимация приближаться к игроку? (invert не применяется к данному параметру)
move_near: true
# Настройка партиклов после телепорта
after_teleport:
# Включены ли партиклы
enabled: true
# Нужно ли отправлять партиклы только игроку, который телепортируется?
send_only_to_player: true
# Какой будет партикл
id: CLOUD
# Сколько их будет
count: 45
# На каком расстоянии от игрока будут появляться партиклы
radius: 1.25
# Как быстро должны разлетаться партиклы (0.0 чтобы они были статичными)
particle_speed: 0.0
# Запреты, которые накладываются на игрока перед телепортацией
# Не активны, если кулдаун до телепортации < 0
restrictions:
# Запрет движения до рандомного телепорта
move: true
# Запрет телепортации до рандомного телепорта (учитывается любой телепорт кроме плагинов)
teleport: true
# Запрет получения урона до рандомного телепорта
damage: true
# Запрет нанесения урона другим существам
damage_others: false
# Если эта функция включена - проверка урона будет применяться только если урон был причинен одним игроком другому
damage_check_only_players: true
# Различные исключения телепортации
avoid:
# Блоки на которе игрока нельзя/можно будет телепортировать
# Чтобы отключить проверку - поставьте list: []
blocks:
# Режим работы.
# true - на эти блоки нельзя телепортировать false - можно телепортировать только на эти блоки
blacklist: true
list:
- 'LAVA'
- 'WATER'
# Биомы в которых игрока нельзя/можно будет телепортировать
# Чтобы отключить проверку - поставьте list: []
biomes:
# Режим работы.
# true - в эти биомы нельзя телепортировать false - можно телепортировать только в эти биомы
blacklist: true
list:
- 'OCEAN'
# Блокировать ли телепортацию игрока в регионы WorldGuard
regions: true
# Блокировать ли телепортацию игрока в города Towny
towns: false
# Действия при телепортации
# Доступные действия:
# [MESSAGE] <сообщение> - отправить сообщение игроку (поддерживает PlaceholderAPI, если включён)
# [ACTIONBAR] <сообщение> - отправить сообщение игроку в экшн-бар
# [SOUND] <id>;<громкость>;<тон> - отправить звук игроку
# [TITLE] <тайтл>;<субтайтл>;<время_появления>;<время_показа>;<время_пропадания> - отправить тайтл игроку
# [EFFECT] <эффект>;<время>;<уровень> - выдать эффект игроку
# [CONSOLE] <команда> - выполнить команду от консоли
# [PLAYER] <команда> - выполнить команду от имени игрока (команда указывается без '/')
actions:
# Формат хекса - &#IIIDDD
# Доступные плейсхолдеры
# %player% - ник игрока
# %name% - имя канала телепортации
# %time% - время до телепортации
# %x% %y% %z% - координаты локации
# Для [MESSAGE] доступен ховертекст и клик-ивент. Указывать через hoverText={Текст-при-наведении} и clickEvent={айди-действия;действие-при-клике}
# Доступные действия для clickEvent: https://www.javadoc.io/static/net.kyori/adventure-api/4.17.0/net/kyori/adventure/text/event/ClickEvent.Action.html
# Также для [MESSAGE] доступны кнопки. Создаются при помощи button={Текст-кнопки;Действие1;Действие2}. Действия 1 и 2 - hoverText и clickEvent соответственно.
pre_teleport:
- '[MESSAGE] &7&l(&5&lOvRandomTeleport&7&l) &6» &fВы будете телепортированы через %time% Не двигайтесь и не получайте урона. &6(Отменить РТП - /rtp cancel)'
- '[SOUND] BLOCK_NOTE_BLOCK_PLING;1;1'
on_cooldown:
3:
- '[TITLE] &aТелепорт через &e3...;&r;5;50;10'
2:
- '[TITLE] &aТелепорт через &62...;&r;5;50;10'
1:
- '[TITLE] &aТелепорт через &c1...;&r;5;50;10'
after_teleport:
- '[MESSAGE] &7&l(&5&lOvRandomTeleport&7&l) &6» &aУспешная телепортация! &fВы телепортировались на координаты: &2%x% %y% %z%.'
- '[TITLE] &a&lУспех!;&fВы телепортировались на координаты: &2%x% %y% %z%.'
- '[SOUND] ENTITY_PLAYER_LEVELUP;1;1'
Разрешения: rtp.channel.<канал> - право телепортации по указанному каналу (.* для всех каналов)
rtp.bypasscooldown - право на обход кулдауна на ртп
rtp.admin - право на использование админ.команд
Команды: /rtp - главная команда плагина (можно изменить на свою)
/rtp <канал> - телепортироваться по указанному каналу
/rtp admin - команда администрации
/rtp admin reload - перезагрузить плагин
/rtp admin forcertp <ник> <канал> - телепортировать игрока по указанному каналу
Плейсхолдеры: %ovrtp_cooldown_<канал>_<субаргумент>% - возвращает оставшееся время кулдауна до телепорта. доступные субаргументы - hours, munites, seconds. Если субаргумент не указан - используется стандартный вывод времени как и в остальных сообщениях.
%ovrtp_hascooldown_<канал>% - возвращает то, есть ли кулдаун на указаный канал у игрока.
%ovrtp_cost_<канал>_<субаргумент>% - возвращает цену для указанного канала телепортации. Доступные субаргументы - money, hunger, exp. Если субаргумент не указан - ничего не выведется.