Vehicle
Visão geral
O Vehicle permite que os jogadores possuam, invoquem e conduzam veículos personalizados: carros, barcos, montarias voadoras. Você define um tipo de veículo uma vez (sua aparência, velocidade, vida, combustível, combate e progressão) e cada jogador possui instâncias dele, com nível, combustível, vida, escudo e skin próprios, salvos em um artifact. O jogador invoca um veículo pelo menu da garagem ou por uma ação, o conduz com as teclas de movimento e o guarda de volta.
O veículo é feito de duas partes. Uma entidade carrier invisível carrega a física e o passageiro. Um visual é anexado a ela: um item exibido, um mob vanilla, um modelo do BetterModel ou um mob do BTCMobs. Você pode, portanto, usar um item simples para um veículo barato ou um modelo animado para um veículo de destaque.
Condução, combustível, dano, habilidades e evolução de nível são todos expostos ao TypeWriter: disparam eventos, expõem facts, e as habilidades executam qualquer lista de ações do TypeWriter. Ele roda no build BTC do TypeWriter e exige recursos do BTC Core.
Recursos
- Quatro tipos de movimento —
GROUND,WATER,AMPHIBIOUSeAIR, cada um com seu próprio carrier. - Quatro visuais —
display(item),vanilla(mob),bettermodelebtcmobs, com o modelo resolvido por jogador. - Combustível — um tanque, uma taxa de consumo por segundo, itens de combustível aceitos e uma ação de reabastecimento.
- Vida e escudo — os golpes são absorvidos primeiro pelo escudo; com vida 0, o veículo é destruído e precisa ser reparado.
- Níveis e atributos — uma curva de XP configurável e um bônus de atributo por nível.
- Combate — ataque com clique esquerdo com alcance, cooldown e custo de stamina, uma carga ao segurar a tecla de salto e dano por colisão opcional.
- Habilidades — habilidades ativáveis com cooldown e custo de stamina que executam quaisquer ações do TypeWriter.
- Menu de garagem — um menu paginado dos veículos do jogador, construído sobre um layout GUI.
- Limite de posse — um limite base aumentado por permissão.
- Eventos e facts — colisão, combustível esgotado, subida de nível, ataque, acerto de carga, destruído e stamina esgotada.
Instalação
- Instale as extensões BTCMobs e Basic (ambas são dependências declaradas), além da extensão GUI para o menu da garagem. Veja BTCMobs.
- Instale o PacketEvents. Sem ele, a direção fica desativada e o log diz
PacketEvents not found! WASD steering will be disabled. - Opcionalmente, instale o BetterModel para usar o visual
bettermodel. - Coloque o JAR do Vehicle em
plugins/Typewriter/extensions/e reinicie o servidor.
Primeiros passos
- No painel web do TypeWriter, abra uma page static e adicione um artifact Vehicle Storage.
- Adicione uma entry Vehicle Config e defina
storagecomo o artifact. Sem isso, os dados dos veículos não são carregados nem salvos, e o log dizAucun stockage designe. - Adicione uma Vehicle Definition: escolha
movement(GROUND), umvisual(displaycom um material comoMINECART) e ajustestats,fuel(adicione um item aallowedFuels) ecombat. - Adicione uma ação Spawn Vehicle que referencie a definição e dispare-a a partir de um comando, de um NPC ou de um evento. A primeira chamada dá ao jogador um novo veículo desse tipo, com combustível e vida cheios, e o monta nele.
- Para uma garagem, adicione um Vehicle Garage Menu construído com
layoutPoole depois dispare Open Vehicle Garage. - Adicione Refill Vehicle Fuel e Repair Vehicle em um posto de gasolina ou em um NPC de garagem. Publique e teste.
O Vehicle não registra nenhum comando próprio. Invoque, guarde e repare por meio de ações, do menu da garagem ou de entries de comando do TypeWriter.
Como funciona
O carrier depende de movement: GROUND usa um armor stand movido pelo servidor, WATER e AMPHIBIOUS usam um barco, que o próprio cliente simula, e AIR usa um happy ghast. Nos barcos, o servidor não conduz: ele valida a cada tick e move o veículo de volta quando excede maxSpeed, quando o tanque está vazio ou (para GROUND) quando entra em um líquido.
A direção usa os pacotes de entrada do jogador: frente, trás, esquerda, direita, salto e agachar. Desmontar guarda o veículo (ele é removido e os dados são salvos).
Uma instância de veículo tem nível, XP, vida, escudo, combustível e skin. Os atributos são multiplicados por 1 + statBonusPerLevel * (level - 1) (exceto a gravidade). O XP necessário para sair de um nível é baseXp * level ^ xpGrowth. Em maxLevel, o XP para.
Menus
O Vehicle Garage Menu é construído como qualquer menu GUI: um layoutPool, um mainLayoutId, views opcionais e um baseMenuId para herdar um chassi compartilhado. Coloque itens com estes tipos de botão (o buttonType de um item):
| Tipo de botão | Comportamento |
|---|---|
vehicle_button:VEHICLE_SLOT#<n> | Mostra o n-ésimo veículo do jogador (ordenado por id de instância); um clique o invoca. Vazio se o jogador possui menos veículos. |
vehicle_button:VEHICLE_SPAWN | Invoca o veículo ativo. |
vehicle_button:VEHICLE_DESPAWN | Guarda o veículo montado e fecha o menu. |
vehicle_button:VEHICLE_INFO | Imprime no chat o nível, o combustível e a vida do veículo ativo. |
vehicle_button:NAV_BACK | Volta ao menu anterior. |
vehicle_button:NAV_CLOSE | Fecha o menu. |
vehicleDisplay define a aparência de um slot de veículo: um item, um nameFormat e uma lore, com os tokens %name%, %level%, %max_level%, %fuel%, %max_fuel%, %health%, %max_health% e %shield%. Um item que você coloca para um botão mantém o próprio nome e lore se a page os definir.
Permissões
| Permissão | Concede |
|---|---|
typewriter.vehicle.limit.<n> | Aumenta o limite de posse em <n> quando uma entry Vehicle Ownership Limit a lê (o maior valor conta). |
Nenhuma outra permissão é definida pela extensão.
Placeholders
Dois facts podem ser lidos como placeholders pelo TypeWriter: Vehicle Ownership Limit e Vehicles Owned Count, cada um retornando um número. A extensão não registra nenhum placeholder próprio.
Entries
25 entradas, geradas a partir do código-fonte da extensão.
Ações9
- 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
Eventos7
- 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
Fatos4
- Vehicle Charge Meter FactVehicle Charge Meter
- Vehicle LimitVehicle Ownership Limit
- Vehicle Owned CountVehicles Owned Count
- Vehicle Stamina FactVehicle Stamina
Artefatos1
- Vehicle StorageVehicle Storage Artifact
Manifestos4
- Vehicle AbilityVehicle Ability
- Vehicle ConfigVehicle Global Configuration
- Vehicle DefinitionVehicle Definition
- Vehicle Garage MenuVehicle Garage Menu
Solução de problemas
Nada é salvo após um reinício. vehicle_config não tem storage, ou aponta para um artifact inexistente. O log informa Aucun stockage designe dans 'vehicle_config'. Defina o artifact em storage.
O veículo não se move com WASD. O PacketEvents está ausente, então a direção fica desativada. Instale-o e reinicie.
O veículo volta de repente ou não se move. O servidor reverte quando o veículo se move mais rápido que stats.maxSpeed (blocos por tick), quando fuel é 0 (e dispara On Vehicle Fuel Empty) ou, em GROUND, quando ele entra em água ou lava. Aumente maxSpeed, reabasteça ou mude para AMPHIBIOUS.
Ce vehicule n'est pas disponible pour le moment. O visual não pôde ser criado: um id de modelo que não existe no BetterModel, um mobId do BTCMobs desconhecido ou um material de display que não é um item. Verifique no log non spawne ou visuel.
A invocação é recusada com a mensagem de limite. O jogador já possui baseOwnershipLimit veículos (1 por padrão). O limite só inclui permissões se você criou uma entry Vehicle Ownership Limit; caso contrário, apenas baseOwnershipLimit se aplica.
This vehicle is destroyed — repair it before summoning it again. A vida chegou a 0. Execute Repair Vehicle: ele consome repair.amount de repair.item e restaura healthPerRepair de vida no veículo ativo.
Uma habilidade não faz nada. Ela deve estar listada em abilities da definição do veículo, e o jogador deve estar dirigindo, ter stamina suficiente e estar fora de cooldown; cada falha envia uma mensagem de vehicle_config.