Aller au contenu principal

Qu'est-ce qu'un fichier de tresor ?

Les fichiers de tresor determinent les tables de butin pour les coffres de BetterStructures. Ils sont generalement assignes aux generateurs mais peuvent aussi etre definis au niveau d'une configuration de construction individuelle.

Ces tables de butin sont assez puissantes, mais necessitent la connaissance de quelques concepts statistiques de base.

Lisez ces concepts ici, le reste de la page suppose que vous les comprenez !

Probabilite ponderee

BetterStructures et EliteMobs (un autre plugin du meme auteur) utilisent tous deux le concept de probabilite ponderee dans leurs systemes de butin. Cela resout un probleme simple : comment definir la chance de choisir un objet dans une liste potentiellement infinie ?

La probabilite ponderee resout ce probleme en donnant un poids a chaque objet. Si vous avez 100 objets et que chacun a un poids de 1, ils ont tous une chance egale - 1% - d'etre choisis. Si vous ajoutez un objet supplementaire, portant le total a 101 objets, et que vous donnez a ce dernier objet un poids de 1, tous les objets ont toujours a peu pres la meme chance - ~0,99% - d'etre choisis. Si vous donnez au dernier objet un poids de 2, la chance qu'il soit choisi augmente - le nouveau poids total est 102, le dernier element a un poids de 2 et 100/102 = ~0,98% donc 0,98%+0,98% = 1,96% de chance d'etre choisi. Si vous donnez au dernier objet un poids de 100, le nouveau poids est 200, et puisque la moitie de ce poids est votre nouvel objet, votre nouvel objet a 50% de chance d'etre choisi.

Comme vous pouvez le voir, c'est ideal pour les listes de centaines d'elements a randomiser.

Distribution gaussienne

Une distribution gaussienne est une fonction mathematique en forme de cloche.

Vous vous demandez peut-etre en quoi cela est pertinent pour le systeme de butin. BetterStructures doit decider, lors du remplissage des coffres, combien de butin y apparait. La quantite doit etre coherente autour d'un nombre specifique, mais idealement pas trop previsible pour que l'ouverture d'un coffre reste excitante.

Pour obtenir cet effet semi-aleatoire, la distribution gaussienne est utilisee pour randomiser combien d'objets sont choisis. Une fois cette quantite choisie, la probabilite ponderee choisit un element de la table de rarete au hasard en tenant compte des poids.

Alors comment fonctionne la distribution gaussienne ?

Heureusement, vous n'avez pas a vous soucier des mathematiques et pouvez vous concentrer sur les deux parametres qui la modifient : la moyenne et l'ecart-type.

Moyenne

Pour faire simple, mean definit le centre de la courbe gaussienne, ce qui signifie qu'elle definit la quantite la plus probable d'objets qui apparaitront dans un coffre. En gros, si vous voulez que vos coffres aient generalement 5 objets, definissez votre moyenne a 5.

Ecart-type

Imaginez que le nombre moyen d'objets dans un coffre est 5. L'standard deviation aide a determiner combien ce nombre peut varier d'un coffre a l'autre.

Petit Standard Deviation (ex. 1) : La plupart des coffres auront des objets tres proches de la moyenne, comme 4, 5 ou 6 objets. C'est une experience plus previsible. Par exemple, si un coffre a un ecart-type de 1, vous pouvez vous attendre a ce que presque tous les coffres aient entre 4 et 6 objets.

Moyen Standard Deviation (ex. 2) : Ici, il y a plus de variete. Les coffres pourraient avoir 3 a 7 objets. Bien que 5 objets soient encore courants, il n'est pas inhabituel de trouver des coffres avec un peu plus ou moins. Donc, avec un ecart-type de 2, vous pourriez occasionnellement trouver un coffre avec seulement 3 objets, ou si vous avez de la chance, un avec 7 objets.

Grand Standard Deviation (ex. 3 ou plus) : Les choses deviennent vraiment surprenantes ! Les coffres pourraient avoir aussi peu que 2 objets ou autant que 8 ou plus. Cela signifie que vous pourriez trouver un coffre avec juste quelques objets, mais il y a aussi une chance de trouver un coffre charge de bonnes choses. Par exemple, avec un ecart-type de 3, un coffre pourrait avoir n'importe quoi entre 2 et 8 objets, faisant de chaque ouverture de coffre un pari excitant.

La moyenne par defaut est 4 et l'ecart-type par defaut est 3.


Details d'implementation

Comprendre comment le systeme de tresor fonctionne en interne peut vous aider a le configurer plus efficacement :

Nombre minimum d'objets garanti

