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

Создание арен

webapp_banner.jpg

Создание арен

isEnabled

Задаёт, включена ли арена.

KeyValuesDefault
isEnabledBooleantrue
Пример
isEnabled: true

arenaName

Задаёт название арены.

KeyValuesDefault
arenaNameStringDefault name
Пример
arenaName: Bedrock Arena

create_arena_name.jpg


corner1

Задаёт первый угол арены.

KeyValuesDefault
corner1Locationnone
Пример
corner1: my_arena_world,10,50,-10,0,0

Формат местоположения такой: world_name,x,y,z,yaw,pitch, где world_name — имя мира, x/y/z — координаты, yaw — горизонтальный поворот (0-360), а pitch — вертикальный поворот (от -90 до 90).

На этом изображении corner1 представлен зелёной шерстью, а corner2 представлен красной шерстью. Эта конфигурация обозначает область между ними как арену, представленную жёлтой шерстью.

create_arena_corner.jpg


corner2

Задаёт второй угол арены, должен находиться в противоположном углу от corner1. Эти два угла определяют границы пространства вашей арены.

KeyValuesDefault
corner2Locationnone
Пример
corner2: my_arena_world,-10,50,10,0,0

На этом изображении corner1 представлен зелёной шерстью, а corner2 представлен красной шерстью. Эта конфигурация обозначает область между ними как арену, представленную жёлтой шерстью.

create_arena_corner.jpg


startLocation

Задаёт стартовое местоположение арены.

KeyValuesDefault
startLocationLocationnone
Пример
startLocation: my_arena_world,1,50,1,0,0

exitLocation

Задаёт местоположение выхода с арены.

KeyValuesDefault
exitLocationLocationnone
Пример
exitLocation: my_world,1,50,1,0,0

waveCount

Задаёт количество волн на арене.

KeyValuesDefault
waveCountInteger0
Пример
waveCount: 10

delayBetweenWaves

Задаёт задержку между волнами в секундах.

KeyValuesDefault
delayBetweenWavesInteger0
Пример
delayBetweenWaves: 5

rawIntermissionWaves

Удваивает задержку между волнами для указанных в списке волн. Для этих волн задержка будет delayBetweenWaves * 2. Полезно, если вы хотите дать игрокам короткую передышку между определёнными волнами.

KeyValuesDefault
rawIntermissionWavesInteger Listnone
Пример
rawIntermissionWaves:
- '5'
- '10'
- '15'

spawnPoints

Задаёт места спавна для боссов арены.

KeyValuesDefault
spawnPointsString List [1]none
Пример
spawnPoints:
- name=north:location=my_arena_world,219.5,71,273.5
- name=south:location=my_arena_world,219.5,71,316.5
- name=west:location=my_arena_world,197.5,71,295.5
- name=east:location=my_arena_world,240.5,71,295.5
- name=center:location=my_arena_world,219.5,71,295.5

bossList

Задаёт список боссов, появляющихся во время волн арены. Арены EliteMobs поддерживают спавн Mythic Mobs на аренах.

KeyValuesDefault
bossListString List [2]none
Пример
bossList:
- wave=1:spawnPoint=north:boss=my_boss_wave_1.yml
- wave=1:spawnPoint=south:boss=my_boss_wave_1.yml
- wave=2:spawnPoint=center:boss=my_mythicmobs_boss:mythicmob=true:level=10

В этом примере на волне 1 заспавнится один босс в точке спавна north и один босс в точке спавна south. Затем, на волне 2, в центральной точке заспавнится mythic-босс 10-го уровня.

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


rawArenaReward

Задаёт награды, выдаваемые в конце волн.

Примечание: в исходном коде это поле может также упоминаться как rawArenaRewards (во множественном числе).

KeyValuesDefault
rawArenaRewardУниверсальная таблица добычи EliteMobsnone
Пример
rawArenaReward:
- filename=enchanted_book_damage_all.yml:wave=5:chance=0.25
- filename=elite_scrap_tiny.yml:wave=1:chance=0.5:amount=5
- currencyAmount=3:wave=3
- level=5:filename=summon_merchant_scroll.yml:wave=5
- filename=magmaguys_toothpick.yml:itemlevel=10:wave=10:chance=0.95

minimumPlayerCount

Задаёт минимальное количество игроков, которое должно быть на арене перед началом.

KeyValuesDefault
minimumPlayerCountInteger1
Пример
minimumPlayerCount: 1

maximumPlayerCount

Задаёт максимальное количество игроков, которое может быть на арене.

KeyValuesDefault
maximumPlayerCountInteger0
Пример
maximumPlayerCount: 100

arenaMessages

Задаёт сообщения, которые отображаются между волнами.

