Partager via


Fonctions des tables de butin et d'échanges

Les tables de butin et d'échange partagent un ensemble de fonctions similaire. Bien que la plupart des fonctions sont valables pour les deux, certaines ne fonctionnent qu'avec un type spécifique. Il y a des limitations aux tables de butin/d'échanges en général: par exemple, il n'est pas possible d'ajouter can_place_on ou can_destroy sur un objet au travers des tables de butin ou d'échanges. Consultez les éléments ci-dessous pour prendre connaissance des différentes fonctions disponibles et d'un exemple sur la façon dont elles peuvent être utilisées.

Dans ce tutoriel, vous apprendrez les éléments suivants:

  • Plusieurs fonctions des tables de butin et d'échanges et la façon elles peuvent modifier un objet.

Conditions requises

Nous vous recommandons de compléter les étapes suivantes avant de commencer ce tutoriel.

Enchantements

Ces différentes fonctions d'enchantement vous permettent de définir des paramètres d'enchantement uniques.

enchant_book_for_trading (uniquement pour table d'échanges)

Cette fonction enchante un livre en utilisant l'algorithme d'enchantement des objets vendus par les villageois. Quatre paramètres sont nécessaires: base_cost, base_random_cost, per_level_random_cost et per_level_cost.

                {
                    "item": "minecraft:book",
                    "quantity": 1,
                    "functions": [
                        {
                            "function": "enchant_book_for_trading",
                            "base_cost": 2,
                            "base_random_cost": 5,
                            "per_level_random_cost": 10,
                            "per_level_cost": 3
                        }
                    ]
                }

À ce stade, la définition de ces paramètres n'affectera pas l'enchantement reçu. Actuellement, les valeurs par défaut ci-dessus sont codées en dur. À l'avenir, vous pourrez ajuster ces valeurs pour permettre d'affiner les enchantements et leurs niveaux résultant de cette fonction.

enchant_random_gear

Cette fonction enchante un objet à l'aide du même algorithme utilisé lors de l'enchantement de l'équipement avec lequel les créatures apparaissent. Un modificateur chance est nécessaire pour manipuler l'algorithme. Notez qu'un modificateur chance de 1,0 ne signifie pas qu'il y a 100% de chances que l'équipement soit enchanté. Au contraire, la probabilité est modifiée en fonction de la difficulté. En niveau de difficulté Paisible et Facile, la probabilité sera toujours de 0% quoi qu'il arrive. En niveau de difficulté Difficile, une chance de 1,0 sera de 100%, mais la probabilité est d'environ de 2/3 de celle en niveau difficulté Normal.

                {
                    "type": "item",
                    "name": "minecraft:chainmail_boots",
                    "weight": 1,
                    "functions": [
                      {
                        "function": "enchant_random_gear",
                        "chance": 0.25
                      }
                    ]
                }

Le fait d'augmenter la chance à un nombre supérieur à 1,0 peut aider à contourner la diminution des chances en niveau de difficulté Normal. Par exemple, paramétrer chance sur 2.0 enchantera toujours l'objet aussi bien en niveau de difficulté Normal que Difficile.

enchant_randomly

Génère un enchantement aléatoire compatible avec l'objet. Est compatible avec le boolean trésor optionnel (vrai/faux) pour permettre l'activation et la désactivation des enchantements de trésor. Les enchantements de trésor sont ceux qui ne peuvent pas être obtenus via la table d'enchantements, notamment les enchantements Semelles givrantes, Raccommodage, Agilité des âmes, Malédiction du lien éternel et Malédiction de disparition.

                {
                    "type": "item",
                    "name": "minecraft:leather_helmet",
                    "weight": 1,
                    "functions": [
                      {
                        "function": "enchant_randomly",
                        "treasure": true
                      }
                    ]
                }

enchant_with_levels

Applique un enchantement comme s'il provenait d'une table d'enchantement, à l'aide d'un niveau d'XP minimum et maximum défini via le paramètre levels. Le booléen treasure (vrai/faux) permettra d'utiliser des enchantements de trésor uniquement. Les enchantements de trésor sont ceux qui ne peuvent pas être obtenus via la table d'enchantements, notamment les enchantements Semelles givrantes, Raccommodage, Agilité des âmes, Malédiction du lien éternel et Malédiction de disparition.

                {
                    "type": "item",
                    "name": "minecraft:diamond_sword",
                    "weight": 1,
                    "functions": [
                      {
                        "function": "enchant_with_levels",
                        "treasure": true,
                        "levels": {
                          "min": 20,
                          "max": 39
                        }
                      }
                    ]
                }

specific_enchants

Cette fonction vous permet de définir une liste d'enchantements spécifiques sur un objet. Il vous permet également d'appliquer des enchantements à des objets qui ne pourraient pas en recevoir normalement dans le jeu.

                {
                    "type": "item",
                    "name": "minecraft:stick",
                    "weight": 1,
                    "functions": [
                        {
                          "function": "specific_enchants",
                          "enchants": [
                             "knockback",
                             "fire_aspect"
                          ]
                       }
                    ]
                 }

Vous pouvez également définir les enchantements en tant qu'objets pour définir spécifiquement un niveau d'enchantement. Les niveaux d'enchantement maximum sont codés en dur et ne peuvent pas être écrasés.

                {
                    "type": "item",
                    "name": "minecraft:stick",
                    "weight": 1,
                    "functions": [
                        {
                          "function": "specific_enchants",
                          "enchants": [
                             {
                                "id": "knockback",
                                "level": 1
                             },
                             {
                                "id": "unbreaking",
                                "level": 3
                             }
                          ]
                       }
                    ]
                }

Modification d'objets

L'ensemble de fonctions suivant vous permet de modifier les résultats de différentes manières, telles que la définition du nombre d'éléments renvoyés, la définition de la valeur de données ou même la définition du nom et de l'histoire d'un objet.

looting_enchant (uniquement pour la table de butin)

Cette fonction vous permet de modifier le nombre d'objets retournés lorsqu'une entité est tuée par un objet avec l'enchantement de butin. Pour cette raison, cela ne fonctionne qu'avec les tables de butin et seulement si une table de butin est appelée par la mort d'une entité.

                {
                    "type": "item",
                    "name": "minecraft:stick",
                    "weight": 1,
                    "functions": [
                        {
                            "function": "looting_enchant",
                            "count": {
                                "min": 0,
                                "max": 1
                            }
                        }
                    ]
                }

random_block_state

Cette fonction vous permet de rendre aléatoire l'état du bloc de l'objet résultant. Par exemple, l'exemple de code suivant peut lâcher de la pierre (0), du granit (1), du granit poli (2), de la diorite (3), de la diorite polie (4) ou de l'andésite (5).

                {
                    "type": "item",
                    "name": "minecraft:stone",
                    "weight": 1,
                    "functions": [
                        {
                          "function": "random_block_state",
                          "block_state": "stone_type",
                          "values": {
                            "min": 0,
                            "max": 5
                          }
                        }
                      ]
                }

random_aux_value

Cette fonction est semblable à random_block_state et vous permet de choisir une valeur auxiliaire aléatoire pour un objet. L'exemple suivant donnera un colorant de couleur aléatoire.

                {
                    "type": "item",
                    "name": "minecraft:dye",
                    "weight": 1,
                    "functions": [
                        {
                          "function": "random_aux_value",
                          "values": {
                            "min": 0,
                            "max": 15
                          }
                        }
                    ]
                }

set_actor_id

Cette fonction ne fonctionne qu'avec un œuf d'apparition et est utilisée pour définir l'ID d'entité de ce dernier.

                {
                    "type": "item",
                    "name": "minecraft:stone",
                    "weight": 1,
                    "functions": [
                        {
                            "function": "set_actor_id",
                            "id": "compass:cool_entity"
                        }
                    ]
                }

Vous pouvez également hériter de l'ID d'entité de l'entité associée à cette table de butin (c'est-à-dire faire qu'un lapin lâche un œuf d'apparition lapin) en omettant la valeur id.

                {
                    "type": "item",
                    "name": "minecraft:spawn_egg",
                    "weight": 1,
                    "functions": [
                        {
                            "function": "set_actor_id"
                        }
                    ]
                }

