Aller au contenu principal

Systeme de butin d'Extractioncraft

Extractioncraft dispose d'un systeme de butin en couches base sur trois concepts : les paquets de contenu referencent des tables de butin, les tables de butin referencent des pools de butin, et les pools de butin definissent les objets qui peuvent etre obtenus.

Vue d'ensemble

Content Package
-> chestLootTables / barrelLootTables (weighted selection)
-> Loot Table
-> lootTable entries (each has a chance to roll)
-> Loot Pool
-> eliteMobsLoot / vanillaLoot (weighted selection of one item)

Tables de butin

Les fichiers de configuration des tables de butin se trouvent dans le dossier loot_tables/. Chaque fichier definit une liste d'entrees de pools de butin, ou chaque entree a une chance independante de produire un objet.

CleTypeDefautDescription
isEnabledBooleantrueSi cette table de butin est active
spawnPoolsListe de String[]Noms des pools d'apparition BetterStructures. Lorsqu'un EliteMob associe a un pool d'apparition correspondant est tue, cette table de butin est utilisee pour ses drops.
lootTableListe d'objets[]Chaque entree reference un nom de fichier de pool de butin et une chance (0.0 a 1.0)

Format d'entree de table de butin

lootTable:
- filename: my_loot_pool.yml
chance: 0.5
- filename: another_pool.yml
chance: 0.2

Chaque entree est lancee independamment. Une chance de 0.5 signifie une probabilite de 50% que ce pool produise un drop.

Pools de butin

Les fichiers de configuration des pools de butin se trouvent dans le dossier loot_pools/. Chaque pool definit un ensemble d'objets possibles. Lorsqu'un pool est lance, un objet est selectionne en fonction de la probabilite ponderee.

CleTypeDefautDescription
isEnabledBooleantrueSi ce pool de butin est actif
eliteMobsLootListe d'objets[]Objets personnalises EliteMobs qui peuvent etre obtenus
vanillaLootListe d'objets[]Objets Minecraft vanilla qui peuvent etre obtenus

Entree de butin EliteMobs

eliteMobsLoot:
- filename: my_elite_item.yml
weight: 1.0
- filename: another_item.yml
weight: 0.5

Le filename reference un fichier de configuration d'objet personnalise EliteMobs. Le weight determine la probabilite relative de drop parmi toutes les entrees du pool.

Entree de butin vanilla

vanillaLoot:
- material: DIAMOND
weight: 1.0
- material: GOLD_INGOT
weight: 2.0

Le material est un nom d'enum Material de Bukkit. Le weight fonctionne de la meme maniere que pour les entrees de butin d'elite. Toutes les entrees d'elite et vanilla d'un pool sont en competition dans une seule selection ponderee.

Butin de conteneur (Coffres et Tonneaux)

Pendant un match, les coffres et tonneaux sont places par BetterStructures. Lorsqu'un joueur fait un clic droit sur un coffre ou un tonneau :

  1. Le joueur doit rester immobile pendant 3 secondes pendant que le conteneur s'ouvre.
  2. Bouger annule l'interaction.
  3. En cas de succes, une table de butin est selectionnee dans la liste chestLootTables ou barrelLootTables du paquet de contenu (selection ponderee).
  4. Les entrees de la table de butin selectionnee sont lancees independamment, et les objets resultants apparaissent a l'emplacement du conteneur.
  5. Le conteneur est detruit apres le pillage (remplace par de l'air).

Les conteneurs affichent des particules de portail toutes les 10 ticks lorsqu'ils sont actifs dans un match, les rendant visibles pour les joueurs.

Butin de meurtre de mob

Lorsqu'un EliteMob meurt pendant un match, le plugin verifie son pool d'apparition BetterStructures. Toute table de butin dont la liste spawnPools contient le pool d'apparition du mob generera des drops a l'emplacement de mort du mob. Le niveau du mob est transmis a EliteMobs pour la generation d'objets adaptes au niveau.

Comportement des objets lors de l'extraction

  • Les joueurs qui s'extraient avec succes conservent tous leurs objets. Les objets dans leur inventaire sont lies a l'ame (via l'enchantement soulbind d'EliteMobs) a la sortie.
  • Les joueurs qui echouent a s'extraire (quittent, se deconnectent ou sont rattrapes par la bordure du monde) perdent tous les objets de leur inventaire lorsque deleteItemsOnFailToExtract est true dans config.yml.