CustomiZer
Le plugin tout-en-un de contenu personnalisé pour les serveurs Paper. Aucune dépendance à gérer. Aucun format à mémoriser. Configurez et jouez.
Qu'est-ce qui différencie CustomiZer ?
La plupart des plugins de contenu personnalisé vous obligent à gérer les packs de ressources manuellement — zipper les fichiers à la main, les héberger quelque part, et espérer que rien ne casse. CustomiZer construit le pack pour vous, le sert depuis un serveur HTTP intégré, et l'envoie à chaque joueur qui se connecte. Vous ne touchez jamais à un fichier ZIP.
La configuration se fait dans de simples fichiers YAML conçus pour être lisibles par des humains, pas seulement des développeurs. Si vous avez déjà utilisé ItemsAdder, vous connaissez déjà le format des packs. Sinon, les guides ci-dessous vous guideront pas à pas.
Le menu principal /zitems — une interface GUI entièrement personnalisée qui permet aux joueurs de parcourir chaque pack, arme, outil et objet de votre serveur. Les administrateurs peuvent donner des objets d'un seul clic.
CustomiZer vs ItemsAdder & Nexo
Si vous avez cherché des plugins de contenu personnalisé, vous avez probablement regardé ItemsAdder et Nexo (anciennement Oraxen — Nexo est simplement une suite payante du même projet sous un nouveau nom). Voici comment CustomiZer se compare :
| Fonctionnalité | CustomiZer | ItemsAdder | Nexo (ex-Oraxen) |
|---|---|---|---|
| Serveur de pack de ressources intégré | ✓ Serveur HTTP intégré (nécessite la config URL/port) | Nécessite un hébergement manuel ou externe | Nécessite un hébergement manuel ou externe |
| Système de niveaux d'armes basé sur les kills | ✓ Chaîne de rarité entièrement configurable | ✗ | ✗ |
| Houes moissonneuses avec progression XP | ✓ Capacités par niveau | ✗ | ✗ |
| Pioches personnalisées avec progression minière | ✓ Minage en zone, effets débloqués par niveau | ✗ | ✗ |
| Sets d'armures avec bonus de set | ✓ Effets de potion + commandes | Partiel | Partiel |
| Système d'emplacements de gemmes | ✓ Intégré | ✗ (tiers) | ✗ (tiers) |
| Maîtrise / Missions / Prestige | ✓ Les trois intégrés | ✗ | ✗ |
| Générateurs de minerai | ✓ Par monde, par biome, par hauteur | ✗ | ✗ |
| Personnalisation du menu ESC | ✓ + Support Lunar & Feather Client | ✗ | ✗ |
| Tables d'artisanat personnalisées (GUI) | ✓ Intégré | ✗ | Partiel |
| Compatible avec le format de pack ItemsAdder | ✓ Compatible plug-and-play | — | ✗ |
| Conversion Bedrock / Geyser | ✓ Convertisseur automatique complet intégré (objets, blocs, modèles 3D, GUIs, mobilier, animations) | Partiel — mappages Geyser manuels, pas de convertisseur automatique | Partiel — support Geyser basique, configuration manuelle requise |
| Sacs à dos liés aux objets | ✓ Échangez l'objet, transférez le contenu | Partiel (tiers) | ✗ |
| Tarif | Payant (~25€) | Payant | Payant |
Vue d'ensemble
Il y a deux systèmes distincts avec lesquels vous travaillerez, et comprendre la différence est la clé pour maîtriser ce plugin :
Pensez-y ainsi : packs/ concerne l'apparence des choses. CustomiZe! concerne le comportement des choses. Pour de nombreuses fonctionnalités, vous avez besoin des deux — une texture dans packs/ et une définition de comportement dans CustomiZe!.
Tout ce que ce plugin peut faire
Installation
De zéro à un serveur fonctionnel avec CustomiZer en cinq minutes.
Prérequis
| Prérequis | Détails |
|---|---|
| Logiciel serveur | Paper 1.21+ (Spigot N'EST PAS supporté) |
| Java | Java 21 ou plus récent |
| PacketEvents | Requis — listez-le sous libraries: dans plugin.yml ou installez-le séparément |
| Vault | Optionnel — nécessaire pour les récompenses monétaires et les coûts de réparation |
Configuration étape par étape
Déposez le JAR dans plugins/
Copiez CustomiZer.jar dans le dossier plugins/ de votre serveur. Démarrez le serveur une fois. CustomiZer générera tous ses fichiers de configuration et sa structure de dossiers automatiquement. Ensuite, arrêtez le serveur.
Définissez votre IP publique dans config.yml
Ouvrez plugins/CustomiZer/config.yml et trouvez la section resourcepack. Définissez url sur l'adresse IP publique ou le nom de domaine de votre serveur. C'est l'adresse depuis laquelle les clients Minecraft des joueurs téléchargeront le pack.
resourcepack:
enabled: true
url: "http://123.456.789.0" # Votre IP publique
port: 7270 # Port pour le serveur HTTP du pack (ouvrez ce port dans votre pare-feu !)
Le port 7270 (ou celui que vous avez défini) doit être ouvert dans le pare-feu de votre serveur. C'est un port distinct de celui de votre serveur Minecraft.
Ajoutez vos packs (optionnel pour commencer)
Si vous avez des packs de ressources à ajouter, placez-les dans plugins/CustomiZer/packs/. Vous pouvez ignorer cela pour l'instant et y revenir plus tard — le plugin fonctionne très bien avec uniquement le contenu intégré.
Démarrez le serveur
Démarrez le serveur. Dans la console, vous verrez des messages comme [ResourcePack] HTTP server started on port 7270 et [ResourcePack] Pack ready. Lorsqu'un joueur se connecte, il recevra automatiquement une invite pour télécharger le pack de ressources.
Effectuez des modifications et rechargez
Chaque fois que vous modifiez des fichiers de configuration, exécutez /z reload en jeu ou depuis la console. Cela recharge toutes les configurations et reconstruit le pack de ressources en arrière-plan — aucun redémarrage nécessaire.
Structure des dossiers après le premier démarrage
packs/ ← Placez les packs de ressources ici
CustomiZe!/ ← Configurez les mécaniques de jeu ici
__global__/ ← Configurations globales au serveur (toujours chargées)
my_pack/ ← Surcharges de configuration par pack
includes/ ← Surcharges de pack à priorité maximale
lang/ ← en.yml, fr.yml (messages du plugin)
gui/ ← Configuration de l'apparence des GUIs
main_menu.yml ← Navigateur de catégories /z gui (titre, fond, bordure, bouton Parcourir tout)
items_shop.yml ← Boutons nav /zitems
all_items.yml ← GUI paginé "Parcourir tous les objets"
db/ ← Fichiers de base de données
backpacks.db ← Stockage des inventaires de sacs à dos (SQLite)
custom_crafting_recipes.db
import_export/ ← Tous les dossiers d'import/export
item_input/ ← Déposez les objets ici pour l'import
geyser_output/ ← Sortie du pack Bedrock (/zpack geyser)
config.yml ← Configuration principale
settings.yml ← Débogage, intégrations, toggles du menu ESC
output.zip ← Pack généré (créé automatiquement, ne pas modifier)
config.yml
Le fichier de configuration principal — serveur de pack de ressources, langue, messages, bonus économiques.
plugins/CustomiZer/config.yml. Les modifications prennent effet après /z reload.Paramètres du pack de ressources
C'est la section la plus importante. Elle contrôle comment le pack est construit et servi aux joueurs.
resourcepack:
enabled: true
# L'URL publique depuis laquelle les joueurs téléchargeront le pack.
# Doit être accessible depuis internet. Utilisez l'IP publique ou le domaine de votre serveur.
url: "http://YOUR.PUBLIC.IP"
# Le port HTTP sur lequel le plugin écoute. Ouvrez ce port dans votre pare-feu.
port: 7270
# Version du format du pack de ressources. 46 = Minecraft 1.21.x
format: 46
# Optionnel : fusionner des ZIPs de packs de ressources externes dans le pack généré.
# Les chemins sont relatifs à votre dossier plugins/.
merge-packs:
- "ModelEngine/resource pack.zip"
Langue & Messages
language: en # "en" ou "fr"
# Afficher un message dans la barre d'action quand les joueurs gagnent des récompenses
hotbar_message_enabled: true
hotbar_message_format: "&a{job} XP: &b{jobsxp} &aMoney: &b{money}"
# Afficher un message dans la barre de boss
bossbar_message_enabled: true
bossbar_message_format: "{job} | XP: {jobsxp} | Money: {money}"
bossbar_color: BLUE # BLUE, PURPLE, YELLOW, GREEN, WHITE
bossbar_style: SOLID # SOLID, SEGMENTED_6, SEGMENTED_10, SEGMENTED_12, SEGMENTED_20
Bonus de région WorldGuard
Si WorldGuard est installé et activé dans settings.yml, vous pouvez multiplier ou diviser les récompenses dans des régions spécifiques :
# Les joueurs dans "vip_mine" gagnent 2x XP et argent
Multiplier:
vip_mine: 2.0
elite_zone: 3.0
# Les joueurs dans "noob_area" gagnent la moitié des récompenses
Diviser:
noob_area: 2.0
# Bonus global temporel (tous les joueurs)
GlobalBoost:
start: "18:00"
end: "20:00"
multiplier: 1.5
settings.yml
Mode débogage, toggles d'intégration optionnels, et paramètres de pack spécifiques aux clients.
# Mettre à true pour des logs de débogage détaillés dans la console. Laissez false en production.
debug: false
dependencies:
# Activer si vous avez ItemsAdder ET voulez que ses blocs personnalisés donnent
# des récompenses CustomiZer (XP Jobs, argent, etc.)
itemsadder_support: false
# Activer si vous avez WorldGuard ET voulez des multiplicateurs basés sur les régions.
worldguard_integration_support: false
# Activer si vous avez Jobs Reborn ET voulez que les blocs personnalisés donnent des XP Jobs.
jobs_support: false
esc_menu:
# Quand true : les joueurs Feather Client reçoivent le pack SANS l'art du menu ESC.
# Feather Client est détecté automatiquement. Aucune configuration nécessaire.
ignore_feather_client: false
# Quand true : les joueurs Lunar Client reçoivent le pack SANS l'art du menu ESC.
# Nécessite le plugin Apollo-Bukkit.
ignore_lunar_client: false
/z reload — aucun redémarrage du serveur nécessaire.Comment fonctionne le pack de ressources
Comprendre ce qui se passe automatiquement pour savoir ce que vous N'avez PAS à faire.
Le processus automatique
Quand le serveur démarre (ou quand vous exécutez /z reload), CustomiZer fait tout ceci automatiquement :
Démarre un serveur HTTP
Un serveur web léger démarre sur le port que vous avez configuré (7270 par défaut). Ce serveur servira votre fichier de pack de ressources aux joueurs lorsqu'ils se connectent.
Analyse tous vos packs
Chaque dossier dans plugins/CustomiZer/packs/ est analysé. Tous les fichiers YAML dans leurs sous-dossiers configs/ sont lus et tous les objets, blocs, polices et surcharges du menu ESC sont enregistrés.
Génère les fichiers de modèles et d'états de bloc
Pour chaque objet défini avec generate: true, CustomiZer crée automatiquement le fichier de modèle JSON à partir de votre texture. Pour les blocs personnalisés, il crée les surcharges d'état de bloc de note-block. Vous n'écrivez jamais de JSON manuellement.
Construit et sert le pack
Tout est regroupé dans un fichier ZIP conservé en mémoire. Le pack est servi depuis your.ip:7270/<hash>.zip. Le hash change à chaque modification du pack, donc les joueurs obtiennent toujours la dernière version.
Envoie le pack aux joueurs qui se connectent
2 secondes après la connexion d'un joueur, il reçoit une invite lui demandant d'accepter le pack de ressources. Une fois accepté, toutes vos textures personnalisées, blocs et art GUI sont visibles pour lui.
Priorité du contenu
Quand deux sources essaient de définir le même fichier, cet ordre détermine lequel l'emporte :
| Priorité | Source | Quand l'utiliser |
|---|---|---|
| 1er (la plus haute) | plugins/CustomiZer/includes/ | Mettez vos surcharges manuelles ici. Gagne toujours. |
| 2e | Fichiers auto-générés (modèles, états de bloc, polices) | Créés automatiquement depuis vos configurations YAML. |
| 3e | merge-packs dans config.yml | ZIPs externes comme la sortie ModelEngine. |
| 4e (la plus basse) | Assets du dossier packs/ | Vos textures et modèles de pack. |
Créer un Pack
Un guide convivial pour les débutants pour ajouter votre premier pack personnalisé.
Qu'est-ce qu'un "Pack" ?
Un pack est un dossier à l'intérieur de plugins/CustomiZer/packs/ qui contient deux choses :
- Un dossier
assets/avec vos fichiers de textures et de modèles (comme un pack de ressources Minecraft standard) - Un dossier
configs/avec des fichiers YAML qui indiquent à CustomiZer quels objets et blocs existent dans ce pack
Étape par étape : votre premier pack
Créez la structure de dossiers
Créez cette structure à l'intérieur de plugins/CustomiZer/packs/ :
assets/
my_first_pack/ ← doit correspondre à votre namespace
textures/
models/
configs/
items.yml
Ajoutez votre texture
Placez un fichier PNG dans assets/my_first_pack/textures/items/. Par exemple : ruby.png. Ce doit être une image de 16×16 (ou 32×32) pixels.
Créez items.yml
Ouvrez configs/items.yml et définissez votre objet :
info:
namespace: my_first_pack # Doit correspondre au nom de votre dossier assets
items:
ruby:
display_name: "Ruby"
resource:
generate: true # Générer automatiquement le modèle depuis la texture
material: PAPER # Objet vanilla utilisé comme base
model_id: 200350 # Numéro unique — ne doit pas entrer en conflit avec d'autres packs
textures:
- items/ruby.png # Relatif à assets/my_first_pack/textures/
Enregistrez-le dans le GUI /zitems (optionnel)
Créez items/my_first_pack/gui.yml pour que les objets fonctionnels apparaissent dans /zitems. Créez optionnellement packs/my_first_pack/gui.yml pour afficher les visuels bruts dans /z gui.
# items/my_first_pack/gui.yml ← affiché dans /zitems (outil admin)
name: "My First Pack"
slot: 20 # Position dans le menu principal /zitems
icon:
pack: my_first_pack
id: ruby
lore:
- "My custom items"
gui:
title: "My First Pack"
size: 6
items:
- type: pack_item
pack: my_first_pack
id: ruby
Pour le navigateur d'affichage /z gui, créez packs/my_first_pack/gui.yml avec des entrées type: pack_item ou type: raw (même format, fichier différent).
Rechargez
Exécutez /z reload. Le pack de ressources se reconstruit en arrière-plan. Après quelques secondes, reconnectez-vous ou exécutez /zpack push pour envoyer le nouveau pack aux joueurs en ligne.
Vous pouvez maintenant donner l'objet avec /z give ruby ou le trouver dans /zitems.
model_id (Custom Model Data) doit être unique dans TOUS les packs de votre serveur. Gardez une feuille de calcul ou utilisez de grands plages de nombres par pack pour éviter les conflits. Par exemple : le pack A utilise 200000–200999, le pack B utilise 201000–201999.Règles de namespace
- Le namespace dans
info.namespacedoit être en minuscules, sans espaces, sans caractères spéciaux - Il doit correspondre au nom du dossier dans
assets/ - Vous référencez les objets de ce pack comme
namespace:item_key— par exemplemy_first_pack:ruby
Éléments du pack
Définissez des objets d'affichage personnalisés dans votre pack. Il s'agit de la couche visuelle — à quoi ressemble l'objet.
Objet simple avec modèle auto-généré
Utilisez ceci quand vous avez une texture PNG plate et voulez que CustomiZer crée automatiquement un modèle d'objet Minecraft :
info:
namespace: my_pack
items:
# La clé "ruby" est la façon dont vous référencez cet objet partout ailleurs.
# Format : namespace:key → "my_pack:ruby"
ruby:
display_name: "Ruby" # Affiché en jeu (supporte les codes couleur)
resource:
generate: true # true = générer automatiquement le modèle depuis les textures
material: PAPER # Matériau vanilla (PAPER est un choix courant pour les objets plats)
model_id: 200350 # Custom Model Data (doit être globalement unique)
textures:
- items/ruby.png # Dans assets/my_pack/textures/items/ruby.png
Objet avec un modèle fait à la main
Utilisez ceci quand vous avez un modèle 3D JSON pré-fait (par exemple depuis Blockbench) :
dragon_sword:
display_name: "Dragon Sword"
resource:
generate: false # false = utiliser le modèle à model_path
material: IRON_SWORD # Utiliser un matériau d'épée pour l'animation en main
model_path: weapons/dragon_sword # Dans assets/my_pack/models/weapons/dragon_sword.json
Objet avec permission
Seuls les joueurs avec la permission spécifiée peuvent voir ou utiliser cet objet :
vip_gem:
display_name: "VIP Gem"
permission: myserver.vip.gem # Nœud de permission optionnel
resource:
generate: true
material: PAPER
model_id: 200351
textures:
- items/vip_gem.png
Référence des champs d'objet
| Champ | Requis ? | Description |
|---|---|---|
display_name | requis | Nom affiché en jeu. Utilisez &a pour vert, &6 pour or, etc. |
permission | optionnel | Nœud de permission nécessaire pour utiliser/voir cet objet. |
resource.generate | requis | true = générer automatiquement le modèle plat. false = utiliser model_path. |
resource.material | requis | Matériau Minecraft vanilla (PAPER, IRON_SWORD, etc.) |
resource.model_id | si generate=true | Entier Custom Model Data. Doit être globalement unique. |
resource.textures | si generate=true | Liste de chemins de textures relatifs à assets/namespace/textures/ |
resource.model_path | si generate=false | Chemin vers le JSON du modèle (sans l'extension .json) |
behaviours.hat | optionnel | true = peut être porté sur l'emplacement tête |
Blocs du pack
Blocs personnalisés pouvant être placés dans le monde, utilisant les états du bloc de note sous le capot pour un placement solide réel avec des textures personnalisées.
⚠️ Deux fichiers sont toujours requis
Chaque bloc personnalisé nécessite deux fichiers de configuration séparés. C'est la chose la plus importante à comprendre :
| Fichier | Ce qui va ici | Contrôle |
|---|---|---|
packs/your_pack/configs/blocks.yml | Côté pack de ressources (visuels seulement) | Texture, ID de modèle, type de placement, particules de casse, sons |
CustomiZe!/your_pack/blocks.yml | Côté gameplay / mécaniques | Outils pouvant le casser, drops, dureté, résistance aux explosions, émission de lumière, nom & lore d'affichage, récompenses XP Jobs, config CaveBlock |
CustomiZe!. Le dossier packs/ décrit uniquement l'apparence du bloc.Fichier 1 — packs/your_pack/configs/blocks.yml
Ce fichier enregistre le bloc dans le pack de ressources. Gardez-le purement visuel — textures, ID de modèle, type de placement, et sons de casse uniquement.
# packs/my_pack/configs/blocks.yml
info:
namespace: my_pack
items:
silver_ore:
display_name: "Silver Ore" # Nom de base pour le registre du pack
resource:
generate: true
material: PAPER # Toujours PAPER pour les blocs personnalisés
model_id: 200426 # CMD unique — ne doit pas entrer en conflit avec un autre pack
textures:
- blocks/silver_ore.png # Chemin dans assets/my_pack/textures/
specific_properties:
block:
placed_model:
type: REAL_NOTE # Requis — utilise l'astuce du bloc de note
sound:
break:
name: "BLOCK_STONE_BREAK"
volume: 1
pitch: 1
deepslate_silver_ore:
display_name: "Deepslate Silver Ore"
resource:
generate: true
material: PAPER
model_id: 200427 # CMD différent de silver_ore ci-dessus
textures:
- blocks/deepslate_silver_ore.png
specific_properties:
block:
placed_model:
type: REAL_NOTE
sound:
break:
name: "BLOCK_DEEPSLATE_BREAK"
volume: 1
pitch: 1
Fichier 2 — CustomiZe!/your_pack/blocks.yml
Ce fichier contrôle tout le gameplay : temps de minage, résistance aux explosions, outils pouvant casser le bloc, ce qu'il drop, s'il brille, et récompenses XP Jobs. Consultez la page Blocs personnalisés (CustomiZe!) pour le format complet et toutes les options.
Outils du pack
Outils et armes vanilla retexturisés — mêmes statistiques, apparence personnalisée.
Les outils de pack sont définis exactement comme les éléments de pack, mais avec un matériau d'outil comme base. Ils héritent de toutes les statistiques vanilla (durabilité, vitesse de minage, dégâts d'attaque) de ce matériau.
info:
namespace: my_pack
items:
silver_sword:
display_name: "Silver Sword"
resource:
generate: true
material: IRON_SWORD # Statistiques d'une épée en fer, texture personnalisée
model_id: 200500
textures:
- tools/silver_sword.png
silver_pickaxe:
display_name: "Silver Pickaxe"
resource:
generate: true
material: IRON_PICKAXE # Statistiques d'une pioche en fer, texture personnalisée
model_id: 200501
textures:
- tools/silver_pickaxe.png
mythril_axe:
display_name: "Mythril Axe"
resource:
generate: true
material: DIAMOND_AXE # Statistiques diamant
model_id: 200502
textures:
- tools/mythril_axe.png
Bons choix de matériaux par type d'outil
| Type d'outil | Matériau recommandé |
|---|---|
| Épée | WOODEN_SWORD, STONE_SWORD, IRON_SWORD, DIAMOND_SWORD |
| Pioche | WOODEN_PICKAXE, IRON_PICKAXE, DIAMOND_PICKAXE, NETHERITE_PICKAXE |
| Hache | WOODEN_AXE, IRON_AXE, DIAMOND_AXE |
| Pelle | IRON_SHOVEL, DIAMOND_SHOVEL |
| Houe | IRON_HOE, DIAMOND_HOE |
| Objet générique | PAPER (le plus courant — pas de barre de durabilité, texture plate) |
Images de police (Glyphes)
Images PNG rendues comme caractères texte — utilisées pour les arrière-plans de GUI, badges de rang, icônes dans la description, et art du menu ESC.
Qu'est-ce qu'une image de police ?
Minecraft supporte les polices personnalisées où chaque caractère peut être remplacé par une image PNG. CustomiZer l'utilise pour afficher des images partout où le texte est affiché — y compris les titres d'inventaire, la description d'objet, le chat, les tableaux de score, et le menu ESC.
C'est ainsi que fonctionnent les arrière-plans de GUI élaborés, les icônes de rang dans le chat, et les logos du menu ESC. Ce sont tous simplement des images PNG soigneusement positionnées rendues comme des "caractères".
Définir des images de police dans un pack
Créez un font.yml (ou tout fichier .yml) dans le dossier configs/ de votre pack :
info:
namespace: my_pack
font_images:
my_icon: # Clé utilisée pour afficher cette image
path: "font/my_icon.png" # Dans assets/my_pack/textures/font/my_icon.png
scale_ratio: 11 # Taille de l'image en pixels (hauteur)
y_position: 9 # Décalage vertical par rapport à la ligne de base du texte
Utiliser une image de police dans le texte
Une fois définie, vous affichez l'image en utilisant la balise MiniMessage <font_image> :
title: "<font_image:my_pack:my_icon>"
# ou dans la description d'objet :
lore:
- "<font_image:my_pack:my_coin> 500 pièces"
L'image apparaît en ligne partout où du texte apparaît — dans les titres d'inventaire, les noms d'objets, les lignes de description, les messages de chat, etc.
Glyphes de badges de rang (exemple gem_ranks)
Les images de police peuvent être soumises à permission. Quand show_in_gui: true est défini, les joueurs avec la permission requise voient leur badge de rang affiché dans le GUI :
info:
namespace: gem_ranks
font_images:
bronze_amethyst_i:
permission: bronze_amethyst_i # Le joueur a besoin de cette permission pour voir ce glyphe
show_in_gui: true # Afficher dans le GUI de rang
path: "bronze_amethyst_i" # assets/gem_ranks/textures/bronze_amethyst_i.png
scale_ratio: 12
y_position: 9.5
gold_diamond_iii:
permission: gold_diamond_iii
show_in_gui: true
path: "gold_diamond_iii"
scale_ratio: 12
y_position: 9.5
Donnez à un joueur la permission gem_ranks.bronze_amethyst_i et il verra ce badge apparaître à côté de son nom ou dans le GUI de rang.
Images de police d'arrière-plan GUI
L'arrière-plan du GUI (l'image derrière la grille d'inventaire) est également une image de police. Elle est rendue dans le titre de l'inventaire avec des caractères de décalage de pixels spéciaux :
info:
namespace: CustomiZerInternal
font_images:
"1":
path: custom/30main_gui/1 # L'image d'arrière-plan du GUI
scale_ratio: 255 # Grande échelle = arrière-plan complet de l'inventaire
y_position: 46
x_position: -6.5
Puis dans le titre du GUI :
title: "<white><shift:-8><font_image:CustomiZerInternal:1>"
Le <shift:-8> est un décalage de pixel qui positionne correctement l'image d'arrière-plan.
Conseils pour les images de police
- scale_ratio : La hauteur de l'image en pixels de jeu. 11–12 est bien pour les petites icônes. 255 est utilisé pour les arrière-plans GUI plein écran.
- y_position : Déplacez l'image vers le haut ou le bas par rapport à la ligne de texte. Positif = haut, négatif = bas.
- Utilisez toujours des PNG avec transparence pour les icônes et badges.
- Testez vos glyphes en vous donnant un objet papier avec la balise de police dans son nom.
Commandes de glyphes en jeu
CustomiZer inclut un ensemble complet de commandes d'administration pour parcourir, rechercher, prévisualiser et gérer les glyphes directement en jeu. Toutes nécessitent la permission cxp.admin.
/zpack fonts
Liste chaque image de police enregistrée dans tous les packs. Affiche le nom du pack, l'ID de police, le codepoint Unicode, et la balise exacte à coller dans gui.yml :
# Exemple de sortie dans le chat :
# [CustomiZer] Images de police enregistrées (12) :
# gem_ranks:bronze_amethyst_i U+E000 → gui.yml: <font_image:gem_ranks:bronze_amethyst_i>
# my_pack:my_icon U+E001 → gui.yml: <font_image:my_pack:my_icon>
/zpack font <packName> <fontId>
Prévisualise un seul glyphe. L'envoie à votre barre d'action pour que vous puissiez voir exactement son apparence en jeu. Exécutez cette commande chaque fois que vous ajoutez une nouvelle image de police et voulez vérifier sa taille et position.
/zpack glyph list [packName]
Liste tous les glyphes enregistrés (avec les métadonnées de l'API Glyph). Ajoutez un nom de pack pour filtrer uniquement les glyphes de ce pack :
# Tous les glyphes :
/zpack glyph list
# Uniquement les glyphes de "gem_ranks" :
/zpack glyph list gem_ranks
Chaque entrée affiche le nom du pack, l'ID de police, le codepoint Unicode et deux liens cliquables — [copier balise] copie la balise <font_image:pack:id> complète prête à coller dans n'importe quel YAML, et [copier char] copie le caractère Unicode rendu lui-même. Pas besoin d'ouvrir un fichier YAML — trouvez le glyphe que vous voulez dans le chat, cliquez copier, collez-le où vous en avez besoin.
/zpack glyph <packName> <fontId>
Affiche des informations détaillées sur un glyphe spécifique — son codepoint, le caractère Unicode, et la balise YAML pour l'utiliser.
/zpack glyph search <query>
Recherche tous les glyphes enregistrés par nom. Utile quand vous avez de nombreuses images de police et ne vous souvenez pas de l'ID exact :
/zpack glyph search bronze
/zpack glyph export
Affiche des extraits YAML pour chaque glyphe enregistré. Utile si vous voulez verrouiller les codepoints pour qu'ils ne changent pas après un rechargement (copiez la sortie dans vos configs de pack).
/zpack glyph regenerate
Efface tout le registre de codepoints de glyphes et réattribue tous les codepoints de zéro. Utilisez ceci si les codepoints se sont désalignés après l'ajout ou la suppression de glyphes. Attention : les joueurs doivent re-télécharger le pack de ressources après avoir exécuté cette commande.
Intégration PlaceholderAPI
Si PlaceholderAPI est installé, vous pouvez utiliser des glyphes comme placeholders partout où PAPI est supporté :
| Placeholder | Retourne |
|---|---|
%customizer_glyph_<pack>_<id>% | Le caractère rendu (à utiliser dans le chat, la description, etc.) |
%customizer_glyph_unicode_<pack>_<id>% | Échappement Unicode (ex. \uEC00) |
%customizer_glyph_hex_<pack>_<id>% | Codepoint hexadécimal (ex. EC00) |
Exemple dans un préfixe LuckPerms : [%customizer_glyph_gem_ranks_gold_i%] — cela affiche l'icône de rang or à côté du nom du joueur dans le chat.
Personnalisation du menu ESC
Remplacez le texte du menu pause vanilla (comme "Menu du jeu" et "Se déconnecter") par des images PNG personnalisées.
Comment ça fonctionne
Les boutons du menu ESC de Minecraft affichent du texte depuis les fichiers de langue — par exemple, le titre affiche la traduction de menu.game. CustomiZer injecte des caractères de police personnalisés dans ces chaînes de traduction, remplaçant le texte par vos caractères d'image PNG.
Le résultat : les joueurs ouvrent leur menu ESC et au lieu de "Menu du jeu", ils voient l'image du logo de votre serveur.
Configuration
Créez un fichier de configuration YAML dans le dossier configs/ de votre pack :
info:
namespace: my_esc_pack
minecraft_lang_overwrite:
esc_menu_texts:
entries:
# Remplacer le titre "Menu du jeu" par votre image de logo
"menu.game": ":top_logo_1::offset_-1:"
# Remplacer le texte du bouton "Se déconnecter" par une image de bannière personnalisée
"menu.disconnect": ":offset_-10::offset_-256::bottom_banner::offset_-256:"
# Appliquer à tous les fichiers de langue (ALL), ou à des spécifiques : [en_us, fr_fr]
languages:
- ALL
# Pour les joueurs Lunar Client (nécessite Apollo-Bukkit) :
# Définissez ceci sur l'emplacement de ressource de la même image de logo
apollo_icon: "my_esc_pack:textures/top_logo_1.png"
La syntaxe des tokens
Dans la valeur de la chaîne, vous utilisez des tokens entourés de deux-points :
:my_image_key:— affiche l'image de police définie commemy_image_keydans votre font.yml:offset_-256:— déplace le curseur vers la gauche de 256 pixels (utilisé pour positionner les images):offset_10:— déplace le curseur vers la droite de 10 pixels
Compatibilité client
| Client | Menu ESC fonctionne ? | Comment |
|---|---|---|
| Minecraft vanilla | ✅ Oui | Surcharge de langue (automatique) |
| Lunar Client | ✅ Oui | Via apollo_icon + plugin Apollo-Bukkit |
| Feather Client | ⚠️ Configurable | Définissez ignore_feather_client: true dans settings.yml pour ignorer l'art ESC pour les joueurs Feather |
Le dossier CustomiZe!
Où vous configurez les mécaniques de gameplay — complètement séparé du système de packs visuels.
Pourquoi est-il séparé ?
Le dossier packs/ gère l'apparence — textures, modèles, sons. Le dossier CustomiZe!/ gère le comportement — comment les objets fonctionnent dans le jeu.
Cette séparation existe parce que de nombreux serveurs veulent utiliser des packs de ressources tiers (achetés ou téléchargés) exactement tels quels, sans les modifier. En gardant la configuration de comportement séparée, vous pouvez utiliser les textures de n'importe quel pack tout en contrôlant entièrement le fonctionnement de ces objets sur votre serveur.
Structure des dossiers
__global__/ ← Configuration globale au serveur (chargée en premier)
items.yml ← Objets utilisables personnalisés avec actions
swords.yml ← Épées personnalisées avec rareté et progression
axes.yml ← Haches personnalisées (même format que les épées)
armors.yml ← Pièces d'armure personnalisées
blocks.yml ← Blocs personnalisés avec drops et récompenses
pickaxes.yml ← Pioches à niveaux
harvesterhoes.yml ← Houes moissonneuses avec récolte automatique
cosmetics.yml ← Objets cosmétiques portables
gems.yml ← Définitions d'emplacements de gemmes
sets.yml ← Bonus de sets d'armures
defaulkttools/ ← Surcharges par pack pour le pack "defaulkttools"
swords.yml ← Épées spécifiques à ce pack seulement
pickaxes.yml
gui.yml ← Objets fonctionnels affichés dans /zitems pour ce pack
barrel_knight/
armors.yml
blocks.yml
packs/ ← Fichiers du navigateur d'affichage par pack pour /z gui
defaulkttools/
gui.yml ← Objets visuels bruts affichés dans /z gui pour ce pack
Comment la fusion fonctionne
Tous les fichiers CustomiZe!/*/swords.yml sont fusionnés en profondeur au moment du chargement. __global__ se charge en premier, puis chaque dossier de pack par ordre alphabétique. Cela signifie :
- Vous pouvez ajouter des épées spécifiques au pack dans
CustomiZe!/my_pack/swords.ymlsans toucher au fichier global - Les objets/blocs/épées/etc. de tous les packs sont combinés en une grande liste
- Si deux fichiers définissent la même clé, le fichier chargé en dernier l'emporte (ordre alphabétique)
Référence rapide — quel fichier pour quoi ?
| Je veux configurer... | Fichier à modifier |
|---|---|
| Un objet cliquable avec effets/commandes | CustomiZe!/__global__/items.yml |
| Une épée qui monte de niveau et change de texture | CustomiZe!/__global__/swords.yml |
| Une pièce d'armure avec attributs | CustomiZe!/__global__/armors.yml |
| Un bloc plaçable avec drops et XP Jobs | CustomiZe!/__global__/blocks.yml |
| Une pioche à niveaux avec minage en zone | CustomiZe!/__global__/pickaxes.yml |
| Une houe moissonneuse avec replantation automatique | CustomiZe!/__global__/harvesterhoes.yml |
| Comment un pack apparaît dans /zitems (objets fonctionnels) | items/my_pack/gui.yml |
| Comment un pack apparaît dans /z gui (navigateur d'affichage) | packs/my_pack/gui.yml |
| Boutons nav /zitems | plugins/CustomiZer/gui/items_shop.yml |
| Apparence du navigateur de catégories /z gui | plugins/CustomiZer/gui/main_menu.yml |
Objets personnalisés
Objets utilisables avec actions au clic, temps de recharge, utilisations limitées et effets alimentaires.
plugins/CustomiZer/CustomiZe!/__global__/items.ymlOu par pack :
CustomiZe!/my_pack/items.ymlQu'est-ce qu'un objet personnalisé ?
Un objet personnalisé est tout objet qui fait quelque chose de spécial au clic droit (ou quand on le mange). Exemples : un parchemin qui exécute une commande, une potion de santé qui restaure des cœurs, un sac d'argent qui donne de la monnaie, un aliment qui applique des effets de potion.
Les objets personnalisés sont définis ici. La texture provient d'un élément de pack dans packs/. Vous les connectez en faisant correspondre le numéro MODELDATA au model_id dans votre pack.
Exemple complet
items:
teleport_scroll:
TYPE: PAPER # Matériau vanilla (doit correspondre au matériau de l'élément de pack)
NAME: "&d✦ Teleport Scroll"
LORE:
- "&7Right-click to teleport to spawn."
- "&8Cooldown: 30 seconds"
- "&8Uses: &f%uses% &8remaining"
MODELDATA: 12000 # Doit correspondre au model_id dans votre définition d'élément de pack
COOLDOWN: 30 # Secondes entre les utilisations
USE: 5 # L'objet se casse après 5 utilisations (-1 = illimité)
INTERACTS:
- RIGHT_CLICK_AIR
- RIGHT_CLICK_BLOCK
ACTION:
TYPE: COMMAND
COMMAND: "spawn %player%" # %player% est remplacé par le nom du joueur
Tous les types d'ACTION
| TYPE | Champs supplémentaires requis | Ce qu'il fait |
|---|---|---|
COMMAND | COMMAND: "commande ici" | Exécute une commande console. Utilisez %player% pour le nom du joueur. |
HEAL | — | Restaure 2 cœurs (4 points de vie) instantanément. |
JUMP | DURATION: 10 | Donne Saut II pendant N secondes. |
SPEED | DURATION: 10 | Donne Vitesse II pendant N secondes. |
REGEN | DURATION: 10 | Donne Régénération II pendant N secondes. |
STRENGTH | DURATION: 10 | Donne Force II pendant N secondes. |
LUCK | DURATION: 10 | Donne Chance II pendant N secondes. |
GOD | — | Rend le joueur invulnérable (mode dieu). |
FLY | — | Active le vol en mode créatif. |
MONEY | AMOUNT: 500 | Donne exactement ce montant via l'économie Vault. |
RANDOMMONEY | AMOUNT: 100 + MAX_AMOUNT: 500 | Donne un montant aléatoire entre min et max. |
JOBSBOOSTER | JOB_BOOST_MULTIPLIER: 1.5 + JOB_BOOST_DURATION: 300 | Booste temporairement les gains XP Jobs. |
EAT | Utilise le bloc FOOD ci-dessous | L'objet est mangé. Les effets s'appliquent après consommation. |
NONE | — | Objet d'affichage uniquement. Rien ne se passe au clic. |
Options INTERACTS
Contrôle quels clics déclenchent l'action :
| Valeur | Quand elle se déclenche |
|---|---|
RIGHT_CLICK_AIR | Clic droit en regardant le ciel |
RIGHT_CLICK_BLOCK | Clic droit en regardant un bloc |
SHIFT_RIGHT_CLICK_AIR | Maj + clic droit dans les airs |
SHIFT_RIGHT_CLICK_BLOCK | Maj + clic droit sur un bloc |
Objets alimentaires
N'importe quel objet peut être rendu comestible — même le PAPIER. Ajoutez un bloc FOOD et définissez ACTION TYPE: EAT :
items:
magic_herb:
TYPE: PAPER
NAME: "&aMagic Herb"
LORE:
- "&7Eat to gain Regeneration and Speed."
MODELDATA: 12010
COOLDOWN: 0
USE: -1
INTERACTS: [] # Vide — manger déclenche l'action, pas le clic
ACTION:
TYPE: EAT
FOOD:
NUTRITION: 4 # Barres de faim restaurées (2 = un pilon)
SATURATION: 0.6 # Saturation ajoutée (0.0–1.0)
CAN_ALWAYS_EAT: true # Le joueur peut manger ceci même s'il n'a pas faim
EFFECTS:
- effect: REGENERATION
duration: 200 # ticks (20 ticks = 1 seconde, donc 200 = 10 secondes)
amplifier: 1 # 0 = Niveau I, 1 = Niveau II, 2 = Niveau III
chance: 1.0 # 100% de chance
- effect: SPEED
duration: 100 # 5 secondes
amplifier: 0 # Vitesse I
chance: 0.5 # 50% de chance — peut ne pas s'appliquer !
Placeholders de description
Dans la description de l'objet, vous pouvez utiliser %uses% pour afficher les utilisations restantes dynamiquement. Les codes couleur (&a, &6, etc.) et les balises MiniMessage fonctionnent dans NAME et LORE.
Épées & Haches personnalisées
Armes personnalisées avec attributs, enchantements, effets de coup, dégâts élémentaires et vol de vie. Chaque fonctionnalité listée ci-dessous est optionnelle — une épée n'a besoin d'aucune configuration spéciale pour fonctionner comme un simple objet personnalisé.
CustomiZe!/__global__/swords.yml et CustomiZe!/__global__/axes.yml. Les haches utilisent exactement le même format sous une clé racine axes: au lieu de swords:.rarity: et l'épée fonctionne très bien.Toutes les clés de configuration
| Clé | Type | Requis ? | Défaut | Description |
|---|---|---|---|---|
type | Chaîne | Optionnel | IRON_SWORD | Matériau vanilla. Doit correspondre au matériau de l'élément de pack. |
pack_id | Chaîne | Optionnel | — | Format : packName:itemId. Si défini, le matériau et CMD sont résolus depuis PackManager — omettez type et custom_model_data. |
display_name | Chaîne | Optionnel | "Custom Sword" | Nom par défaut quand aucun niveau de rareté n'est actif. |
custom_model_data | Entier | Optionnel | 0 | CMD de repli quand aucun bloc de rareté n'est présent. |
durability | Entier | Optionnel | Max du matériau | Durabilité personnalisée suivie par le plugin (indépendante des dégâts vanilla). Stockée dans le NBT de l'objet. |
HIDE-ENCHANTS | Booléen | Optionnel | false | Masque l'éclat d'enchantement et les lignes d'info-bulle. |
lore | Liste<Chaîne> | Optionnel | [] | Lignes de description de base. Supporte les placeholders listés ci-dessous et les balises couleur MiniMessage. |
enchantments | Section | Optionnel | — | Map nom d'enchantement → niveau (voir ci-dessous). |
attributes | Section | Optionnel | — | Map nom d'attribut → valeur plate (voir ci-dessous). |
effects-enemy | Section | Optionnel | — | Effets de potion appliqués à l'ennemi touché à chaque attaque. |
effects-self | Section | Optionnel | — | Effets de potion appliqués à l'attaquant à chaque coup. |
elemental_damage | Chaîne | Optionnel | "None" | Élément cosmétique/fonctionnel : Fire, Ice, Lightning, Shadow, ou None. |
rarity | Section | Optionnel | — | Système d'amélioration basé sur les kills. Supprimez entièrement ce bloc pour une épée statique. Voir Système de niveaux. |
Attributs
Écrits comme une map plate sous attributes:. Les valeurs s'ajoutent aux statistiques par défaut du matériau de base. Tous sont optionnels — incluez uniquement ce dont vous avez besoin.
| Nom de l'attribut | Effet | Valeur exemple |
|---|---|---|
GENERIC_ATTACK_DAMAGE | Dégâts d'attaque plats ajoutés aux coups | 8.0 |
GENERIC_ATTACK_SPEED | Vitesse d'attaque (défaut vanilla ≈ 1.6) | 1.6 |
GENERIC_MAX_HEALTH | Santé maximale bonus (2.0 = 1 cœur supplémentaire) | 4.0 |
GENERIC_MOVEMENT_SPEED | Bonus de multiplicateur de vitesse de déplacement | 0.02 |
GENERIC_KNOCKBACK_RESISTANCE | Réduit les reculs reçus (1.0 = immunisé) | 0.5 |
GENERIC_LUCK | Modificateur de chance (affecte les tables de loot) | 2.0 |
ADD_NUMBER.Enchantements
Écrits comme section enchantments: avec nom d'enchantement (clé de registre Bukkit) → niveau :
enchantments:
sharpness: 5
unbreaking: 3
looting: 2
fire_aspect: 2
knockback: 2
sweeping_edge: 3
Effets de coup (effects-enemy / effects-self)
Chaque entrée sous effects-enemy ou effects-self est une clé d'effet de potion avec deux sous-clés :
| Sous-clé | Type | Défaut | Description |
|---|---|---|---|
chance | Double (0.0–1.0) | 0.0 | Probabilité par coup. 1.0 = 100%, 0.5 = 50%. |
duration | Entier (ticks) | 100 | Durée de l'effet. 20 ticks = 1 seconde. |
Le nom de l'effet est la clé de registre Bukkit PotionEffectType. Les plus courants :
| Clé d'effet | Ce qu'il fait |
|---|---|
slowness | Ralentit la vitesse de déplacement |
weakness | Réduit les dégâts d'attaque |
poison | Inflige des dégâts dans le temps (ne tue pas en dessous de 1pv) |
wither | Inflige des dégâts dans le temps (peut tuer) |
blindness | Réduit le champ de vision du joueur |
nausea | Effet de tremblement d'écran |
levitation | Soulève l'entité dans les airs |
strength | (soi seulement) Augmente vos dégâts |
speed | (soi seulement) Augmente la vitesse de déplacement |
regeneration | (soi seulement) Soigne dans le temps |
absorption | (soi seulement) Ajoute des cœurs d'absorption |
resistance | (soi seulement) Réduit les dégâts entrants |
Dégâts élémentaires
Définissez elemental_damage sur l'une de ces valeurs. Chacune déclenche un effet différent au coup :
| Valeur | Effet sur l'ennemi |
|---|---|
Fire | Met la cible en feu |
Ice | Applique Lenteur à la cible |
Lightning | Frappe la foudre à l'emplacement de la cible |
Shadow | Applique Cécité à la cible |
None | Pas d'effet élémentaire (défaut) |
Vol de vie
Le vol de vie est automatique quand le bloc rarity est présent — vous ne le configurez pas manuellement. Le montant s'adapte au niveau de rareté actuel :
| Niveau de rareté | Vol de vie |
|---|---|
| Commun | 0.01 PV plat par coup |
| Rare | 15% des dégâts infligés |
| Épique | 25% des dégâts infligés |
| Légendaire | 35% des dégâts infligés |
| Mythique | 50% des dégâts infligés |
rarity:). Les épées statiques sans bloc de rareté n'ont pas de vol de vie.Placeholders de description
| Placeholder | Remplacé par |
|---|---|
%custom_durability% | Durabilité restante actuelle |
%max_custom_durability% | Durabilité maximale à ce niveau |
%rarity% | Nom du niveau de rareté actuel (seulement quand le bloc rarity existe) |
%progress% | Kills vers la prochaine amélioration |
%required% | Total de kills requis pour la prochaine amélioration |
%total_kills% | Kills totaux de tous les temps avec cette arme |
%total_blocks% | Blocs cassés avec cette épée |
Exemple minimal (sans niveaux)
swords:
fire_sword:
type: IRON_SWORD
display_name: "&c&l🔥 Fire Sword"
durability: 3000
HIDE-ENCHANTS: true
lore:
- "&7A sword kissed by flame."
- "&8Durability: %custom_durability% / %max_custom_durability%"
attributes:
GENERIC_ATTACK_DAMAGE: 8.0
GENERIC_ATTACK_SPEED: 1.8
enchantments:
unbreaking: 3
looting: 2
effects-enemy:
slowness:
chance: 0.5 # 50% de chance par coup
duration: 60 # 3 secondes
elemental_damage: Fire
Exemple complet (avec niveaux de rareté)
swords:
dragon_blade:
type: IRON_SWORD
display_name: "&4Dragon Blade"
durability: 5000
HIDE-ENCHANTS: true
lore:
- "&8Rarity: %rarity%"
- "&8Progress: %progress% / %required% kills"
- "&8Durability: %custom_durability% / %max_custom_durability%"
attributes:
GENERIC_ATTACK_DAMAGE: 10.0
GENERIC_ATTACK_SPEED: 1.6
enchantments:
sharpness: 3
looting: 2
effects-enemy:
slowness:
chance: 0.40
duration: 60
weakness:
chance: 0.25
duration: 100
effects-self:
strength:
chance: 0.15
duration: 120
elemental_damage: Fire
# Supprimez entièrement ce bloc rarity si vous ne voulez pas de niveaux
rarity:
common:
custom_model_data: 32001
name: "&7Common Dragon Blade"
rare:
custom_model_data: 32002
name: "&9Rare Dragon Blade"
epic:
custom_model_data: 32003
name: "&5Epic Dragon Blade"
legendary:
custom_model_data: 32004
name: "&6Legendary Dragon Blade"
mythical:
custom_model_data: 32005
name: "&dMythical Dragon Blade"
Armures personnalisées
Pièces d'armure avec bonus de statistiques, effets de potion quand portées, cosmétiques de marque d'armure, et modèles 3D équipables.
CustomiZe!/__global__/armors.ymlToutes les clés de configuration
| Clé | Type | Requis ? | Description |
|---|---|---|---|
type | Chaîne | Requis (mode natif) | Matériau d'armure vanilla, ex. DIAMOND_HELMET. Utilisé quand PAS en mode pack_id. |
pack_id | Chaîne | Optionnel | Format : packName:itemId. Si défini, matériau et CMD sont tirés de PackManager automatiquement — omettez type, model_data. |
base_material | Chaîne | Optionnel | Surcharge le matériau vanilla sous-jacent pour la liaison d'emplacement d'attribut seulement. Ex. définissez base_material: NETHERITE_CHESTPLATE pour que votre cuirasse en cuir personnalisée obtienne les emplacements d'attributs de la netherite. |
display_name | Chaîne | Requis | Nom d'objet montré aux joueurs. Supporte MiniMessage. |
lore | Liste<Chaîne> | Optionnel | Lignes de description. Supporte les balises couleur MiniMessage. |
model_data | Entier | Optionnel | Custom Model Data. Utilisé en mode natif (sans pack_id). |
item_model | Chaîne | Optionnel | Composant de modèle d'objet 1.21.4+ (namespace:chemin). Alternative au CMD pour les versions Minecraft plus récentes. |
attributes | Liste<Map> | Optionnel | Bonus de statistiques appliqués pendant que la pièce est portée. Chaque entrée a attribute, amount, et operation. |
potion_effects | Liste<Map> | Optionnel | Effets de potion appliqués pendant que l'armure est équipée ; supprimés quand elle est retirée. |
trim | Section | Optionnel | Marque d'armure cosmétique. Clés : material et pattern. |
equippable | Section | Optionnel | Composant équipable 1.21.4+ pour les modèles portés en 3D. Clés : model et equip_sound. |
Attributs
Les attributs sont une liste. Chaque entrée est une map avec trois clés : attribute, amount, et operation. Tous sont liés à l'emplacement d'équipement de l'armure automatiquement.
| Nom de l'attribut | Effet | Notes |
|---|---|---|
GENERIC_MAX_HEALTH | Santé maximale bonus | 2.0 = 1 cœur supplémentaire |
GENERIC_ARMOR | Points d'armure | 2.0 = 1 segment de barre d'armure |
GENERIC_ARMOR_TOUGHNESS | Robustesse d'armure | Réduit les dégâts des coups à haute puissance |
GENERIC_MOVEMENT_SPEED | Bonus de vitesse de marche | 0.01 ≈ légère augmentation de vitesse |
GENERIC_KNOCKBACK_RESISTANCE | Réduit le recul | 1.0 = complètement immunisé au recul |
GENERIC_ATTACK_DAMAGE | Bonus de dégâts en mêlée | Fonctionne aussi sur l'armure (cas d'utilisation rare) |
GENERIC_LUCK | Modificateur de chance | Affecte les lancers de tables de loot |
Opérations d'attribut
| operation | Effet |
|---|---|
ADD_NUMBER | Ajoute une valeur plate. La plus courante pour les bonus d'armure/santé. |
ADD_SCALAR | Ajoute un pourcentage de la valeur d'attribut de base. |
MULTIPLY_SCALAR_1 | Multiplie la valeur de base par le montant donné. |
Effets de potion (pendant que portée)
Chaque entrée dans potion_effects est une map avec trois clés :
| Clé | Type | Description |
|---|---|---|
effect | Chaîne | Clé de registre Bukkit PotionEffectType, ex. fire_resistance, strength, speed, regeneration, night_vision, water_breathing |
duration | Entier (ticks) | Durée de l'effet. Utilisez un très grand nombre comme 999999 pour permanent pendant le port. |
amplifier | Entier | Niveau de l'effet. 0 = Niveau I, 1 = Niveau II, 2 = Niveau III. |
Marque d'armure
Ajoute une superposition de motif purement cosmétique sur la texture de l'armure. Les deux clés sont requises si vous incluez la section trim.
trim:
material: GOLD # Couleur de la marque (GOLD, IRON, DIAMOND, NETHERITE, etc.)
pattern: WAVY # Motif de marque (SENTRY, DUNE, COAST, WILD, WARD, EYE, VEX, TIDE,
# SNOUT, RIB, SPIRE, SILENCE, FLOW, BOLT, WAVY, SHAPER, RAISER, HOST)
Équipable (Modèle 3D porté)
La section equippable définit un modèle 3D qui apparaît sur le corps du joueur quand il porte l'armure. Nécessite des clients Minecraft 1.21.4+.
equippable:
model: "my_pack:dragon_armor" # Emplacement de ressource du modèle équipable
equip_sound: "minecraft:item.armor.equip_diamond" # Son lors de l'équipement
pack_id, les valeurs equippable.model et equippable.equip_sound de l'élément de pack sont utilisées par défaut. La section equippable dans armors.yml surcharge ces valeurs.Exemple complet
custom_armors:
dragon_helmet:
pack_id: "my_pack:dragon_helmet" # Tire matériau + CMD de PackManager
display_name: "&4&lDragon Helmet"
lore:
- "&7Forged from dragonscale."
- "&8+4 Max Health | +3 Armor"
attributes:
- attribute: GENERIC_MAX_HEALTH
amount: 4.0
operation: ADD_NUMBER # +2 cœurs supplémentaires
- attribute: GENERIC_ARMOR
amount: 3.0
operation: ADD_NUMBER
potion_effects:
- effect: fire_resistance
duration: 999999 # Permanent pendant le port
amplifier: 0 # Niveau I
- effect: night_vision
duration: 999999
amplifier: 0
trim:
material: GOLD
pattern: WAVY
equippable:
model: "my_pack:dragon_armor"
equip_sound: "minecraft:item.armor.equip_diamond"
Blocs personnalisés — Côté gameplay
Ce fichier contrôle tout ce qui se passe quand un bloc personnalisé est placé ou miné — dureté, résistance aux explosions, drops, outils requis, émission de lumière, nom d'affichage, description, sons, particules et XP Jobs. C'est le complément de packs/blocks.yml qui gère uniquement les textures.
CustomiZe!/your_pack/blocks.yml (par pack, recommandé) ou CustomiZe!/__global__/blocks.yml (global)La règle des deux fichiers (rappel rapide)
| packs/your_pack/configs/blocks.yml | CustomiZe!/your_pack/blocks.yml |
|---|---|
| Texture, ID de modèle, type de placement, sons de casse | Nom d'affichage, description, dureté, blast_resistance, break_with, drops, niveau de lumière, particules, récompenses XP |
hardness et blast_resistance — appartiennent à CustomiZe!. Le dossier packs/ est strictement pour les visuels.Configuration complète de bloc
Voici un exemple complet montrant chaque option disponible pour un bloc. N'utilisez que les champs dont vous avez besoin — la plupart sont optionnels.
# CustomiZe!/my_pack/blocks.yml
blocks:
silver_ore:
# Lie cette entrée à packs/my_pack/configs/blocks.yml → silver_ore
# Format : "namespace:item_key" (namespace = valeur info.namespace du pack)
pack_id: "my_pack:silver_ore"
# Nom d'affichage riche montré dans la description et les messages de casse.
# Supporte les balises MiniMessage (dégradés, couleurs, gras, etc.)
display_name: "Silver Ore"
# Lignes de description affichées quand le bloc est dans la main du joueur.
lore:
- "A pale metallic ore."
- "▸ Drops Raw Silver when mined."
# Temps de minage — reflète les valeurs de dureté vanilla.
# Plus élevé = plus lent à miner. Omis = utilise le timing vanilla NOTE_BLOCK (très rapide).
# Référence : stone=1.5, iron_ore=3.0, deepslate_ore=4.5, obsidian=50.0
hardness: 3.0
# Résistance aux explosions. Les blocs avec cette valeur sont entièrement protégés
# de la TNT, des creepers et autres explosions. Omis = permet la destruction.
blast_resistance: 3.0
# Niveau d'émission de lumière (0 = pas de lumière, 15 = lumière niveau torche).
# Quand supérieur à 0, le serveur place un bloc LIGHT caché pour que la vraie
# lumière se propage. Les joueurs voient toujours la texture du minerai, pas le bloc de lumière.
light_level: 8
# Si le bloc drop son propre objet quand cassé.
# false = utiliser la liste de drops ci-dessous (recommandé pour les minerais)
# true = l'objet bloc lui-même drop (bon pour les blocs décoratifs)
drop_self: false
# ── Quels outils peuvent casser ce bloc ──────────────────────────────────
# Listez les noms de matériaux vanilla et/ou les IDs de pioches personnalisées de pickaxes.yml.
# Omettez cette clé → n'importe quel outil fonctionne (y compris la main nue).
# Définissez à une liste vide [] → complètement indestructible en survie.
break_with:
- IRON_PICKAXE
- GOLDEN_PICKAXE
- DIAMOND_PICKAXE
- NETHERITE_PICKAXE
- silver_lithium_pickaxe # Une clé de pioche personnalisée de CustomiZe!/pickaxes.yml
# ── Ce que le bloc drop quand cassé ──────────────────────────────────
# Plusieurs drops sont tous lancés indépendamment (chacun a sa propre chance).
drops:
# type: plugin_item — un objet personnalisé défini dans CustomiZe!/items.yml
- type: plugin_item
item: "my_pack:raw_silver" # format : "pack_namespace:item_key"
amount: 1 # montant exact
chance: 100 # 100 = drop toujours
# Utilisez amount_min / amount_max pour une plage aléatoire :
- type: plugin_item
item: "my_pack:silver_shard"
amount_min: 0
amount_max: 2
chance: 40 # 40% de chance de dropper 0–2 éclats
# type: vanilla — tout nom de matériau Bukkit standard
- type: vanilla
item: EXPERIENCE_BOTTLE
amount_min: 1
amount_max: 1
chance: 20 # 20% de chance
# type: command — exécute une commande console quand ce bloc est cassé
# %player% est remplacé par le nom du casseur
- type: command
command: "eco give %player% 5"
chance: 50 # 50% de chance de donner 5 pièces
# Son optionnel joué au casseur quand le bloc est miné.
# Utilisez n'importe quelle clé de son Minecraft (complétion auto avec /playsound).
soundeffectonmined: "block.amethyst_block.break"
# Effet de particule optionnel affiché quand le bloc est miné.
# Utilisez n'importe quel nom d'enum Bukkit Particle.
visualeffectonmined: "VILLAGER_HAPPY"
# ── Exemple de bloc décoratif (drop_self: true) ──────────────────────────
oak_beam:
pack_id: "my_pack:oak_beam"
display_name: "&fOak Beam"
lore:
- "&7A decorative oak wood beam."
hardness: 2.0 # Mine à la vitesse des bûches
blast_resistance: 2.0
drop_self: true # Drop l'objet bloc lui-même (pas besoin de liste de drops)
break_with:
- HAND # Peut être cassé à la main nue
- WOODEN_AXE
- STONE_AXE
- IRON_AXE
- GOLDEN_AXE
- DIAMOND_AXE
- NETHERITE_AXE
# ── Récompenses XP et argent ─────────────────────────────────────────────────────
# Fonctionne pour VOS blocs de pack personnalisés ET les blocs Minecraft vanilla.
# Ajoutez cette section n'importe où dans le fichier (ou dans __global__/blocks.yml).
xp_values:
# Bloc personnalisé : utilisez "namespace:item_key" (identique à pack_id ci-dessus)
my_pack:silver_ore:
name: "Silver Ore"
jobsxp: 8.0 # XP donné au job du plugin Jobs
job: "Miner" # Le nom du job Jobs (doit correspondre à votre config jobs)
money: 5.0 # Argent économique Vault donné au joueur
points: 2.0 # Points de serveur / monnaie personnalisée
cancel-vanilla-drops: false # true = arrête les drops vanilla (utile pour les minerais personnalisés)
# Bloc vanilla : utilisez le nom de matériau Bukkit
COAL_ORE:
name: "Coal Ore"
jobsxp: 2.0
job: "Miner"
money: 1.0
points: 0.5
cancel-vanilla-drops: false
Tous les champs en un coup d'œil
| Champ | Requis ? | Description |
|---|---|---|
pack_id | requis | Lie à l'entrée packs/. Format : "namespace:item_key" |
display_name | optionnel | Nom d'affichage MiniMessage dans les messages de casse et la description |
lore | optionnel | Liste de lignes de description sur l'objet bloc |
hardness | optionnel | Temps de minage. stone≈1.5, iron_ore≈3.0, deepslate≈4.5, obsidian≈50. Omis = instantané (vitesse vanilla NOTE_BLOCK) |
blast_resistance | optionnel | Quand défini, le bloc est entièrement protégé des explosions. Omis = peut être soufflé |
light_level | optionnel | Émission de lumière 0–15. Utilise un bloc LIGHT caché côté serveur |
drop_self | optionnel | true = drop son propre objet bloc. false = utiliser la liste drops |
break_with | optionnel | Liste de matériaux d'outils + IDs de pioches personnalisées. Omis = n'importe quel outil. [] = indestructible |
drops | optionnel | Liste d'entrées de drop. Chacune a type, item, amount/amount_min/amount_max, chance |
soundeffectonmined | optionnel | Clé de son Minecraft jouée au casseur lors de la casse |
visualeffectonmined | optionnel | Nom d'enum Bukkit Particle affiché lors de la casse |
iscaveblock | optionnel | Configuration CaveBlock spéciale (voir la section CaveBlock) |
Types de drops
| type | Format de valeur item | Exemple |
|---|---|---|
plugin_item | "pack_namespace:item_key" | Un objet personnalisé configuré dans CustomiZe!/items.yml |
vanilla | Nom de matériau Bukkit | DIAMOND, EXPERIENCE_BOTTLE, IRON_INGOT |
command | Chaîne de commande console (%player% est remplacé) | "eco give %player% 50" |
Pioches personnalisées
Pioches qui montent de niveau quand les joueurs minent — chaque niveau débloque de nouvelles textures, un minage en zone et des effets de Hâte.
CustomiZe!/__global__/pickaxes.ymlComment fonctionne la progression des pioches
Chaque pioche suit combien de blocs le joueur a minés avec elle. Quand le compte atteint blocks_required pour le niveau actuel, la pioche se met automatiquement à niveau. L'amélioration :
- Change le Custom Model Data → nouvelle texture apparaît
- Augmente la durabilité, le rayon de minage et le niveau d'effet
- Met à jour la description pour afficher les nouvelles statistiques
- Notifie le joueur
Exemple de configuration complète
pickaxes:
tier_pickaxe:
type: DIAMOND_PICKAXE
display_name: "⛏ Tier Pickaxe"
lore:
- "⛏ Level: %level% / %max_level%"
- "Blocks mined: %blocks_mined% / %blocks_required%"
- "Durability: %current_durability% / %max_durability%"
- "Mining area: %radius%×%radius%"
- "%bonuses%"
levels:
# Niveau 1 — Tier de départ
1:
name: "⛏ Tier Pickaxe [Lvl. 1]"
custom_model_data: 30041 # Texture pour le niveau 1 (aspect bois)
durability: 2000
radius: 1 # Mine 1×1 (juste le bloc sur lequel vous cliquez)
height_radius: 0 # 0 = seulement le niveau de hauteur exact miné
effect_on_hold: haste
effect_amplifier: 0 # 0 = Hâte I
blocks_required: 200 # Minez 200 blocs pour atteindre le niveau 2
bonus:
- "• Haste I while held"
# Niveau 2
2:
name: "⛏ Tier Pickaxe [Lvl. 2]"
custom_model_data: 30042 # Nouvelle texture (aspect pierre)
durability: 4000
radius: 1
height_radius: 1 # Mine 1 bloc au-dessus et en-dessous aussi (3 de hauteur)
effect_on_hold: haste
effect_amplifier: 0
blocks_required: 500
bonus:
- "• Haste I while held"
- "• 1×3 column mining"
# Niveau 3
3:
name: "⛏ Tier Pickaxe [Lvl. 3]"
custom_model_data: 30043 # Nouvelle texture (aspect fer)
durability: 7000
radius: 3 # Mine une zone 3×3
height_radius: 1
effect_on_hold: haste
effect_amplifier: 1 # Hâte II
blocks_required: 1000
bonus:
- "• Haste II while held"
- "• 3×3 area mining"
# Niveau 4 — Tier final
4:
name: "⛏ Tier Pickaxe [Lvl. 4]"
custom_model_data: 30044 # Nouvelle texture (aspect diamant/netherite)
durability: 12000
radius: 3
height_radius: 3 # Mine une zone de 3×7 de hauteur
effect_on_hold: haste
effect_amplifier: 1
blocks_required: 0 # 0 = NIVEAU MAX, pas d'amélioration supplémentaire
bonus:
- "• Haste II while held"
- "• 3×7 area mining"
- "• MAX LEVEL"
Toutes les clés de configuration par niveau
| Clé | Type | Requis ? | Défaut | Description |
|---|---|---|---|---|
name | Chaîne | Optionnel | — | Nom d'affichage à ce niveau. Supporte MiniMessage. |
lore | Liste<Chaîne> | Optionnel | — | Lignes de description à ce niveau. Supporte tous les placeholders ci-dessous. |
custom_model_data | Entier | Optionnel | 0 | CMD pour la texture à ce niveau. |
pack_id | Chaîne | Optionnel | — | Surcharge d'élément de pack par niveau (format : packName:itemId). |
durability | Entier | Optionnel | Max du matériau | Durabilité personnalisée pour ce niveau. Le plugin la suit indépendamment des dégâts vanilla. |
blocks_required | Entier | Optionnel | 0 | Blocs à miner pour passer au niveau suivant. Définissez à 0 sur le dernier niveau — cela signale que c'est le niveau maximum. |
radius | Entier | Optionnel | 1 | Rayon de minage horizontal. 1 = 1×1 (bloc unique), 3 = zone 3×3. |
height_radius | Entier | Optionnel | 0 | Rayon de minage vertical. 0 = seulement le bloc exact, 1 = un bloc au-dessus et en-dessous (3 de hauteur), 3 = 7 de hauteur. |
two_blocks | Booléen | Optionnel | false | Raccourci pour height_radius: 1. Définissez à true pour miner 1×3 (un bloc au-dessus + en-dessous de la cible). |
down_depth | Entier | Optionnel | 0 | Profondeur de colonne minée vers le bas depuis le bloc cliqué. Utile pour les houes ou pioches de puits. |
effect_on_hold | Chaîne | Optionnel | — | Type d'effet de potion appliqué quand cette pioche est tenue en main principale (ex. haste, speed). |
effect_amplifier | Entier | Optionnel | 0 | Amplificateur d'effet. 0 = Niveau I, 1 = Niveau II. |
bonus | Liste<Chaîne> | Optionnel | — | Lignes de saveur affichées via le placeholder de description %bonuses% à ce niveau. |
Placeholders de description
| Placeholder | Affiche |
|---|---|
%level% | Numéro de niveau actuel |
%max_level% | Niveau le plus élevé défini |
%blocks_mined% | Blocs minés vers le prochain niveau |
%blocks_required% | Blocs nécessaires pour le prochain niveau (0 au max) |
%total_blocks% | Blocs minés de tous les temps avec cette pioche |
%current_durability% | Durabilité personnalisée restante |
%max_durability% | Durabilité maximale au niveau actuel |
%radius% | Numéro du rayon de minage horizontal (ex. 3 pour 3×3) |
%height_radius% | Numéro du rayon de minage vertical |
%down_depth% | Profondeur de colonne minée vers le bas |
%bonuses% | Toutes les lignes de bonus pour le niveau actuel (multi-lignes) |
Houes moissonneuses
Houes à récolte automatique et replantation automatique avec un système de niveaux basé sur l'XP, des tables de drops personnalisées et une vente automatique via l'économie Vault. Le système de niveaux est intégré.
CustomiZe!/__global__/harvesterhoes.ymlComment fonctionnent les houes moissonneuses
Quand un joueur fait un clic droit sur une culture avec une houe moissonneuse configurée, le plugin :
- Vérifie si le type de culture est dans
supported-cropspour cette houe - Récolte la culture et drop optionnellement des objets personnalisés (depuis la table
drops) - Si
auto-replantest activé, replante la culture àreplant-growth-stage - Si
auto-sellest activé, dépose de l'argent pour la récolte directement dans la balance du joueur - Accorde de l'XP depuis
xp-valueset vérifieexperience.level-up-requirementspour une montée de niveau - Décrémente
usesde 1. Quand les utilisations atteignent 0, la houe se casse.
Clés de houe de niveau supérieur
| Clé | Type | Requis ? | Description |
|---|---|---|---|
base-item | Chaîne | Optionnel | Matériau de houe vanilla. Défaut : WOODEN_HOE. Utilisez n'importe quel type de houe : WOODEN_HOE, STONE_HOE, IRON_HOE, GOLDEN_HOE, DIAMOND_HOE, NETHERITE_HOE. |
pack_id | Chaîne | Optionnel | Format : packName:itemId. Si défini, matériau et CMD sont résolus depuis PackManager. Le pack_id par niveau dans les abilities surcharge ceci. |
custom-model-data | Entier | Optionnel | CMD par défaut. Surchargé par le model-data du niveau d'ability actif. |
name | Chaîne | Optionnel | Nom d'affichage de repli utilisé quand le niveau d'ability actif n'a pas de name. Défaut : "Harvester Hoe". |
uses | Entier | Optionnel | Nombre d'utilisations de base au niveau-0. Défaut : 10. Multiplié par le use-multiplier de chaque niveau lors d'une montée. |
lore | Liste<Chaîne> | Optionnel | Description de repli. Chaque niveau d'ability peut avoir sa propre lore qui surcharge celle-ci. |
supported-crops | Liste<Chaîne> | Requis | Types de blocs de culture vanilla que cette houe peut récolter. Voir la liste ci-dessous. |
xp-values | Section | Optionnel | XP accordé par type de culture récoltée. La clé est le nom de matériau, la valeur est le montant XP. La clé spéciale CUSTOM_CROP couvre les cultures personnalisées. Défaut : 1 par récolte. |
drops | Section | Optionnel | Table de drops personnalisée par type de culture. Si défini, surcharge les drops vanilla. Si non défini, les drops vanilla sont utilisés. |
experience | Section | Optionnel | Configuration des seuils XP pour la montée de niveau. Requis uniquement si vous voulez des niveaux. |
abilities | Section | Requis | Configuration des capacités par niveau. Doit contenir au moins level-0. |
Cultures supportées (supported-crops)
Utilisez les noms de matériaux de blocs Minecraft vanilla :
| Nom du matériau | Culture |
|---|---|
WHEAT | Plants de blé |
CARROTS | Plants de carottes |
POTATOES | Plants de pommes de terre |
BEETROOTS | Plants de betteraves |
NETHER_WART | Verrue du Nether |
MELON_STEM | Tige de melon (la tige en croissance) |
PUMPKIN_STEM | Tige de citrouille |
COCOA | Fèves de cacao |
SWEET_BERRY_BUSH | Buissons de baies sucrées |
| Tout autre bloc de culture | Tout bloc de culture vanilla entièrement développé |
Capacités (système de niveaux)
La section abilities est là où vit le système de niveaux. Chaque sous-clé est un nom de niveau (ex. level-0, level-1). level-0 est l'état de départ quand la houe est créée. Le plugin monte au prochain nom de niveau quand les seuils XP sont atteints.
Clés de capacité par niveau
| Clé | Type | Requis ? | Description |
|---|---|---|---|
name | Chaîne | Optionnel | Nom d'affichage pour la houe à ce niveau. Supporte MiniMessage. |
lore | Liste<Chaîne> | Optionnel | Lignes de description pour ce niveau. Utilisez <uses> pour les utilisations restantes. |
model-data | Entier | Optionnel | Custom Model Data à ce niveau. Permet à la texture de changer par niveau. |
pack_id | Chaîne | Optionnel | Surcharge d'élément de pack par niveau (format : packName:itemId). Surcharge le pack_id de niveau supérieur. |
use-multiplier | Entier | Optionnel | Lors de la montée de niveau, nouvelles utilisations = base_uses × use-multiplier. Défaut : 1 (pas de changement). Définissez à 2 pour doubler les utilisations à ce niveau. |
drop-multiplier | Entier | Optionnel | Multiplie la quantité de drops de la table drops. Défaut : 1. Définissez à 2 pour des drops doubles. |
auto-sell | Booléen | Optionnel | Si true, les cultures récoltées sont automatiquement vendues contre de l'argent via Vault au lieu de tomber au sol. Défaut : false. |
auto-replant | Booléen | Optionnel | Si true, la culture est automatiquement replantée après la récolte. Défaut : false. |
replant-growth-stage | Entier | Optionnel | Le stade de croissance auquel la culture est réinitialisée après replantation. Défaut : 0 (stade de graine). Utilisez des valeurs plus élevées pour sauter les premiers stades de croissance. |
Montée de niveau XP (experience)
La section experience.level-up-requirements mappe les noms de niveaux aux totaux XP cumulatifs. Quand l'XP accumulé du joueur atteint le seuil, la houe monte automatiquement à ce niveau :
experience:
level-up-requirements:
level-1: 100 # Atteindre 100 XP → monter au level-1
level-2: 300 # Atteindre 300 XP total → monter au level-2
level-3: 600 # Atteindre 600 XP total → monter au level-3
L'XP est gagné par récolte. Le montant provient de xp-values :
xp-values:
WHEAT: 5 # +5 XP par blé récolté
CARROTS: 7 # +7 XP par carotte
POTATOES: 6 # +6 XP par pomme de terre
CUSTOM_CROP: 3 # XP pour toute culture personnalisée (du système de cultures de CustomiZer)
xp-values, l'XP par défaut est 1 par récolte. Vous n'avez pas besoin de lister chaque culture — seulement celles pour lesquelles vous voulez un XP personnalisé.Table de drops personnalisée (drops)
Définit quels objets droppent quand une culture est récoltée. Organisée par matériau de culture → entrées de drop nommées :
drops:
WHEAT: # Type de culture
wheat_item: # N'importe quelle clé unique pour cette entrée de drop
item: WHEAT # Nom de matériau vanilla OU mappage vanilla
chance: 1.0 # Probabilité 0.0–1.0 (1.0 = 100%)
quantity: 1 # Combien dropper
seeds:
item: WHEAT_SEEDS # Graines de blé comme drop bonus
chance: 0.5 # 50% de chance
quantity: 2
CARROTS:
carrot_drop:
item: CARROT # Note : le plugin mappe automatiquement le bloc CARROTS → objet CARROT
chance: 1.0
quantity: 1
bonus_carrot:
item: CARROT
chance: 0.3
quantity: 3
CARROTS→CARROT, POTATOES→POTATO, BEETROOTS→BEETROOT. Utilisez le nom d'objet dans le champ item:.Prix de vente automatique (economy)
Requis si un niveau de capacité a auto-sell: true. Le prix est par unité, multiplié par le drop-multiplier du niveau actuel :
economy:
sell-prices:
WHEAT: 50.0 # 50 pièces par blé
CARROTS: 75.0
POTATOES: 60.0
BEETROOTS: 45.0
Messages
Toutes les clés de message sont optionnelles. Si non défini, aucun message n'est envoyé pour cet événement.
| Clé | Placeholders disponibles | Quand affiché |
|---|---|---|
messages.exp-gain | {amount}, {total}, {hoe} | Après chaque récolte qui accorde de l'XP |
messages.level-up | {level}, {hoe} | Quand la houe monte de niveau |
messages.auto-sell | {amount}, {item} | Quand les cultures sont auto-vendues |
Placeholders de description
Un seul placeholder spécial existe pour la description de houe :
| Placeholder | Format | Remplacé par |
|---|---|---|
<uses> | Crochets angulaires | Utilisations restantes avant que la houe se casse |
<uses> avec des crochets angulaires — pas le format avec signe pourcent utilisé par les épées et pioches. C'est intentionnel.Exemple complet
hoes:
harvest_hoe:
base-item: GOLDEN_HOE
custom-model-data: 10000 # CMD de départ (le CMD level-0 surcharge ceci)
name: "🌾 Harvest Hoe"
uses: 100 # Utilisations de base au niveau-0
supported-crops:
- WHEAT
- CARROTS
- POTATOES
- BEETROOTS
xp-values:
WHEAT: 5
CARROTS: 7
POTATOES: 6
BEETROOTS: 4
experience:
level-up-requirements:
level-1: 100
level-2: 300
level-3: 700
drops:
WHEAT:
wheat:
item: WHEAT
chance: 1.0
quantity: 1
seeds:
item: WHEAT_SEEDS
chance: 0.4
quantity: 1
abilities:
level-0:
name: "&7🌾 Harvest Hoe [Lv.0]"
lore:
- "&8Uses: &f<uses>"
- "&7Harvest crops automatically."
model-data: 10000
use-multiplier: 1
drop-multiplier: 1
auto-sell: false
auto-replant: true
replant-growth-stage: 0
level-1:
name: "&a🌾 Harvest Hoe [Lv.1]"
lore:
- "&8Uses: &f<uses>"
- "&7+50% drops | Auto-replant"
model-data: 10001 # Nouvelle texture
use-multiplier: 2 # 100 × 2 = 200 utilisations à ce niveau
drop-multiplier: 2 # 50% de drops en plus (entier, double effectivement)
auto-sell: false
auto-replant: true
level-2:
name: "&6🌾 Harvest Hoe [Lv.2]"
lore:
- "&8Uses: &f<uses>"
- "&7Auto-sell enabled | Double drops"
model-data: 10002
use-multiplier: 3 # 100 × 3 = 300 utilisations
drop-multiplier: 2
auto-sell: true # Cultures vendues directement dans le portefeuille
auto-replant: true
economy:
sell-prices:
WHEAT: 50.0
CARROTS: 75.0
POTATOES: 60.0
BEETROOTS: 45.0
messages:
exp-gain: "&aGained &f{amount} &aXP! &8Total: &f{total}"
level-up: "&6🎉 Your {hoe} levelled up to &e{level}&6!"
auto-sell: "&aAuto-sold crops for &6{amount} coins."
Cosmétiques
Objets décoratifs portables — chapeaux, objets de dos, ailes — que les joueurs peuvent équiper sans remplacer leur armure.
CustomiZe!/__global__/cosmetics.ymlcosmetics:
cool_hat:
pack_id: "my_pack:cool_hat" # Référence l'élément de pack pour la texture
display_name: "✦ Cool Hat"
slot: hat # Où équiper : hat | back | wings | offhand
lore:
- "A very stylish hat."
- "Right-click to equip or swap!"
permission: "myserver.hats.cool" # Optionnel — seuls les joueurs avec cette perm peuvent l'utiliser
angel_wings:
pack_id: "my_pack:angel_wings"
display_name: "🪶 Angel Wings"
slot: back
| Emplacement | Position d'inventaire | Utilisation |
|---|---|---|
hat | Emplacement TÊTE | Chapeaux, couronnes, casques |
back | Emplacement PLASTRON | Capes, sacs à dos, ailes |
wings | Emplacement PLASTRON | Alias pour back |
offhand | Emplacement MAIN_SECONDAIRE | Cosmétiques portés |
Sacs à dos
Objets sac à dos physiques qui ouvrent un inventaire persistant. L'inventaire est lié à l'objet, pas au joueur — échangez le sac à dos pour transférer tout son contenu.
CustomiZe!/<pack>/backpacks.ymlComment ça fonctionne
- Chaque objet sac à dos reçoit un UUID unique marqué dans son PDC (
customizer:backpack_instance_uuid) lors de l'attribution. - L'inventaire est stocké par cet UUID (SQLite ou MongoDB) — donc deux sacs à dos du même type ont des inventaires séparés.
- Les joueurs exécutent
/backpacken tenant le sac à dos dans leur main secondaire (ou en le portant sur le plastron) pour l'ouvrir. - Les hoppers et plugins ne peuvent pas déplacer des objets vers ou depuis un inventaire de sac à dos ouvert.
storage:
type: sqlite # "sqlite" ou "mongodb"
sqlite:
file: db/backpacks.db # stocké dans plugins/CustomiZer/db/
backpacks:
adventure_backpack_1:
pack_id: "elitecreatures:adventure_backpack_cosmetic_backpack_1"
display_name: "<gold><bold>🎒 Adventure Backpack I"
slots: 18 # 9, 18, 27, 36, 45, ou 54 (ou utilisez rows: 1-6)
permission: "myserver.backpack.tier1" # optionnel
lore:
- "<dark_gray>18 emplacements"
- "<gray>Portez sur la poitrine ou tenez en main secondaire, exécutez <yellow>/backpack"
large_backpack:
pack_id: "elitecreatures:large_backpack"
display_name: "<green>🎒 Large Backpack"
rows: 4 # équivalent à slots: 36
| Clé | Défaut | Description |
|---|---|---|
pack_id | requis | L'ID d'élément de pack CustomiZer qui fournit la texture/le modèle. |
display_name | requis | Titre MiniMessage affiché dans l'inventaire et sur l'objet. |
slots | 27 | Emplacements totaux — doit être un multiple de 9, max 54. Utilisez alternativement rows: 1–6. |
permission | aucune | Si défini, seuls les joueurs avec cette permission peuvent ouvrir le sac à dos. |
lore | aucune | Liste de lignes de description MiniMessage ajoutées à l'objet. |
Donner des sacs à dos
Ajoutez le sac à dos comme entrée type: backpack dans votre gui.yml — il apparaîtra dans /zitems et cliquer dessus donne l'objet physique (avec UUID marqué et description appliquée) :
items:
- type: backpack
pack: elitecreatures
id: adventure_backpack_cosmetic_backpack_1
name: "<gold><bold>🎒 Adventure Backpack I"
lore:
- "<dark_gray>18 emplacements"
- "<gray>Tenez en main secondaire → /backpack"
Backends de stockage
| Type | Clé de config | Notes |
|---|---|---|
| SQLite | type: sqlite | Par défaut. Fichier unique, aucune configuration. Convient à la plupart des serveurs. |
| MongoDB | type: mongodb | Meilleur pour de très grands nombres de joueurs ou des clusters partagés. Nécessite une sous-section mongodb: avec uri, database, et collection. |
Emplacements de gemmes
Un système d'emplacements où les joueurs insèrent des gemmes dans les armes et armures pour des bonus de statistiques qui s'usent avec le temps.
CustomiZe!/__global__/gems.yml · par pack : CustomiZe!/<pack>/gems.ymlExemple — Steve insère une 🔥 Rune de Feu dans son épée
Un guide complet de la façon dont un joueur utilise /zsocket du début à la fin. La Rune de Feu ajoute +2.5 Dégâts d'attaque, elle va donc dans une arme.
Steve a une 🔥 Rune de Feu dans son inventaire
Il l'a obtenue d'une récompense de pack ou avec /z give weekly_dot1 fire_rune. En la survolant, on voit :
Steve exécute /zsocket
La Station de Socket de Gemmes s'ouvre. La moitié supérieure est l'interface de socket ; la moitié inférieure est son sac de gemmes personnel montrant chaque gemme actuellement dans son inventaire.
Steve fait glisser son épée dans l'emplacement cible central
Il prend son épée depuis son inventaire et la dépose dans l'emplacement 4 (l'emplacement supérieur central). Un administrateur avait déjà ajouté 1 socket avec /zsocket add 1.
L'épée a 1 socket — elle brille en vert. Les sockets 2–4 sont en rouge (verrouillés). La 🔥 Rune de Feu apparaît dans le sac de gemmes ci-dessous car elle est dans l'inventaire de Steve.
Steve clique sur la 🔥 Rune de Feu dans le sac de gemmes
Le plugin supprime la gemme de son inventaire, l'insère dans le Socket 1, et applique immédiatement +2.5 Dégâts d'attaque comme modificateur d'attribut sur l'épée. Le chat confirme :
Le GUI se met à jour — le socket 1 affiche maintenant la gemme avec 100 utilisations
Survoler le Socket 1 affiche :
Steve ferme le GUI et tient son épée
L'épée est retournée dans son inventaire à la fermeture. Sa description et l'info-bulle d'attribut Minecraft affichent maintenant le bonus :
Toutes les 60 secondes pendant que l'épée est tenue ou équipée, la Rune de Feu perd 1 utilisation. À 0 utilisations, la gemme s'effrite, le +2.5 de dégâts est supprimé, et Steve voit :
Le temps ne s'écoule pas quand l'objet se trouve dans le GUI de la Station de Socket.
/zsocket add <count> (nécessite cxp.socket.add) en tenant un objet pour ajouter des emplacements de socket. Partagez ensuite l'objet avec les joueurs — ils utilisent /zsocket pour ouvrir le GUI et insérer leurs propres gemmes.
Référence de configuration
socket_char: "◈"
empty_socket_lore: "◈ Empty Socket"
max_sockets: 4
# Utilisations par défaut pour les gemmes qui ne définissent pas les leurs. -1 = illimité.
default_max_uses: -1
gem_decay:
enabled: true
interval_seconds: 60 # 1 utilisation consommée par minute de temps équipé
gems:
water_rune:
display_name: "💧 Water Rune"
type: PAPER
model_data: 200377
tier: 2
stat: armor
value: 1.5
max_uses: 100 # -1 pour illimité
lore:
- "Tier: Awakened"
- "+1.5 Armor when socketed."
| Valeur stat | Effet |
|---|---|
attack_damage | Dégâts d'attaque plats (+1.5 = 1.5 dégâts de plus) |
armor | Points d'armure (1.0 = une demi-pip d'armure) |
armor_toughness | Réduit la pénétration d'armure |
movement_speed | Multiplicateur de vitesse (0.01 ≈ 1%) |
max_health | Cœurs supplémentaires (2.0 = 1 cœur plein) |
luck | Attribut de chance vanilla |
Sets d'armures
Équipez N pièces d'armure correspondantes pour débloquer des bonus — effets de potion, commandes console et messages. Les bonus s'activent et se désactivent automatiquement quand les pièces sont équipées ou retirées.
CustomiZe!/__global__/sets.ymlComment fonctionnent les sets
Chaque pièce d'armure enregistrée dans armors.yml a une clé unique (ex. dragon_helmet). Le fichier sets.yml regroupe ces clés en sets et définit ce qui se passe à chaque seuil (2 pièces équipées, 3 pièces, 4 pièces, etc.).
Chaque fois qu'un joueur équipe ou retire une armure, le plugin :
- Compte combien de pièces de chaque set le joueur a équipé
- Compare le nouveau compte au précédent
- Si le compte a dépassé un seuil vers le haut → applique des effets, exécute des commandes, envoie le message d'activation
- Si le compte a dépassé un seuil vers le bas → supprime les effets, envoie le message de désactivation
Clés de configuration
| Clé | Type | Requis ? | Description |
|---|---|---|---|
sets.{id}.pieces | Liste<Chaîne> | Requis | Clés de pièces d'armure de armors.yml qui forment ce set. Le plugin compte combien de celles-ci le joueur porte. |
sets.{id}.bonuses | Section | Optionnel | Map de seuil de nombre de pièces → config de bonus. La clé est une chaîne numérique : "2", "3", ou "4". |
bonuses.{N}.message | Chaîne | Optionnel | Envoyé au joueur quand il passe ce seuil (vers le haut ou le bas). Supporte MiniMessage. |
bonuses.{N}.potion_effects | Liste<Map> | Optionnel | Effets de potion appliqués quand le seuil est dépassé vers le haut. Supprimés quand dépassé vers le bas. |
bonuses.{N}.commands | Liste<Chaîne> | Optionnel | Commandes console exécutées quand le seuil est dépassé vers le haut. Utilisez {player} pour le nom du joueur. |
Clés de map d'effet de potion
| Clé | Type | Description |
|---|---|---|
effect | Chaîne | Clé de registre Bukkit PotionEffectType (ex. strength, fire_resistance, speed, regeneration, resistance) |
duration | Entier (ticks) | Durée de l'effet. Utilisez 999999 pour effectivement permanent pendant que le set est porté. |
amplifier | Entier | 0 = Niveau I, 1 = Niveau II, 2 = Niveau III |
potion_effects à la place, que le plugin supprime automatiquement.Exemple complet
sets:
dragon:
pieces:
- dragon_helmet
- dragon_chestplate
- dragon_leggings
- dragon_boots
bonuses:
"2": # Porter 2 pièces sur 4
message: "&c&l★ 2-Piece Dragon: &fStrength I active!"
potion_effects:
- effect: strength
duration: 999999 # Permanent pendant le port
amplifier: 0 # Force I
"4": # Bonus de set complet
message: "&4&l★ Full Dragon Set! &cFire Resistance + Strength II!"
potion_effects:
- effect: fire_resistance
duration: 999999
amplifier: 0
- effect: strength
duration: 999999
amplifier: 1 # Force II (surcharge Force I à 2 pièces)
commands:
- "broadcast &4{player} &ca assemblé le Dragon Set complet !"
Cultures personnalisées
Cultures persistantes à plusieurs stades avec des modèles générés ou personnalisés, des conditions de croissance configurables, des hitboxes dynamiques, des effets de stade, des tables de loot selon l'âge, des objets de récolte comestibles et des événements de plugin.
plugins/CustomiZer/packs/<pack-id>/. L'exemple intégré est plugins/CustomiZer/packs/customcrops/. Une culture est découverte depuis son dossier de modèle ou de texture ; un fichier YAML seul n'enregistre pas une culture.Ce que fait le système de cultures
- Analyse chaque dossier dans
plugins/CustomiZer/packs/pour une disposition de cultureModels/ouTextures/. - Détecte les stades de chaque culture depuis les fichiers de modèle ou de texture correctement nommés.
- Attribue des valeurs CustomModelData stables pour la graine et chaque stade. Les attributions sont sauvegardées et réutilisées après les redémarrages.
- Crée un objet graine plantable tagué avec l'ID de culture.
- Affiche la culture plantée avec un ItemDisplay basé sur des paquets et utilise une entité Interaction invisible comme hitbox cliquable.
- Vérifie la croissance toutes les 30 secondes, change le modèle et la hitbox à mesure que l'âge augmente, et sauvegarde les cultures placées à travers les redémarrages.
- Lance une table de loot selon l'âge quand la culture est cliquée droit ou cassée.
Cycle de vie de la culture en jeu
Les captures d'écran suivantes montrent le cycle de vie visible complet : planter une graine, pousser à travers les modèles configurés, atteindre le stade final, et casser une tomate mature pour recevoir son drop de tomate configuré.
1. Planter la graine (Âge 0)
Faites un clic droit sur le placement.bottom_block configuré avec la graine taguée de la culture. La graine est consommée en mode Survie et le premier modèle de culture apparaît dans le bloc vide au-dessus.
2. Pousser à travers les stades
À mesure que les vérifications de croissance réussissent, chaque culture avance d'un âge à la fois. Son modèle et sa hitbox cliquable se mettent à jour pour correspondre au nouveau stade. Ce champ d'exemple montre plusieurs cultures personnalisées à différents stades de croissance.
3. Stade final (prêt à la récolte)
Quand une culture atteint son âge le plus élevé détecté, elle utilise le modèle du stade final. Si ready_effect est configuré, des particules marquent la culture comme mature et continuent d'apparaître à chaque vérification de croissance pendant qu'elle reste prête.
Exemple de drop de tomate
Dans cet exemple, le plant de tomate mature mis en évidence correspond à une entrée de loot configurée avec item: "pack:my_farm_pack:tomato" et une condition d'âge au stade final.
Avant la casse
La culture de tomate mature est encore plantée et affiche son modèle final.
Après la casse
La culture est retirée et l'objet tomate personnalisé configuré drop naturellement à son emplacement.
item_drops:. Son objet, sa plage de quantité, sa chance et les âges de culture autorisés proviennent tous de cette entrée.Créer un pack de cultures
Créez un dossier de pack et choisissez une des deux dispositions visuelles supportées. Si un pack contient un répertoire Models/, le scanner le préfère et n'analyse pas le répertoire Textures/ de ce pack pour les cultures.
Option A : Textures PNG (Modèles automatiques)
plugins/CustomiZer/packs/my_farm_pack/
├── Textures/
│ └── tomato/
│ ├── tomato_crop_stage0.png
│ ├── tomato_crop_stage1.png
│ └── tomato_crop_stage2.png
└── configs/
└── tomato.yml
Le modèle exact de texture est <crop-id>_crop_stage<age>.png. CustomiZer génère :
- Un modèle d'objet graine plat utilisant la texture du stade 0.
- Un modèle de culture en plans croisés pour chaque stade détecté.
- Des textures de pack de ressources sous
assets/customizer/textures/crop/<crop-id>_<age>.png.
Option B : Modèles JSON pré-construits
plugins/CustomiZer/packs/my_farm_pack/
├── Models/
│ └── tomato/
│ ├── tomato_seed.json
│ ├── tomato_crop_stage_0.json
│ ├── tomato_crop_stage_1.json
│ └── tomato_crop_stage_2.json
├── configs/
│ └── tomato.yml
└── resourcepack/
└── assets/
└── my_farm_pack/
├── models/
└── textures/
Le modèle exact de stade est <crop-id>_crop_stage_<age>.json. Le modèle de graine est <crop-id>_seed.json. Les modèles de graine ou de stade manquants utilisent des modèles générés en repli. Le JSON de modèle peut référencer des textures namespacées et des modèles parents ; placez ces assets dans la structure normale resourcepack/assets/ du pack.
maxAge. Pour les fichiers 0, 1 et 2, la culture a trois stades visuels et un âge maximum de 2. Gardez les stades continus depuis 0. Le chargeur actuel n'utilise pas growth.max_age pour créer des stades.0 à 18. Les stades détectés plus élevés sont tronqués.Éléments de pack pour les récoltes et graines
Si le loot doit dropper un objet de pack texturé, définissez cet objet dans une configuration d'objet de pack normal. L'ID d'objet utilisé par la culture doit correspondre à l'ID sous items:.
# plugins/CustomiZer/packs/my_farm_pack/configs/farm_items.yml
info:
namespace: my_farm_pack
items:
tomato:
display_name: "Tomato"
resource:
generate: false
material: APPLE
model_path: custom/items/tomato
tomato_seed:
display_name: "Tomato Seed"
resource:
generate: false
material: WHEAT_SEEDS
model_path: custom/items/tomato_seed
item: "pack:my_farm_pack:tomato" dans le loot de culture. Le préfixe complet pack:<pack-id>:<item-id> est requis. Pour une graine plantable, utilisez item: "crop_seed" ; cela crée la graine correctement taguée pour la culture actuelle.Configuration complète de culture
# plugins/CustomiZer/packs/my_farm_pack/configs/tomato.yml
seed:
id: tomato_seed # ID de graine logique ; défaut : tomato_seed
material: WHEAT_SEEDS # Matériau de base vanilla de la graine générée plantable
growth:
max_age: 2 # Informatif dans le chargeur actuel ; les fichiers déterminent l'âge max
avg_seconds_per_stage: 120 # Temps cible moyen pour chaque stade
min_light: 7 # La croissance se met en pause en dessous de ce niveau de lumière de bloc
placement:
bottom_block: FARMLAND # Matériau exact Bukkit qui doit être cliqué droit
hitbox:
auto_height_step: 0.1 # Hauteur par défaut = max(0.2, step * (age + 1))
# Les hitboxes exactes optionnelles surchargent la taille automatique pour les âges listés
hitboxes:
"0":
width: 0.75
height: 0.25
"2":
width: 0.9
height: 0.8
sounds:
place: minecraft:item.crop.plant # Plantation réussie
break: minecraft:block.crop.break # Clic gauche ou casse environnementale
interact: minecraft:block.crop.hit # Récolte au clic droit
grow: minecraft:block.grass.place # Optionnel ; chaque augmentation d'âge réussie
loot:
drop_seed_if_immature: true # Actuellement stocké mais non utilisé par le lancement de loot
decrease_age_on_harvest: -1 # -1 supprime la culture ; 0 garde le même âge ; N soustrait N âges
multipliers:
bonemeal: 0.3 # Présent dans la config, mais actuellement non utilisé par le code d'interaction
max_moisture: 0.2 # +20% dans les biomes de marais, jungle ou forêt
rain: 0.1 # +10% pendant une tempête sans tonnerre
thunderstorm: -0.3 # -30% pendant le tonnerre
snow: -0.5 # -50% dans les biomes de neige, gelés ou de glace
ready_effect:
particle: HAPPY_VILLAGER # Nom d'enum Bukkit Particle ; omis = pas de particules de maturité
count: 6 # Compte ambiant ; la poussée de maturité utilise count * 3
stage_effects:
"1":
particle: COMPOSTER # Nom d'enum Bukkit Particle
particle_count: 4 # Défaut : 5
sound: minecraft:block.grass.place
"2":
particle: CRIMSON_SPORE
particle_count: 10
sound: minecraft:entity.experience_orb.pickup
item_drops:
ripe_tomato:
item: "pack:my_farm_pack:tomato"
min_amount: 1
max_amount: 3
chance: 1.0
trigger_min_age: 2
trigger_max_age: -1
food:
nutrition: 3
saturation: 0.5
can_always_eat: true
effects:
- effect: HASTE
duration: 120
amplifier: 0
chance: 0.3
immature_seed_return:
item: "crop_seed"
min_amount: 1
max_amount: 1
chance: 1.0
trigger_min_age: 0
trigger_max_age: 1
Référence de configuration
| Chemin | Défaut | Comportement exact |
|---|---|---|
seed.id | <crop-id>_seed | ID de graine logique utilisé pour faire correspondre cette culture avec la navigation d'élément de pack. |
seed.material | WHEAT_SEEDS | Matériau vanilla utilisé par la graine plantable générée. Les noms invalides reviennent aux graines de blé. |
growth.max_age | Valeur détectée | Écrit dans les configs générées, mais l'âge maximum d'exécution est actuellement détecté depuis le fichier de stade le plus élevé. |
growth.avg_seconds_per_stage | 240 | Contrôle la probabilité d'avancer d'un âge lors de chaque vérification de croissance de 30 secondes. |
growth.min_light | 9 | Aucun lancer de croissance ne se produit quand le niveau de lumière de l'emplacement de la culture est inférieur. |
placement.bottom_block | FARMLAND | Le matériau de bloc exact qui doit être cliqué droit avec la graine taguée. Le bloc au-dessus doit être de l'air. |
hitbox.auto_height_step | 0.1 | Crée une largeur 0.75 et une hauteur max(0.2, step × (age + 1)) sauf si une surcharge d'âge existe. |
hitboxes.<age>.width/height | Automatique | Surcharge les deux dimensions de l'entité Interaction cliquable invisible à cet âge exact. |
sounds.place | Plante de culture | Joué après un placement réussi. |
sounds.break | Casse de culture | Joué quand la culture est cassée ou retirée par une casse environnementale. |
sounds.interact | Coup de culture | Joué après une récolte au clic droit réussie. |
sounds.grow | Aucun | Son optionnel joué à chaque changement d'âge réussi, en plus d'un son d'effet de stade correspondant. |
loot.decrease_age_on_harvest | -1 | -1 supprime la culture. 0 la laisse mature. Une valeur positive soustrait autant d'âges, jamais en dessous de 0. |
loot.drop_seed_if_immature | true | Chargé par la définition de culture, mais le gestionnaire de loot actuel n'agit pas dessus. Configurez plutôt un drop crop_seed limité par âge explicite. |
ready_effect | Aucun | À maturité, produit une poussée triple-count, puis le count normal toutes les 30 secondes pendant la maturité. |
stage_effects.<age> | Aucun | Particule et/ou son tiré une fois à chaque fois que la croissance normale planifiée entre dans cet âge. |
Calcul exact de croissance
La croissance est vérifiée une fois toutes les 600 ticks (30 secondes). Une culture peut avancer d'au plus un âge par vérification. Les cultures déjà à l'âge maximum sont ignorées.
chance de base = 30 / avg_seconds_per_stage
chance finale = chance de base + (chance de base × chaque multiplicateur actif)
la chance finale est limitée entre 0.0 et 1.0
Exemple : avec avg_seconds_per_stage: 120, le lancer de base est 30 / 120 = 0.25, soit 25% toutes les 30 secondes. Pendant une pluie ordinaire avec rain: 0.1, cela devient 0.25 + 0.025 = 0.275, soit 27.5%.
rains'applique quand le monde a une tempête et ne tonne pas.thunderstorms'applique à la place de la pluie pendant que le monde tonne.max_moisturevérifie actuellement si le nom du biome contientswamp,jungle, ouforest; il n'inspecte pas l'humidité de la terre labourée.snows'applique quand le nom du biome contientsnow,frozen, ouice.bonemealn'est actuellement pas lu par le code de plantation ou d'interaction, donc l'os repas ne force ni n'accélère une culture.
avg_seconds_per_stage est une moyenne cible, pas un minuteur garanti. Une valeur configurée de 30 ou moins produit une chance de base de 100% à chaque vérification après limitation.Planter, récolter et casser
| Action du joueur | Résultat |
|---|---|
| Clic droit sur le bloc inférieur configuré avec une graine de culture taguée | Plante l'âge 0 si le bloc au-dessus est de l'air. Une graine est consommée sauf si le joueur est en mode Créatif. |
| Clic droit sur la hitbox de la culture | Lance le loot correspondant, déclenche l'événement de récolte, drop les objets approuvés, joue le son d'interaction, puis supprime ou réduit la culture selon decrease_age_on_harvest. |
| Clic gauche sur la culture | Lance le loot correspondant, déclenche l'événement de casse, joue le son de casse, et supprime toujours la culture. |
| Casser ou piétiner le bloc de support | Casse la culture et lance son loot d'âge actuel. |
| L'eau ou la lave s'écoule dans l'emplacement de la culture | Le fluide peut s'écouler ; la culture est cassée et son loot d'âge actuel est lancé. |
trigger_min_age et trigger_max_age pour contrôler exactement ce qui peut dropper à chaque âge.Quand l'intégration WorldGuard est disponible, la plantation est refusée là où le joueur ne peut pas construire. Les événements de cycle de vie de culture (place, croissance, récolte, casse et suppression) sont également exposés aux autres plugins ; les événements annulables peuvent arrêter l'action correspondante, et l'événement de croissance peut changer l'âge cible.
Référence de table de drops
Chaque enfant sous item_drops: est un lancer indépendant. Plusieurs entrées peuvent correspondre et dropper ensemble.
| Champ | Défaut | Comportement exact |
|---|---|---|
item | Requis | Référence d'objet à construire. Les références invalides ou non résolues sont ignorées et journalisées. |
min_amount | 1 | Minimum inclusif. Les valeurs négatives sont limitées à 0. |
max_amount | 1 | Maximum inclusif. Il est augmenté à au moins min_amount. |
chance | 1.0 | Probabilité indépendante de 0.0 à 1.0, limitée à cette plage. |
trigger_min_age | -1 | Âge minimum correspondant. -1 signifie pas de limite inférieure. |
trigger_max_age | -1 | Âge maximum correspondant. -1 signifie pas de limite supérieure. |
Références d'objets supportées
| Format | Exemple | Résultat |
|---|---|---|
| Graine de culture actuelle | crop_seed | Construit la graine plantable et taguée PDC de cette culture avec son modèle de graine attribué. |
| Matériau vanilla | WHEAT | Crée un objet de matériau Bukkit normal. |
| Objet de gameplay CustomiZer | customizer:blood_ingot | Charge un objet par clé depuis le gestionnaire d'objets personnalisés de CustomiZer. |
| Élément de pack | pack:my_farm_pack:tomato | Construit l'ID d'objet depuis le pack nommé via le gestionnaire de packs. |
Drops matures et immatures recommandés
item_drops:
mature_produce:
item: "pack:my_farm_pack:tomato"
min_amount: 1
max_amount: 3
chance: 1.0
trigger_min_age: 2
trigger_max_age: -1
mature_seed:
item: "crop_seed"
min_amount: 1
max_amount: 2
chance: 0.7
trigger_min_age: 2
trigger_max_age: -1
immature_seed:
item: "crop_seed"
min_amount: 1
max_amount: 1
chance: 1.0
trigger_min_age: 0
trigger_max_age: 1
Drops de culture comestibles
Ajoutez food: à n'importe quelle entrée de loot pour appliquer un composant alimentaire Paper à ce drop généré.
| Champ | Défaut | Comportement |
|---|---|---|
nutrition | 2 | Points de nourriture restaurés par l'objet. |
saturation | 0.2 | Valeur de saturation attribuée au composant alimentaire. |
can_always_eat | false | Permet de manger quand rassasié. Devient aussi vrai globalement quand crops.can_always_eat: true est défini dans config.yml. |
effects[].effect | Requis par effet | Nom d'effet de potion Bukkit comme SPEED, HASTE, ou REGENERATION. |
effects[].duration | 100 | Durée en ticks. 20 ticks = 1 seconde. |
effects[].amplifier | 0 | Niveau en base zéro : 0 = niveau I, 1 = niveau II. |
effects[].chance | 1.0 | Chance indépendante vérifiée quand l'aliment tagué est consommé. |
# plugins/CustomiZer/config.yml
crops:
can_always_eat: false
Persistance et rechargement
- Le type de culture placée, l'emplacement, l'âge actuel, les horodatages et l'UUID du planteur sont persistés.
- Les visuels de culture et les hitboxes sont recréés après le redémarrage et quand leur chunk se charge.
- Les allocations CustomModelData sont stockées dans un registre afin que l'ajout de cultures ne renumérose pas les cultures existantes.
/zcrop reloadréanalyse les définitions de culture et rafraîchit les affichages. Reconstruisez ou renvoyez le pack de ressources lors de l'ajout ou du changement de textures/modèles.
Commandes de culture
| Commande | Permission | Objectif |
|---|---|---|
/zcrop reload | customizer.crops.admin | Réanalysez les packs de cultures et rechargez les définitions. |
/zcrop give <player> <cropId> | customizer.crops.admin ou customizer.crops.give | Donnez la graine plantable correctement taguée. |
/zcrop list | customizer.crops.admin | Listez les IDs de culture enregistrés, les IDs de pack et les âges maximaux. |
/zcrop info | customizer.crops.admin | Affichez l'ID, l'âge, le pack et l'emplacement de la culture ciblée dans un rayon de 5 blocs. |
/zcrop setage <age> | customizer.crops.admin | Définissez l'âge de la culture ciblée, limité entre 0 et son âge maximum. |
/zcrop remove | customizer.crops.admin | Supprimez la culture ciblée sans lancer de loot. |
/zcrop purge [radius] | customizer.crops.admin | Supprimez les cultures sauvegardées dans un rayon ; défaut 10, limité de 1 à 200. |
/zcrop cleanentities [radius] | customizer.crops.admin | Supprimez les entités Interaction/ItemDisplay de culture orphelines ; défaut 20, limité de 1 à 200. |
Liste de vérification de création
- Choisissez un ID de culture en minuscules comme
tomato. - Créez soit des stades PNG continus dans
Textures/tomato/soit des stades JSON dansModels/tomato/. - Créez
configs/tomato.yml. Si omis, CustomiZer génère une config de base après la détection des fichiers visuels. - Définissez des éléments de pack de récolte et de graine si vous voulez des textures d'inventaire personnalisées.
- Utilisez des plages d'âge explicites pour chaque drop mature et immature.
- Exécutez
/zcrop reload, puis/zcrop listpour confirmer l'enregistrement. - Utilisez
/zcrop give <player> tomato, plantez et testez les stades avec/zcrop setage <age>. - Reconstruisez/distribuez le pack de ressources à chaque changement d'assets visuels.
Système GUI
CustomiZer dispose de deux menus en jeu. Ils se ressemblent mais affichent des choses complètement différentes. Lisez cette page en premier — cela vous évitera des heures de confusion.
L'explication en une phrase
packs/<packId>/gui.yml. Cliquer donne l'objet brut (texture uniquement, sans mécanique spéciale)./zitems = un outil admin pour donner des objets — les admins parcourent et cliquent gauche pour donner des objets fonctionnels (épées avec stats, pioches, graines, armures, etc.) depuis
items/<packId>/gui.yml.Chaque menu lit depuis son propre fichier séparé.
/z gui lit packs/<packId>/gui.yml ; /zitems lit items/<packId>/gui.yml.
La chose la plus importante à comprendre
/z gui et /zitems lisent maintenant depuis deux fichiers séparés par pack :
packs/<packId>/gui.yml ← objets visuels bruts affichés dans /z gui (type: pack_item, raw)
items/<packId>/gui.yml ← objets fonctionnels affichés dans /zitems (type: sword, pickaxe, armor, etc.)
Le champ slot: en haut du yml de chaque pack contrôle où l'icône de catégorie apparaît dans le menu. Il n'y a plus de section pack_overrides pour les assignations d'emplacement.
Le champ type: de chaque objet détermine quel type d'objet il est :
| valeur type | Fichier associé | Apparaît dans /z gui ? | Apparaît dans /zitems ? | Donnable au clic ? |
|---|---|---|---|---|
pack_item | packs/<packId>/gui.yml | ✅ Oui | ❌ Non | ❌ Non (navigation uniquement, texture brute) |
raw | packs/<packId>/gui.yml | ✅ Oui | ❌ Non | ❌ Non |
sword | items/<packId>/gui.yml | ❌ Non | ✅ Oui | ✅ Oui |
pickaxe | items/<packId>/gui.yml | ❌ Non | ✅ Oui | ✅ Oui |
harvester | items/<packId>/gui.yml | ❌ Non | ✅ Oui | ✅ Oui |
armor | items/<packId>/gui.yml | ❌ Non | ✅ Oui | ✅ Oui |
block | items/<packId>/gui.yml | ❌ Non | ✅ Oui | ✅ Oui |
cosmetic | items/<packId>/gui.yml | ❌ Non | ✅ Oui | ✅ Oui |
staff | items/<packId>/gui.yml | ❌ Non | ✅ Oui | ✅ Oui |
Comparaison côte à côte
| 🏪 /z gui | 📦 /zitems | |
|---|---|---|
| Qui l'utilise ? | Tous les joueurs — parcourent les visuels du serveur | Admins — donnent des objets fonctionnels |
| Qu'affiche-t-il ? | Visuels bruts des packs — entrées pack_item / raw. Cliquer donne l'objet brut (texture seulement). | Objets fonctionnels — épées, pioches, graines, armures, blocs, etc. Cliquer donne un objet entièrement configuré. |
| Config qui l'alimente | packs/<packId>/gui.yml | items/<packId>/gui.yml |
| Config emplacement catégorie | Champ slot: dans packs/<packId>/gui.yml | Champ slot: dans items/<packId>/gui.yml |
| Config boutons nav | plugins/CustomiZer/gui/main_menu.yml | plugins/CustomiZer/gui/items_shop.yml |
| Bouton Parcourir tous les objets | Ouvre un navigateur paginé de tous les objets bruts — configuré dans gui/all_items.yml | N/A |
| Donner au clic ? | ❌ Non (objet brut uniquement) | ✅ Oui (admin uniquement) |
Référence des emplacements d'inventaire
Les deux GUIs utilisent la numérotation d'emplacements Minecraft standard — de gauche à droite, de haut en bas, en commençant à 0. Un inventaire à 6 rangées a 54 emplacements (0–53) :
Rangée 1: [ 0][ 1][ 2][ 3][ 4][ 5][ 6][ 7][ 8]
Rangée 2: [ 9][10][11][12][13][14][15][16][17]
Rangée 3: [18][19][20][21][22][23][24][25][26]
Rangée 4: [27][28][29][30][31][32][33][34][35]
Rangée 5: [36][37][38][39][40][41][42][43][44]
Rangée 6: [45][46][47][48][49][50][51][52][53] ← rangée boutons nav
/z gui — Navigateur de packs
Le menu pour les joueurs. Affiche les objets bruts du pack de ressources (textures et modèles personnalisés) pour que les joueurs voient ce qui est disponible sur le serveur. Navigation uniquement — aucun objet n'est donné.
Comment ça fonctionne
Quand un joueur exécute /z gui, il voit une icône par pack enregistré. Cliquer sur l'icône d'un pack ouvre une deuxième page listant tous les objets de type pack_item ou raw du fichier packs/<packId>/gui.yml de ce pack. Un bouton "Parcourir tous les objets" permet aussi de voir tous les objets bruts de tous les packs sur une seule page paginée.
/z gui ne viennent PAS de packs/*/configs/. Elles viennent de packs/<packId>/gui.yml — un fichier de navigateur d'affichage dédié, séparé du fichier /zitems. Le dossier de ressources packs/ contient les textures et définitions d'objets ; le fichier d'affichage GUI se trouve à la racine du plugin sous packs/<packId>/gui.yml.Config 1 — Mise en page de la coque : plugins/CustomiZer/gui/main_menu.yml
Contrôle le cadre extérieur du navigateur de catégories /z gui : titre, taille, remplissage d'arrière-plan, bordure et le bouton "Parcourir tous les objets". Les boutons de navigation Précédent/Retour/Suivant lors de la navigation dans les objets d'un pack y sont aussi configurés.
# plugins/CustomiZer/gui/main_menu.yml
categories:
title: "<white><shift:-8><font_image:CustomiZerInternal:1>"
size: 6
background:
enabled: true
material: PAPER
model_data: 29999
name: " "
border:
enabled: true
material: PAPER
model_data: 29999
name: " "
pack_gui:
prev_button:
slot: 47
material: PAPER
model_data: 29999
name: "&c◀ Précédent"
back_button:
slot: 49
material: PAPER
model_data: 29999
name: "&c✖ Retour"
next_button:
slot: 51
material: PAPER
model_data: 29999
name: "&aSuivant ▶"
page_info:
enabled: true
slot: 48
material: PAPER
model_data: 29999
name: "&7Page &f%page% &7/ &f%total%"
Config 2 — Objets d'affichage du pack : packs/<packId>/gui.yml
C'est le fichier à créer pour qu'un pack apparaisse dans /z gui. Il contient les objets visuels bruts (type: pack_item ou type: raw) affichés dans le navigateur. Le plugin scanne automatiquement ces fichiers. Aucune autre inscription nécessaire.
Pour /zitems, créez un fichier séparé à items/<packId>/gui.yml avec des types d'objets fonctionnels (sword, pickaxe, armor, etc.).
Changer l'emplacement d'un pack dans /z gui
Modifiez le slot: en haut du fichier packs/<packId>/gui.yml du pack. Ce numéro contrôle où l'icône du pack se place dans la grille des catégories de /z gui. Si aucun fichier packs/ n'existe pour un pack, l'emplacement est lu depuis items/<packId>/gui.yml.
# packs/my_gem_pack/gui.yml ← navigateur d'affichage pour /z gui
name: "<gradient:#ffd700:#ff9a3c><bold>Gem Pack</bold></gradient>"
slot: 11 # ← Changez ceci pour déplacer l'icône dans /z gui
icon:
pack: my_gem_pack
id: ruby
gui:
size: 6
# Seuls les types pack_item / raw apparaissent dans /z gui
items:
- type: pack_item
pack: my_gem_pack
id: ruby
name: "&cRuby"
lore:
- "&7Une gemme rouge précieuse"
- type: pack_item
pack: my_gem_pack
id: emerald_gem
name: "&aEmerald Gem"
lore:
- "&7Une gemme verte brillante"
Rangée 2 : 11 12 13 14 15 | Rangée 3 : 20 21 22 23 24 | Rangée 4 : 29 30 31 32 33 | Rangée 5 : 38 39 40 41 42
Évitez les rangées 1 et 6 (zone bordure/nav).
Ajouter un pack dans /z gui (résumé)
- Créez
packs/mon_pack/gui.ymlavec unslot:libre et des entréespack_item - Exécutez
/zpack reloadpacksen jeu
C'est tout. Aucun autre fichier n'a besoin d'être modifié pour que le pack apparaisse dans /z gui.
/zitems — Navigateur d'objets fonctionnels
L'outil d'administration pour naviguer et donner des objets fonctionnels — épées à niveaux, pioches, cosmétiques, moissonneuses, et plus encore. Cliquez gauche sur n'importe quel objet pour le recevoir instantanément.
Le menu principal /zitems — chaque icône est un pack enregistré. Cliquez sur un pack pour naviguer dans ses objets fonctionnels.
/zitems et /z gui lisent maintenant depuis des fichiers séparés. /zitems lit items/<packId>/gui.yml et n'affiche que les types d'objets fonctionnels (sword, pickaxe, armor, etc.). /z gui lit packs/<packId>/gui.yml et affiche les visuels bruts (pack_item, raw). Si vous voyez un objet dans /z gui mais pas dans /zitems, vous devez l'ajouter dans items/<packId>/gui.yml avec un type fonctionnel.Config 1 — Boutons nav : plugins/CustomiZer/gui/items_shop.yml
Ce fichier contrôle les boutons Précédent / Retour / Suivant et les infos de page affichés lors de la navigation dans les objets d'une catégorie. Il ne contrôle pas quels packs apparaissent comme catégories — cela vient du fichier items/<packId>/gui.yml de chaque pack.
# plugins/CustomiZer/gui/items_shop.yml
pack_gui:
prev_button:
slot: 47
material: PAPER
model_data: 29999
name: "&c◀ Précédent"
back_button:
slot: 49
material: PAPER
model_data: 29999
name: "&c✖ Retour"
next_button:
slot: 51
material: PAPER
model_data: 29999
name: "&aSuivant ▶"
page_info:
enabled: true
slot: 48
material: PAPER
model_data: 29999
name: "&7Page &f%page% &7/ &f%total%"
Config 2 — Objets fonctionnels du pack : items/<packId>/gui.yml
C'est le fichier qui enregistre les objets fonctionnels dans /zitems. Il est séparé du fichier packs/<packId>/gui.yml utilisé par /z gui. Vous avez besoin des deux fichiers si vous souhaitez qu'un pack apparaisse dans les deux menus.
Changer l'emplacement d'une catégorie dans /zitems
Modifiez slot: en haut de items/<packId>/gui.yml. Cela contrôle la position de l'icône du pack dans /zitems. Le fichier packs/<packId>/gui.yml contrôle l'emplacement dans /z gui indépendamment.
Contrôler le placement des objets dans une catégorie
Chaque entrée d'objet dans items/<packId>/gui.yml supporte un champ optionnel slot: qui l'ancre à une position spécifique :
# items/my_pack/gui.yml ← objets fonctionnels pour /zitems
name: "<gradient:#5cc8ff:#7ee787><bold>My Pack</bold></gradient>"
slot: 11
icon:
pack: my_pack
id: silver_sword
gui:
size: 6
items:
# Objets fonctionnels → apparaissent dans /zitems (cliquer donne l'objet entièrement configuré)
- type: sword
id: silver_sword
slot: 11 # ← ancré à l'emplacement exact 11 dans la page de catégorie /zitems
name: "&7⚔ Silver Sword"
lore:
- "&7Une épée à niveaux"
- "&aClic gauche pour recevoir"
- type: pickaxe
id: silver_pickaxe
slot: 12 # ← ancré à l'emplacement 12
name: "&7⛏ Silver Pickaxe"
- type: harvester
id: silver_hoe
# pas de slot: → placé automatiquement après les objets ancrés
Pour le navigateur d'affichage (/z gui), créez un fichier packs/my_pack/gui.yml séparé avec des entrées type: pack_item pour les mêmes objets.
• Si
slot: est défini → l'objet est placé à cet emplacement exact• Si pas de
slot: → placé automatiquement de gauche à droite après les objets ancrés• Si le pack a plus d'objets qu'une page → toutes les valeurs
slot: sont ignorées et les objets se paginent séquentiellement (la dernière rangée devient les boutons Préc/Retour/Suiv)
Référence des types d'objets
| type | Apparaît dans | Donnable au clic | Configuré dans |
|---|---|---|---|
pack_item | /z gui uniquement | ❌ | packs/<pack>/configs/*.yml |
raw | /z gui uniquement | ❌ | packs/<pack>/configs/*.yml |
sword | /zitems uniquement | ✅ | CustomiZe!/<pack>/swords.yml |
pickaxe | /zitems uniquement | ✅ | CustomiZe!/<pack>/pickaxes.yml |
harvester | /zitems uniquement | ✅ | CustomiZe!/<pack>/harvesterhoes.yml |
armor | /zitems uniquement | ✅ | CustomiZe!/<pack>/armors.yml |
block | /zitems uniquement | ✅ | CustomiZe!/<pack>/blocks.yml |
cosmetic | /zitems uniquement | ✅ | CustomiZe!/<pack>/cosmetics.yml |
staff | /zitems uniquement | ✅ | CustomiZe!/<pack>/staves.yml |
Convertir des packs ItemsAdder automatiquement
Si vous avez des packs de contenu ItemsAdder à migrer vers CustomiZer, le convertisseur intégré s'en charge automatiquement — il crée le gui.yml, copie les assets et classe les objets.
- Déposez le dossier de contenu ItemsAdder (doit contenir
configs/etresourcepack/) dans :
plugins/CustomiZer/converters/itemsadder/input/<nomDuPack>/ - Exécutez en jeu :
/zpack convert itemsadder <nomDuPack> - Exécutez
/zpack zippour reconstruire le pack de ressources
pack_item dans /z gui. Les cosmétiques, épées et bâtons reçoivent également des fichiers yml fonctionnels pour apparaître dans /zitems.Pack GUI — Référence gui.yml
Deux fichiers séparés par pack : un pour le navigateur d'affichage /z gui, un pour l'outil admin /zitems. Chaque fichier contrôle quel emplacement le pack occupe, quelle icône il affiche et quels objets apparaissent à l'intérieur.
Où se trouvent les fichiers
packs/<packId>/gui.yml ← navigateur d'affichage pour /z gui (type: pack_item, raw)
items/<packId>/gui.yml ← outil admin pour /zitems (type: sword, pickaxe, armor, etc.)
Le plugin détecte automatiquement ces fichiers. Aucune autre inscription n'est nécessaire — créez simplement le fichier et rechargez. Le champ slot: en haut de chaque fichier contrôle où l'icône de catégorie apparaît. Si un seul fichier existe pour un pack, son slot: est utilisé pour les deux menus.
packs/<packId>/gui.yml — navigateur d'affichage (/z gui)
# packs/my_pack/gui.yml ← objets visuels bruts affichés dans /z gui
# Nom affiché comme étiquette du pack dans /z gui.
name: "<gradient:#5cc8ff:#7ee787><bold>My Pack</bold></gradient>"
# Emplacement dans la grille des catégories /z gui.
# Utilisez les emplacements 11–15, 20–24, 29–33 ou 38–42 pour de meilleurs résultats.
slot: 11
# L'icône affichée pour ce pack dans la grille /z gui.
icon:
pack: my_pack # namespace du pack
id: silver_ore # id de l'objet dans ce pack
# Le titre et la taille de la page de navigation.
gui:
title: "<white><shift:-8><font_image:CustomiZerInternal:1>"
size: 6 # rangées (1–6) ; dernière rangée = boutons nav si size > 1
# Seuls les types pack_item / raw appartiennent ici
items:
# Objet visuel brut — apparaît dans /z gui (cliquer donne l'objet brut)
- type: pack_item
pack: my_pack
id: silver_ore
name: "&7Silver Ore"
lore:
- "&7Un minerai brut"
# slot: 0 ← optionnel : ancrer à une position exacte
items/<packId>/gui.yml — outil admin (/zitems)
# items/my_pack/gui.yml ← objets fonctionnels affichés dans /zitems
name: "<gradient:#5cc8ff:#7ee787><bold>My Pack</bold></gradient>"
slot: 11
icon:
pack: my_pack
id: silver_ore
gui:
size: 6
# Les types d'objets fonctionnels appartiennent ici
items:
# Épée fonctionnelle — apparaît dans /zitems
- type: sword
id: silver_sword
slot: 11 # optionnel : ancrer à l'emplacement 11 dans la page de catégorie /zitems
name: "&7⚔ Silver Sword"
lore:
- "&7Une épée à niveaux"
- "&aClic gauche pour recevoir"
# Pioche fonctionnelle — apparaît dans /zitems
- type: pickaxe
id: silver_pickaxe
slot: 12
name: "&7⛏ Silver Pickaxe"
# Houe moissonneuse fonctionnelle — apparaît dans /zitems
- type: harvester
id: silver_hoe
name: "&7🌾 Silver Hoe"
# Cosmétique fonctionnel — apparaît dans /zitems
- type: cosmetic
id: silver_crown
name: "&7👑 Silver Crown"
Erreurs fréquentes & solutions
| Problème | Cause | Solution |
|---|---|---|
| Le pack n'apparaît dans aucun GUI | Pas de packs/<packId>/gui.yml ou items/<packId>/gui.yml, ou plugin non rechargé | Créez le(s) fichier(s) approprié(s) ; exécutez /zpack reloadpacks |
| L'icône du pack est au mauvais emplacement | Le slot: en haut du gui.yml entre en conflit avec un autre pack | Changez slot: pour un numéro libre (plage 11–42) |
| L'objet apparaît dans /z gui mais pas /zitems | Le type de l'objet est pack_item ou raw | C'est voulu. Changez le type en sword, cosmetic, etc. si vous le voulez dans /zitems |
| L'objet apparaît dans /zitems mais pas /z gui | Le type de l'objet n'est pas pack_item / raw | Ajoutez une entrée pack_item séparée pour le même id d'objet |
| Le slot: est ignoré / les objets se chevauchent | Le pack a plus d'objets qu'une page → la pagination écrase les valeurs slot: | Réduisez le nombre d'objets pour tenir sur une page, ou supprimez slot: et laissez les objets se paginer automatiquement |
| L'épée fonctionnelle s'affiche mais ne fait rien | L'id: dans gui.yml ne correspond pas à la clé dans swords.yml | Assurez-vous que les deux fichiers utilisent exactement la même chaîne d'id |
Rechargez et testez
Exécutez /z reload en jeu. Le plugin reconstruira le pack de ressources, l'enverra à tous les joueurs en ligne, et mettra à jour les deux GUIs immédiatement. Vérifiez /z gui et /zitems pour confirmer que votre pack et vos objets apparaissent correctement.
Erreurs courantes
| Problème | Cause | Solution |
|---|---|---|
| Le pack n'apparaît pas dans /z gui | Fichier packs/my_pack/gui.yml manquant ou slot: non défini | Créez le fichier et assurez-vous que slot: est défini sur un numéro d'emplacement libre |
| Le pack n'apparaît pas dans /zitems | Fichier items/my_pack/gui.yml manquant | Créez items/my_pack/gui.yml avec les entrées de types fonctionnels appropriées |
| L'objet affiche la mauvaise texture ou une épée en fer vanilla | Conflit CMD avec un autre pack, ou le chemin de texture est incorrect | Vérifiez que tous les CMDs sont uniques ; vérifiez que le chemin de texture correspond exactement au nom du fichier PNG |
| L'épée/pioche fonctionnelle s'affiche mais ne fait rien | L'entrée CustomiZe!/my_pack/swords.yml (ou pickaxes.yml) n'existe pas ou a une faute de frappe dans l'id | Vérifiez que id: dans gui.yml correspond exactement à la clé dans swords.yml |
| Les objets apparaissent dans /z gui mais ne peuvent pas être reçus | C'est par conception — /z gui est en navigation seulement | Ajoutez les objets dans items/<packId>/gui.yml pour /zitems si vous voulez que les admins puissent les donner |
Système de maîtrise
Pistes XP persistantes qui récompensent les joueurs pour le minage, le combat, l'agriculture et l'exploration avec des récompenses de jalons.
plugins/CustomiZer/mastery.ymlQu'est-ce que la maîtrise ?
Les pistes de maîtrise donnent aux joueurs un objectif de progression à long terme séparé du levelling. Casser du minerai donne de l'XP de Maîtrise en minage. Tuer des monstres donne de l'XP de Maîtrise au combat. Atteindre des jalons (niveau 10, 25, 50, 100) déclenche des commandes de récompense et des messages.
max_level: 100 # Niveau de maîtrise maximum pour toutes les pistes
tracks:
mining:
display: "⛏ Mining Mastery"
# XP gagné par bloc cassé
xp_per_block:
COAL_ORE: 3
IRON_ORE: 5
GOLD_ORE: 7
DIAMOND_ORE: 15
ANCIENT_DEBRIS: 40
DEEPSLATE_COAL_ORE: 4
my_pack:ruby_ore: 12 # Les blocs de pack personnalisés utilisent namespace:key
xp_per_level: 1000 # XP nécessaire par niveau (identique pour tous les niveaux)
milestones:
10:
message: "⛏ Mining Mastery 10 reached!"
commands:
- "give {player} diamond 5"
25:
message: "⛏ Mining Mastery 25! You're a real miner."
50:
message: "⛏ Mining Mastery 50!"
commands:
- "cxp give {player} item prestige_token 1"
100:
message: "⛏ MINING MASTER! Maximum level achieved!"
commands:
- "cxp give {player} item elite_pickaxe 1"
combat:
display: "⚔ Combat Mastery"
xp_per_kill:
ZOMBIE: 3
SKELETON: 4
SPIDER: 3
CREEPER: 6
ENDER_DRAGON: 200
WITHER: 100
xp_per_level: 1500
farming:
display: "🌿 Farming Mastery"
xp_per_harvest:
WHEAT: 2
CARROTS: 2
POTATOES: 2
PUMPKIN: 5
xp_per_level: 800
Commandes
| Commande | Description |
|---|---|
/zmastery | Voir vos propres niveaux de maîtrise |
/zmastery <player> | Voir la maîtrise d'un autre joueur |
Missions
Objectifs quotidiens et hebdomadaires qui se réinitialisent selon un calendrier et récompensent les joueurs avec de l'argent et des objets.
plugins/CustomiZer/missions.ymldaily_reset_hour: 0 # Heure de la journée pour réinitialiser les missions quotidiennes (0 = minuit)
weekly_reset_day: MONDAY # Jour de la semaine pour réinitialiser les missions hebdomadaires
daily:
mine_iron:
display: "⛏ Iron Miner"
description: "Mine 30 Iron Ore"
objective: MINE_BLOCK # Type d'objectif (voir tableau ci-dessous)
target: IRON_ORE # Ce qu'il faut miner/tuer/récolter
amount: 30 # Combien nécessaire pour compléter
rewards:
money: 200
commands:
- "cxp give {player} item mission_token 2"
message: "Daily Complete: Iron Miner! +$200"
kill_zombies:
display: "⚔ Zombie Slayer"
description: "Kill 25 Zombies"
objective: KILL_MOB
target: ZOMBIE
amount: 25
rewards:
money: 150
weekly:
nether_run:
display: "🔥 Nether Runner"
description: "Mine 5 Ancient Debris this week"
objective: MINE_BLOCK
target: ANCIENT_DEBRIS
amount: 5
rewards:
money: 2000
commands:
- "cxp give {player} item mission_token 10"
Types d'objectifs
| Objectif | Exemples de cible | Notes |
|---|---|---|
MINE_BLOCK | IRON_ORE, COAL_ORE | Tout matériau de bloc vanilla |
MINE_CUSTOM_BLOCK | my_pack:ruby_ore | Un bloc de pack personnalisé |
MINE_BLOCK_WITH_TOOL | STONE | Ajoutez aussi tool: pickaxe_key |
KILL_MOB | ZOMBIE, ENDER_DRAGON, ANY_HOSTILE | EntityType ou ANY_HOSTILE |
HARVEST_CROP | WHEAT, ANY_CROP | Matériau ou ANY_CROP |
EAT_ITEM | clé d'objet depuis items.yml | Objet alimentaire CustomiZer |
USE_ITEM | clé d'objet depuis items.yml | Objet utilisable CustomiZer |
Prestige
Atteignez le maximum de vos pistes de maîtrise pour prestigier — gagnant des multiplicateurs de bonus de récompense permanents qui s'accumulent.
plugins/CustomiZer/prestige.ymlmax_prestige: 10
# Quelles pistes de maîtrise doivent être au niveau maximum pour prestigier
mastery_tracks_required:
- mining
- combat
mastery_level_required: 100 # Toutes les pistes listées doivent atteindre ce niveau
levels:
1:
display: "✦ Prestige I"
permanent_bonus_percent: 2 # +2% à tout XP et récompenses, en permanence
rewards:
money: 5000
commands:
- "cxp give {player} item prestige_token 2"
message: "★ Prestige I achieved! +2% permanent bonus!"
2:
display: "✦ Prestige II"
permanent_bonus_percent: 4
rewards:
money: 8000
10:
display: "✦ ASCENDANT"
permanent_bonus_percent: 20
rewards:
money: 100000
commands:
- "cxp give {player} sword celestial_blade"
Reforgement
Relancez les modificateurs de statistiques sur les armes et armures en utilisant des pierres de reforgeage.
plugins/CustomiZer/reforge.ymlreforge_cost_item: "reforge_stone" # Clé d'objet CustomiZer consommée à chaque reforgeage
reforge_cost_amount: 3 # Combien de pierres consommées
reforge_cost_money: 250.0 # Coût en argent (en plus des objets)
use_money_cost: true
modifiers:
savage:
display: "Savage"
stats:
GENERIC_ATTACK_DAMAGE: 2.0
GENERIC_ATTACK_SPEED: 0.1
lore_line: "✦ Savage: +2 ATK, +0.1 SPD"
weight: 20 # Poids plus élevé = plus souvent lancé
ancient:
display: "Ancient"
stats:
GENERIC_MAX_HEALTH: 4.0
GENERIC_ARMOR: 1.0
lore_line: "✦ Ancient: +4 HP, +1 Armor"
weight: 15
celestial:
display: "Celestial"
stats:
GENERIC_ATTACK_DAMAGE: 4.0
GENERIC_MAX_HEALTH: 6.0
GENERIC_ARMOR: 2.0
weight: 2 # Modificateur rare
void:
display: "Void"
stats:
GENERIC_ATTACK_DAMAGE: 6.0
GENERIC_ATTACK_SPEED: 0.3
weight: 1 # Modificateur très rare
Réparation
Restaurez la durabilité personnalisée sur les épées et outils avec des réductions basées sur le rang et des temps de recharge.
plugins/CustomiZer/repair.ymlrepair-rate-per-10%: 1000 # Coût de base (argent) pour restaurer 10% de durabilité
# Coût par 10% de durabilité pour les épées, par niveau de rareté
swords-repair-rate-per-10%:
common: 1000
rare: 2000
epic: 3000
legendary: 4000
mythic: 5000
# Temps de recharge et réductions différents par rang de joueur
# Le rang est déterminé par le nom de groupe LuckPerms
general-cooldown-per-rank:
Default:
Cooldown: 10000 # Millisecondes entre les réparations (10000 = 10 secondes)
Discount: 0 # Pourcentage de réduction sur le coût
VIP:
Cooldown: 5000
Discount: 10
MVP:
Cooldown: 3000
Discount: 15
ELITE:
Cooldown: 2000
Discount: 20
messages:
no-money: "&cNot enough money."
repaired-successfully: "&aRepaired {count} items for &6${cost}&a."
no-items-to-repair: "&eNo items need repairs."
cooldown-message: "&cWait {time} seconds before repairing again."
Cette page a été déplacée. Cliquez ici pour la page Système de niveaux.
Le Système de niveaux
CustomiZer supporte le levelling basé sur les kills pour les épées et haches, et le levelling basé sur les blocs pour les pioches. Les deux sont des add-ons optionnels pour les armes et outils normaux.
Vue d'ensemble — Deux types de levelling
| Type d'objet | Ce qui déclenche une montée de niveau | Fichier de config |
|---|---|---|
| Épées & Haches | Le joueur tue des monstres avec l'arme | swords.yml / axes.yml + rarity.yml |
| Pioches | Le joueur mine des blocs avec la pioche | pickaxes.yml (autonome) |
Rareté des épées & haches (basée sur les kills)
Les épées et haches peuvent avoir un bloc rarity: dans leur configuration. Le plugin suit les kills dans les données NBT de l'objet. Quand le compte de kills atteint le seuil configuré, l'arme monte automatiquement au tier suivant — aucune commande nécessaire.
Commun → Rare → Épique → Légendaire → Mythique
Ce qui se passe quand une épée/hache monte de niveau :
- Le Custom Model Data change vers la valeur du tier suivant → Minecraft charge une texture différente depuis le pack de ressources
- Le nom d'affichage de l'objet change vers le nom du tier
- Un multiplicateur Buff% est appliqué à tous les attributs (donc une épée Légendaire est plus forte qu'une Commune)
- Le joueur reçoit une notification de montée
Étape 1 — Définissez une texture par tier dans votre pack
Chaque tier de rareté a besoin de sa propre entrée d'élément de pack avec un model_id unique pointant vers un fichier de texture différent :
# packs/my_pack/configs/items.yml
items:
dragon_blade_common:
resource:
generate: true
material: IRON_SWORD
model_id: 32001 # CMD pour le tier Commun
textures: [weapons/dragon_blade_common.png]
dragon_blade_rare:
resource:
generate: true
material: IRON_SWORD
model_id: 32002 # CMD pour le tier Rare — PNG différent !
textures: [weapons/dragon_blade_rare.png]
dragon_blade_epic:
resource:
generate: true
material: IRON_SWORD
model_id: 32003
textures: [weapons/dragon_blade_epic.png]
dragon_blade_legendary:
resource:
generate: true
material: IRON_SWORD
model_id: 32004
textures: [weapons/dragon_blade_legendary.png]
dragon_blade_mythical:
resource:
generate: true
material: IRON_SWORD
model_id: 32005
textures: [weapons/dragon_blade_mythical.png]
Étape 2 — Ajoutez le bloc de rareté à votre épée
Pointez chaque tier de rareté vers le CMD correct :
# CustomiZe!/__global__/swords.yml
swords:
dragon_blade:
type: IRON_SWORD
display_name: "&4Dragon Blade"
durability: 5000
attributes:
GENERIC_ATTACK_DAMAGE: 10.0
lore:
- "&8Rarity: %rarity%"
- "&8Kills: %progress% / %required%"
# Le bloc de rareté — supprimez-le entièrement si vous ne voulez pas de levelling
rarity:
common:
custom_model_data: 32001 # Correspond au model_id de dragon_blade_common
name: "&7Common Dragon Blade"
rare:
custom_model_data: 32002
name: "&9Rare Dragon Blade"
epic:
custom_model_data: 32003
name: "&5Epic Dragon Blade"
legendary:
custom_model_data: 32004
name: "&6Legendary Dragon Blade"
mythical:
custom_model_data: 32005
name: "&dMythical Dragon Blade"
Étape 3 — Configurez rarity.yml
plugins/CustomiZer/rarity.yml est la chaîne de rareté globale. Chaque épée et hache du serveur partage ce fichier — il définit les noms des tiers, les seuils de kills et les buffs de statistiques. Votre bloc rarity: par épée dans swords.yml contrôle uniquement le CMD (texture) et le nom d'affichage par tier ; la logique de montée de niveau réelle vit ici.
rarity.yml — Toutes les clés de configuration
| Clé | Type | Requis ? | Description |
|---|---|---|---|
Name | Chaîne | Requis | Nom d'affichage pour ce tier de rareté. Supporte les codes couleur & (ex. &6Legendary). Affiché via le placeholder de description %rarity%. |
Buff | Entier | Requis | Multiplicateur de statistiques en pourcentage appliqué à tous les attributes d'épée quand l'objet atteint ce tier. Formule : final_value = configured_value × (1 + Buff ÷ 100). Définissez à 0 pour pas de buff. |
EvolutionKillsRequired | Entier | Requis | Nombre de kills nécessaires à ce tier pour avancer au suivant. Le compteur se réinitialise à 0 après chaque amélioration — c'est par tier, pas cumulatif. Définissez à 0 sur votre tier final (bien que NextRarity: null arrête déjà les améliorations). |
NextRarity | Chaîne ou null | Requis | L'ID de rareté vers lequel monter quand le compte de kills est atteint. Doit correspondre à la clé YAML d'une autre entrée dans rarities:. Définissez à null (sans guillemets) pour marquer ceci comme le tier final — aucune autre amélioration ne se produira. |
Model_data est également analysé depuis ce fichier mais n'est pas utilisé pour les changements de texture. Les textures sont contrôlées par custom_model_data à l'intérieur du bloc rarity: de l'épée dans swords.yml. Vous pouvez ignorer Model_data dans rarity.yml en toute sécurité.Comment fonctionne exactement le Buff
Quand une épée monte à un nouveau tier, le plugin lit toutes les valeurs d'attribut depuis le bloc attributes: de l'épée et les réapplique avec le multiplicateur Buff du tier :
# Configuration de l'épée :
attributes:
GENERIC_ATTACK_DAMAGE: 10.0
GENERIC_ATTACK_SPEED: 1.6
# À Rare (Buff: 10) :
# attack_damage = 10.0 × (1 + 10/100) = 11.0
# attack_speed = 1.6 × (1 + 10/100) = 1.76
# À Épique (Buff: 20) :
# attack_damage = 10.0 × (1 + 20/100) = 12.0
# attack_speed = 1.6 × (1 + 20/100) = 1.92
# À Légendaire (Buff: 30) :
# attack_damage = 10.0 × 1.30 = 13.0
# À Mythique (Buff: 40) :
# attack_damage = 10.0 × 1.40 = 14.0
Comment fonctionne le compteur de kills
- Le compteur suit les kills par tier. Après une amélioration, il se réinitialise à 0.
- Un compteur séparé de kills totaux suit les kills de tous les temps avec l'arme et ne se réinitialise jamais — c'est ce que montre
%total_kills%dans la description. - Au tier final (
NextRarity: null), le compteur d'évolution est gelé. Les kills totaux continuent de s'incrémenter. - L'amélioration se déclenche à l'instant où un kill pousse le compteur à ou au-delà de
EvolutionKillsRequired.
Vous pouvez créer des chaînes de tiers entièrement personnalisées
Le système de rareté n'est pas limité aux cinq tiers par défaut. Vous pouvez créer n'importe quel nombre de tiers avec n'importe quels noms. La clé YAML est l'ID interne du tier — elle doit correspondre à ce que vous écrivez dans NextRarity et dans le bloc rarity: de votre épée.
Exemple — Chaîne personnalisée à 3 tiers
# rarity.yml — une chaîne personnalisée à 3 tiers
rarities:
bronze:
Name: "&6Bronze"
Buff: 0
EvolutionKillsRequired: 25
NextRarity: "silver"
silver:
Name: "&fSilver"
Buff: 15
EvolutionKillsRequired: 75
NextRarity: "gold"
gold:
Name: "&e&lGold"
Buff: 35
EvolutionKillsRequired: 0 # Inutile — NextRarity est null
NextRarity: null # Tier max
Puis dans la configuration de votre épée, votre bloc rarity: utilise ces mêmes IDs :
rarity:
bronze:
custom_model_data: 50001
name: "&6Bronze Blade"
silver:
custom_model_data: 50002
name: "&fSilver Blade"
gold:
custom_model_data: 50003
name: "&e&lGolden Blade"
Exemple — Progression à 7 tiers pour un serveur long terme
rarities:
novice:
Name: "&7Novice"
Buff: 0
EvolutionKillsRequired: 50
NextRarity: "apprentice"
apprentice:
Name: "&aApprentice"
Buff: 8
EvolutionKillsRequired: 150
NextRarity: "adept"
adept:
Name: "&2Adept"
Buff: 16
EvolutionKillsRequired: 300
NextRarity: "expert"
expert:
Name: "&bExpert"
Buff: 25
EvolutionKillsRequired: 500
NextRarity: "master"
master:
Name: "&9Master"
Buff: 35
EvolutionKillsRequired: 750
NextRarity: "grandmaster"
grandmaster:
Name: "&5Grandmaster"
Buff: 45
EvolutionKillsRequired: 1000
NextRarity: "legend"
legend:
Name: "&6&lLEGEND"
Buff: 60
EvolutionKillsRequired: 0
NextRarity: null
Important — rarity.yml vs bloc rarity dans swords.yml
| Configuré dans | Contrôle |
|---|---|
rarity.yml | Noms des tiers (Name), multiplicateurs de buff de statistiques (Buff), seuils de kills (EvolutionKillsRequired), chaîne d'amélioration (NextRarity). Global pour toutes les épées. |
swords.yml → bloc rarity: | Quelle texture (CMD) utiliser par tier, et le remplacement du nom d'affichage par tier. Par épée. |
Les IDs de tier (ex. common, rare, bronze) doivent être identiques dans les deux fichiers — le nom dans la map rarities: de rarity.yml doit correspondre au nom dans le bloc rarity: de l'épée.
Placeholders de description d'épée (avec rareté)
| Placeholder | Remplacé par |
|---|---|
%rarity% | Valeur Name du tier actuel depuis rarity.yml (avec codes couleur appliqués) |
%progress% | Kills vers la prochaine amélioration (se réinitialise après chaque amélioration) |
%required% | Kills nécessaires pour atteindre le prochain tier (EvolutionKillsRequired) |
%total_kills% | Kills à vie de tous les temps avec cet objet spécifique (ne se réinitialise jamais) |
%custom_durability% | Durabilité actuelle |
%max_custom_durability% | Durabilité max à ce tier de rareté |
Levelling de pioche (basé sur les blocs)
Les pioches utilisent un système de levelling entièrement autonome défini à l'intérieur de pickaxes.yml — il n'y a pas de rarity.yml séparé impliqué. Chaque définition de pioche contient une map levels:. Le plugin compte les blocs minés et monte quand le seuil est atteint.
Ce qui se passe quand une pioche monte de niveau :
- Le Custom Model Data change → nouvelle texture
- Le rayon de minage s'étend (ex. 1×1 → 3×3 → 3×7)
- Le niveau de Hâte peut augmenter par tier
- La durabilité personnalisée augmente
- Le joueur est notifié
# CustomiZe!/__global__/pickaxes.yml
pickaxes:
tier_pickaxe:
type: DIAMOND_PICKAXE
display_name: "⛏ Tier Pickaxe"
lore:
- "Level: %level% / %max_level%"
- "Blocks mined: %blocks_mined% / %blocks_required%"
- "Mining area: %radius%×%radius%"
- "%bonuses%"
levels:
1:
name: "⛏ Tier Pickaxe [Lvl. 1]"
custom_model_data: 30041 # Texture pour le niveau 1
durability: 2000
radius: 1 # Mine 1×1 (juste le bloc unique)
height_radius: 0
effect_on_hold: haste
effect_amplifier: 0 # Hâte I
blocks_required: 200 # Minez 200 blocs → niveau 2
bonus:
- "• Haste I while held"
2:
name: "⛏ Tier Pickaxe [Lvl. 2]"
custom_model_data: 30042 # Texture différente
durability: 4000
radius: 1
height_radius: 1 # Mine maintenant 1×3 de hauteur
effect_on_hold: haste
effect_amplifier: 0
blocks_required: 500
bonus:
- "• Haste I"
- "• 1×3 column mining"
3:
name: "⛏ Tier Pickaxe [Lvl. 3]"
custom_model_data: 30043
durability: 7000
radius: 3 # Zone 3×3 !
height_radius: 1
effect_on_hold: haste
effect_amplifier: 1 # Hâte II
blocks_required: 1000
bonus:
- "• Haste II"
- "• 3×3 area mining"
4:
name: "⛏ Tier Pickaxe [MAX]"
custom_model_data: 30044
durability: 12000
radius: 3
height_radius: 3 # Zone 3×7
effect_on_hold: haste
effect_amplifier: 1
blocks_required: 0 # 0 = c'est le niveau max
bonus:
- "• Haste II"
- "• 3×7 area mining"
- "• MAX LEVEL"
blocks_required: 0 sur la dernière entrée de niveau. Le plugin traite 0 comme "pas d'amélioration supplémentaire" — c'est l'indicateur de niveau maximum.Placeholders de description de pioche
| Placeholder | Affiche |
|---|---|
%level% | Numéro de niveau actuel |
%max_level% | Niveau le plus élevé défini |
%blocks_mined% | Blocs minés avec cette pioche |
%blocks_required% | Blocs nécessaires pour le prochain niveau (0 au max) |
%current_durability% | Durabilité personnalisée restante |
%max_durability% | Durabilité max au niveau actuel |
%radius% | Côté de zone de minage actuel (ex. 3 = 3×3) |
%height_radius% | Rayon de minage vertical |
%bonuses% | Toutes les lignes de bonus pour le niveau actuel |
Générateurs de minerai
Injectez automatiquement des blocs personnalisés dans la génération du monde — aucun éditeur de monde externe nécessaire.
plugins/CustomiZer/generators.ymlCe que ça fait
Quand un chunk est chargé pour la première fois (ou généré fraîchement), CustomiZer place vos minerais personnalisés dedans — comme Minecraft génère naturellement des veines de minerai de diamant. Les joueurs les minent comme des minerais vanilla.
Configuration
worlds_populators:
# Une clé unique pour cette entrée de générateur
ruby_ore_overworld:
block: my_pack:ruby_ore # Le bloc à placer ("namespace:key" ou "minecraft:stone")
worlds:
- world # Monde normal
- world_caves # Monde de grottes si vous en avez un
replaceable_blocks: # Remplace uniquement ces blocs lors du placement
- STONE
- ANDESITE
- GRANITE
- TUFF
biomes: # Liste vide = apparaître dans TOUS les biomes
- PLAINS
- FOREST
- JUNGLE
- MOUNTAINS
chance: 60.0 # Pourcentage de chance de générer une veine par chunk (0–100)
amount: 5 # Nombre de veines de minerai par chunk
min_height: 15 # Niveau Y minimum pour apparaître
max_height: 55 # Niveau Y maximum pour apparaître
deepslate_ruby_ore:
block: my_pack:deepslate_ruby_ore
worlds:
- world
replaceable_blocks:
- DEEPSLATE
- COBBLED_DEEPSLATE
biomes: [] # Vide = tout biome
chance: 35.0
amount: 3
min_height: -60
max_height: 0 # Uniquement au niveau de la deeppslate
Conseils
- Les chunks déjà générés NE sont PAS rétroactivement peuplés. Les nouvelles configurations de minerai n'affectent que les chunks générés après l'application de la configuration.
- Pour forcer le peuplement des chunks existants, utilisez
/zworld generate <world>(commande admin). - Utilisez une chance faible et un petit montant pour les minerais rares. Une chance de 100 avec montant 10 les rendrait très communs.
- La liste
replaceable_blocksempêche les minerais de flotter dans l'air ou l'eau — incluez toujours les blocs naturels pour cette couche.
Commandes
| Commande | Permission | Description |
|---|---|---|
/zworld reload | cxp.admin | Recharger la configuration des générateurs sans redémarrer |
/zworld generate <world> | cxp.admin | Forcer le peuplement de tous les chunks chargés dans un monde |
Tables d'artisanat personnalisées
Blocs ou meubles d'établi personnalisés avec des dispositions d'emplacements configurables, des permissions et un stockage de recettes. Créez et supprimez des tables entièrement en jeu — aucune modification du fichier de config requise.
plugins/CustomiZer/custom_crafting_tables.yml — ou utilisez /zcraft newtable pour créer des tables depuis un assistant GUI sans toucher au fichier.custom_crafting_tables:
enabled: true
storage:
type: "sqlite" # "sqlite" (basé sur fichier) ou "mongodb"
sqlite:
file: "custom_crafting_recipes.db"
table: "custom_crafting_recipes"
default_table: "basic_workbench"
tables:
basic_workbench:
enabled: true
display_name: "&aEtabli Basique"
# Ouvrir ce GUI quand un joueur fait clic droit sur ce bloc personnalisé
assigned_block: "my_pack:workbench_block"
# OU ouvrir quand un joueur fait clic droit sur ce meuble placé (les deux peuvent être définis)
assigned_furniture: "my_pack:workbench_item"
permission:
required: false
node: "customizer.craftingtable.basic_workbench"
gui:
title: "&8⚒ Etabli Basique"
rows: 5
# Emplacements où les joueurs mettent les objets d'entrée
input_slots: [10, 11, 12, 19, 20, 21, 28, 29, 30]
# Emplacements où la sortie apparaît
output_slots: [24]
behavior:
return_items_on_close: true # Retourner les entrées si le GUI est fermé sans artisanat
consume_inputs: true # Supprimer les objets d'entrée lors de l'artisanat
allow_partial_outputs: false
Gestion des tables
| Commande | Description |
|---|---|
/zcraft newtable | Ouvrir l'assistant en jeu pour créer une nouvelle table — définir ID, titre, rangées, déclencheurs, et peindre les emplacements entrée/sortie. Sauvegarde dans la config et recharge instantanément. |
/zcraft deletetable <tableId> | Supprimer une définition de table de la config et recharger à chaud. Les recettes sauvegardées pour cette table sont conservées dans la base de données. |
/zcraft tables | Lister toutes les définitions de tables chargées. |
/zcraft reload | Recharger les définitions de tables et les recettes depuis le disque sans redémarrer. |
Ajouter des recettes à une table
Chaque table a sa propre liste de recettes indépendante. Les recettes sont ajoutées par table en utilisant l'ID de la table — le même ID que vous avez défini dans l'assistant ou dans la config.
vanilla est une table réservée spéciale dont les recettes fonctionnent dans le vrai établi Minecraft — celui que les joueurs ouvrent en faisant clic droit sur n'importe quel établi normal dans le monde. Ajoutez des recettes avec /zcraft create vanilla <nom> et elles fonctionnent dans tous les établis vanilla du serveur, sans bloc personnalisé ni meuble requis.basic_workbench est juste une exemple de table dans la config par défaut — ce n'est pas la table d'artisanat vanilla. Elle ne s'ouvre que quand un joueur fait clic droit sur le bloc/meuble personnalisé spécifique que vous lui assignez.- Lancez
/zcraft create <tableId> <nomRecette>— ex./zcraft create my_forge iron_to_steel.
Cela ouvre le concepteur de recettes pré-chargé avec la disposition exacte des emplacements de cette table. - Placez les ingrédients dans les emplacements d'entrée bleus dans l'arrangement voulu.
- Placez l'objet résultat dans l'emplacement de sortie rouge.
- Basculez optionnellement le mode Avec forme / Sans forme ou ajoutez un nœud de permission via les boutons de contrôle en bas.
- Fermez le GUI — la recette se sauvegarde automatiquement et est active immédiatement. Aucun rechargement nécessaire.
Pour modifier une recette existante, relancez la même commande /zcraft create <tableId> <nomRecette> — cela charge les ingrédients actuels pour que vous puissiez les modifier.
Commandes de recettes
| Commande | Description |
|---|---|
/zcraft open [tableId] | Ouvrir une table d'artisanat GUI par nom (sans bloc physique). |
/zcraft create <tableId> <nom> | Ouvrir le concepteur de recettes pour une recette nouvelle ou existante. |
/zcraft delete <tableId> <nom> | Supprimer une recette sauvegardée par table et nom. |
/zcraft list [tableId] | Lister toutes les recettes sauvegardées, filtrées optionnellement par table. |
/zcraft browse [tableId] | Ouvrir le navigateur de recettes GUI, filtré optionnellement sur une table. |
→ Documentation complète : Page du module Artisanat Personnalisé
Commandes
Toutes les commandes disponibles dans CustomiZer.
Commandes des joueurs
| Commande | Permission | Ce qu'elle fait |
|---|---|---|
/z gui | cxp.gui | Ouvrir le GUI principal de navigation par catégorie |
/zitems | cxp.items | Naviguer dans tous les packs et leurs objets |
/z get <name> | cxp.use | Vous donner un objet par sa clé |
/zrepair | cxp.repair | Réparer la durabilité personnalisée sur les objets tenus |
/zmastery | cxp.mastery | Voir votre progression de maîtrise |
/zmastery <player> | cxp.mastery | Voir la maîtrise d'un autre joueur |
/zmissions | cxp.missions | Ouvrir votre tableau de missions quotidiennes/hebdomadaires |
/zprestige | cxp.prestige | Ouvrir l'interface de prestige |
/zreforge | cxp.reforge | Ouvrir le GUI de reforgement |
/zsocket info | cxp.socket | Voir les infos d'emplacement de gemme sur l'objet tenu |
/zcraft | cxp.craft | Ouvrir l'artisanat personnalisé |
/backpack | — | Ouvrir le sac à dos tenu en main secondaire ou porté sur le plastron |
/zcrop | — | Commandes de culture pour les joueurs |
Commandes admin
| Commande | Permission | Ce qu'elle fait |
|---|---|---|
/z reload | cxp.reload | Recharger toutes les configurations et reconstruire le pack de ressources |
/z give <player> <name> | cxp.give | Donner à n'importe quel joueur un objet configuré |
/z info <name> | cxp.admin | Afficher des infos de débogage sur un objet |
/zsocket add <gem> | cxp.socket.add | Ajouter un emplacement à l'objet tenu |
/zsocket extract | cxp.socket.add | Retirer une gemme insérée |
/zworld reload | cxp.admin | Recharger la configuration des générateurs |
/zworld generate <world> | cxp.admin | Forcer le peuplement des chunks avec de nouveaux minerais |
/zcrop reload | customizer.crops.admin | Recharger les définitions de culture |
/zcrop give <player> <cropId> | customizer.crops.admin ou customizer.crops.give | Donner un objet graine de culture plantatble et tagué |
/zcraft newtable | cxp.craft.admin | Ouvrir l'assistant de création de table en jeu |
/zcraft deletetable <tableId> | cxp.craft.admin | Supprimer une définition de table et recharger à chaud |
/zcraft open [table] | cxp.craft | Ouvrir une table d'artisanat personnalisée par nom |
/zcraft create <table> <nom> | cxp.craft.admin | Ouvrir le concepteur de recettes pour une recette nouvelle ou existante |
/zcraft delete <table> <nom> | cxp.craft.admin | Supprimer une recette sauvegardée |
/zcraft list [table] | cxp.craft.admin | Lister toutes les recettes d'artisanat sauvegardées |
/zcraft reload | cxp.craft.admin | Recharger les tables et recettes depuis le disque |
Commandes /zpack (Gestion des glyphes & du pack)
Le groupe de commandes /zpack est la boîte à outils principale pour gérer le pack de ressources depuis le jeu. Tous les sous-commandes nécessitent cxp.admin.
| Commande | Ce qu'elle fait |
|---|---|
/zpack reloadpacks | Analyser tous les packs et ré-enregistrer les IDs de modèle sans reconstruire le ZIP |
/zpack zip | Construire le ZIP du pack de ressources et l'envoyer à tous les joueurs en ligne |
/zpack link | Afficher une URL cliquable vers le pack de ressources Java hébergé |
/zpack geyser | Construire le pack de ressources Bedrock + les mappages Geyser dans geyser_output/ — voir le guide Bedrock |
/zpack bedrock gui <name> … | Ajuster la position GUI pour Bedrock (décalage depuis la position Java) |
/zpack bedrock item <name> … | Ajuster finement la position/échelle/rotation d'objet 3D par emplacement sur Bedrock |
/zpack bedrock furniturescale … | Définir la taille du mobilier globalement ou par pièce sur Bedrock |
/zpack fonts | Lister chaque glyphe enregistré — affiche pack, ID, codepoint Unicode, et la balise <font_image:pack:id> à utiliser dans gui.yml |
/zpack font <pack> <id> | Prévisualiser un glyphe dans votre barre d'action pour vérifier sa taille et position (joueur seulement) |
/zpack glyph list [pack] | Lister tous les glyphes ; ajouter un nom de pack pour filtrer |
/zpack glyph <pack> <id> | Infos détaillées sur un glyphe (codepoint, Unicode, balise YAML) |
/zpack glyph search <query> | Rechercher des glyphes par nom — utile quand vous avez des dizaines d'images de police |
/zpack glyph export | Afficher des extraits YAML pour tous les glyphes (utiliser pour verrouiller les codepoints pour qu'ils ne bougent pas) |
/zpack glyph regenerate | Effacer le registre de glyphes et réattribuer tous les codepoints de zéro |
/zpack gui [pack] | Déboguer la configuration GUI pour un pack |
/zpack rank [pack] | Déboguer la configuration de rang / permission de glyphe |
/zpack block <pack> <key> | Afficher les infos d'enregistrement de bloc |
/zpack item <pack> <key> | Afficher les infos d'enregistrement d'objet (CMD, matériau, chemin de texture) |
/zpack armor <pack> <key> | Afficher les infos d'enregistrement d'armure |
Permissions
Tous les nœuds de permission et leurs valeurs par défaut.
| Nœud de permission | Défaut | Description |
|---|---|---|
cxp.reload | OP seulement | Exécuter /z reload pour recharger toutes les configurations et reconstruire le pack |
cxp.use | Tout le monde | Accès basique à la commande /z |
cxp.give | OP seulement | Donner des objets à d'autres joueurs via /z give |
cxp.gui | Tout le monde | Ouvrir /z gui (navigateur de catégories principal) |
cxp.items | Tout le monde | Ouvrir /zitems (navigateur d'objets de pack) |
cxp.repair | Tout le monde | Utiliser /zrepair pour réparer des objets personnalisés |
cxp.mastery | Tout le monde | Voir la progression de maîtrise avec /zmastery |
cxp.missions | Tout le monde | Voir le tableau de missions avec /zmissions |
cxp.prestige | Tout le monde | Accéder au prestige avec /zprestige |
cxp.reforge | Tout le monde | Ouvrir le GUI de reforgement avec /zreforge |
cxp.socket | Tout le monde | Voir les infos d'emplacement de gemme avec /zsocket info |
cxp.socket.add | OP seulement | Ajouter/supprimer des emplacements sur les objets |
cxp.craft | Tout le monde | Utiliser les tables d'artisanat personnalisées |
cxp.craft.admin | OP seulement | Gérer les recettes d'artisanat |
cxp.admin | OP seulement | Commandes admin (/z info, /zpack, /zworld) |
customizer.crops.admin | OP seulement | Commandes admin de culture |
customizer.crops.give | OP seulement | Donner des graines de culture via /zcrop give |
customizer.craftingtable.<name> | OP seulement | Accéder à une table d'artisanat spécifique (quand permission.required: true) |
gem_ranks.<rank_key> | Attribué par l'admin | Affiche le glyphe de rang pour cette clé de rang (ex. gem_ranks.bronze_amethyst_i) |
VIP, MVP, ELITE et le système de temps de recharge/réduction de réparation détectera automatiquement le nom du groupe.