Veuillez noter que si vous utilisez la fonction set_actor_id sur la table de butin d'un coffre et que vous omettez la valeur id, l'œuf d'apparition prendra l'identité de ce qui ouvrira le coffre en premier (le joueur). Un œuf d’apparition de joueur engendrera un «joueur» qui se contentera de rester debout et de générer des erreurs Molang (puisqu’il essaie d’utiliser le fichier de comportement du joueur ainsi que les contrôleurs du joueur). Si vous fracturez un coffre contenant une table de butin qui utilise un identifiant hérité de la fonction set_actor_id, un œuf d'apparition par défaut sera généré et ne donnera naissance à rien du tout.

set_banner_details

Cette fonction n'est activée que sur les bannières et n'est compatible qu'avec un type de bannière 1. Un type de bannière 1 se traduit par une bannière d'illageois.

                {
                    "type": "item",
                    "name": "minecraft:banner",
                    "weight": 1,
                    "functions": [
                        {
                            "function": "set_banner_details",
                            "type": 1
                        }
                    ]
                }

set_book_contents

Cette fonction vous permet de définir le contenu d'un livre.

                {
                    "type": "item",
                    "name": "minecraft:written_book",
                    "functions": [
                        {
                            "function": "set_book_contents",
                            "author": "Steve",
                            "title": "Creator Woes",
                            "pages": [
                                "Once upon a time there were some marketplace partners that had to edit items using NBT. And it made them sad.",
                                "Then the Bedrock team added the ability to customize items from JSON and everyone rejoiced."
                            ]
                        }
                    ]
                }

