Vehicle
Descripción general
Vehicle permite a los jugadores poseer, invocar y conducir vehículos personalizados: coches, barcos, monturas voladoras. Defines un tipo de vehículo una sola vez (su aspecto, velocidad, salud, combustible, combate y progresión) y cada jugador posee instancias de él, con su propio nivel, combustible, salud, escudo y skin, guardadas en un artefacto. Un jugador invoca un vehículo desde el menú del garaje o mediante una acción, lo conduce con las teclas de movimiento y lo guarda de nuevo.
El vehículo se compone de dos partes. Una entidad portadora invisible lleva la física y al pasajero. A ella se acopla un visual: un objeto mostrado, un mob vanilla, un modelo de BetterModel o un mob de BTCMobs. Por tanto, puedes usar un objeto sencillo para un vehículo barato o un modelo animado para uno insignia.
La conducción, el combustible, el daño, las habilidades y la subida de nivel se exponen a TypeWriter: disparan eventos, exponen hechos y las habilidades ejecutan cualquier lista de acciones de TypeWriter. Funciona con la versión BTC de TypeWriter y requiere funciones de BTC Core.
Características
- Cuatro tipos de movimiento:
GROUND,WATER,AMPHIBIOUSyAIR, cada uno con su propia portadora. - Cuatro visuales:
display(objeto),vanilla(mob),bettermodelybtcmobs, con el modelo resuelto por jugador. - Combustible: un depósito, un ritmo de consumo por segundo, objetos de combustible aceptados y una acción de repostaje.
- Salud y escudo: los golpes los absorbe primero el escudo; con 0 de salud el vehículo se destruye y debe repararse.
- Niveles y estadísticas: una curva de XP configurable y una bonificación de estadísticas por nivel.
- Combate: ataque con clic izquierdo con alcance, cooldown y coste de resistencia, una carga al mantener pulsada la tecla de salto y daño opcional por colisión.
- Habilidades: habilidades activables con cooldown y coste de resistencia que ejecutan cualquier acción de TypeWriter.
- Menú de garaje: un menú paginado con los vehículos del jugador, construido sobre un layout de GUI.
- Límite de propiedad: un límite base que se eleva mediante permisos.
- Eventos y hechos: colisión, combustible agotado, subida de nivel, ataque, impacto de carga, destruido y resistencia agotada.
Instalación
- Instala las extensiones BTCMobs y Basic (ambas son dependencias declaradas), además de la extensión GUI para el menú del garaje. Consulta BTCMobs.
- Instala PacketEvents. Sin él, la dirección está desactivada y el registro dice
PacketEvents not found! WASD steering will be disabled. - Opcionalmente, instala BetterModel para usar el visual
bettermodel. - Coloca el JAR de Vehicle en
plugins/Typewriter/extensions/y reinicia el servidor.
Primeros pasos
- En el panel web de TypeWriter, abre una página estática y añade un artefacto Vehicle Storage.
- Añade una entrada Vehicle Config y establece
storageen el artefacto. Sin ella, los datos de los vehículos no se cargan ni se guardan, y el registro diceAucun stockage designe. - Añade una Vehicle Definition: elige
movement(GROUND), unvisual(displaycon un material comoMINECART) y ajustastats,fuel(añade un objeto aallowedFuels) ycombat. - Añade una acción Spawn Vehicle que haga referencia a la definición y actívala desde un comando, un NPC o un evento. La primera llamada da al jugador un vehículo nuevo de este tipo, lleno de combustible y de salud, y lo monta en él.
- Para un garaje, añade un Vehicle Garage Menu construido con
layoutPooly activa después Open Vehicle Garage. - Añade Refill Vehicle Fuel y Repair Vehicle en una gasolinera o en un NPC de garaje. Publica y prueba.
Vehicle no registra ningún comando propio. Invoca, guarda y repara mediante acciones, el menú del garaje o entradas de comando de TypeWriter.
Cómo funciona
La portadora depende de movement: GROUND usa un soporte de armadura movido por el servidor, WATER y AMPHIBIOUS usan un bote, que el cliente simula por sí mismo, y AIR usa un happy ghast. En los botes, el servidor no conduce: valida cada tick y devuelve el vehículo atrás cuando supera maxSpeed, cuando el depósito está vacío o (en GROUND) cuando entra en un líquido.
La dirección usa los paquetes de entrada del jugador: adelante, atrás, izquierda, derecha, salto y agacharse. Al desmontar, el vehículo se guarda (se elimina del mundo y se guardan los datos).
Una instancia de vehículo tiene un nivel, XP, salud, escudo, combustible y skin. Las estadísticas se multiplican por 1 + statBonusPerLevel * (level - 1) (no la gravedad). El XP necesario para salir de un nivel es baseXp * level ^ xpGrowth. En maxLevel el XP se detiene.
Menús
Vehicle Garage Menu se construye como cualquier menú de GUI: un layoutPool, un mainLayoutId, views opcionales y un baseMenuId para heredar un chasis compartido. Coloca objetos con estos tipos de botón (el buttonType de un objeto):
| Tipo de botón | Comportamiento |
|---|---|
vehicle_button:VEHICLE_SLOT#<n> | Muestra el n-ésimo vehículo del jugador (ordenado por id de instancia); un clic lo invoca. Vacío si el jugador posee menos. |
vehicle_button:VEHICLE_SPAWN | Invoca el vehículo activo. |
vehicle_button:VEHICLE_DESPAWN | Guarda el vehículo montado y cierra el menú. |
vehicle_button:VEHICLE_INFO | Imprime en el chat el nivel, el combustible y la salud del vehículo activo. |
vehicle_button:NAV_BACK | Vuelve al menú anterior. |
vehicle_button:NAV_CLOSE | Cierra el menú. |
vehicleDisplay define el aspecto de una ranura de vehículo: un item, un nameFormat y lore, con los tokens %name%, %level%, %max_level%, %fuel%, %max_fuel%, %health%, %max_health% y %shield%. Un objeto que colocas para un botón conserva su propio nombre y lore si la página los define.
Permisos
| Permiso | Concede |
|---|---|
typewriter.vehicle.limit.<n> | Eleva el límite de propiedad en <n> cuando lo lee una entrada Vehicle Ownership Limit (cuenta el valor más alto). |
La extensión no define ningún otro permiso.
Placeholders
Se pueden leer dos hechos como placeholders a través de TypeWriter: Vehicle Ownership Limit y Vehicles Owned Count, cada uno de los cuales devuelve un número. La extensión no registra ningún placeholder propio.
Entradas
25 entradas, generadas a partir del código fuente de la extensión.
Acciones9
- 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
Hechos4
- Vehicle Charge Meter FactVehicle Charge Meter
- Vehicle LimitVehicle Ownership Limit
- Vehicle Owned CountVehicles Owned Count
- Vehicle Stamina FactVehicle Stamina
Artefactos1
- Vehicle StorageVehicle Storage Artifact
Manifiestos4
- Vehicle AbilityVehicle Ability
- Vehicle ConfigVehicle Global Configuration
- Vehicle DefinitionVehicle Definition
- Vehicle Garage MenuVehicle Garage Menu
Resolución de problemas
No se guarda nada tras un reinicio. vehicle_config no tiene storage, o apunta a un artefacto inexistente. El registro informa Aucun stockage designe dans 'vehicle_config'. Establece el artefacto en storage.
El vehículo no se mueve con WASD. Falta PacketEvents, por lo que la dirección está desactivada. Instálalo y reinicia.
El vehículo retrocede de golpe o no se mueve. El servidor lo revierte cuando el vehículo se mueve más rápido que stats.maxSpeed (bloques por tick), cuando fuel es 0 (y dispara On Vehicle Fuel Empty), o, en GROUND, cuando entra en agua o lava. Aumenta maxSpeed, reposta o cambia a AMPHIBIOUS.
Ce vehicule n'est pas disponible pour le moment. No se pudo crear el visual: un id de modelo que no existe en BetterModel, un mobId de BTCMobs desconocido o un material de display que no es un objeto. Busca non spawne o visuel en el registro.
La invocación se rechaza con el mensaje de límite. El jugador ya posee baseOwnershipLimit vehículos (1 por defecto). El límite incluye los permisos solo si has creado una entrada Vehicle Ownership Limit; en caso contrario solo se aplica baseOwnershipLimit.
This vehicle is destroyed — repair it before summoning it again. La salud llegó a 0. Ejecuta Repair Vehicle: consume repair.amount de repair.item y restaura healthPerRepair de salud en el vehículo activo.
Una habilidad no hace nada. Debe figurar en abilities de la definición del vehículo, y el jugador debe estar conduciendo, tener suficiente resistencia y no estar en cooldown; cada fallo envía un mensaje de vehicle_config.