--- title: Editeur Prefab type: docs weight: 3 --- L'editeur de prefabs permet de creer, editer et gerer des structures prefabriquees qui peuvent etre placees dans le monde. **Package:** `com.hypixel.hytale.builtin.buildertools.prefabeditor` ## Architecture ``` Editeur Prefab ├── Gestion Sessions │ ├── PrefabEditSession - Session d'edition active │ └── PrefabEditSessionManager - Coordinateur sessions ├── Composants │ ├── PrefabAnchor - Definitions points d'ancrage │ └── PrefabEditorCreationSettings ├── Interactions │ ├── PrefabSelectionInteraction │ └── PrefabSetAnchorInteraction ├── Systemes │ ├── PrefabDirtySystems - Suivi changements │ └── PrefabMarkerProvider - Marqueurs d'ancrage └── Commandes └── PrefabEditCommand ``` ## Session Edition Prefab ### Demarrer une Session ``` /prefabedit ``` Cela entre en mode edition prefab ou: - Les outils de selection fonctionnent dans les limites du prefab - Les changements sont suivis separement - Les ancres peuvent etre definies ### PrefabEditSession ```java public class PrefabEditSession { // Session d'edition active pour un prefab // Suit modifications et ancres } ``` ### Gestionnaire de Sessions ```java PrefabEditSessionManager manager = BuilderToolsPlugin.get().getPrefabEditSessionManager(); // Verifier si joueur edite boolean isEditing = manager.isEditing(player); // Obtenir session active PrefabEditSession session = manager.getSession(player); ``` ## Ancres Prefab Les ancres definissent des points speciaux dans un prefab: ### PrefabAnchor ```java public class PrefabAnchor { // Position relative a l'origine prefab // Identifiant nom // Type d'ancre } ``` ### Definir des Ancres Utiliser l'interaction d'ancrage ou commande: ``` /prefab anchor set [x y z] /prefab anchor remove /prefab anchor list ``` ### Types d'Ancres | Type | Description | |------|-------------| | `origin` | Origine placement prefab | | `spawn` | Point de spawn entite | | `connection` | Connexion vers autres prefabs | | `custom` | Ancre definie par utilisateur | ## Commandes Prefab ### /prefab Commande principale gestion prefabs: ``` /prefab save Sauver selection comme prefab /prefab load Charger prefab vers presse-papiers /prefab list Lister prefabs disponibles /prefab delete Supprimer un prefab /prefab info Afficher informations prefab ``` ### /prefabedit Entrer en mode edition prefab: ``` /prefabedit Editer prefab existant /prefabedit exit Quitter mode edition /prefabedit save Sauvegarder changements /prefabedit discard Abandonner changements ``` ## Interactions ### PrefabSelectionInteraction Selectionner prefabs dans le monde: ```java // Type d'interaction enregistre getCodecRegistry(Interaction.CODEC).register( "PrefabSelection", PrefabSelectionInteraction.class, PrefabSelectionInteraction.CODEC ); ``` ### PrefabSetAnchorInteraction Definir ancres via interaction: ```java // Permet de cliquer pour placer ancres getCodecRegistry(Interaction.CODEC).register( "PrefabSetAnchor", PrefabSetAnchorInteraction.class, PrefabSetAnchorInteraction.CODEC ); ``` ## Parametres de Creation ### PrefabEditorCreationSettings Configuration pour creer nouveaux prefabs: ```java public class PrefabEditorCreationSettings { // Parametres pour creation prefab // Flag inclure entites // Parametres compression } ``` ## Systemes ### PrefabDirtySystems Suit les modifications aux prefabs: ```java // Marque prefab comme modifie quand changements surviennent // Demande sauvegarde a la sortie ``` ### PrefabMarkerProvider Fournit marqueurs visuels pour ancres: ```java // Affiche positions d'ancrage en mode creatif // Montre points de connexion ``` ## Utilisation de l'API ### Sauver Selection comme Prefab ```java BuilderToolsPlugin tools = BuilderToolsPlugin.get(); // La selection doit etre definie d'abord // Utiliser commande /prefab save ou API ``` ### Charger et Placer Prefab ```java // Charger vers presse-papiers // /prefab load // Coller a l'emplacement // /paste ``` ### Verifier Mode Edition ```java PrefabEditSessionManager manager = BuilderToolsPlugin.get().getPrefabEditSessionManager(); if (manager.isEditing(player)) { PrefabEditSession session = manager.getSession(player); // Travailler avec session } ``` ## Stockage Prefab Les prefabs sont stockes dans les donnees du monde: ``` worlds//prefabs/.prefab ``` La structure inclut: - Donnees de blocs - Donnees d'entites (si incluses) - Definitions d'ancres - Metadonnees