Vous pouvez aussi utiliser la fonction rawtext pour localiser le contenu du livre. Lors de l'utilisation de la fonction rawtext, n'oubliez pas de ne jamais utiliser (\) de caractères spéciaux tels que " et \.

                {
                    "type": "item",
                    "name": "minecraft:written_book",
                    "functions": [
                        {
                            "function": "set_book_contents",
                            "author": "Steve",
                            "title": "Creator Woes",
                            "pages": [
                                "{\"rawtext\":[ {\"translate\":\"custom.book.page.1\"}]}",
                                "{\"rawtext\":[ {\"translate\":\"custom.book.page.2\"}]}"
                            ]
                        }
                    ]
                }

Sachez que vous ne pouvez utiliser la fonction rawtext que sur le contenu de livres (pages) au moment d'écrire. La fonction rawtext ne peut pas être utilisée pour les étiquettes author ou title.

set_count

Cette fonction définit la quantité d'articles retournés en paramétrant la valeur count. Il peut s'agir d'un nombre exact comme dans cet exemple:

                {
                    "type": "item",
                    "name": "minecraft:stone",
                    "weight": 1,
                    "functions": [
                        {
                          "function": "set_count",
                          "count": 5
                        }
                    ]
                }

Ou cela peut être dans une plage min/max:

                {
                    "type": "item",
                    "name": "minecraft:stone",
                    "weight": 1,
                    "functions": [
                        {
                          "function": "set_count",
                          "count": {
                            "min": 1,
                            "max": 6
                          }
                        }
                    ]
                }

set_damage

Cette fonction définit le pourcentage de durabilité restant pour les objets qui dispose d'une durabilité en définissant la valeur damage. 1,0 correspond à 100% de la durabilité restante (objet intact) tandis que 0,0 signifie qu'il ne reste aucune durabilité.

Vous pouvez soit la définir sur une durabilité exacte, comme dans l'exemple suivant où nous définissons une durabilité restante de 50% pour l'objet.

                {
                    "type": "item",
                    "name": "minecraft:iron_leggings",
                    "weight": 1,
                    "functions": [
                      {
                        "function": "set_damage",
                        "damage": 0.5
                      }
                    ]
                }

Ou vous pouvez définir des valeurs minimale et maximale parmi lesquelles le jeu choisira au hasard. L'exemple suivant définit une durabilité comprise entre 30 et 90% restants.

                {
                    "type": "item",
                    "name": "minecraft:iron_leggings",
                    "weight": 1,
                    "functions": [
                      {
                        "function": "set_damage",
                        "damage": {
                          "min": 0.3,
                          "max": 0.9
                        }
                      }
                    ]
                }

set_data

