Saltar al contenido principal

BTCMobs

En desarrollo: mobs y NPC personalizados con habilidades, spawners, tablas de botín y eventos de misión.

PróximamenteEntidades y modelos
RequiereTypeWriter0.9.0-beta-177 (BTC build)QuestRoadNetworkGUIopcionalModelEngineopcionalBetterModelopcionalMiniPlaceholdersopcionalPacketEventsopcional

En desarrollo. Las entradas y los campos pueden cambiar antes del primer lanzamiento.

En desarrollo

BTCMobs es una extensión Soon (próximamente). No se ha publicado, aún no tiene descarga ni número de versión, y las entradas o los campos pueden cambiar antes de su publicación. Esta página documenta la compilación de desarrollo actual a modo de referencia. No es el antiguo plugin "BTC Mob": el motor de mobs vive ahora dentro de la propia extensión y no hay ningún plugin independiente que instalar.

Descripción general​

BTCMobs

BTCMobs te permite crear mobs personalizados y NPC interactivos por completo desde el panel web de TypeWriter. Una plantilla de mob describe una criatura: su entidad base de Minecraft, nivel, salud, armadura, habilidades, botín, facción, modelo 3D opcional y reproducción opcional. Los spawners y las apariciones naturales deciden dónde y cuándo aparecen las plantillas en el mundo. Las habilidades y las tablas de botín definen qué hace el mob y qué deja tras de sí.

Todo lo que hacen los mobs se expone de vuelta a TypeWriter. Se disparan eventos cuando un mob aparece, recibe daño, lanza una habilidad o muere. Los hechos y las variables informan de la salud, el nivel, el recuento o la distancia. Las acciones generan mobs, los eliminan o hacen que lancen habilidades. Esto permite que las misiones, los diálogos y las cinemáticas reaccionen a un combate, o lo inicien.

La misma extensión ofrece también un lado de NPC: una plantilla de mob puede mostrarse como un NPC en el cliente, con interacciones de diálogo, objetivos de misión, cinemáticas de cámara (incluidas cámaras acopladas a un hueso de modelo), visibilidad de huesos por jugador y control de animaciones de ModelEngine o BetterModel. La extensión está pensada para la versión BTC de TypeWriter (Paper/Folia).

Características​

  • Plantillas de mob: una entrada btc_mob_template por criatura: tipo de entidad, nivel, salud, daño de ataque, armadura, habilidades, botín, facción, tabla de amenaza, modelo y animaciones.
  • Spawners: spawners basados en regiones con un límite de apariciones, un ritmo de aparición y un calentamiento que pueden controlarse mediante hechos, de modo que cada jugador pueda ver un ritmo distinto.
  • Sustitución de apariciones naturales: cambia las apariciones de criaturas vanilla por mobs BTC, regla por regla, según el mundo, el bioma y la probabilidad.
  • Habilidades: una habilidad es una lista ordenada de acciones de TypeWriter, o una línea de script. Las plantillas asocian habilidades a disparadores como aparición, ataque, daño, muerte o un temporizador repetitivo.
  • Tablas de botín y objetos: materiales vanilla, objetos personalizados, XP y tablas reutilizables, con una probabilidad y una cantidad que escalan con el nivel del mob.
  • Enlaces con misiones: eventos, hechos, variables y un objetivo de habilidad para que las historias puedan reaccionar a los mobs y a los combates.
  • NPC: NPC en el cliente basados en plantillas, con diálogo, interacción, mirada y comportamiento de cámara.
  • Cinemáticas: genera un mob, lanza una habilidad, enfoca a un NPC o monta un hueso de modelo durante una cinemática de TypeWriter.
  • Persistencia: los cooldowns de habilidades, los contadores, las auras, las tablas de amenaza y las barras de jefe sobreviven a un reinicio cuando se configura un artefacto de almacenamiento.
  • Importación de MythicMobs: un comando de operador convierte un pack de MythicMobs en páginas de BTCMobs.

Instalación​

BTCMobs está en desarrollo y no tiene descarga pública. Las notas siguientes describen cómo está conectada la compilación de desarrollo.

  1. Ejecuta la versión BTC de TypeWriter (BTC Core, Paper o Folia) con las extensiones Quest y RoadNetwork, que la compilación declara como dependencias.
  2. Coloca el JAR de BTCMobs en plugins/Typewriter/extensions/ y reinicia el servidor. Incluye su propio motor de mobs, por lo que no se necesita ningún plugin BTCMobs independiente.
  3. Instala las integraciones opcionales que quieras. La extensión las detecta en tiempo de ejecución: ModelEngine o BetterModel para los modelos 3D, MiniPlaceholders para exponer placeholders, PacketEvents, Vault, DecentHolograms y WorldGuard.
  4. Para abrir el menú del catálogo de mobs, debe estar instalada la extensión GUI de BTC.
  5. En el panel web, crea un artefacto btcmobs_storage y haz referencia a él desde una entrada btcmobs_config (véase más abajo) para que se guarde el estado del juego.

