--- title: Operations Outil type: docs weight: 4 --- Les operations d'outil gerent les mecaniques d'edition de blocs reelles lors de l'utilisation des outils de construction. **Package:** `com.hypixel.hytale.builtin.buildertools.tooloperations` ## Architecture ``` Operations Outil ├── Base │ └── ToolOperation - Classe de base operation ├── Operations │ ├── PaintOperation - Peinture de blocs │ └── EditOperation - Suivi d'edition ├── Materiaux │ └── Material - Wrapper materiau bloc └── Utilitaires └── CopyCutSettings - Configuration copier/couper ``` ## ToolOperation Classe de base pour toutes les operations d'outil: ```java public class ToolOperation { // Operation de base qui modifie les blocs // Suivie pour annuler/refaire } ``` ## PaintOperation Gere la peinture de blocs avec outils brosse: ```java public class PaintOperation extends ToolOperation { // Applique blocs dans forme brosse // Supporte patterns et masques } ``` ### Utilisation Quand un joueur utilise un outil brosse: 1. PaintOperation est creee 2. La forme est calculee selon parametres outil 3. Les blocs sont modifies selon pattern 4. L'operation est ajoutee a l'historique ## EditOperation Suit les changements pour annuler/refaire: ```java public class EditOperation { // Enregistre changements de blocs // Permet l'inversion } ``` ## Systeme de Materiaux ### Material Wrapper pour materiaux de blocs: ```java public class Material { // Reference type de bloc // Proprietes additionnelles (rotation, teinte) } ``` ### Patterns de Blocs Les patterns definissent comment les blocs sont selectionnes: | Pattern | Description | |---------|-------------| | `[Stone]` | Type de bloc unique | | `[50%Stone, 50%Dirt]` | Aleatoire pondere | | `[Stone, Dirt, Grass]` | Poids egaux | ### Masques de Blocs Les masques filtrent quels blocs sont affectes: | Masque | Description | |--------|-------------| | `[Stone]` | Affecter uniquement pierre | | `[!Air]` | Affecter blocs non-air | | `[!^Fluid]` | Exclure blocs tagues fluide | ## Parametres Copier/Couper ### CopyCutSettings Configuration pour operations copier et couper: ```java public class CopyCutSettings { // Flag inclure entites // Flag inclure donnees biome // Niveau compression } ``` ## Arguments Outil Les outils de construction supportent des arguments configurables: ### Types d'Arguments | Type | Classe | Description | |------|--------|-------------| | Block | `BlockArg` | Selection type bloc | | Bool | `BoolArg` | Flag booleen | | Int | `IntArg` | Valeur entiere | | Float | `FloatArg` | Valeur decimale | | Mask | `MaskArg` | Masque de blocs | | String | `StringArg` | Valeur texte | | BrushShape | `BrushShapeArg` | Sphere, Cube, etc. | | BrushOrigin | `BrushOriginArg` | Center, Surface, etc. | ### Paquets Arguments Outil Les arguments se synchronisent via paquets reseau: ```java // Paquet BuilderToolArgUpdate // Synchronise changements arguments vers serveur ``` ## Configuration Brosse ### Forme Brosse ```java public enum BrushShape { Sphere, Cube, Cylinder, // ... } ``` ### Origine Brosse ```java public enum BrushOrigin { Center, // Brosse centree sur clic Surface, // Brosse sur surface Offset // Decalage personnalise } ``` ### Axe Brosse ```java public enum BrushAxis { Y, // Toujours vertical View, // Suivre direction vue Surface // Normal a la surface } ``` ## Utilisation de l'API ### Acceder aux Parametres Outil ```java BuilderToolsPlugin tools = BuilderToolsPlugin.get(); BuilderToolsUserData userData = tools.getUserData(player); ``` ### Obtenir Outil Actuel ```java BuilderTool currentTool = userData.getCurrentTool(); BuilderToolData toolData = currentTool.getData(); ``` ## Etat Outil ### BuilderToolState Suit l'etat actuel de l'outil: ```java // Paquet BuilderToolState // Synchronise etat outil vers client ``` ### Donnees Brosse ```java // Paquet BuilderToolBrushData // Contient taille brosse, forme, pattern ```