Craft Engine
Descripción general
Craft Engine conecta CraftEngine con TypeWriter. Tus bloques, muebles y objetos personalizados se convierten en elementos a los que una misión puede reaccionar: eventos cuando un jugador los rompe, coloca o hace clic en ellos, objetivos que los cuentan, facts y variables que leen lo que un jugador sostiene o mira, y acciones que los colocan, reemplazan o eliminan.
La segunda mitad de la extensión es la zona de misión. Una zona de misión da a cada jugador su propia versión de un área. Lo que un jugador rompe, coloca o cambia se registra solo para ese jugador, se le envía como paquetes y se le devuelve cuando vuelve. El mundo real nunca se escribe, así que salir de una zona no cuesta nada y no queda nada a medias si el servidor se detiene en mitad de una misión. Una zona también puede ser compartida por un grupo, de modo que una party despeje una sala en conjunto.
La extensión está escrita para Paper y Folia: cada cambio de mundo o de inventario se ejecuta en la región que lo posee.
Características
- Eventos de bloques y muebles — reacciona a que se rompan, coloquen, interactúe con ellos o se golpeen bloques y muebles personalizados, incluidas las colocaciones rechazadas.
- Reglas de colocación — rechaza una colocación o un golpe salvo que el jugador tenga un permiso o cumpla criterios.
- Objetivos de recuento — romper, colocar o reemplazar bloques y muebles personalizados como objetivo de misión; cada posición cuenta una vez por jugador.
- Acciones de mundo — coloca, elimina o reemplaza un bloque o un mueble, y almacena tus propios datos en los muebles colocados.
- Zonas de misión — una vista por jugador (o por grupo) de bloques y muebles, recordada entre visitas.
- Intercambio de inventario — toma el inventario completo de un jugador, o solo objetos elegidos, al entrar en una zona y devuélvelo al salir.
- Audiencia de bloques falsos — muestra un conjunto fijo de bloques y muebles a una audiencia sin registrar nada.
- Herramientas de objetos — da o quita objetos de CraftEngine por id, y reacciona a recogerlos, soltarlos o comerlos.
- Facts, variables y audiencias — lee el objeto sostenido, el bloque o mueble que se mira, los enfriamientos, y agrupa a los jugadores según lo que sostienen o sobre lo que se sientan.
Instalación
- Instala CraftEngine en tu servidor. La extensión está compilada contra CraftEngine 26.8.
- Asegúrate de que la extensión Quest de TypeWriter está instalada. Proporciona las entradas de misión y de objetivo que usan los objetivos.
- Descarga la extensión desde las tiendas (consulta los botones del panel de arriba) y coloca el JAR en
plugins/Typewriter/extensions/. - Reinicia el servidor. En el registro deberías ver
[CraftEngine] CraftEngineExtension initialized successfully.
Primeros pasos
Este recorrido da a cada jugador su propio sello rompible en una sala de puzles.
- En el panel web, abre una página de manifest y añade un Quest State Artifact. Deja
artifactIdtal como se generó. - Añade una Quest Zone Audience y establece
artifactcon el artefacto que acabas de crear. DejazoneIdvacío para que use el id de la entrada, y manténtrackBlocksactivado. - Anida la audiencia de zona bajo la audiencia que decide quién está en la sala (por ejemplo, una audiencia de área o una audiencia de misión). Los jugadores que entren obtienen su propia vista.
- En una página de sequence, añade un evento On Block Interact para tu bloque de sello. Activa una acción Set Quest Block.
- En la acción, establece
artifactyzoneIdcon los mismos valores que la zona (copia el id de entrada de la zona), enlazalocationcon la posición del evento y estableceblockIdcon el sello roto (namespace:broken_seal). Déjalo vacío para mostrar aire. - Añade una acción Clear Quest State donde termine la misión, para que la sala se pueda resolver de nuevo.
- Publish y comprueba con dos jugadores: cada uno abre su propio sello y el otro lo sigue viendo intacto.
Para una simple tarea de recuento no necesitas una zona: añade un objetivo Break Block, rellena item con el id del bloque y establece amount.
Cómo funciona
Un cambio hecho en una zona es una desviación: un bloque enviado a un jugador por encima del real, un mueble del mundo oculto para un jugador, o un fantasma, un mueble que existe solo para ese jugador. Un fantasma puede ser clicado con el botón derecho y roto por quienes lo ven, pero no tiene colisión para nadie.
La colisión siempre sigue al mundo. Un bloque que un jugador rompió sigue bloqueándolo, un bloque que colocó se puede atravesar, y un mueble del mundo oculto sigue deteniendo al jugador que no lo ve. Construye zonas en las que el cambio sea algo que ver y usar, no algo sobre lo que pararse.
El estado se escribe en el artefacto un par de segundos después del último cambio, e inmediatamente cuando un jugador sale de una zona o el servidor se detiene. Un servidor que se mata en lugar de detenerse puede perder los últimos segundos.
Configuración
La extensión no tiene archivo de configuración. El texto de las líneas de objetivo se puede cambiar con snippets de TypeWriter:
| Snippet | Valor por defecto |
|---|---|
craftengine.objective.display | <display> <dark_gray>(<gray><current><dark_gray>/<gray><required><dark_gray>) |
craftengine.objective.completed | <green>✔</green> <st><display></st> <dark_gray>(<gray><current><dark_gray>/<gray><required><dark_gray>) |
Entradas
49 entradas, generadas a partir del código fuente de la extensión.
Acciones10
- Craftengine Clear Quest StateDrop a player's own state for a quest zone
- Craftengine Give Item ActionGive a CraftEngine item to the player
- Craftengine Remove Item ActionRemove a CraftEngine item from the player
- Craftengine Set Quest BlockChange what one player sees at a spot, inside a quest zone — a block or a piece of furniture
- Craftengine Set Quest FurnitureHide or show one piece of the world's furniture, for one player, inside a quest zone
- Place Craftengine BlockPlace a CraftEngine block at a location
- Place Craftengine FurniturePlace a CraftEngine furniture at a location
- Remove Craftengine BlockRemove the CraftEngine block at a location
- Remove Craftengine FurnitureRemove the CraftEngine furniture at a location
- Replace Craftengine BlockReplace the block or furniture at a location with another one
Eventos13
- Craftengine on Item Consume EventTriggers when the player consumes a CraftEngine item
- Craftengine on Item Drop EventTriggers when the player drops a CraftEngine item
- Craftengine on Item Pickup EventTriggers when the player picks up a CraftEngine item
- On Craftengine Block Attempt Place EventTriggers when a player attempts to place a CraftEngine block
- On Craftengine Block Break EventTriggers when a CraftEngine custom block is broken
- On Craftengine Block Interact EventTriggers when a CraftEngine custom block is interacted with
- On Craftengine Block Place EventTriggers when a CraftEngine custom block is placed
- On Craftengine Dispense Projectile EventTriggers when a dispenser shoots a CraftEngine projectile
- On Craftengine Furniture Attempt Place EventTriggers when a player attempts to place CraftEngine furniture
- On Craftengine Furniture Break EventTriggers when a CraftEngine furniture is broken
- On Craftengine Furniture Hit EventTriggers when a player hits CraftEngine furniture
- On Craftengine Furniture Interact EventTriggers when a CraftEngine furniture is interacted with
- On Craftengine Furniture Place EventTriggers when a CraftEngine furniture is placed
Objetivos5
- Break Craftengine Block ObjectiveAn objective to break CraftEngine custom blocks
- Break Craftengine Furniture ObjectiveAn objective to break CraftEngine furniture
- Place Craftengine Block ObjectiveAn objective to place CraftEngine custom blocks
- Place Craftengine Furniture ObjectiveAn objective to place CraftEngine furniture
- Replace Craftengine Block ObjectiveAn objective to replace a block with another one
Hechos8
- Craftengine Cooldown Active FactWhether a CraftEngine cooldown is currently running
- Craftengine Cooldown Remaining FactSeconds left on a CraftEngine cooldown
- Craftengine Holding Item FactWhether the player is holding a CraftEngine item
- Craftengine Item Cooldown FactTicks left on the vanilla use cooldown of an item
- Craftengine Item Count FactHow many of a CraftEngine item the player carries
- Craftengine Looking at Block FactWhether the player is looking at a CraftEngine block
- Craftengine Looking at Furniture FactWhether the player is looking at CraftEngine furniture
- Craftengine Standing on Block FactWhether the player is standing on a CraftEngine block
Audiencias5
- Craftengine Fake Block AudienceShow blocks and furniture to this audience alone
- Craftengine Furniture Proximity AudienceIn audience while near a CraftEngine furniture
- Craftengine Holding Item AudienceIn audience while holding a CraftEngine item
- Craftengine Quest Zone AudienceKeep a player's own block, furniture and item state for a quest zone
- Craftengine Sitting on Furniture AudienceIn audience while sitting on a CraftEngine furniture
Variables6
- Craftengine Item in Hand ID VariableThe CraftEngine ID of the item the player holds
- Craftengine Item Property VariableA property of the CraftEngine item the player holds
- Craftengine Looking at Block ID VariableThe CraftEngine ID of the block the player is looking at
- Craftengine Looking at Furniture ID VariableThe CraftEngine ID of the furniture the player is looking at
- Craftengine Registry Ids VariableThe list of IDs CraftEngine has loaded
- Craftengine Standing on Block ID VariableThe CraftEngine ID of the block the player stands on
Sonidos1
- Craftengine SoundCraftEngine Sound
Artefactos1
- Craftengine Quest State ArtifactArtifact storing per-player quest block and item state
Solución de problemas
Una zona de misión no muestra nada y no aparece ningún error. Las acciones y la audiencia deben nombrar el mismo artifact, zoneId y group. Un cambio archivado bajo otro nombre se escribe correctamente pero nadie lo lee. Cuando zoneId está vacío en la audiencia, lo que debes copiar es el id de entrada de la propia audiencia.
Set Quest Block no hace nada y el registro dice "has no zone configured". zoneId está vacío en la acción. Establécelo. Lo mismo se aplica a Set Quest Furniture.
El registro dice "cannot resolve" un id. El blockId no es un bloque de CraftEngine, ni un mueble de CraftEngine, ni un material de vanilla. Comprueba el id con Registry IDs. Con kind establecido en FURNITURE, un id que no es un mueble se rechaza en lugar de mostrarse como bloque.
Todos los de la zona ven el mismo cambio. La acción escribió en el mundo. Las acciones Place y Remove, y Replace Block establecido en WORLD, cambian el bloque real. Dentro de una zona usa Set Quest Block, Set Quest Furniture o Replace Block con audience en AUTO o QUEST_ZONE.
Replace Block no hace nada para un jugador en dos zonas. Con varias zonas solapadas y sin zoneId, la acción se rechaza y escribe una línea en el registro. Establece zoneId con la zona que quieres.
Un cambio vuelve a parpadear tras una caminata larga. A un cliente que recarga un chunk se le sirve de nuevo el mundo real, y la zona reenvía su vista cada refreshInterval ticks dentro de refreshRadius bloques. Reduce refreshInterval o aumenta refreshRadius.
Los eventos de bloque no se activan para un bloque roto en una zona. Con trackBlocks activado, la zona se hace cargo de la acción: la rotura o colocación se cancela y se registra como desviación. En su lugar, avanza la misión a partir de los eventos de interacción o de Set Quest Block.
Extensiones relacionadas
- Nexo e ItemsAdder — el mismo tipo de integración para los otros plugins de contenido personalizado.