This commit is contained in:
2026-01-20 20:33:59 +01:00
commit b16a40e431
583 changed files with 87339 additions and 0 deletions

View File

@@ -0,0 +1,205 @@
---
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
```