Primeros pasos​

Este recorrido crea un jefe zombi, lo hace aparecer en una arena y reacciona a su muerte.

  1. En el panel web de TypeWriter, abre una página de manifiesto. Añade un artefacto BTCMobs Storage y después una entrada BTCMobs Global Configuration y establece storage en ese artefacto.
  2. Abre una página estática y añade una Native BTC mob template. Dale un id que reutilizarás (por ejemplo crypt_warden). Establece entityType en ZOMBIE, display en el nombre que ven los jugadores y después level, maxHealth, attackDamage y armor.
  3. Añade una Native BTC mob drop table y enumera sus drops, una declaración por línea, por ejemplo DIAMOND 1 0.25 (material, cantidad, probabilidad) o exp 20to40. Haz referencia a la tabla por su id en la lista drops de la plantilla.
  4. Añade una Native BTC mob skill y rellena actions con las acciones de TypeWriter que ejecuta, en orden. En la plantilla, añade el id de la habilidad a skills, por ejemplo warden_slam~onTimer:100 para lanzarla cada 100 ticks.
  5. Añade un BTCMobs Spawner. Establece mobType en el id de la plantilla (no en su nombre visible), world, las dos esquinas corner1 y corner2 de una región, defaultMaxMobs y defaultCooldown (en ticks).
  6. Añade un evento On BTCMob die con mobName establecido en el id de la plantilla y enlaza sus triggers con un diálogo, una recompensa o un modificador de hecho.
  7. Publica las páginas, acércate a defaultActivationRange (24 bloques por defecto) del centro de la región y el mob aparecerá. Usa /tw btcmobs spawners force <id> para probar sin esperar.
Prueba un mob rápidamente

/tw btcmobs spawn <template> <level> <amount> genera una plantilla junto a ti con el nivel que elijas. El comando sugiere los ids de las plantillas cargadas.

Cómo funciona​

Una plantilla es solo una descripción. Un mob vivo se crea cuando lo solicita un spawner, una aparición natural, una acción Spawn a mob o el comando spawn. A partir de ese momento, el mob ejecuta las habilidades asociadas a sus disparadores y tira sus declaraciones de botín cuando muere. Cada paso dispara además un evento de TypeWriter, que es como las misiones y los diálogos siguen el combate.

Habilidades y disparadores​

Los elementos de la lista skills de una plantilla se escriben skillId o skillId~trigger. El id es el id (o el nombre) de una entrada btc_mob_skill. El disparador indica cuándo la ejecuta el mob: onSpawn, onAttack, onDamaged, onDeath, onKill, onDespawn, onInteract, onTeleport, onExplode, onRanged, onProjectile, o onTimer:<ticks> para una habilidad repetitiva (también se acepta onTimer:5s, en segundos). Una habilidad sin disparador se ejecuta con cada disparador que activa el mob, así que añade siempre uno. conditions filtra cada línea de habilidad y targeters elige los objetivos que comparten.

Declaraciones de botín​

Cada línea de una tabla de botín, o de una lista drops de una plantilla, es una de estas:

  • un material vanilla con cantidad y probabilidad opcionales, por ejemplo BONE 2 0.5;
  • el id o el nombre de una entrada btc_mob_item, con cantidad y probabilidad opcionales;
  • exp 10 o exp 10to20 para la experiencia;
  • btc:<item_id> [amount or range] [chance] [+n/m] para un objeto del catálogo de BTC. Sin el token +n/m, la cantidad crece con el nivel del mob, de x1 en el nivel 1 a x6 en el nivel 100;
  • el id de otra tabla de botín, que se expande en el mismo lugar.

Las declaraciones desconocidas se registran como advertencias y se omiten.

NPC​

Un NPC es una plantilla que se muestra a los jugadores como una entidad en el cliente. Una BtcMob NPC definition nombra la plantilla en mobType y establece el nombre visible, su desfase y si se actualiza en cada tick. Una BtcMob NPC instance la coloca con spawnLocation, una activity opcional, un group y data adicionales. Las entradas de datos del NPC cambian el aspecto del modelo: la visibilidad de huesos por jugador, los adjuntos que sustituyen un hueso por uno de otro modelo, las posturas de ModelEngine para el día y la noche, y la velocidad al caminar.

