Buittabellen: pools, worpen en het verschil tussen invoeren en functies
Een buittabel die niets dropt heeft zijn gewichten of voorwaarden meestal in de verkeerde laag staan. Dit is wat elk nestingsniveau bestuurt, en de functies die het waard zijn om te kennen.
Buittabel-JSON is vier niveaus diep en elk niveau betekent iets anders. Bijna elke "mijn tabel dropt niets" is een voorwaarde die één niveau verwijderd is van waar hij hoorde te staan.
De vier niveaus
table
└── pools[] how many independent draws
└── entries[] what can come out of this draw
└── functions[] modify the item that came out
rollsop een pool is hoe vaak die pool trekt. Eén pool metrolls: 3draws
drie keer uit dezelfde invoerlijst.
weightop een invoer is relatief binnen zijn pool. Gewichten hoeven niet op te tellen tot
iets; een invoer met een gewicht van 10 tegenover een van 90 komt een tiende van de keren voor.
conditionsbestaan op elk niveau en betekenen verschillende dingen. Op een pool bepalen ze
de hele trekking. Op een invoer bepalen ze die ene optie. Op een functie bepalen ze alleen de aanpassing.
Een gegarandeerde drop vereist een eigen pool
Gewichten kunnen niets garanderen, omdat een pool precies één invoer per worp kiest. Een tabel die altijd een kaart plus willekeurige buit moet droppen, heeft twee pools nodig:
"pools": [
{ "rolls": 1, "entries": [ { "type": "minecraft:item", "name": "minecraft:filled_map" } ] },
{ "rolls": { "min": 2, "max": 4 }, "entries": [ … weighted list … ] }
]
Pool één heeft een enkele invoer, dus produceert deze altijd. Pool twee gooit 2–4 keer uit de gewogen lijst.
De functies die het waard zijn om te kennen
| Functie | Doet |
|---|---|
set_count | een vast aantal of een uniform range |
enchant_randomly | willekeurige betoveringen, optioneel uit een lijst |
enchant_with_levels | als een betoveringstafel op N niveaus — inclusief schatten indien gevraagd |
set_components | aangepaste naam, lore, elk datacomponent |
looting_enchant | bonus per niveau van Buitmaken; alleen entiteitstabellen |
set_damage | duurzaamheid als een fractie, dus 0.5 is half-worn |
furnace_smelt | de gesmolten vorm wanneer de mob brandend sterft |
enchant_with_levels and enchant_randomly are not interchangeable. The first mimics an enchanting table and respects level costs; the second picks arbitrarily and can produce combinations the game would never generate.
Voorwaarden die vaak gebruikt worden
random_chance— a flat probabilityrandom_chance_with_enchanted_bonus— the modern Looting-aware chancekilled_by_player— the reason your rare drop never appears from a fall deathentity_properties— check the victim's type, state or equipmentmatch_tool— check the tool used, for block tables
Testen zonder de wereld opnieuw te bouwen
/loot give @s loot my_pack:chests/treasure
dropt de tabel direct in je inventaris. /loot spawn, /loot insert <pos> and /loot replace cover the other placements. This is far faster than placing chests and reloading, and it is the only sane way to check weight distributions.
Bouw tabellen met meerdere pools met de functies en voorwaarden op het juiste niveau gekoppeld in de Geavanceerde buittabelmaker.