Craft Engine
Vue d'ensemble
Craft Engine connecte CraftEngine à TypeWriter. Vos blocs, meubles et objets personnalisés deviennent des éléments auxquels une quête peut réagir : des événements lorsqu'un joueur les casse, les pose ou clique dessus, des objectifs qui les comptent, des facts et variables qui lisent ce qu'un joueur tient ou regarde, et des actions qui les placent, les remplacent ou les retirent.
La seconde moitié de l'extension est la zone de quête. Une zone de quête donne à chaque joueur sa propre version d'une zone. Ce qu'un joueur casse, pose ou modifie est enregistré pour ce joueur uniquement, envoyé sous forme de paquets, et restitué lorsqu'il revient. Le monde réel n'est jamais modifié : quitter une zone ne coûte donc rien et rien n'est laissé à moitié fait si le serveur s'arrête en pleine quête. Une zone peut aussi être partagée par un groupe, pour qu'un groupe nettoie une salle ensemble.
L'extension est écrite pour Paper et Folia : chaque modification du monde ou d'un inventaire s'exécute sur la région qui en est propriétaire.
Fonctionnalités
- Événements de blocs et de meubles — réagissez à la casse, à la pose, à l'interaction ou aux coups sur des blocs et meubles personnalisés, y compris les poses refusées.
- Règles de pose — refusez une pose ou un coup sauf si le joueur détient une permission ou correspond à des critères.
- Objectifs de comptage — cassez, posez ou remplacez des blocs et meubles personnalisés comme objectif de quête ; chaque position ne compte qu'une fois par joueur.
- Actions sur le monde — placez, retirez ou remplacez un bloc ou un meuble, et stockez vos propres données sur un meuble posé.
- Zones de quête — une vue par joueur (ou par groupe) des blocs et meubles, mémorisée entre les visites.
- Échange d'inventaire — prenez tout l'inventaire d'un joueur, ou seulement certains objets, à l'entrée d'une zone et rendez-le à la sortie.
- Audience de faux blocs — montrez un ensemble fixe de blocs et de meubles à une audience sans rien enregistrer.
- Outils d'objets — donnez ou retirez des objets CraftEngine par identifiant, et réagissez à leur ramassage, lâcher ou consommation.
- Facts, variables et audiences — lisez l'objet tenu, le bloc ou le meuble regardé, les temps de recharge, et regroupez les joueurs selon ce qu'ils tiennent ou ce sur quoi ils sont assis.
Installation
- Installez CraftEngine sur votre serveur. L'extension est construite pour CraftEngine 26.8.
- Assurez-vous que l'extension TypeWriter Quest est installée. Elle fournit les entrées de quêtes et d'objectifs utilisées par les objectifs.
- Téléchargez l'extension depuis les boutiques (voir les boutons du panneau ci-dessus) et placez le JAR dans
plugins/Typewriter/extensions/. - Redémarrez le serveur. Dans le journal, vous devriez voir
[CraftEngine] CraftEngineExtension initialized successfully.
Premiers pas
Ce pas-à-pas donne à chaque joueur son propre sceau cassable dans une salle d'énigme.
- Dans le panel web, ouvrez une page manifest et ajoutez un Quest State Artifact. Laissez
artifactIdtel que généré. - Ajoutez une Quest Zone Audience et définissez
artifactsur l'artefact que vous venez de créer. LaissezzoneIdvide pour qu'elle utilise l'identifiant de l'entrée, et gardeztrackBlocksactivé. - Imbriquez l'audience de zone sous l'audience qui décide de qui est dans la salle (par exemple une audience de zone ou une audience de quête). Les joueurs qui y entrent obtiennent leur propre vue.
- Sur une page sequence, ajoutez un événement On Block Interact pour votre bloc de sceau. Il déclenche une action Set Quest Block.
- Dans l'action, définissez
artifactetzoneIdsur les mêmes valeurs que la zone (copiez l'identifiant de l'entrée de la zone), liezlocationà la position de l'événement, et définissezblockIdsur le sceau brisé (namespace:broken_seal). Laissez vide pour afficher de l'air. - Ajoutez une action Clear Quest State à l'endroit où la quête se termine, afin que la salle puisse être résolue à nouveau.
- Publish (Publier), puis vérifiez avec deux joueurs : chacun ouvre son propre sceau et l'autre le voit toujours intact.
Pour une simple tâche de comptage, vous n'avez pas besoin de zone : ajoutez un objectif Break Block, renseignez item avec l'identifiant du bloc et définissez amount.
Fonctionnement
Une modification faite dans une zone est une déviation : un bloc envoyé à un seul joueur par-dessus le vrai, un meuble du monde masqué à un seul joueur, ou un fantôme, un meuble qui n'existe que pour ce joueur. Un fantôme peut recevoir un clic droit et être cassé par ceux qui le voient, mais il n'a de collision pour personne.
La collision suit toujours le monde. Un bloc qu'un joueur a cassé le bloque toujours, un bloc qu'il a posé peut être traversé, et un meuble du monde masqué arrête toujours le joueur qui ne le voit pas. Construisez des zones où la modification est quelque chose à voir et à utiliser, pas quelque chose sur quoi se tenir.
L'état est écrit dans l'artefact quelques secondes après la dernière modification, et immédiatement lorsqu'un joueur quitte une zone ou que le serveur s'arrête. Un serveur tué au lieu d'être arrêté peut perdre les dernières secondes.
Configuration
L'extension n'a pas de fichier de configuration. Le texte des lignes d'objectifs peut être modifié avec des snippets TypeWriter :
| Snippet | Par défaut |
|---|---|
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>) |
Entrées
49 entrées, générées depuis la source de l'extension.
Actions10
- 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
Événements13
- 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
Objectifs5
- 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
Faits8
- 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
Audiences5
- 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
Sons1
- Craftengine SoundCraftEngine Sound
Artefacts1
- Craftengine Quest State ArtifactArtifact storing per-player quest block and item state
Dépannage
Une zone de quête n'affiche rien et aucune erreur n'apparaît. Les actions et l'audience doivent nommer les mêmes artifact, zoneId et group. Une modification enregistrée sous un autre nom est écrite correctement mais personne ne la lit. Lorsque zoneId est vide sur l'audience, c'est l'identifiant de l'entrée de l'audience que vous devez copier.
Set Quest Block ne fait rien et le journal indique « has no zone configured ». zoneId est vide sur l'action. Renseignez-le. Il en va de même pour Set Quest Furniture.
Le journal indique « cannot resolve » un identifiant. Le blockId n'est ni un bloc CraftEngine, ni un meuble CraftEngine, ni un matériau vanilla. Vérifiez l'identifiant avec Registry IDs. Avec kind défini sur FURNITURE, un identifiant qui n'est pas un meuble est refusé au lieu d'être affiché comme un bloc.
Tout le monde dans la zone voit la même modification. L'action a écrit dans le monde. Les actions Place et Remove, ainsi que Replace Block défini sur WORLD, modifient le vrai bloc. Dans une zone, utilisez Set Quest Block, Set Quest Furniture, ou Replace Block avec audience sur AUTO ou QUEST_ZONE.
Replace Block ne fait rien pour un joueur présent dans deux zones. Avec plusieurs zones qui se chevauchent et sans zoneId, l'action refuse et écrit une ligne dans le journal. Définissez zoneId sur la zone voulue.
Une modification réapparaît en scintillant après une longue marche. Un client qui recharge un chunk reçoit à nouveau le vrai monde, et la zone renvoie sa vue tous les refreshInterval ticks dans un rayon de refreshRadius blocs. Diminuez refreshInterval ou augmentez refreshRadius.
Les événements de blocs ne se déclenchent pas pour un bloc cassé dans une zone. Avec trackBlocks activé, la zone prend le contrôle de l'action : la casse ou la pose est annulée et enregistrée comme déviation. Faites plutôt avancer la quête à partir des événements d'interaction ou de Set Quest Block.
Extensions associées
- Nexo et ItemsAdder — le même type d'intégration pour les autres plugins de contenu personnalisé.