Comandos​

Todos los comandos están bajo /tw btcmobs. Los alias cortos /tw btc y /tw btcmobsadmin ejecutan el mismo árbol. Cada nodo tiene un permiso con la forma btcmobs.command.<node> (véase más abajo).

ComandoDescripción
/tw btcmobs mobs [list]Lista las plantillas de mob cargadas.
/tw btcmobs mobs listactiveLista los mobs que están vivos en este momento.
/tw btcmobs spawn <template> [level] [amount]Genera una plantilla junto a ti (cantidad de 1 a 64). summon y mobs spawn son equivalentes.
/tw btcmobs mobs kill <template> [radius]Mata a los mobs de una plantilla a tu alrededor (radio por defecto 48).
/tw btcmobs mobs killall [radius]Mata a todos los mobs BTC a tu alrededor (radio por defecto 48).
/tw btcmobs mobs infoMuestra información sobre el mob al que estás mirando.
/tw btcmobs skills [list]Lista las habilidades cargadas.
/tw btcmobs cast <skill>Lanza una habilidad desde ti mismo (skills cast, test cast y profile cast son equivalentes).
/tw btcmobs spawners [list]Lista las entradas de spawner.
/tw btcmobs spawners info <id>Muestra un spawner.
/tw btcmobs spawners force <id> [amount]Fuerza una aparición, ignorando condiciones y límites.
/tw btcmobs spawners reloadRecarga las entradas nativas.
/tw btcmobs reloadRecarga las entradas nativas.
/tw btcmobs menuAbre el menú del catálogo de mobs (las primeras 45 plantillas, por orden alfabético).
/tw btcmobs items list y get <item> [amount]Lista u obtiene un objeto del catálogo.
/tw btcmobs items give <player> <item> [amount]Da un objeto del catálogo a un jugador.
/tw btcmobs signal <uuid> <signal>Envía una señal a un mob activo.
/tw btcmobs test mechanic, condition, targeter <line>Ejecuta una línea de script como prueba.
/tw btcmobs test on <uuid or nearest> <line>Ejecuta una línea de script sobre un mob activo concreto.
/tw btcmobs import mythic [path]Convierte un pack de MythicMobs en páginas de BTCMobs (carpeta por defecto import/BtcMob en la carpeta de datos de TypeWriter). migrate mythic es equivalente.
/tw btcmobs audit, coverage, registrydump, variables, placeholdersDiagnósticos sobre las plantillas, habilidades, spawners y registros cargados.
/tw btcmobs debug, version, modeldiagDiagnósticos en tiempo de ejecución, versión y estado de BetterModel de los mobs cercanos.

Permisos​

PermisoConcede
btcmobs.command.mainLa raíz /tw btcmobs y su ayuda. Concedido a todos por defecto.
btcmobs.command.versionversion y v. Concedido a todos por defecto.
btcmobs.command.mobs, .mobs.spawn, .mobs.kill, .mobs.killall, .mobs.info, .mobs.listactive, .mobs.statsLos comandos mobs y spawn.
btcmobs.command.skills, .skills.castListar y lanzar habilidades.
btcmobs.command.spawners, .spawners.list, .spawners.info, .spawners.force, .spawners.reloadLos comandos spawners.
btcmobs.command.items, .items.list, .items.get, .items.giveLos comandos items.
btcmobs.command.menu, .menu.openEl menú del catálogo.
btcmobs.command.import, .migrate, .migrate.mythic, btcmobs.importLa importación de MythicMobs.
btcmobs.command.test, .test.mechanic, .test.condition, .test.targeter, .test.castLos comandos test.
btcmobs.command.audit, .variables, .debug, .modeldiag, .signal, .reload, .profileLos comandos de diagnóstico correspondientes.
btcmobs.command.admin, btcmobs.adminRaíz administrativa (/tw btcmobsadmin).
btcmobs.command.*, btcmobs.*Todos los anteriores.

Todos los permisos, salvo btcmobs.command.main y btcmobs.command.version, son por defecto solo para operadores. El comando modeldiag comprueba btcmobs.command.modeldiag, que la extensión registra (para operadores por defecto).

Placeholders​

Los placeholders se publican únicamente en MiniPlaceholders; no se usa PlaceholderAPI para publicarlos. La sintaxis es <name:argument:argument>.