KeyValuesDefault
arenaMessagesОсобое [3]none
Пример
arenaMessages:
- wave=1:message="&a[Arena Announcer] &fTime for wave one!"
- wave=2:message="&a[Arena Announcer] &fWow, wave two already."

create_arena_messages.jpg


cylindricalArena

Задаёт, использует ли арена цилиндрическую форму (по умолчанию — параллелепипед).

KeyValuesDefault
cylindricalArenaBooleanfalse
Пример
cylindricalArena: false

permission

Задаёт право, необходимое для использования арены.

KeyValuesDefault
permissionStringnone
Пример
permission: mypermission.arena

teleportLocation

Задаёт, куда должны телепортироваться игроки после взаимодействия с NPC арены. Эта настройка обычно используется для телепортации игроков в выделенную зону-лобби арены, где они могут начать испытание арены или подождать, пока другие игроки пройдут арену.

KeyValuesDefault
teleportLocationLocationnone
Пример
teleportLocation: my_arena_world,10,50,10,0,0

Особое [1]

Точки спавна: используют следующий формат: name=pointName:location=world_name,x,y,z.

Особое [2]

Список боссов: использует следующий формат: wave=x:spawnPoint=Y:boss=bossfilename.yml.

Особое [3]

Сообщения арены: используют следующий формат: wave=X:message=ваше сообщение здесь.

Пример конфигурации арены
isEnabled: true
arenaName: Example Arena
corner1: my_arena_world,0,0,0,0,0
corner2: my_arena_world,50,50,50,0,0
startLocation: my_arena_world,25,0,25,0,0
exitLocation: my_minecraft_world,234,44,245,0,0
waveCount: 5
delayBetweenWaves: 5
spawnPoints:
- name=north:location=my_arena_world,40.5,0,0
- name=south:location=my_arena_world,10.5,0,0
- name=west:location=my_arena_world,0,0,40.5
- name=east:location=my_arena_world,0,0,10.5
- name=center:location=my_arena_world,25.5,0,25.5
bossList:
- wave=1:spawnPoint=north:boss=example_arena_wave_1_mob.yml
- wave=1:spawnPoint=center:boss=example_arena_wave_1_mob.yml
- wave=1:spawnPoint=south:boss=example_arena_wave_1_mob.yml
- wave=2:spawnPoint=center:boss=example_arena_wave_2_mob.yml
- wave=3:spawnPoint=east:boss=example_arena_wave_3_mob.yml
- wave=3:spawnPoint=west:boss=example_arena_wave_3_mob.yml
- wave=4:spawnPoint=center:boss=example_arena_wave_4_mob.yml
- wave=4:spawnPoint=center:boss=example_arena_wave_4_mob.yml
- wave=5:spawnPoint=center:boss=example_arena_wave_5_mob.yml
- wave=5:spawnPoint=south:boss=example_arena_wave_5_mob.yml
- wave=5:spawnPoint=west:boss=example_arena_wave_5_mob.yml
rawArenaReward:
- currencyAmount=5:wave=1
- currencyAmount=10:wave=2
- currencyAmount=15:wave=3
- currencyAmount=20:wave=4
- currencyAmount=25:wave=5
- filename=magmaguys_toothpick.yml:itemlevel=5:wave=5:chance=0.5
minimumPlayerCount: 1
maximumPlayerCount: 3
arenaMessages:
- wave=1:message=&d[Arena NPC] &fWow! Wave 1!
- wave=2:message=&d[Arena NPC] &fAmazing it is wave 2!
- wave=3:message=&d[Arena NPC] &fWave 3 is now on!
- wave=4:message=&d[Arena NPC] &fWave 4 already!
- wave=5:message=&d[Arena NPC] &fWell it is all over after this one.
cylindricalArena: false
permission: arena.mypermission
Разбор примера

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

Сначала арена включается с помощью isEnabled, и мы видим, что она называется Example Arena благодаря настройке arenaName. Название будет показано, когда вы взаимодействуете с NPC арены (о том, как создать NPC арены, мы поговорим ниже), который позволит игрокам присоединиться к арене. corner1 и corner2 определяют размер арены. Эти углы должны находиться на противоположных сторонах друг от друга в области, которую вы планируете использовать для арены.

startLocation — это место, где игроки заспавнятся при присоединении к арене, в примере это будет центр арены в мире my_arena_world. exitLocation — это место, куда игроки будут телепортированы после провала или завершения арены. В этом случае это будет мир my_minecraft_world и координаты из примера.

waveCount просто задаёт количество волн, которое продлится арена. В этом случае это 5 волн. Если игрокам удастся пережить все 5 волн, они смогли пережить арену. delayBetweenWaves задаёт количество секунд до начала следующей волны. В нашем примере у игроков будет 5 секунд на подготовку до начала следующей волны.

