Vehicle
Обзор
Vehicle позволяет игрокам владеть пользовательским транспортом, вызывать его и управлять им: автомобили, лодки, летающие скакуны. Вы определяете тип транспорта один раз (его внешний вид, скорость, здоровье, топливо, бой и прогрессию), а у каждого игрока есть экземпляры этого типа с собственным уровнем, топливом, здоровьем, щитом и скином, сохраняемые в артефакте. Игрок вызывает транспорт из меню гаража или действием, едет на нём клавишами перемещения и убирает его обратно.
Транспорт состоит из двух частей. Невидимая сущность-носитель несёт физику и пассажира. К ней прикреплена визуальная часть: отображаемый предмет, ванильный моб, модель BetterModel или моб BTCMobs. Поэтому вы можете использовать простой предмет для недорогого транспорта или анимированную модель для флагманского.
Вождение, топливо, урон, способности и повышение уровня — всё это доступно TypeWriter: они запускают события, предоставляют факты, а способности выполняют любой список действий TypeWriter. Расширение работает на сборке BTC для TypeWriter и требует возможностей BTC Core.
Возможности
- Четыре типа перемещения —
GROUND,WATER,AMPHIBIOUSиAIR, у каждого свой носитель. - Четыре визуальных варианта —
display(предмет),vanilla(моб),bettermodelиbtcmobs, с моделью, определяемой для каждого игрока. - Топливо — бак, расход в секунду, принимаемые виды топлива и действие заправки.
- Здоровье и щит — удары сначала поглощаются щитом; при 0 здоровья транспорт уничтожается и должен быть отремонтирован.
- Уровни и характеристики — настраиваемая кривая опыта и бонус к характеристикам за уровень.
- Бой — атака левым кликом с дальностью, перезарядкой и затратой выносливости, заряд при удержании клавиши прыжка и необязательный урон от столкновений.
- Способности — активируемые способности с перезарядкой и затратой выносливости, выполняющие любые действия TypeWriter.
- Меню гаража — меню с пагинацией для транспорта игрока, построенное на раскладке GUI.
- Лимит владения — базовый лимит, повышаемый правом.
- События и факты — столкновение, пустой бак, повышение уровня, атака, попадание зарядом, уничтожение и исчерпание выносливости.
Установка
- Установите расширения BTCMobs и Basic (оба объявлены зависимостями), а также расширение GUI для меню гаража. См. BTCMobs.
- Установите PacketEvents. Без него управление отключено, а в логе пишется
PacketEvents not found! WASD steering will be disabled. - По желанию установите BetterModel, чтобы использовать визуальный вариант
bettermodel. - Поместите JAR-файл Vehicle в
plugins/Typewriter/extensions/и перезапустите сервер.
Начало работы
- В веб-панели TypeWriter откройте страницу static и добавьте артефакт Vehicle Storage.
- Добавьте одну запись Vehicle Config и задайте
storageравным артефакту. Без него данные транспорта не загружаются и не сохраняются, а в логе пишетсяAucun stockage designe. - Добавьте Vehicle Definition: выберите
movement(GROUND),visual(displayс материалом, напримерMINECART) и настройтеstats,fuel(добавьте предмет вallowedFuels) иcombat. - Добавьте действие Spawn Vehicle, ссылающееся на определение, и запускайте его командой, от NPC или события. Первый вызов выдаёт игроку новый транспорт этого типа, заправленный и с полным здоровьем, и сажает игрока на него.
- Для гаража добавьте Vehicle Garage Menu, построенное с помощью
layoutPool, затем запустите Open Vehicle Garage. - Добавьте Refill Vehicle Fuel и Repair Vehicle на заправке или у NPC гаража. Опубликуйте и проверьте.
Vehicle не регистрирует собственных команд. Вызывайте, убирайте и ремонтируйте через действия, меню гаража или записи команд TypeWriter.
Как это работает
Носитель зависит от movement: GROUND использует стойку для брони, перемещаемую сервером, WATER и AMPHIBIOUS используют лодку, которую клиент симулирует сам, а AIR использует счастливого гаста. Для лодок сервер не управляет: он проверяет каждый тик и возвращает транспорт назад, когда тот превышает maxSpeed, когда бак пуст или (для GROUND) когда он входит в жидкость.
Управление использует пакеты ввода игрока: вперёд, назад, влево, вправо, прыжок и приседание. Спешивание убирает транспорт (он исчезает, а данные сохраняются).
У экземпляра транспорта есть уровень, опыт, здоровье, щит, топливо и скин. Характеристики умножаются на 1 + statBonusPerLevel * (level - 1) (кроме гравитации). Опыт, необходимый для выхода с уровня, равен baseXp * level ^ xpGrowth. На maxLevel опыт перестаёт накапливаться.
Меню
Vehicle Garage Menu строится как любое меню GUI: layoutPool, mainLayoutId, необязательные views и baseMenuId для наследования общего шасси. Размещайте предметы со следующими типами кнопок (buttonType предмета):
| Тип кнопки | Поведение |
|---|---|
vehicle_button:VEHICLE_SLOT#<n> | Показывает n-й транспорт игрока (отсортированный по идентификатору экземпляра); клик вызывает его. Пусто, если у игрока их меньше. |
vehicle_button:VEHICLE_SPAWN | Вызывает активный транспорт. |
vehicle_button:VEHICLE_DESPAWN | Убирает транспорт, на котором игрок едет, и закрывает меню. |
vehicle_button:VEHICLE_INFO | Выводит в чат уровень, топливо и здоровье активного транспорта. |
vehicle_button:NAV_BACK | Возвращает в предыдущее меню. |
vehicle_button:NAV_CLOSE | Закрывает меню. |
vehicleDisplay задаёт вид слота транспорта: item, nameFormat и lore с токенами %name%, %level%, %max_level%, %fuel%, %max_fuel%, %health%, %max_health% и %shield%. Предмет, который вы размещаете для кнопки, сохраняет собственное название и описание, если их определяет страница.
Права
| Право | Что даёт |
|---|---|
typewriter.vehicle.limit.<n> | Повышает лимит владения на <n>, когда его считывает запись Vehicle Ownership Limit (учитывается наибольшее значение). |
Других прав расширение не определяет.
Плейсхолдеры
Два факта можно считывать как плейсхолдеры через TypeWriter: Vehicle Ownership Limit и Vehicles Owned Count, каждый возвращает число. Расширение не регистрирует собственных плейсхолдеров.
Записи
Записей: 25, сгенерированы из исходного кода расширения.
Действия9
- Activate Vehicle AbilityActivate Vehicle Ability
- Add Vehicle XPAdd Vehicle XP
- Open Vehicle GarageOpen Vehicle Garage
- Refill Vehicle FuelRefill Vehicle Fuel
- Repair VehicleRepair Vehicle
- Set Vehicle SkinSet Vehicle Skin
- Spawn VehicleSpawn Vehicle
- Vehicle AttackVehicle Attack
- Vehicle ChargeVehicle Charge
События7
- On Vehicle AttackOn Vehicle Attack
- On Vehicle Charge HitOn Vehicle Charge Hit
- On Vehicle CollisionOn Vehicle Collision
- On Vehicle DestroyedOn Vehicle Destroyed
- On Vehicle Fuel EmptyOn Vehicle Fuel Empty
- On Vehicle Level UpOn Vehicle Level Up
- On Vehicle Stamina DepleteOn Vehicle Stamina Deplete
Факты4
- Vehicle Charge Meter FactVehicle Charge Meter
- Vehicle LimitVehicle Ownership Limit
- Vehicle Owned CountVehicles Owned Count
- Vehicle Stamina FactVehicle Stamina
Артефакты1
- Vehicle StorageVehicle Storage Artifact
Манифесты4
- Vehicle AbilityVehicle Ability
- Vehicle ConfigVehicle Global Configuration
- Vehicle DefinitionVehicle Definition
- Vehicle Garage MenuVehicle Garage Menu
Устранение неполадок
После перезапуска ничего не сохраняется. У vehicle_config нет storage или он указывает на отсутствующий артефакт. В логе сообщается Aucun stockage designe dans 'vehicle_config'. Задайте артефакт в storage.
Транспорт не двигается по WASD. Отсутствует PacketEvents, поэтому управление отключено. Установите его и перезапустите.
Транспорт откатывается назад или не двигается. Сервер откатывает, когда транспорт движется быстрее stats.maxSpeed (блоков за тик), когда fuel равно 0 (и запускает On Vehicle Fuel Empty) или, для GROUND, когда он входит в воду или лаву. Увеличьте maxSpeed, заправьте транспорт или переключитесь на AMPHIBIOUS.
Ce vehicule n'est pas disponible pour le moment. Не удалось создать визуальную часть: идентификатор модели, которого нет в BetterModel, неизвестный mobId BTCMobs или материал display, не являющийся предметом. Проверьте в логе non spawne или visuel.
Вызов отклоняется сообщением о лимите. У игрока уже есть baseOwnershipLimit единиц транспорта (по умолчанию 1). Лимит учитывает права, только если вы создали запись Vehicle Ownership Limit; иначе действует только baseOwnershipLimit.
This vehicle is destroyed — repair it before summoning it again. Здоровье достигло 0. Выполните Repair Vehicle: оно расходует repair.amount предмета repair.item и восстанавливает healthPerRepair здоровья активного транспорта.
Способность ничего не делает. Она должна быть перечислена в abilities определения транспорта, а игрок должен управлять транспортом, иметь достаточно выносливости и не быть на перезарядке; каждый сбой отправляет сообщение из vehicle_config.