Tout ce qui décore le paysage est une feature : les filons de minerai, les arbres, les fleurs, l'herbe, les rochers, les sources, le corail. Si ce n'est ni le terrain de base ni une créature, c'est sans doute une feature.
Pour faire apparaître une feature dans le monde, il te faut deux fichiers :
- Une feature dit quoi placer : un filon de minerai, un arbre, un simple bloc.
- Une feature rule (règle de feature) dit où et à quelle fréquence : dans quels biomes, combien de fois par chunk, à quelle hauteur.
Dans ce guide, tu vas faire apparaître du minerai de rubis sous terre dans tous les biomes de la Surface.
Les fichiers
BP/
blocks/
ruby_ore.json
features/
ruby_ore_feature.json
feature_rules/
ruby_ore_rule.jsonÉtape 1 : le bloc de minerai
Il te faut d'abord un bloc à placer. Crée un bloc personnalisé normal appelé wiki:ruby_ore, avec une texture et une table de butin. Si tu n'as encore jamais créé de bloc, suis Ton premier bloc personnalisé.
Étape 2 : la feature
{
"format_version": "1.13.0",
"minecraft:ore_feature": {
"description": {
"identifier": "wiki:ruby_ore_feature"
},
"count": 6,
"replace_rules": [
{
"places_block": "wiki:ruby_ore",
"may_replace": [
"minecraft:stone",
"minecraft:granite",
"minecraft:diorite",
"minecraft:andesite"
]
}
]
}
}- La clé racine, ici
minecraft:ore_feature, est le type de feature. Chaque fichier en a exactement un. Le tableau en bas de cette page les liste tous. countest le nombre de blocs qu'un filon essaie de placer. Les diamants utilisent de petits filons, le charbon de gros.replace_rulesdit quel bloc va où. Le minerai remplace seulement les blocs listés dansmay_replace, pour qu'il ne flotte jamais dans les grottes et ne ronge pas la terre.
Une version en ardoise des abîmes
Ajoute une deuxième entrée à replace_rules avec "places_block": "wiki:deepslate_ruby_ore" et "may_replace": ["minecraft:deepslate"]. Un même filon a alors le bon aspect dans les deux couches, exactement comme les minerais vanilla.
Règles de nommage
- Une feature par fichier.
- Le nom du fichier doit correspondre à la partie « nom » de l'identifiant.
wiki:ruby_ore_featureva dansruby_ore_feature.json. L'espace de noms ne compte pas. - Si deux packs utilisent exactement le même identifiant, le pack placé plus haut dans la liste l'emporte. C'est comme ça que tu peux remplacer une feature vanilla.
Étape 3 : la feature rule
Une feature ne fait rien tant qu'une feature rule ne l'attache pas à des biomes :
{
"format_version": "1.13.0",
"minecraft:feature_rules": {
"description": {
"identifier": "wiki:ruby_ore_rule",
"places_feature": "wiki:ruby_ore_feature"
},
"conditions": {
"placement_pass": "underground_pass",
"minecraft:biome_filter": [
{
"test": "has_biome_tag",
"operator": "==",
"value": "overworld"
}
]
},
"distribution": {
"iterations": 4,
"coordinate_eval_order": "zyx",
"x": {
"distribution": "uniform",
"extent": [0, 16]
},
"y": {
"distribution": "triangle",
"extent": [-48, 16]
},
"z": {
"distribution": "uniform",
"extent": [0, 16]
}
}
}
}La règle a trois parties.
description
identifierdonne un nom à la règle. Comme pour les features, la partie « nom » doit correspondre au nom du fichier.places_featureest la feature que cette règle place. Une règle contrôle une seule feature.
conditions
minecraft:biome_filter choisit les biomes. C'est une liste de tests de filtre, et celui que tu utiliseras presque à chaque fois est has_biome_tag. Chaque biome passe le filtre : ceux qui le réussissent reçoivent la feature.
Tu peux combiner les tests avec all_of et any_of. Celui-ci choisit les biomes chauds de la Surface qui ne sont pas des océans :
"minecraft:biome_filter": [
{ "test": "has_biome_tag", "operator": "==", "value": "overworld" },
{
"any_of": [
{ "test": "has_biome_tag", "operator": "==", "value": "desert" },
{ "test": "has_biome_tag", "operator": "==", "value": "mesa" }
]
},
{ "test": "has_biome_tag", "operator": "!=", "value": "ocean" }
]Pour mettre du minerai de rubis seulement dans le Bosquet de rubis, teste son propre tag : "value": "ruby_grove".
placement_pass dit quand la feature est placée par rapport aux autres. Les passes s'exécutent dans cet ordre :
| Passe | Idéale pour |
|---|---|
first_pass | Ce sur quoi tout le reste doit s'appuyer. |
before_underground_pass, underground_pass, after_underground_pass | Les minerais, les amas de terre ou de gravier, les décorations de grottes. |
before_surface_pass, surface_pass, after_surface_pass | Les arbres, les fleurs, l'herbe, les rochers. |
before_sky_pass, sky_pass, after_sky_pass | Ce qui est en hauteur dans le ciel. |
final_pass | Les dernières retouches, après tout le reste. |
pregeneration_pass | Uniquement pour creuser les grottes. |
Les features d'une même passe n'ont pas d'ordre fixe entre elles.
distribution
Cette partie décide combien de copies essaient d'apparaître dans chaque chunk, et où.
| Champ | Ce qu'il fait |
|---|---|
iterations | Le nombre d'essais par chunk. Ici, 4 filons. |
x, y, z | Où tombe chaque essai. Un nombre fixe, une plage ou une expression Molang. |
scatter_chance | Chance facultative pour tout le chunk, comme { "numerator": 1, "denominator": 4 } pour 1 chunk sur 4. En cas d'échec, aucun essai n'a lieu. |
coordinate_eval_order | L'ordre de calcul des coordonnées, comme "xzy" (par défaut) ou "zyx". Ça compte quand une coordonnée en utilise une autre. |
Pour une feature rule, x et z se comptent depuis le coin du chunk, donc [0, 16] couvre tout le chunk. y est la hauteur dans le monde.
Chaque plage a un type de distribution qui façonne l'endroit où tombent les valeurs :
| Type | Résultat |
|---|---|
uniform | Toutes les valeurs ont la même chance. |
triangle | La plupart des valeurs près du milieu de la plage, moins aux extrémités. Parfait pour les minerais. |
gaussian | Regroupées autour du milieu, comme une cloche. |
inverse_gaussian | Regroupées aux deux extrémités, peu au milieu. |
fixed_grid | Des pas réguliers, réglés avec step_size et grid_offset. |
jittered_grid | Une grille dont chaque point est un peu décalé au hasard. |
Pour ce qui pousse au sol, comme les plantes, règle y avec du Molang pour que la feature tombe sur la surface :
"y": "query.heightmap(variable.worldx, variable.worldz)"Le minerai seulement dans les nouveaux chunks
Les features ne sont générées qu'une fois, quand un chunk est créé. Explore loin ou crée un nouveau monde pour voir ton minerai. Les zones déjà explorées ne le reçoivent jamais.
Tester
- Active le pack dans un nouveau monde.
- Passe en mode spectateur avec
/gamemode spectatoret vole sous terre vers Y 0. - Cherche la texture du rubis dans la pierre. Trop rare ? Augmente
iterationsoucount.
Si rien n'apparaît, ouvre le journal de contenu. Les causes habituelles sont un nom de fichier qui ne correspond pas à l'identifiant, un mauvais nom dans places_feature, ou une faute de frappe dans le nom du bloc de places_block.
Tous les types de features
Chaque fichier de feature utilise exactement l'un de ces types comme clé racine. Certains placent des blocs, d'autres ne font que choisir entre d'autres features, les déplacer ou les répéter. La plupart des décorations vanilla en enchaînent plusieurs : par exemple, une feature de dispersion qui lance une feature de recherche, qui lance un arbre.
| Type | Ce qu'il fait |
|---|---|
minecraft:aggregate_feature | Place une liste de features au même endroit, sans ordre fixe. |
minecraft:beards_and_shavers | Ajoute ou retire du terrain pour faire un endroit plat et dégagé pour une autre feature, en général une structure. |
minecraft:cave_carver_feature | Creuse des grottes de la Surface à travers ce chunk et ses voisins. Nécessite pregeneration_pass. |
minecraft:conditional_list | Vérifie une liste de features dans l'ordre et place la première dont la condition est remplie. |
minecraft:fossil_feature | Construit un squelette enterré avec des blocs d'os et un bloc de minerai de ton choix. |
minecraft:geode_feature | Crée une géode ronde avec des coques en couches et un remplissage intérieur que tu peux changer. |
minecraft:growing_plant_feature | Fait pousser une colonne de plante depuis le sol vers le haut ou depuis le plafond vers le bas, avec un corps et une pointe, comme les lianes des grottes. |
minecraft:height_difference_filter_feature | Ne laisse une autre feature se placer que si le terrain autour de l'endroit réussit des tests de hauteur. |
minecraft:horizontal_tree_decoration_feature | Colle un bloc sur le côté de quelque chose, tourné dans une direction au hasard, comme des champignons en étagère sur une bûche. |
minecraft:multi_block_feature | Place un bloc composé de plusieurs parties, éventuellement tourné dans une direction au hasard. |
minecraft:multiface_feature | Place des blocs fins qui s'accrochent aux sols, aux murs ou aux plafonds, comme le lichen lumineux. |
minecraft:multipart_block_column_feature | Empile une colonne de jusqu'à quatre sortes de blocs (base, milieu, partie qui s'affine et pointe), dans n'importe quelle direction. |
minecraft:nether_cave_carver_feature | Creuse des grottes dans le Nether. Nécessite pregeneration_pass. |
minecraft:ore_feature | Place un filon de blocs qui ne remplace que les blocs que tu autorises. Utilisé pour tous les minerais. |
minecraft:partially_exposed_blob_feature | Place un amas d'un bloc presque entièrement enterré, avec un seul côté visible. |
minecraft:rect_layout | Remplit la surface d'un chunk avec une grille de zones, chacune contenant une feature, avec un peu d'espace laissé vide. |
minecraft:scan_surface | Parcourt chaque colonne de la surface d'un chunk et essaie une feature sur chacune. |
minecraft:scatter_feature | Place une autre feature plusieurs fois autour d'un endroit, avec les mêmes plages x, y, z qu'une feature rule. |
minecraft:sculk_patch_feature | Répand une plaque de sculk. Pas encore documenté par le jeu. |
minecraft:search_feature | Cherche dans une zone, couche par couche, un endroit où une autre feature peut tenir. |
minecraft:sequence_feature | Place des features l'une après l'autre, chacune commençant là où la précédente s'est arrêtée. |
minecraft:single_block_feature | Place un bloc, ou un bloc tiré au hasard dans une liste pondérée, avec des règles sur ce sur quoi il peut reposer. |
minecraft:snap_to_surface_feature | Déplace l'endroit sur le sol, le plafond ou le mur le plus proche avant de placer une autre feature. |
minecraft:structure_template_feature | Place un .mcstructure enregistré dans le dossier structures d'un pack de comportements. |
minecraft:surface_relative_threshold_feature | Ne place une autre feature que si l'endroit est assez loin sous la surface. |
minecraft:tree_feature | Construit un arbre avec un tronc, une cime et des racines facultatives, avec plein d'options de forme. |
minecraft:underwater_cave_carver_feature | Creuse des grottes sous le niveau de la mer. Nécessite pregeneration_pass. |
minecraft:vegetation_patch_feature | Recouvre une zone de sol avec un bloc, puis y fait pousser des plantes, comme les tapis de mousse. |
minecraft:weighted_random_feature | Choisit une feature au hasard dans une liste. Plus le poids est grand, plus elle est choisie souvent. |
Et ensuite
- Crée un foyer pour ton minerai : Le fichier de biome.
- Cherche les tags de biome à utiliser dans tes filtres : minecraft:tags.