Aller au contenu principal

Craft Engine

Blocs, meubles et objets CraftEngine dans les quêtes, plus des zones de quête par joueur.

Payantesv1.1Intégrations
NécessiteTypeWriter0.9CraftEngineQuest (TypeWriter extension)

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​

  1. Installez CraftEngine sur votre serveur. L'extension est construite pour CraftEngine 26.8.
  2. 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.
  3. Téléchargez l'extension depuis les boutiques (voir les boutons du panneau ci-dessus) et placez le JAR dans plugins/Typewriter/extensions/.
  4. 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.

  1. Dans le panel web, ouvrez une page manifest et ajoutez un Quest State Artifact. Laissez artifactId tel que généré.
  2. Ajoutez une Quest Zone Audience et définissez artifact sur l'artefact que vous venez de créer. Laissez zoneId vide pour qu'elle utilise l'identifiant de l'entrée, et gardez trackBlocks activé.
  3. 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.
  4. Sur une page sequence, ajoutez un événement On Block Interact pour votre bloc de sceau. Il déclenche une action Set Quest Block.
  5. Dans l'action, définissez artifact et zoneId sur les mêmes valeurs que la zone (copiez l'identifiant de l'entrée de la zone), liez location à la position de l'événement, et définissez blockId sur le sceau brisé (namespace:broken_seal). Laissez vide pour afficher de l'air.
  6. Ajoutez une action Clear Quest State à l'endroit où la quête se termine, afin que la salle puisse être résolue à nouveau.
  7. Publish (Publier), puis vérifiez avec deux joueurs : chacun ouvre son propre sceau et l'autre le voit toujours intact.
astuce

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 :

SnippetPar 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
Événements13
Objectifs5
Faits8
Audiences5
Variables6
Sons1
Artefacts1

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é.