136 lines
3.2 KiB
Markdown
136 lines
3.2 KiB
Markdown
---
|
|
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 >}}
|