1. Wiki
  2. /Génération du monde
  3. /Features et feature rules

Features et feature rules

Ajoute des minerais, des plantes, des arbres et des structures à la génération du monde de Minecraft Bedrock avec les features et les feature rules, avec un exemple de minerai de rubis et tous les types de features.

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

Pack de comportements
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

BP/features/ruby_ore_feature.json
{
  "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.
  • count est le nombre de blocs qu'un filon essaie de placer. Les diamants utilisent de petits filons, le charbon de gros.
  • replace_rules dit quel bloc va où. Le minerai remplace seulement les blocs listés dans may_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_feature va dans ruby_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 :

BP/feature_rules/ruby_ore_rule.json
{
  "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

  • identifier donne un nom à la règle. Comme pour les features, la partie « nom » doit correspondre au nom du fichier.
  • places_feature est 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 :

Dans conditions
"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 :

PasseIdéale pour
first_passCe sur quoi tout le reste doit s'appuyer.
before_underground_pass, underground_pass, after_underground_passLes minerais, les amas de terre ou de gravier, les décorations de grottes.
before_surface_pass, surface_pass, after_surface_passLes arbres, les fleurs, l'herbe, les rochers.
before_sky_pass, sky_pass, after_sky_passCe qui est en hauteur dans le ciel.
final_passLes dernières retouches, après tout le reste.
pregeneration_passUniquement 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ù.

ChampCe qu'il fait
iterationsLe nombre d'essais par chunk. Ici, 4 filons.
x, y, zOù tombe chaque essai. Un nombre fixe, une plage ou une expression Molang.
scatter_chanceChance 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_orderL'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 :

TypeRésultat
uniformToutes les valeurs ont la même chance.
triangleLa plupart des valeurs près du milieu de la plage, moins aux extrémités. Parfait pour les minerais.
gaussianRegroupées autour du milieu, comme une cloche.
inverse_gaussianRegroupées aux deux extrémités, peu au milieu.
fixed_gridDes pas réguliers, réglés avec step_size et grid_offset.
jittered_gridUne 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 :

Dans distribution
"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

  1. Active le pack dans un nouveau monde.
  2. Passe en mode spectateur avec /gamemode spectator et vole sous terre vers Y 0.
  3. Cherche la texture du rubis dans la pierre. Trop rare ? Augmente iterations ou count.

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.

TypeCe qu'il fait
minecraft:aggregate_featurePlace une liste de features au même endroit, sans ordre fixe.
minecraft:beards_and_shaversAjoute 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_featureCreuse des grottes de la Surface à travers ce chunk et ses voisins. Nécessite pregeneration_pass.
minecraft:conditional_listVérifie une liste de features dans l'ordre et place la première dont la condition est remplie.
minecraft:fossil_featureConstruit un squelette enterré avec des blocs d'os et un bloc de minerai de ton choix.
minecraft:geode_featureCrée une géode ronde avec des coques en couches et un remplissage intérieur que tu peux changer.
minecraft:growing_plant_featureFait 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_featureNe laisse une autre feature se placer que si le terrain autour de l'endroit réussit des tests de hauteur.
minecraft:horizontal_tree_decoration_featureColle 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_featurePlace un bloc composé de plusieurs parties, éventuellement tourné dans une direction au hasard.
minecraft:multiface_featurePlace des blocs fins qui s'accrochent aux sols, aux murs ou aux plafonds, comme le lichen lumineux.
minecraft:multipart_block_column_featureEmpile 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_featureCreuse des grottes dans le Nether. Nécessite pregeneration_pass.
minecraft:ore_featurePlace un filon de blocs qui ne remplace que les blocs que tu autorises. Utilisé pour tous les minerais.
minecraft:partially_exposed_blob_featurePlace un amas d'un bloc presque entièrement enterré, avec un seul côté visible.
minecraft:rect_layoutRemplit la surface d'un chunk avec une grille de zones, chacune contenant une feature, avec un peu d'espace laissé vide.
minecraft:scan_surfaceParcourt chaque colonne de la surface d'un chunk et essaie une feature sur chacune.
minecraft:scatter_featurePlace une autre feature plusieurs fois autour d'un endroit, avec les mêmes plages x, y, z qu'une feature rule.
minecraft:sculk_patch_featureRépand une plaque de sculk. Pas encore documenté par le jeu.
minecraft:search_featureCherche dans une zone, couche par couche, un endroit où une autre feature peut tenir.
minecraft:sequence_featurePlace 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_featurePlace 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_featureDéplace l'endroit sur le sol, le plafond ou le mur le plus proche avant de placer une autre feature.
minecraft:structure_template_featurePlace un .mcstructure enregistré dans le dossier structures d'un pack de comportements.
minecraft:surface_relative_threshold_featureNe place une autre feature que si l'endroit est assez loin sous la surface.
minecraft:tree_featureConstruit un arbre avec un tronc, une cime et des racines facultatives, avec plein d'options de forme.
minecraft:underwater_cave_carver_featureCreuse des grottes sous le niveau de la mer. Nécessite pregeneration_pass.
minecraft:vegetation_patch_featureRecouvre une zone de sol avec un bloc, puis y fait pousser des plantes, comme les tapis de mousse.
minecraft:weighted_random_featureChoisit une feature au hasard dans une liste. Plus le poids est grand, plus elle est choisie souvent.

Et ensuite

We use cookies to improve your experience and analyse site traffic. Learn more