Le systeme garantit qu'au moins un objet apparaitra toujours dans un coffre, meme si le calcul de la distribution gaussienne donnerait zero objets. Cela empeche les joueurs de trouver des coffres completement vides.

Placement dans des emplacements aleatoires

Les objets sont places dans des emplacements aleatoires du coffre plutot que remplis sequentiellement depuis le premier emplacement. Cela cree une distribution de butin plus naturelle qui semble moins artificielle.

Gestion des erreurs

Si un materiau d'objet n'existe pas dans votre version de Minecraft (par exemple, en utilisant une ancienne configuration sur une version plus recente ou les objets ont ete renommes), cet objet sera silencieusement ignore plutot que de causer des erreurs. Les enchantements invalides afficheront un avertissement une fois dans la console, puis seront supprimes lors des occurrences suivantes pour eviter le spam de logs.


Format special

Les fichiers de tresor ont un format special qui ressemble a ceci :

isEnabled: true
mean: 4.0
standardDeviation: 3.0
vanillaTreasure: BURIED_TREASURE
items:
common:
weight: 60
items:
- amount: 1-1
material: STONE_PICKAXE
procedurallyGenerateEnchantments: true
weight: 1.0
- amount: 1-1
material: STONE_SHOVEL
procedurallyGenerateEnchantments: true
weight: 1.0
rare:
weight: 30
items:
- amount: 1-1
material: ANVIL
weight: 6.0
- amount: 1-6
material: BEETROOT
weight: 6.0
epic:
weight: 10
items:
- amount: 2-10
material: DIAMOND
weight: 1.0
- amount: 1-1
material: DIAMOND_AXE
weight: 6.0
procedurallyGeneratedItemSettings:
golden_sword:
bane_of_arthropods:
minlevel: 1
maxlevel: 5
chance: 0.2
looting:
minlevel: 1
maxlevel: 3
chance: 0.2

Note : ceci est une version tres simplifiee. La configuration de tresor complete par defaut, une fois exportee en YAML, fait environ 2599 lignes car elle couvre des tables de butin etendues et chaque combinaison d'enchantement possible.

isEnabled

CleValeursPar defaut
isEnabledBooleantrue

mean

CleValeursPar defaut
meanDouble4

Definit la mean. Lisez les details a ce sujet ici.


standardDeviation

CleValeursPar defaut
standardDeviationDouble3

Definit le standardDeviation. Lisez les details a ce sujet ici.


vanillaTreasure

CleValeursPar defaut
vanillaTreasureStringaucun

Definit une table de butin vanilla Minecraft optionnelle a utiliser en plus du butin personnalise. Cela utilise les valeurs de l'enum LootTables de Bukkit (par ex., BURIED_TREASURE, SHIPWRECK_TREASURE, SIMPLE_DUNGEON). Quand defini, la table de butin vanilla sera lancee en plus des objets personnalises definis dans la section items. Si non defini, seul le butin personnalise sera utilise.


items

C'est ici que cela devient un peu delicat, car de nombreuses options peuvent etre definies par les administrateurs. Zoomons sur l'exemple de fichier de configuration precedent.

items:
common:
weight: 60
items:
- amount: 1-1
material: STONE_PICKAXE
procedurallyGenerateEnchantments: true
weight: 1.0
- amount: 1-1
material: STONE_SHOVEL
procedurallyGenerateEnchantments: true
weight: 1.0
rare:
weight: 30
items:
- amount: 1-1
material: ANVIL
weight: 6.0
- amount: 1-6
material: BEETROOT
weight: 6.0

Ici, vous pouvez voir que sous la cle de configuration items nous avons une carte avec common et rare. Ce sont des raretes !


rarities

Les raretes n'ont pas de nom fixe. Vous pouvez les ajouter ou les supprimer, et les personnaliser autant que vous le souhaitez, tant que vous utilisez le meme format.

Notez que ce qui rend ces tables de rarete plus ou moins rares est le weight de la table de butin !

Par defaut :

  • common a un weight par defaut de 60
  • rare a un weight par defaut de 30
  • epic a un weight par defaut de 10

Ce qui rend les objets communs 6 fois plus susceptibles de tomber que les objets epiques. Vous pouvez en lire plus sur les weights ici !

En dehors du poids, chaque table de rarete a sa propre liste d'items.


rarity items

Les objets de rarete sont une liste de cartes qui liste tous les objets que la table de rarete contient.

Ces objets ont les parametres suivants :

CleValeursPar defaut
amountmin-max Integervariable
materialMaterialvariable
procedurallyGenerateEnchantmentsBooleanvariable
weightDoublevariable

amount