PlaceholderDevuelve
<btcmobs_caster> y <btcmobs_caster:field>El id de la plantilla, o un campo del mob ligado al jugador: name, type, level, hp, maxhp, percent, uuid.
<btcmobs_looking> y <btcmobs_looking:field>Los mismos campos para el mob BTC al que mira el jugador (hasta el alcance de visión), vacío cuando no hay ninguno.
<btcmobs_var:name>El valor de una variable global de BTCMobs.
<btcmobsdamage_top:BOSS:POSITION:field>El jugador en una posición de la clasificación de daño de un jefe. Campos: name, damage, raw_damage, percent, uuid.
<btcmobsdamage_self:BOSS:field>La propia clasificación del jugador que mira. Campos: damage, raw_damage, percent, position.
<btcmobsdamage_participants:BOSS>, _total, _max_health, _last_updateTotales de la clasificación de daño de un jefe.

Entradas​

57 entradas, generadas a partir del código fuente de la extensión.

Acciones7
Eventos9
Objetivos2
Hechos9
Cinemáticas5
Entidades2
Datos de entidad4
Límites de interacción3
Variables8
Artefactos1
Manifiestos1
Definiciones6

Resolución de problemas​

El spawner no hace nada y el registro dice "references unknown mob template". mobType debe ser el id de una btc_mob_template, no el nombre que se muestra en el editor. Copia el id de la entrada de la plantilla. La misma regla se aplica a btc_natural_spawn, a las acciones de aparición y desaparición y a las definiciones de NPC.

El spawner nunca alcanza su límite, o se detiene en 1. Una región cuyas dos esquinas son el mismo punto limita defaultMaxMobs a 1. El límite cuenta los mobs que pertenecen a ese spawner, estén donde estén. El spawner solo funciona mientras un jugador está a defaultActivationRange del centro de una región.

Un spawner no hace nada para algunos jugadores. Para cada jugador cercano a la región, el spawner comprueba el mundo, después conditionLines y después criteria, y todo debe cumplirse antes de mirar la región, el cooldown y el spawn. Un jugador que no cumple criteria se omite (se registra una vez por jugador una línea de diagnóstico «criteria did not match»). criteria nunca elimina un mob que ya ha aparecido. Los campos ...Fact (maxMobsFact, mobsPerSpawnFact y los demás) siguen sustituyendo los valores numéricos por defecto.

La sustitución de apariciones naturales nunca se activa. La entrada solo sustituye las apariciones que el servidor ya produce (naturales, de generación de chunks o por defecto). Si los spawn-limits del mundo en paper-world-defaults.yml valen 0, las criaturas vanilla nunca aparecen y no se sustituye nada. Prevalece la primera regla que coincide, y maxNearby en 0 significa sin límite, no cero mobs.

Un mob reproduce en bucle las animaciones de Attack o Death, o no camina. modelAnimations solo reproduce en bucle animaciones de tipo idle cuando se acopla un modelo; los nombres de ataque y muerte puestos ahí se ignoran. Las animaciones puntuales se definen en el modelLifecycle de la plantilla (aparición, ataque, golpe recibido, muerte) y se reproducen en el momento correspondiente; una animación de muerte se reproduce hasta el final antes de que el modelo desaparezca. Un nombre ausente del modelo se registra una vez por plantilla y ese momento queda en silencio. Los mobs todavía no controlan las animaciones de caminar, solo el lado de NPC.

Falta una habilidad o un botín en silencio. Revisa el registro del servidor: las declaraciones de botín desconocidas, los objetos desconocidos y las probabilidades no válidas se registran como advertencias y se omiten. Un elemento de skills cuyo id no coincide con ninguna entrada btc_mob_skill se registra cuando el mob lanza.

On BTCMob despawn no se dispara. El evento se dispara cuando un mob rastreado sale del mundo sin morir (despawn natural, eliminación por un plugin, caída fuera del mundo) y hay un jugador a menos de radius bloques. No se dispara cuando el mob muere (usa On BTCMob die), cuando solo se descarga su chunk (el mob se readopta al recargar) ni cuando lo eliminas con la acción Despawn o con /tw btcmobs mobs kill. Un mobName vacío coincide con cualquier mob; lo mismo vale para los eventos spawn, die, damage e interact.

Extensiones relacionadas​

  • BetterModel: BetterModel es uno de los dos motores de modelos (modelProvider) que BTCMobs puede controlar para los modelos de mobs y de NPC.