Cette fonction définit la valeur des données d'un bloc ou d'un objet selon un identifiant exact. L'exemple suivant générera un bloc de diorite polie.

                {
                    "type": "item",
                    "name": "minecraft:stone",
                    "functions": [
                        {
                            "function": "set_data",
                            "data": 4
                        }
                    ]
                }

set_data_from_color_index

Cette fonction fait hériter de la valeur de données de l'objet résultant à partir de l'index de couleur de l'entité associée. Un exemple dans le jeu pourrait être un mouton rose lâchant de la laine rose à sa mort. Si l'entité associée n'a pas d'index de couleur défini (ou si il est utilisé dans la table de butin d'un coffre), cela donnera toujours une valeur de données de 0.

                {
                    "type": "item",
                    "name": "minecraft:wool",
                    "weight": 1,
                    "functions": [
                        {
                            "function": "set_data_from_color_index"
                        }
                    ]
                }

set_lore

Cette fonction vous permet de définir l'histoire d'un objet. Chaque ligne de histoire de l'objet représente une seule ligne de texte. rawtext n'est actuellement pas compatible avec cette fonction.

                {
                    "type": "item",
                    "name": "minecraft:stick",
                    "weight": 1,
                    "functions": [
                        {
                            "function": "set_lore",
                            "lore": [
                                "Big Stick has been handed down",
                                "for generations from King to Prince",
                                "until it went missing four score ago"
                            ]
                       }
                    ]
                 }

set_name

Cette fonction vous permet de définir le nom d'un objet. rawtext n'est actuellement pas compatible avec cette fonction.

                {
                    "type": "item",
                    "name": "minecraft:stick",
                    "weight": 1,
                    "functions": [
                        {
                            "function": "set_name",
                            "name": "Big Stick"
                        }
                    ]
                 }

Divers

Cette section contient toutes les fonctions qui ne peuvent pas être classées autre part.

fill_container

Cette fonction vous permet de définir la table de butin d'un coffre. Lorsque l'objet est généré et que le joueur le place, il sera rempli du contenu défini à l'intérieur de la table de butin référencée.

Les tables de butin pour les coffres sont générées au moment de l'ouverture ou de la fracture du coffre. Considérez cela comme une boîte de Schrödinger. Le contenu du coffre n'est fixé qu'au moment où vous regardez à l'intérieur.

                  {
                      "type": "item",
                      "name": "minecraft:chest",
                      "functions": [
                          {
                              "function": "fill_container",
                              "loot_table": "loot_tables/chests/simple_dungeon.json"
                          }
                      ]
                  }

Il est conseillé de toujours utiliser la fonction set_name pour donner un nom au coffre lors de l'utilisation de la fonction fill_container. Si vous ne le faites pas, le coffre résultant sera le même qu'un coffre vide normal dans l'inventaire du joueur.

exploration_map

Cette fonction transforme une carte normale en une carte au trésor qui marque l'emplacement d'un trésor caché. La valeur destination définit le type de carte au trésor reçu.

                  {
                      "type": "item",
                      "name": "minecraft:map",
                      "weight": 1,
                      "functions": [
                          {
                              "function": "exploration_map",
                              "destination": "buriedtreasure"
                          }
                      ]
                  }

Vous pouvez actuellement choisir parmi les destinations suivantes:

Destination
buriedtreasure
endcity
fortress
mansion
mineshaft
monument
pillageroutpost
ruins
shipwreck
stronghold
temple
village

furnace_smelt (uniquement pour les tables de butin)

Si l'objet à retourner dispose une recette de fabrication de métal fondu et que la table de butin est activée par une entité tuée par le feu (Aura de Feu, Briquet à silex, lave, etc.), le résultat sera la version fondue de l'objet. En raison de ces conditions, cette fonction ne fonctionne pas dans les échanges avec les villageois ou avec les coffres. Cette fonction ne peut être utilisée qu'en association avec le comportement minecraft:loot.

L'exemple suivant lâchera un bloc de pierre si l'entité est tuée par le feu ou par des pierres.

                {
                    "type": "item",
                    "name": "minecraft:cobblestone",
                    "weight": 1,
                    "functions": [
                        {
                            "function": "furnace_smelt"
                        }
                    ]
                }