Definit la quantite a laisser tomber. Peut etre exprime en plage amount: MIN-MAX ou en valeur fixe amount: VALEUR pour des quantites fixes. Exemples :

  • Quantite variable : amount: 1-5 (laisse tomber entre 1 et 5 objets)
  • Quantite fixe : amount: 3 (laisse toujours tomber exactement 3)

material

Definit le materiau en utilisant les noms de l'API Spigot de l'objet potentiellement a laisser tomber.


Cas special - serialized

Lors de l'utilisation de la commande lootify, au lieu d'un materiau, lootify fournira un parametre serialized. Il est automatiquement genere par le plugin et ne doit pas etre genere manuellement. Il est dans un format non lisible par l'humain.


mmoitem

Definit un objet personnalise du plugin MMOItems. C'est une alternative au champ material pour utiliser des objets personnalises au lieu de materiaux vanilla Minecraft.

Le format est : mmoitem: TYPE@ITEMNAME

Exemple :

- amount: 1-1
mmoitem: SWORD@Excalibur
weight: 1.0

Note : Cela necessite que le plugin MMOItems soit installe. Si MMOItems n'est pas disponible ou que l'objet specifie n'existe pas, l'entree sera ignoree avec un avertissement dans les logs de la console.


info

Champ optionnel pour ajouter des notes ou commentaires aux entrees d'objets. Ce champ est completement ignore par le plugin et existe uniquement a des fins de documentation administrative. Utilisez-le pour vous rappeler pourquoi certains objets sont configures de manieres specifiques.

Exemple :

- amount: 1-1
material: DIAMOND_SWORD
weight: 1.0
info: "Rare drop for completing the dungeon"

weight

Definit le poids pour la chance ponderee. Plus d'informations a ce sujet ici.


procedurallyGenerateEnchantments

Definit si l'objet doit etre genere proceduralement selon les parametres de procedurallyGeneratedItemSettings. Notez que selon les parametres, cela peut resulter en un objet genere sans enchantements.

procedurallyGeneratedItemSettings

Regardons a nouveau notre exemple de fichier de configuration :

procedurallyGeneratedItemSettings:
golden_sword:
bane_of_arthropods:
minlevel: 1
maxlevel: 5
chance: 0.2
looting:
minlevel: 1
maxlevel: 3
chance: 0.2

Comme vous pouvez le voir, ce fichier liste les types de materiaux, suivis des enchantements puis des niveaux minimum et maximum et d'une chance.

Notez que vous ne pouvez pas ajouter de materiaux personnalises d'autres plugins dans ces parametres, et vous ne pourrez probablement pas ajouter d'enchantements personnalises d'autres plugins a moins que leur auteur n'ait explicitement rendu leur systeme compatible.

Quant aux parametres d'enchantement :

CleValeursPar defaut
minlevelIntegervariable
maxlevelIntegervariable
chanceChancevariable

minlevel

Definit le niveau minimum d'enchantement.


maxlevel

Definit le niveau maximum d'enchantement.


chance

Definit la probabilite d'application de l'enchantement, en valeur decimale entre 0.0 (jamais) et 1.0 (toujours). Par exemple, une valeur de 0.2 signifie 20% de chance. Cela utilise une verification de probabilite simple, pas de probabilite ponderee comme le systeme de selection d'objets.


Depannage

Les objets n'apparaissent pas dans les coffres

  • Verifiez que le fichier de tresor a isEnabled: true
  • Consultez la console pour les avertissements sur les materiaux ou objets invalides
  • Assurez-vous que MMOItems est installe si vous utilisez des objets personnalises
  • Les materiaux doivent utiliser les noms exacts de l'API Spigot

Les enchantements ne s'appliquent pas

  • Definissez procedurallyGenerateEnchantments: true sur l'objet
  • Verifiez que les noms d'enchantements correspondent aux cles namespacees de Minecraft
  • Verifiez que les niveaux min/max sont dans les plages valides pour cet enchantement
  • N'oubliez pas que les valeurs de chance sont des probabilites (0.2 = 20%), pas des garanties

Les enchantements de plugins personnalises ne fonctionnent pas

Seuls les enchantements personnalises qui supportent explicitement l'integration BetterStructures fonctionneront. Verifiez aupres de l'auteur du plugin d'enchantement la compatibilite. Les enchantements invalides afficheront un avertissement dans la console suggerant cette possibilite.

Des coffres vides apparaissent

Cela ne devrait pas se produire car le systeme garantit au moins un objet. Si vous voyez des coffres vides, verifiez :

  • Que le coffre est rempli par BetterStructures (pas un autre plugin)
  • Que tous les objets dans votre fichier de tresor sont valides (consultez les avertissements de la console)
  • Que le fichier de tresor est effectivement charge (consultez les logs de demarrage)