--- title: Assets type: docs weight: 2 --- Les assets dans Hytale représentent le contenu du jeu comme les items, blocs et autres ressources. Comprendre comment travailler avec les assets est essentiel pour créer des expériences de plugin riches. **Packages:** - `com.hypixel.hytale.server.core.asset.type.item.config` (Item) - `com.hypixel.hytale.server.core.asset.type.blocktype.config` (BlockType) - `com.hypixel.hytale.server.core.inventory` (ItemStack) ## Types d'Assets Hytale fournit plusieurs types d'assets : | Type d'Asset | Description | |--------------|-------------| | `Item` | Représente un item qui peut être tenu ou stocké | | `BlockType` | Définit un type de bloc dans le monde | | `EntityType` | Définit un type d'entité | ## Travailler avec les Items ### Obtenir un Item ```java import com.hypixel.hytale.server.core.asset.type.item.config.Item; // Obtenir un item par identifiant Item sword = Item.getAssetMap().getAsset("hytale:iron_sword"); // Vérifier si l'item existe if (sword != null) { // Utiliser l'item } ``` ### Créer des ItemStacks ```java import com.hypixel.hytale.server.core.inventory.ItemStack; // Créer un ItemStack avec une quantité ItemStack stack = new ItemStack("hytale:iron_sword", 5); // Ou juste avec l'ID de l'item (quantité par défaut à 1) ItemStack singleItem = new ItemStack("hytale:iron_sword"); // Accéder aux propriétés String itemId = stack.getItemId(); int quantity = stack.getQuantity(); ``` ## Travailler avec les Blocs ### Obtenir un BlockType ```java import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType; BlockType stone = BlockType.getAssetMap().getAsset("hytale:stone"); ``` ### Bloc dans le Monde ```java // Obtenir le bloc à une position World world = player.getWorld(); BlockType blockType = world.getBlockType(x, y, z); // Définir le bloc à une position world.setBlock(x, y, z, "hytale:stone"); ``` ## Registre d'Assets Enregistrez des assets personnalisés via votre plugin : ```java @Override public void start() { // Enregistrer des assets personnalisés getAssetRegistry().register(myCustomAsset); } ``` ## Identifiants d'Assets Les assets sont identifiés par des identifiants avec namespace : ``` namespace:chemin Exemples: - hytale:stone - myplugin:custom_sword - myplugin:blocks/special_block ``` Le namespace de votre plugin est généralement dérivé du groupe et du nom de votre manifest. ## Packs d'Assets Les plugins peuvent inclure des packs d'assets embarqués. Définissez `includesAssetPack: true` dans votre manifest : ```json { "name": "MyPlugin", "version": "1.0.0", "group": "com.example", "main": "com.example.myplugin.MyPlugin", "includesAssetPack": true } ``` Les fichiers du pack d'assets doivent être structurés dans votre JAR : ``` assets/ └── myplugin/ ├── items/ │ └── custom_sword.json └── blocks/ └── custom_block.json ``` ## Bonnes Pratiques {{< callout type="tip" >}} - Mettez en cache les références d'assets quand c'est possible pour éviter les recherches répétées - Vérifiez toujours les null lors de la récupération d'assets par identifiant - Utilisez des identifiants avec namespace significatifs pour vos assets personnalisés {{< /callout >}}