spawnPoints задаёт места, где могут спавниться наши мобы. Мы можем создать сколько угодно точек и назвать их как угодно. В примере мы решили создать 5 точек спавна и назвать их north, south, center, east и west.

bossList — это место, где мы определяем, какой босс должен заспавниться на какой волне и в каком месте. В примере на волне 1 заспавнятся 3 босса из точек спавна, которые мы назвали north, center и south. Все три настроены на использование одного и того же файла босса, но мы могли бы использовать разные файлы боссов для каждого.

rawArenaReward задаёт награды, которые будут выданы после того, как игрок переживёт/пройдёт волну. Как мы видим в примере, за прохождение волны 1 игрок получит 5 элитных монет. Если ему удастся пережить остальные волны и затем пройти волну 5, он будет вознаграждён 25 элитными монетами и 50%-ным шансом получить MagmaGuy's Toothpick 5-го уровня.

minimumPlayerCount задаёт минимальное необходимое количество игроков для старта арены. В нашем примере эта настройка равна 1, поэтому для старта арены нужен только один игрок. maximumPlayerCount задаёт максимальное количество игроков, которые могут участвовать в арене. В нашем примере эта настройка равна 3, то есть если более 3 игроков попытаются участвовать в арене, арена не начнётся, пока игроков не станет 3 или меньше.

arenaMessages позволяет добавить немного атмосферного текста, который будет отображаться в чате в начале заданных волн. В нашем примере мы решили показывать короткое сообщение в начале каждой волны. Мы также решили включить имя NPC в начало каждого сообщения, создавая иллюзию, что текст — это произнесённая реплика ведущего (мастера арены).

cylindricalArena — эта настройка позволяет переключить, должна ли заданная нами через corner1 и corner2 область быть цилиндрической формы вместо параллелепипеда. В нашем примере мы установили её в false, то есть пример арены имеет форму параллелепипеда.

permission позволяет задать право, которое игрокам нужно иметь, чтобы присоединиться к арене / начать её. В нашем примере игрокам понадобится право arena.mypermission, чтобы пользоваться ареной.

Создание NPC арены

isEnabled

Задаёт, включён ли NPC.

KeyValuesDefault
isEnabledBooleantrue
Пример
isEnabled: true

name

Задаёт отображаемое имя NPC.

KeyValuesDefault
nameStringnone
Пример
name: "&aGladius"

create_arena_npc_name.jpg


role

Задаёт отображение роли под именем NPC.

KeyValuesDefault
roleStringnone
Пример
role: "&c<Arena Master>"

create_arena_npc_role.jpg


profession

Задаёт профессию NPC из Minecraft.

KeyValuesDefault
professionProfessionNITWIT
Пример
profession: ARMORER

Будет переопределена, если используется disguise.

create_arena_npc_profession.jpg


spawnLocation

Задаёт местоположение спавна NPC.

KeyValuesDefault
spawnLocationLocationnone
Пример
spawnLocation: my_world,1.5,50,1.5,-108,0

spawnLocations

Задаёт дополнительные местоположения спавна для NPC. Это позволяет одной конфигурации NPC спавниться в нескольких местах.

KeyValuesDefault
spawnLocationsString Listnone
Пример
spawnLocations:
- my_world,1.5,50,1.5,-108,0
- my_world,100.5,50,50.5,0,0

greetings

Задаёт приветственный диалог для NPC.

KeyValuesDefault
greetingsString Listnone
Пример
greetings:
- Welcome to the Arena!
- The Arena welcomes you!

create_arena_npc_greetings.jpg


dialog

Задаёт диалог при взаимодействии игроков с NPC.

KeyValuesDefault
dialogString Listnone
Пример
dialog:
- Ready for a challenge?
- Face the Arena?

create_arena_npc_dialog.jpg


farewell

Задаёт прощальный диалог для NPC, отображаемый, когда игрок уходит.

KeyValuesDefault
farewellString Listnone
Пример
farewell:
- Bye.
- Return with your shield, or on it!

create_arena_npc_farewell.jpg

Если строка слишком длинная, вы можете использовать \n, чтобы разделить строку на несколько строк.

farewell:
- Bye.
- Return with your\nshield, or on it!

create_arena_npc_lines.jpg


canTalk

Задаёт, может ли NPC разговаривать с игроками.

KeyValuesDefault
canTalkBooleantrue
Пример
canTalk: true

activationRadius

Задаёт радиус, в котором NPC должен начать говорить.

KeyValuesDefault
activationRadiusDouble3.0
Пример
activationRadius: 3.0

timeout

Задаёт таймаут для NPC в секундах. Когда задан, NPC исчезнет по истечении указанного времени.

KeyValuesDefault
timeoutDouble0
Пример
timeout: 60

interactionType

Задаёт тип взаимодействия, которое будет выполнять NPC.

KeyValuesDefault
interactionTypeОсобое [4]NONE
Пример
interactionType: ARENA_MASTER

disguise

Задаёт кастомную маскировку NPC.

KeyValuesDefault
disguiseDisguisenone
Пример
disguise: ZOMBIE

create_arena_npc_disguise.jpg


customDisguiseData

Задаёт данные кастомной маскировки для маскировки LibsDisguises. Это позволяет детально настраивать маскировку сверх базовой настройки disguise.

KeyValuesDefault
customDisguiseDataStringnone
Пример
customDisguiseData: player MHF_Pig

customModel

Задаёт кастомную модель для NPC. Требует установленного и настроенного валидного плагина кастомных моделей.

KeyValuesDefault
customModelStringnone
Пример
customModel: my_model

arena

Задаёт, на какую арену будут телепортированы игроки.

KeyValuesDefault
arenaFilenamenone
Пример
arena: my_arena.yml

command

Задаёт команду, которую NPC выполнит при взаимодействии. Требует, чтобы interactionType был установлен в COMMAND.

KeyValuesDefault
commandStringnone
Пример
command: say Hello $player

questFileName

Задаёт имена файлов заданий для NPC. Требует, чтобы interactionType был установлен в CUSTOM_QUEST_GIVER.

KeyValuesDefault
questFileNameString Listnone
Пример
questFileName:
- my_quest_1.yml
- my_quest_2.yml

noPreviousLocationMessage

Когда interactionType установлен в TELEPORT_BACK, это задаёт сообщение, отправляемое, если NPC не может найти предыдущее местоположение для телепортации игрока.

KeyValuesDefault
noPreviousLocationMessageStringnone
Пример
noPreviousLocationMessage: '&cCouldn''t find a previous location!'

instanced

Задаёт, должен ли NPC быть инстансовым. Используется для NPC внутри инстансовых подземелий.

KeyValuesDefault
instancedBooleanfalse
Пример
instanced: false

scale

Задаёт масштаб (размер) NPC.

KeyValuesDefault
scaleDouble1.0
Пример
scale: 1.0

syncMovement

Задаёт, должно ли движение NPC синхронизироваться с сервером.

KeyValuesDefault
syncMovementBooleantrue
Пример
syncMovement: true

Пример конфигурации арены
isEnabled: true
name: Example NPC
role: <Arena Master>
profession: ARMORER
spawnLocation: my_minecraft_world,233,44,245,0,0
greetings:
- Welcome to the Arena!
dialog:
- Ready to enter the Arena?
farewell:
- Bye!
canTalk: true
activationRadius: 3.0
interactionType: ARENA_MASTER
disguise: ZOMBIE
arena: example_arena.yml

В этом примере показан базовый NPC арены, который заспавнится в my_minecraft_world с маскировкой под зомби. Игроки могут взаимодействовать с этим NPC, чтобы бросить вызов Example Arena.

Особое [4]

Ниже приведён список допустимых типов взаимодействия NPC:

TypeDescription
GUILD_GREETERОткрывает меню гильдии авантюристов
CHATПравый клик перебирает реплики dialog
CUSTOM_SHOPОткрывает меню кастомного магазина
PROCEDURALLY_GENERATED_SHOPОткрывает процедурно сгенерированный магазин
BARОткрывает меню бара
ARENAНичего не делает. Используйте ARENA_MASTER вместо этого.
QUEST_GIVERОткрывает меню процедурно сгенерированных заданий
CUSTOM_QUEST_GIVERОткрывает меню заданий для конкретного задания, заданного в questFileName
NONEБез взаимодействий
SELLОткрывает меню продажи
TELEPORT_BACKТелепортирует игроков обратно в последнее местоположение в мире, не относящемся к elitemobs, где они были
SCRAPPERОткрывает меню утилизации
SMELTERУСТАРЕЛО — функция удалена, не используйте
REPAIRMANОткрывает меню ремонта
ENHANCERУСТАРЕЛО — функция удалена, не используйте
REFINERУСТАРЕЛО — функция удалена, не используйте
UNBINDERОткрывает меню развязывания
ARENA_MASTERОткрывает меню арены для арены, заданной в arena
COMMANDВыполняет команду, заданную в command
ENCHANTERОткрывает меню зачарования
SCROLL_APPLIERОткрывает меню применения свитков
ARROW_SHOPОткрывает меню магазина стрел
GAMBLING_BLACKJACKОткрывает азартную игру в блэкджек
GAMBLING_COINFLIPОткрывает азартную игру в подбрасывание монеты
GAMBLING_SLOTSОткрывает азартную игру в слоты
GAMBLING_HIGHERLOWERОткрывает азартную игру «больше/меньше»