Módulo:LootChest
- Véase también: Chest loot
Maintenance[editar código]
The data for Java release versions is current as of 1.15.2. | 23:21, 15 April 2020 (UTC) |
The data for Java snapshots is current as of 20w17a. | 15:38, 22 April 2020 (UTC) |
The data for Bedrock release versions is current as of 1.14.60. | 04:02, 19 April 2020 (UTC) |
The data for Bedrock beta versions is current as of beta 1.16.0.57. | 04:02, 19 April 2020 (UTC) |
.base usage (Template:LootChest)[editar código]
Generates a table of the contents of the designated chests, with columns corresponding to various statistics about the availability of those items.
Invoking[editar código]
It takes any number of chest parameters, and any number of column parameters, in no particular order.
If no chest parameters are listed, it displays them all; likewise for column parameters.
{{#invoke:LootChest|base [ |<chestParam1> ... |<chestParamN> ] [ |<columnHideParam1> ... |<columnHideParamN> ] }}
Chest parameters[editar código]
bastion-bridge,
bastion-hoglin-stable,
bastion-other,
bastion-treasure,
bonus,
buried-treasure,
desert-temple ( desert ),
dungeon,
end-city,
igloo,
jungle-temple ( jungle ),
jungle-temple-dispenser,
mineshaft,
nether-fortress ( nether-fortress, nether ),
pillager-outpost ( outpost ),
ruined-portal,
shipwreck-map,
shipwreck-supply,
shipwreck-treasure,
stronghold-altar ( altar ),
stronghold-library ( library ),
stronghold-storeroom ( storeroom ),
underwater-ruin-big,
underwater-ruin-small,
village-armorer ( armorer ),
village-butcher ( butcher ),
village-cartographer ( cartographer ),
village-desert-house ( desert-house ),
village-fisherman ( fisherman ),
village-fletcher ( fletcher ),
village-mason ( mason ),
village-plains-house ( plains-house ),
village-savanna-house ( savanna-house ),
village-shepherd ( shepherd ),
village-snowy-house ( snowy-house ),
village-taiga-house ( taiga-house ),
village-tannery ( tannery ),
village-temple ( temple ),
village-toolsmith ( toolsmith ),
village-weaponsmith ( weaponsmith ),
woodland-mansion ( mansion )
Column parameters[editar código]
chance: The odds of finding any of this item in a single chest.,
chests: The average number of chests the player should expect to search to find any of this item.,
items: The number of items expected per chest, averaged over a large number of chests.,
stacksize: The size of stacks (or for unstackable items, number) of this item on any given roll.,
weight: The weight of this item relative to other items in the pool.
Example[editar código]
{{#invoke:LootChest|base}}
→ all chests and all columns
{{#invoke:LootChest|base|weaponsmith|jungle|bonus|chance|stacksize}}
→ only weaponsmith and jungle chests, and only 'stacksize' and 'chance' columns
.base2 usage (Template:LootChestItem inline)[editar código]
Prints a summary of this item's availability in the various worldgen chests.
Invoking[editar código]
It takes exactly one item name as a parameter.
{{#invoke:LootChest|base2|<itemParam>}}
Item parameters[editar código]
acacia-log, acacia-sapling, activator-rail, ancient-debris, apple, arrow, bamboo, barrel, basalt, beetroot, beetroot-seeds, beetroot-soup, bell, birch-log, birch-sapling, black-wool, block-of-gold, blue-ice, bone, bone-block, book, book-and-quill, bottle-o'-enchanting, bread, brown-mushroom, brown-wool, bucket, buried-treasure-map, cactus, cake, carrot, chain, chainmail-boots, chainmail-chestplate, chainmail-helmet, chainmail-leggings, clay, clock, coal, cocoa-beans, compass, cooked-cod, cooked-porkchop, cooked-salmon, crimson-fungus, crimson-nylium, crimson-roots, crossbow, crying-obsidian, damaged-diamond-boots, damaged-diamond-chestplate, damaged-diamond-helmet, damaged-diamond-leggings, damaged-diamond-sword, damaged-level-enchanted-crossbow, damaged-level-enchanted-netherite-boots, damaged-level-enchanted-netherite-chestplate, damaged-level-enchanted-netherite-helmet, damaged-level-enchanted-netherite-leggings, damaged-level-enchanted-netherite-sword, damaged-netherite-boots, damaged-netherite-chestplate, damaged-netherite-helmet, damaged-netherite-leggings, damaged-netherite-sword, damaged-random-enchanted-crossbow, damaged-random-enchanted-diamond-boots, damaged-random-enchanted-diamond-chestplate, damaged-random-enchanted-diamond-helmet, damaged-random-enchanted-diamond-leggings, damaged-random-enchanted-diamond-shovel, damaged-random-enchanted-diamond-sword, damaged-random-enchanted-netherite-axe, damaged-random-enchanted-netherite-boots, damaged-random-enchanted-netherite-chestplate, damaged-random-enchanted-netherite-helmet, damaged-random-enchanted-netherite-hoe, damaged-random-enchanted-netherite-leggings, damaged-random-enchanted-netherite-pickaxe, damaged-random-enchanted-netherite-shovel, damaged-random-enchanted-netherite-sword, dandelion, dark-oak-log, dark-oak-sapling, dead-bush, detector-rail, diamond, diamond-chestplate, diamond-hoe, diamond-horse-armor, disc-13, disc-cat, disc-mellohi, disc-pigstep, disc-wait, egg, emerald, empty, empty-map, enchanted-book, enchanted-book-rnd, enchanted-book-rnd-soul-speed, enchanted-fishing-rod, enchanted-golden-apple, ender-pearl, feather, fern, fire-charge, flint, flint-and-steel, flower-pot, furnace, gilded-blackstone, glistering-melon-slice, glowstone, gold-ingot, gold-nugget, golden-apple, golden-boots, golden-carrot, golden-chestplate, golden-helmet, golden-hoe, golden-horse-armor, golden-leggings, golden-sword, grass, gray-wool, green-dye, gunpowder, heart-of-the-sea, ink-sac, iron-boots, iron-chestplate, iron-helmet, iron-horse-armor, iron-ingot, iron-leggings, iron-nugget, iron-pickaxe, iron-shovel, iron-sword, jungle-log, jungle-sapling, lapis-lazuli, large-fern, lead, leather, leather-boots, leather-cap, leather-pants, leather-tunic, level-enchanted-diamond-boots, level-enchanted-diamond-chestplate, level-enchanted-diamond-helmet, level-enchanted-diamond-leggings, level-enchanted-diamond-pickaxe, level-enchanted-diamond-shovel, level-enchanted-diamond-sword, level-enchanted-golden-boots, level-enchanted-golden-chestplate, level-enchanted-golden-helmet, level-enchanted-golden-hoe, level-enchanted-golden-leggings, level-enchanted-iron-boots, level-enchanted-iron-chestplate, level-enchanted-iron-helmet, level-enchanted-iron-leggings, level-enchanted-iron-pickaxe, level-enchanted-iron-shovel, level-enchanted-iron-sword, light-gray-wool, light-weighted-pressure-plate, lodestone, magma-block, magma-cream, map, melon-seeds, name-tag, nether-quartz, nether-wart, netherite-boots, netherite-chestplate, netherite-helmet, netherite-ingot, netherite-leggings, netherite-scrap, oak-log, oak-planks, oak-sapling, oak-sign, obsidian, paper, piglin-banner-pattern, poisonous-potato, polished-basalt, poppy, potato, potion-of-regeneration, potion-of-water-breathing, powered-rail, prismarine-crystals, pumpkin, pumpkin-pie, pumpkin-seeds, rail, random-enchanted-golden-axe, random-enchanted-golden-boots, random-enchanted-golden-chestplate, random-enchanted-golden-helmet, random-enchanted-golden-hoe, random-enchanted-golden-leggings, random-enchanted-golden-pickaxe, random-enchanted-golden-shovel, random-enchanted-golden-sword, random-enchanted-leather-boots, random-enchanted-leather-cap, random-enchanted-leather-pants, random-enchanted-leather-tunic, raw-beef, raw-cod, raw-mutton, raw-porkchop, raw-salmon, redstone, rotten-flesh, saddle, sand, shears, smooth-stone, snow-block, snowball, soul-sand, soul-speed-enchanted-golden-boots, spectral-arrow, spider-eye, spruce-log, spruce-sapling, spruce-sign, stick, stone, stone-axe, stone-bricks, stone-pickaxe, string, suspicious-stew, sweet-berries, tall-grass, tnt, torch, tripwire-hook, water-bucket, wheat, wheat-seeds, white-wool, wooden-axe, wooden-hoe, wooden-pickaxe, yellow-dye
Example[editar código]
{{#invoke:LootChest|base2|iron-ingot}}
→
Iron ingots can be found in 54.2% devillage armorer chests and 30.5% depillager outpost chests in stacks of 1 a 3; in 18.5% dedungeon chests, 18.5% dewoodland mansion chests, and 99.4% deburied treasure chests, all in stacks of 1 a 4; in 38.4% deEnd city chests in stacks of 4 a 8; and in 23.3% destronghold altar chests, 41.2% devillage toolsmith chests, 97.4% deshipwreck treasure chests, 34.3% destronghold storeroom chests, 45.1% devillage weaponsmith chests, 19.0% denether fortress chests, 37.4% dejungle temple chests, 18.0% dedesert temple chests, and 31.6% de chest minecarts in Mineshafts, all in stacks of 1 a 5. Java Edition 1.16[upcoming] they can be found in 29.4% debastion remnant treasure chests in stacks of 3 a 9, in 12.2% debastion remnant bridge chests in stacks of 2 a 8, and in 16.0% debastion remnant other chests in stacks of 1 a 6.
Edición Bedrock they can be found in 57.2% deburied treasure chests in stacks of 3 a 5, and in 22.6% destronghold altar chests, 28.5% destronghold storeroom chests, and 37.3% dejungle temple chests, all in stacks of 1 a 5. Bedrock Edition 1.16.0[upcoming] they can be found in 9.8% debastion remnant other chests in stacks of 1 a 6.
{{#invoke:LootChest|base2|emerald}}
→
Emeralds can be found in 14.9% debig underwater ruins chests, 24.2% devillage fisherman chests, 31.8% devillage armorer chests, 12.3% devillage shepherd chests, 10.2% devillage butcher chests, 16.4% desmall underwater ruins chests, 12.3% devillage fletcher chests, 7.6% deigloo chests, and 20.8% devillage mason chests, all in stacks of 1; in 14.3% dedesert village house chests, 8.7% dejungle temple chests, and 18.0% dedesert temple chests, all in stacks of 1 a 3; in 53.1% deburied treasure chests in stacks of 4 a 8; in 25.4% devillage temple chests, 9.9% desnowy village house chests, 21.5% desavanna village house chests, 22.8% deplains village house chests, 18.6% detaiga village house chests, and 17.3% devillage tannery chests, all in stacks of 1 a 4; in 9.0% deEnd city chests in stacks of 2 a 6; and in 73.7% deshipwreck treasure chests in stacks of 1 a 5.
Edición Bedrock they can be found in 7.2% destronghold altar chests and 8.7% dejungle temple chests in stacks of 1 a 3, and in 20.3% detaiga village house chests in stacks of 1 a 4.
.base3 usage (Template:LootChestItem table)[editar código]
Prints a summary of this item's availability in the various worldgen chests in the form of a table.
Invoking[editar código]
It takes exactly one item name as a parameter.
{{#invoke:LootChest|base3|<itemParam>}}
Item parameters[editar código]
Same as above
Example[editar código]
{{#invoke:LootChest|base3|emerald}}
→
Objeto | Estructura | Contenedor | Cantidad | Probabilidad |
---|---|---|---|---|
Edición Java | ||||
Emerald | Tesoro enterrado | Cofre | 4 a 8 | 53,1 % |
Desert temple | Cofre | 1 a 3 | 18 % | |
End city | Cofre | 2 a 6 | 9 % | |
Igloo | Cofre | 1 | 7,6 % | |
Jungle temple | Chest | 1 a 3 | 8,7 % | |
Naufragio | Cofre del tesoro | 1 a 5 | 73,7 % | |
Underwater ruins | Big ruins chest | 1 | 14,9 % | |
Small ruins chest | 1 | 16,4 % | ||
Village | Taiga house chest | 1 a 4 | 18,6 % | |
Tanner's chest | 1 a 4 | 17,3 % | ||
Savanna house chest | 1 a 4 | 21,5 % | ||
Snowy house chest | 1 a 4 | 9,9 % | ||
Plains house chest | 1 a 4 | 22,8 % | ||
Temple chest | 1 a 4 | 25,4 % | ||
Armorer's chest | 1 | 31,8 % | ||
Butcher's chest | 1 | 10,2 % | ||
Fisherman's chest | 1 | 24,2 % | ||
Mason's chest | 1 | 20,8 % | ||
Shepherd's chest | 1 | 12,3 % | ||
Desert house chest | 1 a 3 | 14,3 % | ||
Fletcher's chest | 1 | 12,3 % | ||
Edición Bedrock | ||||
Emerald | Jungle temple | Chest | 1 a 3 | 8,7 % |
Stronghold | Altar chest | 1 a 3 | 7,2 % | |
Village | Taiga house chest | 1 a 4 | 20,3 % |
Source[editar código]
- The data is set up within
p
so that it can be pulled directly from (or compared directly to) the minecraft loot table files. - stack size given here (and given in code) can be larger than the stackable size of the item, prominently in the case of enchanted books. However this fact does not affect the calculated values. This is because the game puts the right number of items, but unstacked rather than stacked.
Data structure[editar código]
p.items
'<item-id>' = {
- This key must match a sprite name for the items/blocks defined in Module:BlockSprite or Module:ItemSprite, unless
id
is included in the item definition.
- This key must match a sprite name for the items/blocks defined in Module:BlockSprite or Module:ItemSprite, unless
'<sprite-type>'
- Either
item
orblock
.
- Either
[, id='<sprite-id>']
- Use this to specify a sprite defined in Module:BlockSprite or Module:ItemSprite. Otherwise it uses the sprite with the name given by
item-id
.
- Use this to specify a sprite defined in Module:BlockSprite or Module:ItemSprite. Otherwise it uses the sprite with the name given by
[, link='<item-link>']
- A link to a page that is different from the sprite-id name. Used in Template:LootChest.
[, title='<item-text>']
- A name for an item that is different from the sprite-id name.
[, cannot_stack=false]
- Use this to indicate that the item comes in groups rather than in stacks. Used in Template:LootChestItem.
[, plural=(false|'<custom-plural-word>')]
- Use
false
when a word has no plural, like 'Nether Wart'. Use a custom plural word when you cannot simply append an 's' to the base word to make it plural, like 'Bottles o' Enchanting'. Used in Template:LootChestItem.
- Use
[, preserve_case=false]
- Use
false
when an item name should follow the capitalization exactly specified intitle
, and not follow sentence case, like 'TNT'.
- Use
[, note='<note-name>']
- Indicates that a note appears next to this item in the table. (notes are defined directly below the item list)
}
p.notes
'<note-name>' = '<note-full-text>'
p.chests[n].poolsJava[n]
p.chests[n].poolsJavaUpcoming[n]
p.chests[n].poolsBedrock[n]
p.chests[n].poolsBedrockUpcoming[n]
- rolls
{ <min-number-of-stacks>, <max-number-of-stacks> }
p.chests[n].poolsJava[n].items
p.chests[n].poolsJavaUpcoming[n].items
p.chests[n].poolsBedrock[n].items
p.chests[n].poolsBedrockUpcoming[n].items
'<item-id>' = { <min-stack-size>, <max-stack-size>, <item-weight> }
p.synonyms
'<chest-name-synonym>' = '<original-interally-valid-chest-name>'
- Allows additional chest names to be used as parameters, in addition to the ones defined in p.chests.
p.display_names
'<chest-name-given-via-parameter>' = '<name-displayed-in-single-chest-table>'
- If a single chest parameter is used, this defines the name it is called in the summary text above the table.
p.columns
'<column-name>' = '<column-full-description>'
- The column descriptions, found either in the tooltip on the column header, or in the summary text above the table.
Functions[editar código]
The following functions are made available at the top of the file, for ease of inspection.
calc_average_amount_this_item_per_chest
- average number of a certain item (not number of stacks), per-chest (not per-structure).
calc_chance_any_of_this_item_per_chest
- chance that at least one of a certain item is present, per-chest (not per-structure).
Item tests[editar código]
{{#invoke:LootChest|base2_test}}
Acacia logs can be found in 28.0% dede regalo chests in stacks of 1 a 3.
Edición Bedrock they can be found in 50.0% dede regalo chests in stacks of 1 a 3.
Acacia saplings can be found in 71.7% desavanna village house chests in stacks of 1 a 2.
Edición Bedrock they can be found in 14.3% dede regalo chests in stacks of 4.
Activator rails can be found in 27.1% de chest minecarts in Mineshafts in stacks of 1 a 4.
Apples can be found in 33.5% destronghold altar chests, 47.5% destronghold storeroom chests, 59.8% devillage weaponsmith chests, and 70.4% deigloo chests, all in stacks of 1 a 3; in 83.8% dede regalo chests in stacks of 1 a 2; and in 74.2% deplains village house chests in stacks of 1 a 5.
Edición Bedrock they can be found in 32.5% destronghold altar chests and 40.0% destronghold storeroom chests in stacks of 1 a 3, and in all de regalo chests in stacks of 1 a 2.
Arrows can be found in 23.3% devillage fletcher chests in stacks of 1 a 3, and in all dispensers in jungle temples and 39.1% depillager outpost chests in stacks of 2 a 7. Java Edition 1.16[upcoming] they can be found in 47.9% debastion remnant bridge chests, 54.6% debastion remnant other chests, and 26.2% debastion remnant hoglin stable chests, all in stacks of 5 a 17.
Bedrock Edition 1.16.0[upcoming] they can be found in 67.9% debastion remnant bridge chests, 56.0% debastion remnant other chests, and 7.1% debastion remnant hoglin stable chests, all in stacks of 2 a 7.
Bamboo can be found in 15.6% deshipwreck supply chests and 51.0% dejungle temple chests in stacks of 1 a 3.
Edición Bedrock they can be found in 50.9% dejungle temple chests in stacks of 1 a 3.
Barrels can be found in 24.2% devillage fisherman chests in stacks of 1 a 3.
Beetroot seeds can be found in 18.5% dedungeon chests, 31.6% de chest minecarts in Mineshafts, and 18.5% dewoodland mansion chests, all in stacks of 2 a 4; in 21.2% deEnd city chests in stacks of 1 a 10; and in 66.3% desnowy village house chests in stacks of 1 a 5.
Edición Bedrock they can be found in 33.3% dede regalo chests in stacks of 1 a 2.
Beetroot soup can be found in 9.9% desnowy village house chests in groups of 1.
Birch logs can be found in 28.0% dede regalo chests in stacks of 1 a 3.
Edición Bedrock they can be found in 25.0% dede regalo chests in stacks of 1 a 3.
Black wool can be found in 33.0% devillage shepherd chests in stacks of 1 a 3.
Blue ice can be found in 9.9% desnowy village house chests in stacks of 1.
Bones can be found in 61.9% dejungle temple chests and 28.7% dedesert temple chests in stacks of 4 a 6, and in 57.8% dedungeon chests, 59.0% dedesert temple chests, and 57.8% dewoodland mansion chests, all in stacks of 1 a 8.
Edición Bedrock they can be found in 61.8% dejungle temple chests in stacks of 4 a 6.
Books can be found in 14.3% dedesert village house chests and 12.1% deplains village house chests in stacks of 1, in 89.2% destronghold library chests in stacks of 1 a 3, and in 34.5% deshipwreck map chests in stacks of 1 a 5.
Edición Bedrock they can be found in 88.3% destronghold library chests in stacks of 1 a 3.
Bread can be found in 34.1% dedungeon chests and 34.1% dewoodland mansion chests in stacks of 1; in 33.5% destronghold altar chests, 81.2% devillage toolsmith chests, 47.5% destronghold storeroom chests, 59.8% devillage weaponsmith chests, and 44.3% de chest minecarts in Mineshafts, all in stacks of 1 a 3; in 89.3% devillage temple chests, 80.6% devillage armorer chests, 80.6% dedesert village house chests, 61.2% devillage cartographer chests, 66.3% desnowy village house chests, 71.7% desavanna village house chests, 74.2% deplains village house chests, 62.2% devillage mason chests, 65.6% detaiga village house chests, and 62.8% devillage tannery chests, all in stacks of 1 a 4; and in 61.5% dede regalo chests in stacks of 1 a 2.
Edición Bedrock they can be found in 32.5% destronghold altar chests and 40.0% destronghold storeroom chests in stacks of 1 a 3, in 69.3% detaiga village house chests in stacks of 1 a 4, and in all de regalo chests in stacks of 1 a 2.
Brown wool can be found in 23.3% devillage shepherd chests in stacks of 1 a 3.
Buckets can be found in 18.5% dedungeon chests, 11.3% desavanna village house chests, and 18.5% dewoodland mansion chests, all in stacks of 1.
Buried treasure maps can be found in 43.5% debig underwater ruins chests, 41.7% desmall underwater ruins chests, and all shipwreck map chests, all in stacks of 1.
Cactus can be found in 80.6% dedesert village house chests in stacks of 1 a 4.
Edición Bedrock they can be found in 60.0% dede regalo chests in stacks of 1 a 2.
Carrots can be found in 44.9% deshipwreck supply chests in stacks of 4 a 8, and in 57.5% depillager outpost chests in stacks of 3 a 5.
Edición Bedrock they can be found in 50.0% dede regalo chests in stacks of 1 a 2.
Chainmail chestplates can be found in 14.9% dewoodland mansion chests in groups of 1.
Edición Bedrock they can be found in 14.7% dewoodland mansion chests and 57.2% deburied treasure chests in groups of 1.
Clay can be found in 14.3% dedesert village house chests in stacks of 1, and in 20.8% devillage mason chests in stacks of 1 a 3.
Clocks can be found in 7.7% deshipwreck map chests in stacks of 1. Java Edition 1.16[upcoming] they can be found in 6.9% deruined portal chests in stacks of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 6.1% deruined portal chests in stacks of 1.
Coal can be found in 43.0% devillage fisherman chests, 9.9% devillage toolsmith chests, and 27.9% devillage butcher chests, all in stacks of 1 a 3; in 81.0% debig underwater ruins chests, 84.2% desmall underwater ruins chests, 26.6% dedungeon chests, 41.2% desnowy village house chests, 70.4% deigloo chests, and 26.6% dewoodland mansion chests, all in stacks of 1 a 4; in 40.0% deshipwreck supply chests in stacks of 2 a 8; and in 34.3% destronghold storeroom chests and 31.6% de chest minecarts in Mineshafts in stacks of 3 a 8.
Edición Bedrock they can be found in 28.5% destronghold storeroom chests in stacks of 3 a 8.
Compasses can be found in 7.7% deshipwreck map chests, 26.3% devillage cartographer chests, and 10.9% destronghold library chests, all in stacks of 1.
Edición Bedrock they can be found in 10.5% destronghold library chests in stacks of 1.
Cooked cod can be found in 75.0% deburied treasure chests in stacks of 2 a 4.
Cooked salmon can be found in 75.0% deburied treasure chests in stacks of 2 a 4.
Crossbows can be found in all pillager outpost chests in groups of 1. Java Edition 1.16[upcoming] they can be found in 16.0% debastion remnant other chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 9.8% debastion remnant other chests in groups of 1.
Dandelions can be found in 22.8% deplains village house chests in stacks of 1.
Dark oak logs can be found in 28.0% dede regalo chests in stacks of 1 a 3, and in all pillager outpost chests in stacks of 2 a 3.
Edición Bedrock they can be found in 50.0% dede regalo chests in stacks of 1 a 3.
Dead bushes can be found in 26.6% dedesert village house chests in stacks of 1 a 3.
Detector rails can be found in 27.1% de chest minecarts in Mineshafts in stacks of 1 a 4.
Diamond chestplates can be found in 7.7% dewoodland mansion chests in groups of 1.
Edición Bedrock they can be found in 7.6% dewoodland mansion chests in groups of 1.
Diamond hoes can be found in 21.8% dewoodland mansion chests in groups of 1.
Edición Bedrock they can be found in 21.5% dewoodland mansion chests in groups of 1.
Diamond horse armor can be found in 2.5% destronghold altar chests, 5.7% devillage weaponsmith chests, 7.7% dedungeon chests, 11.8% denether fortress chests, 4.5% dejungle temple chests, 6.3% dedesert temple chests, and 4.6% deEnd city chests, all in groups of 1.
Edición Bedrock they can be found in 2.4% destronghold altar chests and 4.4% dejungle temple chests in groups of 1.
Diamonds can be found in 14.1% deshipwreck treasure chests in stacks of 1; in 7.4% destronghold altar chests, 9.9% devillage toolsmith chests, 16.2% devillage weaponsmith chests, 19.0% denether fortress chests, 12.9% dejungle temple chests, and 6.3% dedesert temple chests, all in stacks of 1 a 3; in 10.4% de chest minecarts in Mineshafts and 53.1% deburied treasure chests in stacks of 1 a 2; and in 21.2% deEnd city chests in stacks of 2 a 7. Java Edition 1.16[upcoming] they can be found in 8.6% debastion remnant treasure chests in stacks of 1 a 3.
Edición Bedrock they can be found in 46.9% deburied treasure chests in stacks of 1, and in 7.2% destronghold altar chests and 12.8% dejungle temple chests in stacks of 1 a 3. Bedrock Edition 1.16.0[upcoming] they can be found in 10.2% debastion remnant treasure chests in stacks of 1 a 3.
Eggs can be found in 23.3% devillage fletcher chests in stacks of 1 a 3.
Emeralds can be found in 14.9% debig underwater ruins chests, 24.2% devillage fisherman chests, 31.8% devillage armorer chests, 12.3% devillage shepherd chests, 10.2% devillage butcher chests, 16.4% desmall underwater ruins chests, 12.3% devillage fletcher chests, 7.6% deigloo chests, and 20.8% devillage mason chests, all in stacks of 1; in 14.3% dedesert village house chests, 8.7% dejungle temple chests, and 18.0% dedesert temple chests, all in stacks of 1 a 3; in 53.1% deburied treasure chests in stacks of 4 a 8; in 25.4% devillage temple chests, 9.9% desnowy village house chests, 21.5% desavanna village house chests, 22.8% deplains village house chests, 18.6% detaiga village house chests, and 17.3% devillage tannery chests, all in stacks of 1 a 4; in 9.0% deEnd city chests in stacks of 2 a 6; and in 73.7% deshipwreck treasure chests in stacks of 1 a 5.
Edición Bedrock they can be found in 7.2% destronghold altar chests and 8.7% dejungle temple chests in stacks of 1 a 3, and in 20.3% detaiga village house chests in stacks of 1 a 4.
Empty maps can be found in 7.7% deshipwreck map chests and 10.9% destronghold library chests in stacks of 1, and in 46.2% devillage cartographer chests in stacks of 1 a 3.
Enchanted books[note 8] can be found in 2.5% destronghold altar chests, 4.0% destronghold storeroom chests, 4.5% dejungle temple chests, and 67.8% destronghold library chests, all in groups of 1.
Edición Bedrock they can be found in 2.9% destronghold altar chests, 3.8% destronghold storeroom chests, 5.3% dejungle temple chests, and 72.9% destronghold library chests, all in groups of 1.
Enchanted books[note 3] can be found in 21.7% debig underwater ruins chests, 14.9% dedungeon chests, 23.5% dedesert temple chests, 11.0% depillager outpost chests, 14.1% de chest minecarts in Mineshafts, and 14.9% dewoodland mansion chests, all in groups of 1.
Edición Bedrock they can be found in 17.5% dewoodland mansion chests in groups of 1.
Enchanted diamond boots[note 1] can be found in 13.3% deEnd city chests in groups of 1.
Enchanted diamond chestplates[note 1] can be found in 13.3% deEnd city chests in groups of 1.
Enchanted diamond helmets[note 1] can be found in 13.3% deEnd city chests in groups of 1.
Enchanted diamond leggings[note 1] can be found in 13.3% deEnd city chests in groups of 1.
Enchanted diamond pickaxes[note 1] can be found in 13.3% deEnd city chests in groups of 1.
Enchanted diamond shovels[note 1] can be found in 13.3% deEnd city chests in groups of 1.
Enchanted diamond swords[note 1] can be found in 13.3% deEnd city chests in groups of 1.
Enchanted fishing rods[note 3] can be found in 21.7% debig underwater ruins chests and 41.7% desmall underwater ruins chests in groups of 1.
Enchanted golden apples can be found in 3.1% dedungeon chests, 2.6% dedesert temple chests, 1.4% de chest minecarts in Mineshafts, and 3.1% dewoodland mansion chests, all in stacks of 1. Java Edition 1.16[upcoming] they can be found in 1.4% deruined portal chests in stacks of 1.
Edición Bedrock they can be found in 3.1% dewoodland mansion chests in stacks of 1. Bedrock Edition 1.16.0[upcoming] they can be found in 1.2% deruined portal chests in stacks of 1.
Enchanted iron boots[note 1] can be found in 13.3% deEnd city chests in groups of 1.
Enchanted iron chestplates[note 1] can be found in 13.3% deEnd city chests in groups of 1.
Enchanted iron helmets[note 1] can be found in 13.3% deEnd city chests in groups of 1.
Enchanted iron leggings[note 1] can be found in 13.3% deEnd city chests in groups of 1.
Enchanted iron pickaxes[note 1] can be found in 13.3% deEnd city chests in groups of 1.
Enchanted iron shovels[note 1] can be found in 13.3% deEnd city chests in groups of 1.
Enchanted iron swords[note 1] can be found in 13.3% deEnd city chests in groups of 1.
Enchanted leather boots[note 3] can be found in 22.4% deshipwreck supply chests in groups of 1.
Enchanted leather caps[note 3] can be found in 22.4% deshipwreck supply chests in groups of 1.
Enchanted leather pants[note 3] can be found in 22.4% deshipwreck supply chests in groups of 1.
Enchanted leather tunics[note 3] can be found in 22.4% deshipwreck supply chests in groups of 1.
Ender pearls can be found in 23.3% destronghold altar chests in stacks of 1.
Edición Bedrock they can be found in 22.6% destronghold altar chests in stacks of 1.
Feathers can be found in 12.1% deplains village house chests in stacks of 1, in 55.8% devillage fletcher chests in stacks of 1 a 3, and in 60.0% deshipwreck map chests in stacks of 1 a 5.
Ferns can be found in 18.6% detaiga village house chests in stacks of 1.
Edición Bedrock they can be found in 20.3% detaiga village house chests in stacks of 1.
Flint and steel can be found in 19.0% denether fortress chests in groups of 1. Java Edition 1.16[upcoming] they can be found in 44.4% deruined portal chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 40.9% deruined portal chests in groups of 1.
Flint can be found in 55.8% devillage fletcher chests in stacks of 1 a 3. Java Edition 1.16[upcoming] they can be found in 44.4% deruined portal chests in stacks of 1 a 4.
Bedrock Edition 1.16.0[upcoming] they can be found in 40.9% deruined portal chests in stacks of 1 a 4.
Flower pots can be found in 20.8% devillage mason chests in stacks of 1.
Frascos con experiencia can be found in 14.1% deshipwreck treasure chests and 60.9% depillager outpost chests in stacks of 1.
Edición Bedrock they can be found in 11.8% deburied treasure chests in stacks of 1.
Furnaces can be found in 9.9% desnowy village house chests in stacks of 1.
Gold ingots can be found in 12.1% destronghold altar chests, 9.9% devillage toolsmith chests, 18.6% destronghold storeroom chests, 25.6% devillage weaponsmith chests, 49.0% denether fortress chests, and 16.9% de chest minecarts in Mineshafts, all in stacks of 1 a 3; in 25.4% devillage temple chests, 9.6% dedungeon chests, 9.6% dewoodland mansion chests, and 88.0% deburied treasure chests, all in stacks of 1 a 4; in 51.0% dejungle temple chests, 18.0% dedesert temple chests, and 52.3% deEnd city chests, all in stacks of 2 a 7; and in 26.5% deshipwreck treasure chests in stacks of 1 a 5. Java Edition 1.16[upcoming] they can be found in 29.4% debastion remnant treasure chests in stacks of 3 a 9, in 6.9% deruined portal chests and 12.2% debastion remnant bridge chests in stacks of 2 a 8, and in 16.0% debastion remnant other chests in stacks of 1 a 6.
Edición Bedrock they can be found in 11.8% destronghold altar chests and 15.2% destronghold storeroom chests in stacks of 1 a 3, in 34.3% deburied treasure chests in stacks of 1 a 5, and in 50.9% dejungle temple chests in stacks of 2 a 7. Bedrock Edition 1.16.0[upcoming] they can be found in 33.2% debastion remnant treasure chests in stacks of 3 a 9, in 6.1% deruined portal chests and 53.1% debastion remnant bridge chests in stacks of 2 a 8, and in 9.8% debastion remnant other chests in stacks of 1 a 6.
Gold nuggets can be found in 81.0% debig underwater ruins chests, 55.3% deigloo chests, 11.3% desavanna village house chests, and 12.1% deplains village house chests, all in stacks of 1 a 3; and in 36.6% deshipwreck treasure chests in stacks of 1 a 10. Java Edition 1.16[upcoming] they can be found in 47.9% debastion remnant bridge chests in stacks of 2 a 6, in 31.5% debastion remnant other chests and 26.2% debastion remnant hoglin stable chests in stacks of 2 a 8, and in 19.4% deruined portal chests in stacks of 4 a 24.
Bedrock Edition 1.16.0[upcoming] they can be found in 25.4% debastion remnant bridge chests in stacks of 2 a 6, in 45.0% debastion remnant other chests and 7.1% debastion remnant hoglin stable chests in stacks of 2 a 8, and in 17.4% deruined portal chests in stacks of 4 a 24.
Golden apples can be found in 2.5% destronghold altar chests, 4.3% debig underwater ruins chests, 21.8% dedungeon chests, all igloo chests, 23.5% dedesert temple chests, 28.2% de chest minecarts in Mineshafts, and 21.8% dewoodland mansion chests, all in stacks of 1. Java Edition 1.16[upcoming] they can be found in 44.4% deruined portal chests in stacks of 1.
Edición Bedrock they can be found in 2.4% destronghold altar chests and 21.5% dewoodland mansion chests in stacks of 1. Bedrock Edition 1.16.0[upcoming] they can be found in 17.4% deruined portal chests in stacks of 1.
Golden chestplates can be found in 19.0% denether fortress chests in groups of 1. Java Edition 1.16[upcoming] they can be found in 16.0% debastion remnant other chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 25.4% debastion remnant bridge chests and 19.5% debastion remnant other chests in groups of 1.
Golden helmets can be found in 4.3% debig underwater ruins chests and 8.3% desmall underwater ruins chests in groups of 1. Java Edition 1.16[upcoming] they can be found in 16.0% debastion remnant other chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 26.5% debastion remnant treasure chests, 25.4% debastion remnant bridge chests, and 19.5% debastion remnant other chests, all in groups of 1.
Golden horse armor can be found in 2.5% destronghold altar chests, 5.7% devillage weaponsmith chests, 14.9% dedungeon chests, 29.1% denether fortress chests, 4.5% dejungle temple chests, 12.3% dedesert temple chests, and 4.6% deEnd city chests, all in groups of 1. Java Edition 1.16[upcoming] they can be found in 6.9% deruined portal chests in groups of 1.
Edición Bedrock they can be found in 2.4% destronghold altar chests and 4.4% dejungle temple chests in groups of 1. Bedrock Edition 1.16.0[upcoming] they can be found in 6.1% deruined portal chests in groups of 1.
Golden swords can be found in 19.0% denether fortress chests in groups of 1. Java Edition 1.16[upcoming] they can be found in 12.2% debastion remnant bridge chests and 16.0% debastion remnant other chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 26.5% debastion remnant treasure chests, 25.4% debastion remnant bridge chests, and 50.8% debastion remnant other chests, all in groups of 1.
Grass can be found in 45.9% desavanna village house chests in stacks of 1.
Gray wool can be found in 23.3% devillage shepherd chests in stacks of 1 a 3.
Green dye can be found in 14.3% dedesert village house chests in stacks of 1.
Gunpowder can be found in 22.4% deshipwreck supply chests in stacks of 1 a 5, and in 57.8% dedungeon chests, 59.0% dedesert temple chests, and 57.8% dewoodland mansion chests, all in stacks of 1 a 8.
Heart of the sea can be found in all buried treasure chests in stacks of 1.
Iron boots can be found in 12.1% destronghold altar chests and 25.6% devillage weaponsmith chests in groups of 1.
Edición Bedrock they can be found in 11.8% destronghold altar chests in groups of 1.
Iron chestplates can be found in 12.1% destronghold altar chests and 25.6% devillage weaponsmith chests in groups of 1.
Edición Bedrock they can be found in 11.8% destronghold altar chests in groups of 1.
Iron helmets can be found in 12.1% destronghold altar chests, 31.8% devillage armorer chests, and 25.6% devillage weaponsmith chests, all in groups of 1.
Edición Bedrock they can be found in 11.8% destronghold altar chests in groups of 1.
Iron horse armor can be found in 2.5% destronghold altar chests, 5.7% devillage weaponsmith chests, 21.8% dedungeon chests, 19.0% denether fortress chests, 4.5% dejungle temple chests, 18.0% dedesert temple chests, and 4.6% deEnd city chests, all in groups of 1.
Edición Bedrock they can be found in 2.4% destronghold altar chests and 4.4% dejungle temple chests in groups of 1.
Iron ingots can be found in 54.2% devillage armorer chests and 30.5% depillager outpost chests in stacks of 1 a 3; in 18.5% dedungeon chests, 18.5% dewoodland mansion chests, and 99.4% deburied treasure chests, all in stacks of 1 a 4; in 38.4% deEnd city chests in stacks of 4 a 8; and in 23.3% destronghold altar chests, 41.2% devillage toolsmith chests, 97.4% deshipwreck treasure chests, 34.3% destronghold storeroom chests, 45.1% devillage weaponsmith chests, 19.0% denether fortress chests, 37.4% dejungle temple chests, 18.0% dedesert temple chests, and 31.6% de chest minecarts in Mineshafts, all in stacks of 1 a 5. Java Edition 1.16[upcoming] they can be found in 29.4% debastion remnant treasure chests in stacks of 3 a 9, in 12.2% debastion remnant bridge chests in stacks of 2 a 8, and in 16.0% debastion remnant other chests in stacks of 1 a 6.
Edición Bedrock they can be found in 57.2% deburied treasure chests in stacks of 3 a 5, and in 22.6% destronghold altar chests, 28.5% destronghold storeroom chests, and 37.3% dejungle temple chests, all in stacks of 1 a 5. Bedrock Edition 1.16.0[upcoming] they can be found in 9.8% debastion remnant other chests in stacks of 1 a 6.
Iron leggings can be found in 12.1% destronghold altar chests and 25.6% devillage weaponsmith chests in groups of 1.
Edición Bedrock they can be found in 11.8% destronghold altar chests in groups of 1.
Iron nuggets can be found in 9.7% detaiga village house chests in stacks of 1 a 5, and in 94.5% deshipwreck treasure chests in stacks of 1 a 10. Java Edition 1.16[upcoming] they can be found in 47.9% debastion remnant bridge chests in stacks of 2 a 6, in 44.4% deruined portal chests in stacks of 9 a 18, in 31.5% debastion remnant other chests in stacks of 2 a 8, and in 29.4% debastion remnant treasure chests in stacks of 8 a 16.
Edición Bedrock they can be found in 10.7% detaiga village house chests in stacks of 1 a 5. Bedrock Edition 1.16.0[upcoming] they can be found in 25.4% debastion remnant bridge chests in stacks of 2 a 6, in 40.9% deruined portal chests in stacks of 9 a 18, in 36.3% debastion remnant other chests in stacks of 2 a 8, and in 26.5% debastion remnant treasure chests in stacks of 8 a 16.
Iron pickaxes can be found in 12.1% destronghold altar chests, 41.2% devillage toolsmith chests, 4.0% destronghold storeroom chests, 25.6% devillage weaponsmith chests, and 7.0% de chest minecarts in Mineshafts, all in groups of 1.
Edición Bedrock they can be found in 11.8% destronghold altar chests and 3.2% destronghold storeroom chests in groups of 1.
Iron shovels can be found in 41.2% devillage toolsmith chests in groups of 1.
Iron swords can be found in 12.1% destronghold altar chests, 25.6% devillage weaponsmith chests, and 75.0% deburied treasure chests, all in groups of 1.
Edición Bedrock they can be found in 11.8% destronghold altar chests in groups of 1.
Jungle logs can be found in 28.0% dede regalo chests in stacks of 1 a 3.
Edición Bedrock they can be found in 25.0% dede regalo chests in stacks of 1 a 3.
Lapis lazuli can be found in 16.9% de chest minecarts in Mineshafts in stacks of 4 a 9, in 25.4% devillage temple chests in stacks of 1 a 4, and in 61.5% deshipwreck treasure chests in stacks of 1 a 10.
Large ferns can be found in 18.6% detaiga village house chests in stacks of 1.
Edición Bedrock they can be found in 20.3% detaiga village house chests in stacks of 1.
Leads can be found in 28.3% dewoodland mansion chests in stacks of 1.
Edición Bedrock they can be found in 27.9% dewoodland mansion chests in stacks of 1, and in 34.3% deburied treasure chests in stacks of 1 a 3.
Leather boots can be found in 31.8% devillage tannery chests in groups of 1.
Leather can be found in 17.3% devillage tannery chests in stacks of 1 a 3. Java Edition 1.16[upcoming] they can be found in 47.9% debastion remnant bridge chests and 26.2% debastion remnant hoglin stable chests in stacks of 1 a 3.
Bedrock Edition 1.16.0[upcoming] they can be found in 45.5% debastion remnant bridge chests, 17.2% debastion remnant other chests, and 7.1% debastion remnant hoglin stable chests, all in stacks of 1 a 3.
Leather caps can be found in 31.8% devillage tannery chests in groups of 1.
Leather pants can be found in 31.8% devillage tannery chests in groups of 1.
Leather tunics can be found in 4.3% debig underwater ruins chests, 8.3% desmall underwater ruins chests, 75.0% deburied treasure chests, and 31.8% devillage tannery chests, all in groups of 1.
Light gray wool can be found in 23.3% devillage shepherd chests in stacks of 1 a 3.
Melon seeds can be found in 18.5% dedungeon chests, 31.6% de chest minecarts in Mineshafts, and 18.5% dewoodland mansion chests, all in stacks of 2 a 4.
Edición Bedrock they can be found in 33.3% dede regalo chests in stacks of 1 a 2.
Music disc (13) can be found in 21.8% dedungeon chests and 21.8% dewoodland mansion chests in groups of 1.
Edición Bedrock they can be found in 21.5% dewoodland mansion chests in groups of 1.
Music disc (cat) can be found in 21.8% dedungeon chests and 21.8% dewoodland mansion chests in groups of 1.
Edición Bedrock they can be found in 21.5% dewoodland mansion chests in groups of 1.
Name tags can be found in 28.3% dedungeon chests, 42.3% de chest minecarts in Mineshafts, and 28.3% dewoodland mansion chests, all in stacks of 1.
Edición Bedrock they can be found in 27.9% dewoodland mansion chests and 34.3% deburied treasure chests in stacks of 1.
Nether wart can be found in 19.0% denether fortress chests in stacks of 3 a 7.
Nothing[note 11] can be found in 18.0% dedesert temple chests and 7.0% de chest minecarts in Mineshafts in stacks of 1. Java Edition 1.16[upcoming] they can be found in 69.1% debastion remnant other chests and 42.9% debastion remnant hoglin stable chests in stacks of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 19.1% debastion remnant other chests in stacks of 1.
Oak logs can be found in 28.0% dede regalo chests in stacks of 1 a 3.
Edición Bedrock they can be found in 25.0% dede regalo chests in stacks of 1 a 3.
Oak planks can be found in 70.5% dede regalo chests in stacks of 1 a 12.
Edición Bedrock they can be found in all de regalo chests in stacks of 1 a 12.
Oak saplings can be found in 25.6% devillage weaponsmith chests in stacks of 3 a 7, and in 48.2% deplains village house chests in stacks of 1 a 2.
Edición Bedrock they can be found in 26.3% devillage cartographer chests in stacks of 1 a 2, and in 14.3% dede regalo chests in stacks of 4.
Obsidian can be found in 25.6% devillage weaponsmith chests in stacks of 3 a 7, and in 8.0% denether fortress chests in stacks of 2 a 4. Java Edition 1.16[upcoming] they can be found in 44.4% deruined portal chests in stacks of 1 a 2, and in 31.5% debastion remnant other chests in stacks of 4 a 6.
Bedrock Edition 1.16.0[upcoming] they can be found in 40.9% deruined portal chests in stacks of 1 a 2, and in 45.0% debastion remnant other chests in stacks of 2 a 6.
Paper can be found in 89.2% destronghold library chests in stacks of 2 a 7, in 89.4% deshipwreck map chests in stacks of 1 a 10, in 49.4% deshipwreck supply chests in stacks of 1 a 12, and in 61.2% devillage cartographer chests in stacks of 1 a 5.
Edición Bedrock they can be found in 88.3% destronghold library chests in stacks of 2 a 7.
Poisonous potatoes can be found in 44.9% deshipwreck supply chests in stacks of 2 a 6.
Poppies can be found in 12.1% deplains village house chests in stacks of 1.
Potatoes can be found in 66.3% desnowy village house chests, 74.2% deplains village house chests, and 65.6% detaiga village house chests, all in stacks of 1 a 7; in 44.9% deshipwreck supply chests in stacks of 2 a 6; and in 57.5% depillager outpost chests in stacks of 2 a 5.
Edición Bedrock they can be found in 69.3% detaiga village house chests in stacks of 1 a 7, and in 50.0% dede regalo chests in stacks of 1 a 2.
Powered rails can be found in 27.1% de chest minecarts in Mineshafts in stacks of 1 a 4.
Prismarine crystals can be found in 53.1% deburied treasure chests in stacks of 1 a 5.
Edición Bedrock they can be found in 18.9% deburied treasure chests in stacks of 1 a 5.
Pumpkin pie can be found in 9.7% detaiga village house chests in stacks of 1.
Edición Bedrock they can be found in 10.7% detaiga village house chests in stacks of 1.
Pumpkin seeds can be found in 18.5% dedungeon chests, 31.6% de chest minecarts in Mineshafts, and 18.5% dewoodland mansion chests, all in stacks of 2 a 4; and in 40.6% detaiga village house chests in stacks of 1 a 5.
Edición Bedrock they can be found in 33.3% dede regalo chests in stacks of 1 a 2, and in 43.7% detaiga village house chests in stacks of 1 a 5.
Pumpkins can be found in 15.6% deshipwreck supply chests in stacks of 1 a 3.
Rails can be found in 78.4% de chest minecarts in Mineshafts in stacks of 4 a 8.
Raw beef can be found in 48.6% devillage butcher chests in stacks of 1 a 3.
Raw cod can be found in 43.0% devillage fisherman chests in stacks of 1 a 3.
Raw mutton can be found in 48.6% devillage butcher chests in stacks of 1 a 3.
Raw porkchops can be found in 48.6% devillage butcher chests in stacks of 1 a 3. Java Edition 1.16[upcoming] they can be found in 26.2% debastion remnant hoglin stable chests in stacks of 2 a 5.
Bedrock Edition 1.16.0[upcoming] they can be found in 7.1% debastion remnant hoglin stable chests in stacks of 2 a 5.
Raw salmon can be found in 24.2% devillage fisherman chests in stacks of 1 a 3, and in 61.5% dede regalo chests in stacks of 1 a 2.
Edición Bedrock they can be found in all de regalo chests in stacks of 1 a 2.
Redstone dust can be found in 12.1% destronghold altar chests, 18.6% destronghold storeroom chests, and 16.9% de chest minecarts in Mineshafts, all in stacks of 4 a 9; and in 44.8% devillage temple chests, 26.6% dedungeon chests, and 26.6% dewoodland mansion chests, all in stacks of 1 a 4.
Edición Bedrock they can be found in 11.8% destronghold altar chests and 15.2% destronghold storeroom chests in stacks of 4 a 9.
Rotten flesh can be found in 59.6% desmall underwater ruins chests and 55.3% deigloo chests in stacks of 1, in 34.6% deshipwreck supply chests in stacks of 5 a 24, in 89.3% devillage temple chests in stacks of 1 a 4, in 53.4% dejungle temple chests and 28.7% dedesert temple chests in stacks of 3 a 7, and in 57.8% dedungeon chests, 59.0% dedesert temple chests, and 57.8% dewoodland mansion chests, all in stacks of 1 a 8.
Edición Bedrock they can be found in 53.3% dejungle temple chests in stacks of 3 a 7.
Saddles can be found in 2.5% destronghold altar chests, 16.2% devillage weaponsmith chests, 28.3% dedungeon chests, 11.3% desavanna village house chests, 35.3% denether fortress chests, 12.9% dejungle temple chests, 23.5% dedesert temple chests, 13.3% deEnd city chests, and 17.3% devillage tannery chests, all in groups of 1. Java Edition 1.16[upcoming] they can be found in 9.5% debastion remnant hoglin stable chests in groups of 1.
Edición Bedrock they can be found in 2.4% destronghold altar chests and 12.8% dejungle temple chests in groups of 1. Bedrock Edition 1.16.0[upcoming] they can be found in 26.5% debastion remnant treasure chests, 2.4% debastion remnant bridge chests, 9.8% debastion remnant other chests, and 57.1% debastion remnant hoglin stable chests, all in groups of 1.
Sand can be found in 59.0% dedesert temple chests in stacks of 1 a 8.
Shears can be found in 12.3% devillage shepherd chests in groups of 1.
Smooth stone can be found in 20.8% devillage mason chests in stacks of 1.
Snow blocks can be found in 34.5% desnowy village house chests in stacks of 1.
Snowballs can be found in 66.3% desnowy village house chests in stacks of 1 a 7.
Spider eyes can be found in 28.7% dedesert temple chests in stacks of 1 a 3.
Spruce logs can be found in 28.0% dede regalo chests in stacks of 1 a 3, and in 65.6% detaiga village house chests in stacks of 1 a 5.
Edición Bedrock they can be found in 25.0% dede regalo chests in stacks of 1 a 3, and in 69.3% detaiga village house chests in stacks of 1 a 5.
Spruce saplings can be found in 40.6% detaiga village house chests in stacks of 1 a 5.
Edición Bedrock they can be found in 14.3% dede regalo chests in stacks of 4, and in 43.7% detaiga village house chests in stacks of 1 a 5.
Spruce signs can be found in 9.7% detaiga village house chests in stacks of 1.
Sticks can be found in 90.0% devillage toolsmith chests and 55.8% devillage fletcher chests in stacks of 1 a 3, in 26.3% devillage cartographer chests in stacks of 1 a 2, and in 70.5% dede regalo chests in stacks of 1 a 12.
Edición Bedrock they can be found in all de regalo chests in stacks of 1 a 12.
Stone axes can be found in 30.2% desmall underwater ruins chests, 14.7% deigloo chests, and 25.0% dede regalo chests, all in groups of 1.
Stone bricks can be found in 37.7% devillage mason chests in stacks of 1.
Stone can be found in 37.7% devillage mason chests in stacks of 1.
Stone pickaxes can be found in 25.0% dede regalo chests in groups of 1.
String can be found in 39.1% depillager outpost chests in stacks of 1 a 6, and in 57.8% dedungeon chests, 59.0% dedesert temple chests, and 57.8% dewoodland mansion chests, all in stacks of 1 a 8. Java Edition 1.16[upcoming] they can be found in 26.2% debastion remnant hoglin stable chests in stacks of 3 a 8, in 47.9% debastion remnant bridge chests in stacks of 1 a 6, and in 31.5% debastion remnant other chests in stacks of 4 a 6.
Bedrock Edition 1.16.0[upcoming] they can be found in 45.5% debastion remnant bridge chests, 32.1% debastion remnant other chests, and 7.1% debastion remnant hoglin stable chests, all in stacks of 3 a 8.
Suspicious stew[note 16] can be found in 57.4% deshipwreck supply chests in stacks of 1.
Sweet berries can be found in 40.6% detaiga village house chests in stacks of 1 a 7.
TNT can be found in 8.1% deshipwreck supply chests and 62.7% deburied treasure chests in stacks of 1 a 2.
Edición Bedrock they can be found in 34.3% deburied treasure chests in stacks of 1 a 2.
Tall grass can be found in 45.9% desavanna village house chests in stacks of 1.
Torches can be found in 11.3% desavanna village house chests in stacks of 1 a 2, and in 65.7% de chest minecarts in Mineshafts in stacks of 1 a 16.
Tripwire hooks can be found in 30.5% depillager outpost chests in stacks of 1 a 3.
Water buckets can be found in 24.2% devillage fisherman chests in groups of 1 a 3.
Wheat can be found in 48.6% devillage butcher chests in stacks of 1 a 3; in 81.0% debig underwater ruins chests, 84.2% desmall underwater ruins chests, and 55.3% deigloo chests, all in stacks of 2 a 3; in 55.8% devillage shepherd chests in stacks of 1 a 6; in 80.6% dedesert village house chests in stacks of 1 a 7; in 34.1% dedungeon chests and 34.1% dewoodland mansion chests in stacks of 1 a 4; in 72.5% depillager outpost chests in stacks of 3 a 5; and in 44.9% deshipwreck supply chests in stacks of 8 a 21.
Wheat seeds can be found in 57.5% devillage fisherman chests in stacks of 1 a 3, and in 71.7% desavanna village house chests in stacks of 1 a 5.
White wool can be found in 55.8% devillage shepherd chests in stacks of 1 a 8.
Wooden axes can be found in 75.0% dede regalo chests in groups of 1.
Wooden pickaxes can be found in 75.0% dede regalo chests in groups of 1.
Yellow dye can be found in 20.8% devillage mason chests in stacks of 1.
Bedrock Edition 1.16.0[upcoming] basalt can be found in 53.9% debastion remnant bridge chests, 45.0% debastion remnant other chests, and 7.1% debastion remnant hoglin stable chests, all in stacks of 1 a 6.
Bedrock Edition 1.16.0[upcoming] damaged enchanted crossbows[note 14][note 15] can be found in 23.2% debastion remnant bridge chests and 62.5% debastion remnant other chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] damaged enchanted netherite axes[note 3][note 4] can be found in 72.5% debastion remnant bridge chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] damaged enchanted netherite boots[note 5][note 2] can be found in 24.6% debastion remnant treasure chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] damaged enchanted netherite chestplates[note 5][note 2] can be found in 15.2% debastion remnant treasure chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] damaged enchanted netherite helmets[note 5][note 2] can be found in 24.6% debastion remnant treasure chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] damaged enchanted netherite hoes[note 3][note 6] can be found in 75.0% debastion remnant hoglin stable chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] damaged enchanted netherite leggings[note 5][note 2] can be found in 24.6% debastion remnant treasure chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] damaged enchanted netherite pickaxes[note 3][note 6] can be found in 75.0% debastion remnant hoglin stable chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] damaged enchanted netherite shovels[note 3][note 7] can be found in 72.5% debastion remnant bridge chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] damaged enchanted netherite swords[note 5][note 2] can be found in 24.6% debastion remnant treasure chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] damaged netherite boots[note 2] can be found in 10.2% debastion remnant treasure chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] damaged netherite chestplates[note 2] can be found in 10.2% debastion remnant treasure chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] damaged netherite helmets[note 2] can be found in 10.2% debastion remnant treasure chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] damaged netherite leggings[note 2] can be found in 10.2% debastion remnant treasure chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] damaged netherite swords[note 2] can be found in 24.6% debastion remnant treasure chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] enchanted golden boots[note 9] can be found in 23.0% debastion remnant treasure chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] enchanted golden chestplates[note 9] can be found in 23.0% debastion remnant treasure chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] golden hoes can be found in 28.2% debastion remnant hoglin stable chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] magma blocks can be found in 26.5% debastion remnant treasure chests in stacks of 2 a 6.
Bedrock Edition 1.16.0[upcoming] polished basalt can be found in 53.9% debastion remnant bridge chests, 45.0% debastion remnant other chests, and 7.1% debastion remnant hoglin stable chests, all in stacks of 1 a 6.
Edición Bedrock Potion of Regeneration can be found in 34.3% deburied treasure chests in stacks of 1.
Edición Bedrock Potion of Water Breathing can be found in 46.9% deburied treasure chests in stacks of 1.
Edición Bedrock birch saplings can be found in 14.3% dede regalo chests in stacks of 4.
Edición Bedrock book and quill can be found in 18.9% deburied treasure chests in stacks of 1 a 2.
Edición Bedrock brown mushrooms can be found in all de regalo chests in stacks of 1 a 2.
Edición Bedrock cake can be found in 4.1% deburied treasure chests in stacks of 1.
Edición Bedrock chainmail boots can be found in 57.2% deburied treasure chests in groups of 1.
Edición Bedrock chainmail helmets can be found in 57.2% deburied treasure chests in groups of 1.
Edición Bedrock chainmail leggings can be found in 57.2% deburied treasure chests in groups of 1.
Edición Bedrock cocoa beans can be found in 40.0% dede regalo chests in stacks of 1 a 2.
Edición Bedrock dark oak saplings can be found in 14.3% dede regalo chests in stacks of 4.
Edición Bedrock ink sacs can be found in 40.0% destronghold storeroom chests in stacks of 1 a 3.
Edición Bedrock jungle saplings can be found in 28.6% dede regalo chests in stacks of 4.
Edición Bedrock maps[note 10] can be found in 7.7% deshipwreck map chests and 10.5% destronghold library chests in stacks of 1, and in 46.2% devillage cartographer chests in stacks of 1 a 3.
Edición Bedrock music disc (mellohi) can be found in 18.9% deburied treasure chests in groups of 1.
Edición Bedrock music disc (wait) can be found in 18.9% deburied treasure chests in groups of 1.
Edición Bedrock oak signs can be found in 10.7% detaiga village house chests in stacks of 1.
Java Edition 1.16[upcoming] ancient debris can be found in 2.2% debastion remnant other chests and 2.9% debastion remnant hoglin stable chests in stacks of 1, and in 1.7% debastion remnant treasure chests in stacks of 2.
Bedrock Edition 1.16.0[upcoming] they can be found in 55.0% debastion remnant bridge chests and 56.2% debastion remnant other chests in stacks of 1, and in 33.3% debastion remnant treasure chests in stacks of 2.
Java Edition 1.16[upcoming] bells can be found in 1.4% deruined portal chests in stacks of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 1.2% deruined portal chests in stacks of 1.
Java Edition 1.16[upcoming] blocks of gold can be found in 12.2% debastion remnant bridge chests and 16.0% debastion remnant other chests in stacks of 1, in 29.4% debastion remnant treasure chests in stacks of 2 a 5, in 1.4% deruined portal chests in stacks of 1 a 2, and in 23.8% debastion remnant hoglin stable chests in stacks of 2 a 4.
Bedrock Edition 1.16.0[upcoming] they can be found in 53.1% debastion remnant bridge chests and 9.8% debastion remnant other chests in stacks of 1, in 23.0% debastion remnant treasure chests in stacks of 2 a 5, in 1.2% deruined portal chests in stacks of 1 a 2, and in 28.2% debastion remnant hoglin stable chests in stacks of 2 a 4.
Java Edition 1.16[upcoming] bone blocks can be found in 31.5% debastion remnant other chests in stacks of 3 a 6.
Bedrock Edition 1.16.0[upcoming] they can be found in 9.8% debastion remnant other chests in stacks of 1 a 3.
Java Edition 1.16[upcoming] chains can be found in 31.5% debastion remnant other chests in stacks of 2 a 10.
Bedrock Edition 1.16.0[upcoming] they can be found in 36.3% debastion remnant other chests in stacks of 2 a 10.
Java Edition 1.16[upcoming] cooked porkchops can be found in 26.2% debastion remnant hoglin stable chests in stacks of 2 a 5.
Bedrock Edition 1.16.0[upcoming] they can be found in 7.1% debastion remnant hoglin stable chests in stacks of 2 a 5.
Java Edition 1.16[upcoming] crimson fungi can be found in 26.2% debastion remnant hoglin stable chests in stacks of 2 a 7.
Bedrock Edition 1.16.0[upcoming] they can be found in 84.3% debastion remnant hoglin stable chests in stacks of 2 a 7.
Java Edition 1.16[upcoming] crimson nylium can be found in 26.2% debastion remnant hoglin stable chests in stacks of 2 a 7.
Bedrock Edition 1.16.0[upcoming] they can be found in 36.3% debastion remnant hoglin stable chests in stacks of 2 a 7.
Java Edition 1.16[upcoming] crimson roots can be found in 26.2% debastion remnant hoglin stable chests in stacks of 2 a 7.
Bedrock Edition 1.16.0[upcoming] they can be found in 84.3% debastion remnant hoglin stable chests in stacks of 2 a 7.
Java Edition 1.16[upcoming] crying obsidians can be found in 12.2% debastion remnant bridge chests in stacks of 3 a 8, and in 29.4% debastion remnant treasure chests and 31.5% debastion remnant other chests in stacks of 1 a 5.
Bedrock Edition 1.16.0[upcoming] they can be found in 23.0% debastion remnant treasure chests, 25.4% debastion remnant bridge chests, and 9.8% debastion remnant other chests, all in stacks of 1 a 5.
Java Edition 1.16[upcoming] damaged diamond boots[note 2] can be found in 8.6% debastion remnant treasure chests in groups of 1.
Java Edition 1.16[upcoming] damaged diamond chestplates[note 2] can be found in 8.6% debastion remnant treasure chests in groups of 1.
Java Edition 1.16[upcoming] damaged diamond helmets[note 2] can be found in 8.6% debastion remnant treasure chests in groups of 1.
Java Edition 1.16[upcoming] damaged diamond leggings[note 2] can be found in 8.6% debastion remnant treasure chests in groups of 1.
Java Edition 1.16[upcoming] damaged diamond swords[note 2] can be found in 10.2% debastion remnant treasure chests in groups of 1.
Java Edition 1.16[upcoming] damaged enchanted crossbows[note 3][note 13] can be found in 12.2% debastion remnant bridge chests and 13.3% debastion remnant other chests in groups of 1.
Java Edition 1.16[upcoming] damaged enchanted diamond boots[note 3][note 2] can be found in 10.2% debastion remnant treasure chests in groups of 1.
Java Edition 1.16[upcoming] damaged enchanted diamond chestplates[note 3][note 2] can be found in 10.2% debastion remnant treasure chests in groups of 1.
Java Edition 1.16[upcoming] damaged enchanted diamond helmets[note 3][note 2] can be found in 10.2% debastion remnant treasure chests in groups of 1.
Java Edition 1.16[upcoming] damaged enchanted diamond leggings[note 3][note 2] can be found in 10.2% debastion remnant treasure chests in groups of 1.
Java Edition 1.16[upcoming] damaged enchanted diamond shovels[note 3][note 7] can be found in 4.8% debastion remnant hoglin stable chests in groups of 1.
Java Edition 1.16[upcoming] damaged enchanted diamond swords[note 3][note 2] can be found in 16.8% debastion remnant treasure chests in groups of 1.
Java Edition 1.16[upcoming] enchanted books[note 12] can be found in 11.1% debastion remnant other chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 9.8% debastion remnant other chests in groups of 1.
Java Edition 1.16[upcoming] enchanted golden axes[note 3] can be found in 19.4% deruined portal chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 17.4% deruined portal chests in groups of 1.
Java Edition 1.16[upcoming] enchanted golden boots with soul speed[note 12] can be found in 16.0% debastion remnant other chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 9.8% debastion remnant other chests in groups of 1.
Java Edition 1.16[upcoming] enchanted golden boots[note 3] can be found in 19.4% deruined portal chests and 12.2% debastion remnant bridge chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 17.4% deruined portal chests and 25.4% debastion remnant bridge chests in groups of 1.
Java Edition 1.16[upcoming] enchanted golden chestplates[note 3] can be found in 19.4% deruined portal chests and 12.2% debastion remnant bridge chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 17.4% deruined portal chests in groups of 1.
Java Edition 1.16[upcoming] enchanted golden helmets[note 3] can be found in 19.4% deruined portal chests and 12.2% debastion remnant bridge chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 17.4% deruined portal chests in groups of 1.
Java Edition 1.16[upcoming] enchanted golden hoes[note 3] can be found in 19.4% deruined portal chests and 14.3% debastion remnant hoglin stable chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 17.4% deruined portal chests in groups of 1.
Java Edition 1.16[upcoming] enchanted golden leggings[note 3] can be found in 19.4% deruined portal chests and 12.2% debastion remnant bridge chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 17.4% deruined portal chests in groups of 1.
Java Edition 1.16[upcoming] enchanted golden pickaxes[note 3] can be found in 19.4% deruined portal chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 17.4% deruined portal chests in groups of 1.
Java Edition 1.16[upcoming] enchanted golden shovels[note 3] can be found in 19.4% deruined portal chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 17.4% deruined portal chests in groups of 1.
Java Edition 1.16[upcoming] enchanted golden swords[note 3] can be found in 19.4% deruined portal chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 17.4% deruined portal chests in groups of 1.
Java Edition 1.16[upcoming] fire charges can be found in 44.4% deruined portal chests in stacks of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 40.9% deruined portal chests in stacks of 1.
Java Edition 1.16[upcoming] gilded blackstone can be found in 12.2% debastion remnant bridge chests in stacks of 5 a 8, and in 29.4% debastion remnant treasure chests, 31.5% debastion remnant other chests, and 26.2% debastion remnant hoglin stable chests, all in stacks of 1 a 5.
Bedrock Edition 1.16.0[upcoming] they can be found in 23.0% debastion remnant treasure chests and 9.8% debastion remnant other chests in stacks of 1 a 5.
Java Edition 1.16[upcoming] glistering melon slices can be found in 6.9% deruined portal chests in stacks of 4 a 12.
Bedrock Edition 1.16.0[upcoming] they can be found in 6.1% deruined portal chests in stacks of 1.
Java Edition 1.16[upcoming] glowstones can be found in 26.2% debastion remnant hoglin stable chests in stacks of 1 a 5.
Java Edition 1.16[upcoming] golden boots can be found in 16.0% debastion remnant other chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 42.6% debastion remnant other chests in groups of 1.
Java Edition 1.16[upcoming] golden carrots can be found in 6.9% deruined portal chests in stacks of 4 a 12.
Bedrock Edition 1.16.0[upcoming] they can be found in 6.1% deruined portal chests in stacks of 4 a 12.
Java Edition 1.16[upcoming] golden leggings can be found in 16.0% debastion remnant other chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 26.5% debastion remnant treasure chests, 25.4% debastion remnant bridge chests, and 19.5% debastion remnant other chests, all in groups of 1.
Java Edition 1.16[upcoming] light weighted pressure plates can be found in 6.9% deruined portal chests in stacks of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 6.1% deruined portal chests in stacks of 1.
Java Edition 1.16[upcoming] lodestones can be found in all bastion remnant bridge chests in stacks of 1.
Java Edition 1.16[upcoming] magma cream can be found in 29.4% debastion remnant treasure chests in stacks of 2 a 8, and in 31.5% debastion remnant other chests in stacks of 2 a 6.
Bedrock Edition 1.16.0[upcoming] they can be found in 26.5% debastion remnant treasure chests in stacks of 2 a 8, and in 9.8% debastion remnant other chests in stacks of 1 a 2.
Java Edition 1.16[upcoming] music disc (pigstep) can be found in 3.3% debastion remnant other chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 62.5% debastion remnant other chests in groups of 1.
Java Edition 1.16[upcoming] nether quartz can be found in 29.4% debastion remnant treasure chests in stacks of 8 a 23.
Bedrock Edition 1.16.0[upcoming] they can be found in 23.0% debastion remnant treasure chests in stacks of 8 a 23.
Java Edition 1.16[upcoming] netherite ingots can be found in 16.8% debastion remnant treasure chests in stacks of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 66.7% debastion remnant treasure chests in stacks of 1.
Java Edition 1.16[upcoming] netherite scraps can be found in 16.8% debastion remnant treasure chests, 2.2% debastion remnant other chests, and 1.9% debastion remnant hoglin stable chests, all in stacks of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 56.2% debastion remnant other chests in stacks of 1.
Java Edition 1.16[upcoming] piglin banner patterns can be found in 5.6% debastion remnant other chests in groups of 1.
Bedrock Edition 1.16.0[upcoming] they can be found in 62.5% debastion remnant other chests in groups of 1.
Java Edition 1.16[upcoming] soul sands can be found in 26.2% debastion remnant hoglin stable chests in stacks of 2 a 7.
Bedrock Edition 1.16.0[upcoming] they can be found in 57.1% debastion remnant hoglin stable chests in stacks of 2 a 7.
Java Edition 1.16[upcoming] spectral arrows can be found in 29.4% debastion remnant treasure chests in stacks of 5 a 21, in 6.7% debastion remnant other chests in stacks of 2 a 15, and in 12.2% debastion remnant bridge chests in stacks of 2 a 12.
Bedrock Edition 1.16.0[upcoming] they can be found in 50.8% debastion remnant treasure chests in stacks of 5 a 21, in 25.4% debastion remnant bridge chests in stacks of 3 a 20, and in 9.8% debastion remnant other chests in stacks of 3 a 10.
Notes[editar código]
- ↑ 1,00 1,01 1,02 1,03 1,04 1,05 1,06 1,07 1,08 1,09 1,10 1,11 1,12 1,13 Enchantment probabilities are the same as a level-20 to level-39 enchantment would be on an enchantment table that had no cap at level 30, and that was able to apply treasure enchantments (except Soul Speed), and where the chance of multiple enchantments is not reduced.
- ↑ 2,00 2,01 2,02 2,03 2,04 2,05 2,06 2,07 2,08 2,09 2,10 2,11 2,12 2,13 2,14 2,15 2,16 2,17 2,18 2,19 El objeto solo tendrá entre 20 % y 65 % de su durabilidad.
- ↑ 3,00 3,01 3,02 3,03 3,04 3,05 3,06 3,07 3,08 3,09 3,10 3,11 3,12 3,13 3,14 3,15 3,16 3,17 3,18 3,19 3,20 3,21 3,22 3,23 3,24 3,25 All enchantments are equally probable, including treasure enchantments (except Soul Speed), and any level of the enchantment is equally probable.
- ↑ El objeto solo tendrá entre 15 % y 85 % de su durabilidad.
- ↑ 5,0 5,1 5,2 5,3 5,4 Enchantment probabilities are the same as a level-5 to level-20 enchantment would be on an enchantment table that was able to apply treasure enchantments (except Soul Speed), and where the chance of multiple enchantments is not reduced.
- ↑ 6,0 6,1 El objeto solo tendrá entre 10 % y 95 % de su durabilidad.
- ↑ 7,0 7,1 El objeto solo tendrá entre 15 % y 45 % de su durabilidad.
- ↑ Enchantment probabilities are the same as a level-30 enchantment on an enchantment table that was able to apply treasure enchantments (except Soul Speed), and where the chance of multiple enchantments is not reduced.
- ↑ 9,0 9,1 Enchantment probabilities are the same as a level-5 to level-15 enchantment would be on an enchantment table that was able to apply treasure enchantments (except Soul Speed), and where the chance of multiple enchantments is not reduced.
- ↑ Named unknown map, but changed to map 0, the scale level is 1:4, Maps from the same stack are stackable, but maps that are not stacked are unstackable despite looking identical.
- ↑ 'Nothing' does not refer to the chance of an empty chest. Instead, it refers to the chance that the random loot generator does not add any loot on a single roll.
- ↑ 12,0 12,1 Enchanted with a random level of Soul Speed.
- ↑ El objeto solo tendrá entre 10 % y 50 % de su durabilidad.
- ↑ Enchantment probabilities are the same as a level-20 to level-25 enchantment would be on an enchantment table that was able to apply treasure enchantments (except Soul Speed), and where the chance of multiple enchantments is not reduced.
- ↑ El objeto solo tendrá entre 5 % y 15 % de su durabilidad.
- ↑ The stew grants one of the following effects: 5–7 seconds of Blindness, 7–10 seconds of Jump Boost, 7-10 seconds of Night Vision, 10–20 seconds of Poison, 7–10 seconds of Saturation, or 6–8 seconds of Weakness.
local p = { calc_average_amount_this_item_per_pool = function( min_stacksize, max_stacksize, min_pool_rolls, max_pool_rolls, item_weight, pool_total_item_weight ) local avg_stacksize = ( min_stacksize + max_stacksize ) / 2 local avg_rolls = ( min_pool_rolls + max_pool_rolls ) / 2 return avg_stacksize * avg_rolls * item_weight / pool_total_item_weight end, calc_chance_any_of_this_item_per_pool = function( min_pool_rolls, max_pool_rolls, item_weight, pool_total_item_weight ) local inverse_result = 0 -- 1 - inverse_result = return value local inverse_item_weight = pool_total_item_weight - item_weight -- will be used for the division in the for loop to avoid the slightly -- less performant math.pow(). The divisor already includes the probability -- of picking any specific number of rolls. local cur_dividend = inverse_item_weight local cur_divisor = pool_total_item_weight * (max_pool_rolls - min_pool_rolls + 1) for i = 1, max_pool_rolls do if i >= min_pool_rolls then inverse_result = inverse_result + cur_dividend / cur_divisor end cur_dividend = cur_dividend * inverse_item_weight -- simulate pow cur_divisor = cur_divisor * pool_total_item_weight -- simulate pow end return 1 - inverse_result end, java = "[[Edición Java]][[Category:Java Edition specific information]] ", ['java-upcoming'] = "[[Java Edition 1.16]]<sup>[''[[Planned versions#Java Edition|upcoming]]'']</sup>[[Category:Java Edition specific information]] ", bedrock = "[[Edición Bedrock]][[Category:Bedrock Edition specific information]] ", ['bedrock-upcoming'] = "[[Bedrock Edition 1.16.0]]<sup>[''[[Planned versions#Bedrock Edition|upcoming]]'']</sup>[[Category:Bedrock Edition specific information]] ", -- These 'items' define which sprite, label and link to use in the table. -- Properties 'cannot_stack', 'preserve_case', and 'plural' describe how to display the single-item summary in p.base2. -- Order within this 'items' list doesn't matter. items = { ["acacia-log"] = { "block", link="Tronco" }, ["acacia-sapling"] = { "block", link="Sapling" }, ["activator-rail"] = { "block" }, ["ancient-debris"] = { "block", plural=false }, ["apple"] = { "item" }, ["arrow"] = { "item" }, ["bamboo"] = { "item", plural=false }, ["barrel"] = { "block" }, ["basalt"] = { "block", plural=false }, ["beetroot"] = { "item" }, ["beetroot-seeds"] = { "item", plural=false }, ["beetroot-soup"] = { "item", plural=false, cannot_stack=true }, ["bell"] = { "block" }, ["birch-log"] = { "block", link="Tronco" }, ["birch-sapling"] = { "block", link="Sapling" }, ["black-wool"] = { "block", link="Wool", plural=false }, ["block-of-gold"] = { "block", plural="blocks of gold" }, ["blue-ice"] = { "block", plural=false }, ["bone"] = { "item" }, ["bone-block"] = { "block" }, ["book"] = { "item" }, ["book-and-quill"] = { "item", plural=false, title="Book and Quill" }, ["bottle-o'-enchanting"] = { "item", title="Frasco con experiencia", plural="frascos con experiencia" }, ["bread"] = { "item", plural=false }, ["brown-mushroom"] = { "block", link="Mushroom" }, ["brown-wool"] = { "block", link="Wool", plural=false }, ["bucket"] = { "item" }, ["buried-treasure-map"] = { "item", link="Explorer Map" }, ["cactus"] = { "block", plural=false }, ["cake"] = { "block", plural=false }, ["carrot"] = { "item" }, ["chain"] = { "block" }, ["chainmail-boots"] = { "item", link="Armor", cannot_stack=true, plural=false }, ["chainmail-chestplate"] = { "item", link="Armor", cannot_stack=true }, ["chainmail-helmet"] = { "item", link="Armor", cannot_stack=true }, ["chainmail-leggings"] = { "item", link="Armor", cannot_stack=true, plural=false }, ["clay"] = { "item", link="Clay (ball)", plural=false }, ["clock"] = { "item" }, ["coal"] = { "item", plural=false }, ["cocoa-beans"] = { "item", plural=false }, ["cooked-cod"] = { "item", plural=false}, ["cooked-porkchop"] = { "item" }, ["cooked-salmon"] = { "item", plural=false}, ["compass"] = { "item" }, ["crimson-fungus"] = { "block", link="Fungus", plural= "crimson fungi" }, ["crimson-nylium"] = { "block", link="Nylium", plural=false}, ["crimson-roots"] = { "block", link="Roots", plural=false}, ["crossbow"] = { "item", cannot_stack=true }, ["crying-obsidian"] = { "block" }, ["dandelion"] = { "block", link="Flower" }, ["dark-oak-log"] = { "block", link="Tronco" }, ["dark-oak-sapling"] = { "block", link="Sapling" }, ["dead-bush"] = { "block", link="Dead Bush" }, ["detector-rail"] = { "block" }, ["diamond"] = { "item" }, ["diamond-chestplate"] = { "item", link="Armor", cannot_stack=true }, ["diamond-hoe"] = { "item", link="Hoe", cannot_stack=true }, ["diamond-horse-armor"] = { "item", link="Horse Armor", cannot_stack=true, plural=false }, ["disc-13"] = { "item", id='music-disc-13', title="Music Disc (13)", link="Music Disc", cannot_stack=true, plural=false }, ["disc-cat"] = { "item", id='music-disc-cat',title="Music Disc (Cat)", link="Music Disc", cannot_stack=true, plural=false }, ["disc-mellohi"] = { "item", id='music-disc-mellohi',title="Music Disc (Mellohi)", link="Music Disc", cannot_stack=true, plural=false }, ["disc-pigstep"] = { "item", id='music-disc-pigstep', title = "Music Disc (Pigstep)", link="Music Disc", cannot_stack=true, plural=false }, ["disc-wait"] = { "item", id='music-disc-wait',title="Music Disc (Wait)", link="Music Disc", cannot_stack=true, plural=false }, ["egg"] = { "item" }, ["emerald"] = { "item" }, ["empty-map"] = { "item", link="Map", title="Empty Map" }, ["enchanted-book"] = { "item", id='enchanted-book', title="Enchanted Book", link="Enchanted Book", cannot_stack=true, note="enchant-with-levels-30" }, ["enchanted-book-rnd"] = { "item", id='enchanted-book', title="Enchanted Book", link="Enchanted Book", cannot_stack=true, note="enchant-randomly" }, ["enchanted-book-rnd-soul-speed"] = { "item", id='enchanted-book', title="Enchanted Book", link="Enchanted Book", cannot_stack=true, note="enchant-randomly-soul-speed" }, ["enchanted-fishing-rod"] = { "item", id="fishing-rod", link="Fishing Rod", cannot_stack=true, note="enchant-randomly" }, ["enchanted-golden-apple"] = { "item" }, ["ender-pearl"] = { "item" }, ["feather"] = { "item" }, ["fern"] = { "block", link="Grass" }, ["fire-charge"] = { "item" }, ["flint"] = { "item", plural=false }, ["flint-and-steel"] = { "item", cannot_stack=true, plural=false }, ["flower-pot"] = { "item" }, ["furnace"] = { "block" }, ["gilded-blackstone"] = { "block", plural=false }, ["glistering-melon-slice"] = { "item" }, ["glowstone"] = { "block" }, ["golden-apple"] = { "item" }, ["golden-boots"] = { "item", link="Armor", cannot_stack=true, plural=false }, ["golden-carrot"] = { "item" }, ["golden-chestplate"] = { "item", link="Armor", cannot_stack=true }, ["golden-helmet"] = { "item", link="Armor", cannot_stack=true }, ["golden-hoe"] = { "item", link="Hoe", cannot_stack=true }, ["golden-horse-armor"] = { "item", link="Horse Armor", cannot_stack=true, plural=false }, ["golden-leggings"] = { "item", link="Armor", cannot_stack=true, plural=false }, ["golden-sword"] = { "item", link="Sword", cannot_stack=true }, ["gold-ingot"] = { "item" }, ["gold-nugget"] = { "item" }, ["grass"] = { "block", link="Grass", plural=false }, ["gray-wool"] = { "block", link="Wool", plural=false }, ["green-dye"] = { "item", link="Dye", plural=false }, ["gunpowder"] = { "item", plural=false }, ["heart-of-the-sea"] = { "item", plural=false, link="Heart of the Sea" }, ["ink-sac"] = { "item" }, ["iron-boots"] = { "item", link="Armor", cannot_stack=true, plural=false }, ["iron-chestplate"] = { "item", link="Armor", cannot_stack=true }, ["iron-helmet"] = { "item", link="Armor", cannot_stack=true }, ["iron-horse-armor"] = { "item", link="Horse Armor", cannot_stack=true, plural=false }, ["iron-ingot"] = { "item" }, ["iron-leggings"] = { "item", link="Armor", cannot_stack=true, plural=false }, ["iron-nugget"] = { "item" }, ["iron-pickaxe"] = { "item", link="Pickaxe", cannot_stack=true }, ["iron-shovel"] = { "item", link="Shovel", cannot_stack=true }, ["iron-sword"] = { "item", link="Sword", cannot_stack=true }, ["jungle-log"] = { "block", link="Tronco" }, ["jungle-sapling"] = { "block", link="Sapling" }, ["lapis-lazuli"] = { "item", plural=false }, ["large-fern"] = { "block", link="Grass" }, ["lead"] = { "item" }, ["leather"] = { "item", plural=false }, ["leather-boots"] = { "item", link="Armor", cannot_stack=true, plural=false }, ["leather-cap"] = { "item", link="Armor", cannot_stack=true }, ["leather-pants"] = { "item", link="Armor", cannot_stack=true, plural=false }, ["leather-tunic"] = { "item", link="Armor", cannot_stack=true }, ["light-gray-wool"] = { "block", link="Wool", plural=false }, ["light-weighted-pressure-plate"] = { "block", link="Pressure Plate" }, ["lodestone"] = { "block" }, ["melon-seeds"] = { "item", plural=false }, ["magma-cream"] = { "item", plural=false }, ["magma-block"] = { "block" }, ["name-tag"] = { "item" }, ["netherite-boots"] = { "item", link="Armor", cannot_stack=true, plural=false }, ["netherite-chestplate"] = { "item", link="Armor", cannot_stack=true }, ["netherite-helmet"] = { "item", link="Armor", cannot_stack=true }, ["netherite-ingot"] = { "item" }, ["netherite-leggings"] = { "item", link="Armor", cannot_stack=true, plural=false }, ["netherite-scrap"] = { "item" }, ["nether-wart"] = { "item", plural=false }, ["nether-quartz"] = { "item", plural=false }, ["oak-log"] = { "block", link="Tronco" }, ["oak-planks"] = { "block", link="Madera", id="oak-wood-planks", plural=false }, ["oak-sapling"] = { "block", link="Sapling" }, ["oak-sign"] = { "item", link="Sign" }, ["obsidian"] = { "block", plural=false }, ["paper"] = { "item", plural=false }, ["piglin-banner-pattern"] = { "item", id="banner-pattern", link="Banner Pattern", cannot_stack=true }, ["poisonous-potato"] = { "item", plural="poisonous potatoes" }, ["polished-basalt"] = { "block", plural=false}, ["poppy"] = { "block", link="Flower", plural="poppies" }, ["potato"] = { "item", plural="potatoes" }, ["potion-of-regeneration"] = { "item", link="Potion", title="Potion of Regeneration", plural=false, preserve_case=true }, ["potion-of-water-breathing"] = { "item", link="Potion", title="Potion of Water Breathing", plural=false, preserve_case=true }, ["powered-rail"] = { "block", title="Powered Rails", plural=false }, ["prismarine-crystals"] = { "item", plural=false }, ["pumpkin"] = { "block" }, ["pumpkin-pie"] = { "item", plural=false }, ["pumpkin-seeds"] = { "item", plural=false }, ["rail"] = { "block", title="Rails", plural=false }, ["raw-beef"] = { "item", link="Raw Beef", plural=false }, ["raw-cod"] = { "item", link="Raw Cod", plural=false }, ["raw-mutton"] = { "item", link="Raw Mutton", plural=false }, ["raw-porkchop"] = { "item", link="Raw Porkchop" }, ["raw-salmon"] = { "item", link="Raw Salmon", plural=false }, ["redstone"] = { "item", id="redstone-dust", title="Redstone Dust", plural=false }, ["rotten-flesh"] = { "item", plural=false }, ["saddle"] = { "item", cannot_stack=true }, ["sand"] = { "block", plural=false }, ["shears"] = { "item", plural=false, cannot_stack=true }, ["smooth-stone"] = { "block", plural=false }, ["snowball"] = { "item", link="Snowball" }, ["snow-block"] = { "block", link="Snow Block" }, ["soul-sand"] = { "block" }, ["spectral-arrow"] = { "item" }, ["spider-eye"] = { "item" }, ["spruce-log"] = { "block", link="Tronco" }, ["spruce-sapling"] = { "block", link="Sapling" }, ["spruce-sign"] = { "item", link="Sign" }, ["stick"] = { "item" }, ["stone"] = { "block", plural=false }, ["stone-axe"] = { "item", link="Axe", cannot_stack=true }, ["stone-bricks"] = { "block", plural=false }, ["stone-pickaxe"] = { "item", link="Pickaxe", cannot_stack=true }, ["string"] = { "item", plural=false }, ["suspicious-stew"] = { "item", plural=false, note="suspicious-stew" }, ["sweet-berries"] = { "item", plural=false }, ["tall-grass"] = { "block", plural=false, link="Grass" }, ["tnt"] = { "block", title="TNT", plural=false, preserve_case=true }, ["torch"] = { "block" }, ["tripwire-hook"] = { "block" }, ["water-bucket"] = { "item", cannot_stack=true }, ["wheat"] = { "item", plural=false }, ["wheat-seeds"] = { "item", plural=false }, ["white-wool"] = { "block", link="Wool", plural=false }, ["wooden-axe"] = { "item", link="Axe", cannot_stack=true }, ["wooden-hoe"] = { "item", link="Hoe", cannot_stack=true }, ["wooden-pickaxe"] = { "item", link="Pickaxe", cannot_stack=true }, ["yellow-dye"] = { "item", link="Dye", plural=false }, ["map"] = { "item", link="Map", note="map" }, ["damaged-random-enchanted-netherite-axe"] = { "item", id="netherite-axe", title="Damaged Enchanted Netherite Axe", link="Axe", note="enchant-randomly", note1="damaged-0.15-0.85", cannot_stack=true }, ["damaged-netherite-boots"] = { "item", id="netherite-boots", link="Armor", note="damaged-0.2-0.65", cannot_stack=true, plural=false}, ["damaged-level-enchanted-netherite-boots"] = { "item", id="netherite-boots", title="Damaged Enchanted Netherite Boots", link="Armor", note="enchant-with-levels-5-20", note1="damaged-0.2-0.65", cannot_stack=true, plural=false }, ["damaged-random-enchanted-netherite-boots"] = { "item", id="netherite-boots", title="Damaged Enchanted Netherite Boots", link="Armor", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true, plural=false }, ["damaged-netherite-chestplate"] = { "item", id="netherite-chestplate", link="Armor", note="damaged-0.2-0.65", cannot_stack=true}, ["damaged-level-enchanted-netherite-chestplate"] = { "item", id="netherite-chestplate", title="Damaged Enchanted Netherite Chestplate", link="Armor", note="enchant-with-levels-5-20", note1="damaged-0.2-0.65", cannot_stack=true }, ["damaged-random-enchanted-netherite-chestplate"] = { "item", id="netherite-chestplate", title="Damaged Enchanted Netherite Chestplate", link="Armor", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true }, ["damaged-netherite-helmet"] = { "item", id="netherite-helmet", link="Armor", note="damaged-0.2-0.65", cannot_stack=true}, ["damaged-random-enchanted-netherite-hoe"] = { "item", id="netherite-hoe", title="Damaged Enchanted Netherite Hoe", link="Hoe", note="enchant-randomly", note1="damaged-0.1-0.95", cannot_stack=true }, ["damaged-level-enchanted-netherite-helmet"] = { "item", id="netherite-helmet", title="Damaged Enchanted Netherite Helmet", link="Armor", note="enchant-with-levels-5-20", note1="damaged-0.2-0.65", cannot_stack=true }, ["damaged-random-enchanted-netherite-helmet"] = { "item", id="netherite-helmet", title="Damaged Enchanted Netherite Helmet", link="Armor", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true }, ["damaged-netherite-leggings"] = { "item", id="netherite-leggings", link="Armor", note="damaged-0.2-0.65", cannot_stack=true, plural=false}, ["damaged-level-enchanted-netherite-leggings"] = { "item", id="netherite-leggings", title="Damaged Enchanted Netherite Leggings", link="Armor", note="enchant-with-levels-5-20", note1="damaged-0.2-0.65", cannot_stack=true, plural=false }, ["damaged-random-enchanted-netherite-leggings"] = { "item", id="netherite-leggings", title="Damaged Enchanted Netherite Leggings", link="Armor", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true, plural=false }, ["damaged-random-enchanted-netherite-pickaxe"] = { "item", id="netherite-pickaxe", title="Damaged Enchanted Netherite Pickaxe", link="Pickaxe", note="enchant-randomly", note1="damaged-0.1-0.95", cannot_stack=true }, ["damaged-random-enchanted-netherite-shovel"] = { "item", id="netherite-shovel", title="Damaged Enchanted Netherite Shovel", link="Shovel", note="enchant-randomly", note1="damaged-0.15-0.45", cannot_stack=true}, ["damaged-netherite-sword"] = { "item", id="netherite-sword", link="Sword", note="damaged-0.2-0.65", cannot_stack=true}, ["damaged-level-enchanted-netherite-sword"] = { "item", id="netherite-sword", title="Damaged Enchanted Netherite Sword", link="Sword", note="enchant-with-levels-5-20", note1="damaged-0.2-0.65", cannot_stack=true }, ["damaged-random-enchanted-netherite-sword"] = { "item", id="netherite-sword", title="Damaged Enchanted Netherite Sword", link="Sword", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true }, ["damaged-diamond-boots"] = { "item", id="diamond-boots", link="Armor", note="damaged-0.2-0.65", cannot_stack=true, plural=false}, ["level-enchanted-diamond-boots"] = { "item", id="diamond-boots", title="Enchanted Diamond Boots", link="Armor", note="enchant-with-levels-20-39", cannot_stack=true, plural=false }, ["damaged-random-enchanted-diamond-boots"] = { "item", id="diamond-boots", title="Damaged Enchanted Diamond Boots", link="Armor", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true, plural=false }, ["damaged-diamond-chestplate"] = { "item", id="diamond-chestplate", link="Armor", note="damaged-0.2-0.65", cannot_stack=true}, ["level-enchanted-diamond-chestplate"] = { "item", id="diamond-chestplate", title="Enchanted Diamond Chestplate", link="Armor", note="enchant-with-levels-20-39", cannot_stack=true }, ["damaged-random-enchanted-diamond-chestplate"] = { "item", id="diamond-chestplate", title="Damaged Enchanted Diamond Chestplate", link="Armor", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true }, ["damaged-diamond-helmet"] = { "item", id="diamond-helmet", link="Armor", note="damaged-0.2-0.65", cannot_stack=true}, ["level-enchanted-diamond-helmet"] = { "item", id="diamond-helmet", title="Enchanted Diamond Helmet", link="Armor", note="enchant-with-levels-20-39", cannot_stack=true }, ["damaged-random-enchanted-diamond-helmet"] = { "item", id="diamond-helmet", title="Damaged Enchanted Diamond Helmet", link="Armor", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true }, ["damaged-diamond-leggings"] = { "item", id="diamond-leggings", link="Armor", note="damaged-0.2-0.65", cannot_stack=true, plural=false}, ["level-enchanted-diamond-leggings"] = { "item", id="diamond-leggings", title="Enchanted Diamond Leggings", link="Armor", note="enchant-with-levels-20-39", cannot_stack=true, plural=false }, ["damaged-random-enchanted-diamond-leggings"] = { "item", id="diamond-leggings", title="Damaged Enchanted Diamond Leggings", link="Armor", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true, plural=false }, ["level-enchanted-diamond-pickaxe"] = { "item", id="diamond-pickaxe", title="Enchanted Diamond Pickaxe", link="Pickaxe", note="enchant-with-levels-20-39", cannot_stack=true }, ["level-enchanted-diamond-shovel"] = { "item", id="diamond-shovel", title="Enchanted Diamond Shovel", link="Shovel", note="enchant-with-levels-20-39", cannot_stack=true }, ["damaged-random-enchanted-diamond-shovel"] = { "item", id="diamond-shovel", title="Damaged Enchanted Diamond Shovel", link="Shovel", note="enchant-randomly", note1="damaged-0.15-0.45", cannot_stack=true}, ["damaged-diamond-sword"] = { "item", id="diamond-sword", link="Sword", note="damaged-0.2-0.65", cannot_stack=true}, ["level-enchanted-diamond-sword"] = { "item", id="diamond-sword", title="Enchanted Diamond Sword", link="Sword", note="enchant-with-levels-20-39", cannot_stack=true }, ["damaged-random-enchanted-diamond-sword"] = { "item", id="diamond-sword", title="Damaged Enchanted Diamond Sword", link="Sword", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true }, ["level-enchanted-iron-boots"] = { "item", id="iron-boots", title="Enchanted Iron Boots", link="Armor", note="enchant-with-levels-20-39", cannot_stack=true, plural=false }, ["level-enchanted-iron-chestplate"] = { "item", id="iron-chestplate", title="Enchanted Iron Chestplate", link="Armor", note="enchant-with-levels-20-39", cannot_stack=true }, ["level-enchanted-iron-helmet"] = { "item", id="iron-helmet", title="Enchanted Iron Helmet", link="Armor", note="enchant-with-levels-20-39", cannot_stack=true }, ["level-enchanted-iron-leggings"] = { "item", id="iron-leggings", title="Enchanted Iron Leggings", link="Armor", note="enchant-with-levels-20-39", cannot_stack=true, plural=false }, ["level-enchanted-iron-pickaxe"] = { "item", id="iron-pickaxe", title="Enchanted Iron Pickaxe", link="Pickaxe", note="enchant-with-levels-20-39", cannot_stack=true }, ["level-enchanted-iron-shovel"] = { "item", id="iron-shovel", title="Enchanted Iron Shovel", link="Shovel", note="enchant-with-levels-20-39", cannot_stack=true }, ["level-enchanted-iron-sword"] = { "item", id="iron-sword", title="Enchanted Iron Sword", link="Sword", note="enchant-with-levels-20-39", cannot_stack=true }, ["random-enchanted-golden-axe"] = { "item", id="golden-axe", title="Enchanted Golden Axe", link="Axe", note="enchant-randomly", cannot_stack=true }, ["level-enchanted-golden-boots"] = { "item", id="golden-boots", title="Enchanted Golden Boots", link="Armor", note="enchant-with-levels-5-15", cannot_stack=true, plural=false }, ["random-enchanted-golden-boots"] = { "item", id="golden-boots", title="Enchanted Golden Boots", link="Armor", note="enchant-randomly", cannot_stack=true, plural=false }, ["soul-speed-enchanted-golden-boots"] = { "item", id="golden-boots", title="Enchanted Golden Boots with Soul Speed", link="Armor", note="enchant-randomly-soul-speed", cannot_stack=true, plural=false }, ["level-enchanted-golden-chestplate"] = { "item", id="golden-chestplate", title="Enchanted Golden Chestplate", link="Armor", note="enchant-with-levels-5-15", cannot_stack=true }, ["random-enchanted-golden-chestplate"] = { "item", id="golden-chestplate", title="Enchanted Golden Chestplate", link="Armor", note="enchant-randomly", cannot_stack=true }, ["level-enchanted-golden-helmet"] = { "item", id="golden-helmet", title="Enchanted Golden Helmet", link="Armor", note="enchant-with-levels-20-39", cannot_stack=true }, ["random-enchanted-golden-helmet"] = { "item", id="golden-helmet", title="Enchanted Golden Helmet", link="Armor", note="enchant-randomly", cannot_stack=true }, ["level-enchanted-golden-hoe"] = { "item", id="golden-hoe", title="Enchanted Golden Hoe", link="Hoe", note="enchant-with-levels-20-39", cannot_stack=true }, ["random-enchanted-golden-hoe"] = { "item", id="golden-hoe", title="Enchanted Golden Hoe", link="Hoe", note="enchant-randomly", cannot_stack=true }, ["level-enchanted-golden-leggings"] = { "item", id="golden-leggings", title="Enchanted Golden Leggings", link="Armor", note="enchant-with-levels-20-39", cannot_stack=true, plural=false }, ["random-enchanted-golden-leggings"] = { "item", id="golden-leggings", title="Enchanted Golden Leggings", link="Armor", note="enchant-randomly", cannot_stack=true, plural=false }, ["random-enchanted-golden-pickaxe"] = { "item", id="golden-pickaxe", title="Enchanted Golden Pickaxe", link="Pickaxe", note="enchant-randomly", cannot_stack=true }, ["random-enchanted-golden-shovel"] = { "item", id="golden-shovel", title="Enchanted Golden Shovel", link="Shovel", note="enchant-randomly", cannot_stack=true }, ["random-enchanted-golden-sword"] = { "item", id="golden-sword", title="Enchanted Golden Sword", link="Sword", note="enchant-randomly", cannot_stack=true }, ["random-enchanted-leather-boots"] = { "item", id="leather-boots", title="Enchanted Leather Boots", link="Armor", note="enchant-randomly", cannot_stack=true, plural=false }, ["random-enchanted-leather-cap"] = { "item", id="leather-cap", title="Enchanted Leather Cap", link="Armor", note="enchant-randomly", cannot_stack=true }, ["random-enchanted-leather-pants"] = { "item", id="leather-pants", title="Enchanted Leather Pants", link="Armor", note="enchant-randomly", cannot_stack=true, plural=false }, ["random-enchanted-leather-tunic"] = { "item", id="leather-tunic", title="Enchanted Leather Tunic", link="Armor", note="enchant-randomly", cannot_stack=true }, ["damaged-level-enchanted-crossbow"] = { "item", id="crossbow", title="Damaged Enchanted Crossbow", link="Crossbow", note="enchant-with-levels-20-25", note1="damaged-0.05-0.15", cannot_stack=true }, ["damaged-random-enchanted-crossbow"] = { "item", id="crossbow", title="Damaged Enchanted Crossbow", link="Crossbow", note="enchant-randomly", note1="damaged-0.1-0.5", cannot_stack=true }, ["empty"] = { "block", id="air", link='', title='Nothing', plural=false, note="nothing" }, }, notes = { ["enchant-randomly"] = "All enchantments are equally probable, ''including'' [[treasure enchantment]]s (except [[Soul Speed]]), and any level of the enchantment is equally probable.", ["enchant-randomly-soul-speed"] = "Enchanted with a random level of [[Soul Speed]].", ["enchant-with-levels-5-15"] = "Enchantment probabilities are the same as a level-5 to level-15 [[enchantment mechanics|enchantment]] would be on an [[enchantment table]] that was able to apply [[treasure enchantment]]s (except [[Soul Speed]]), and where the chance of multiple enchantments is not reduced.", ["enchant-with-levels-5-20"] = "Enchantment probabilities are the same as a level-5 to level-20 [[enchantment mechanics|enchantment]] would be on an [[enchantment table]] that was able to apply [[treasure enchantment]]s (except [[Soul Speed]]), and where the chance of multiple enchantments is not reduced.", ["enchant-with-levels-20-25"] = "Enchantment probabilities are the same as a level-20 to level-25 [[enchantment mechanics|enchantment]] would be on an [[enchantment table]] that was able to apply [[treasure enchantment]]s (except [[Soul Speed]]), and where the chance of multiple enchantments is not reduced.", ["enchant-with-levels-20-25"] = "Enchantment probabilities are the same as a level-20 to level-25 [[enchantment mechanics|enchantment]] would be on an [[enchantment table]] that was able to apply [[treasure enchantment]]s (except [[Soul Speed]]), and where the chance of multiple enchantments is not reduced.", ["enchant-with-levels-20-39"] = "Enchantment probabilities are the same as a level-20 to level-39 [[enchantment mechanics|enchantment]] would be on an [[enchantment table]] that had no cap at level 30, and that was able to apply [[treasure enchantment]]s (except [[Soul Speed]]), and where the chance of multiple enchantments is not reduced.", ["enchant-with-levels-30"] = "Enchantment probabilities are the same as a level-30 enchantment on an [[enchantment table]] that was able to apply [[treasure enchantment]]s (except [[Soul Speed]]), and where the chance of multiple enchantments is not reduced.", ["damaged-0.05-0.15"] = "El objeto solo tendrá entre 5 % y 15 % de su durabilidad.", ["damaged-0.1-0.95"] = "El objeto solo tendrá entre 10 % y 95 % de su durabilidad.", ["damaged-0.15-0.45"] = "El objeto solo tendrá entre 15 % y 45 % de su durabilidad.", ["damaged-0.15-0.85"] = "El objeto solo tendrá entre 15 % y 85 % de su durabilidad.", ["damaged-0.1-0.5"] = "El objeto solo tendrá entre 10 % y 50 % de su durabilidad.", ["damaged-0.2-0.65"] = "El objeto solo tendrá entre 20 % y 65 % de su durabilidad.", ["nothing"] = "'Nothing' does not refer to the chance of an empty chest. Instead, it refers to the chance that the random loot generator does not add any loot ''on a single roll''.", ["suspicious-stew"] = "The stew grants one of the following effects: 5–7 seconds of [[Blindness]], 7–10 seconds of [[Jump Boost]], 7-10 seconds of [[Night Vision]], 10–20 seconds of [[Poison]], 7–10 seconds of [[Saturation]], or 6–8 seconds of [[Weakness]].", ["map"] = "Named unknown map, but changed to map 0, the scale level is 1:4, Maps from the same stack are stackable, but maps that are not stacked are unstackable despite looking identical." }, -- <ref group='note' name='enchant-randomly'> -- NOTE: order here doesn't matter. -- * in the table, chests are sorted in alphabetical order -- * in the table, items are sorted by chance, then by avg#, then alphabetically. -- * If poolsJavaUpcoming is omitted, poolsJava is used. To omit a pool entirely, set it to {}. -- * If poolsBedrock is omitted, it implies that Bedrock has the same pools as Java. This is a shortcoming; it ought to be made explicit somehow. chests = { ["shipwreck-map"] = { -- shipwreck_map.json header = "Map", superheader = "[[Shipwreck]]", link = "[[shipwreck]] map", structure = "Shipwreck", container = "Map chest", structID = "shipwreck", poolsJava = { { rolls = {1,1}, items = { ["buried-treasure-map"] = {1,1,1}, } }, { rolls = {3,3}, items = { ["compass"] = {1,1,1}, ["empty-map"] = {1,1,1}, ["clock"] = {1,1,1}, ["paper"] = {1,10,20}, ["feather"] = {1,5,10}, ["book"] = {1,5,5}, } }, }, poolsJavaUpcoming = {}, poolsBedrock = { { rolls = {1,1}, items = { ["buried-treasure-map"] = {1,1,1}, } }, { rolls = {3,3}, items = { ["compass"] = {1,1,1}, ["map"] = {1,1,1}, ["clock"] = {1,1,1}, ["paper"] = {1,10,20}, ["feather"] = {1,5,10}, ["book"] = {1,5,5}, } }, }, poolsBedrockUpcoming = {} }, ["shipwreck-supply"] = { -- shipwreck_supply.json header = "Supply", superheader = "[[Shipwreck]]", link = "[[shipwreck]] supply", structure = "Shipwreck", container = "Supply chest", structID = "shipwreck", poolsJava = { { rolls = {3,10}, items = { ["paper"] = {1,12,8}, ["potato"] = {2,6,7}, ["poisonous-potato"] = {2,6,7}, ["carrot"] = {4,8,7}, ["wheat"] = {8,21,7}, ["coal"] = {2,8,6}, ["rotten-flesh"] = {5,24,5}, ["bamboo"] = {1,3,2}, ["suspicious-stew"] = {1,1,10}, ["pumpkin"] = {1,3,2}, ["gunpowder"] = {1,5,3}, ["tnt"] = {1,2,1}, ["random-enchanted-leather-cap"] = {1,1,3}, ["random-enchanted-leather-tunic"] = {1,1,3}, ["random-enchanted-leather-pants"] = {1,1,3}, ["random-enchanted-leather-boots"] = {1,1,3}, } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["shipwreck-treasure"] = { -- shipwreck_treasure.json in Java and shipwrecktreasure.json in Bedrock header = "Treasure", superheader = "[[Shipwreck]]", link = "[[shipwreck]] treasure", structure = "Naufragio", container = "Cofre del tesoro", structID = "shipwreck", poolsJava = { { rolls = {3,6}, items = { ["iron-ingot"] = {1,5,90}, ["gold-ingot"] = {1,5,10}, ["emerald"] = {1,5,40}, ["diamond"] = {1,1,5}, ["bottle-o'-enchanting"] = {1,1,5}, } }, { rolls = {2,5}, items = { ["iron-nugget"] = {1,10,50}, ["gold-nugget"] = {1,10,10}, ["lapis-lazuli"] = {1,10,20}, } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["buried-treasure"] = { -- buried_treasure.json in Java and buriedtreasure.json in Bedrock header = "[[Buried treasure]]", link = "[[buried treasure]]", structure = "Tesoro enterrado", container = "", structID = "buried-treasure", poolsJava = { { rolls = {1,1}, items = { ["heart-of-the-sea"] = {1,1,1}, } }, { rolls = {5,8}, items = { ["iron-ingot"] = {1,4,20}, ["gold-ingot"] = {1,4,10}, ["tnt"] = {1,2,5}, } }, { rolls = {1,3}, items = { ["emerald"] = {4,8,5}, ["diamond"] = {1,2,5}, ["prismarine-crystals"] = {1,5,5}, } }, { rolls = {0,1}, items = { ["leather-tunic"] = {1,1,1}, ["iron-sword"] = {1,1,1}, } }, { rolls = {2,2}, items = { ["cooked-cod"] = {2,4,1}, ["cooked-salmon"] = {2,4,1}, } }, }, poolsJavaUpcoming = {}, poolsBedrock = { { rolls = {1,1}, items = { ["heart-of-the-sea"] = {1,1,1}, } }, { rolls = {5,12}, items = { ["prismarine-crystals"] = {1,5,5}, ["iron-ingot"] = {3,5,20}, ["gold-ingot"] = {1,5,10}, ["tnt"] = {1,2,10}, ["diamond"] = {1,1,15}, ["disc-wait"] = {1,1,5}, ["disc-mellohi"] = {1,1,5}, ["name-tag"] = {1,1,10}, ["chainmail-chestplate"] = {1,1,20}, ["chainmail-helmet"] = {1,1,20}, ["chainmail-leggings"] = {1,1,20}, ["chainmail-boots"] = {1,1,20}, ["book-and-quill"] = {1,2,5}, ["lead"] = {1,3,10}, ["bottle-o'-enchanting"] = {1,1,3}, ["potion-of-water-breathing"] = {1,1,15}, ["potion-of-regeneration"] = {1,1,10}, ["cake"] = {1,1,1}, } }, }, poolsBedrockUpcoming = {} }, ["underwater-ruin-big"] = { -- underwater_ruin_big.json header = "Big", superheader = "[[Underwater ruins]]", link = "big [[underwater ruins]]", structure = "Underwater ruins", container = "Big ruins chest", structID = "underwater-ruins", poolsJava = { { rolls = {2,8}, items = { ["coal"] = {1,4,10}, ["gold-nugget"] = {1,3,10}, ["emerald"] = {1,1,1}, ["wheat"] = {2,3,10}, } }, { rolls = {1,1}, items = { ["golden-apple"] = {1,1,1}, ["enchanted-book-rnd"] = {1,1,5}, ["leather-tunic"] = {1,1,1}, ["golden-helmet"] = {1,1,1}, ["enchanted-fishing-rod"] = {1,1,5}, ["buried-treasure-map"] = {1,1,10}, } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["underwater-ruin-small"] = { -- underwater_ruin_small.json header = "Small", superheader = "[[Underwater ruins]]", link = "small [[underwater ruins]]", structure = "Underwater ruins", container = "Small ruins chest", structID = "underwater-ruins", poolsJava = { { rolls = {2,8}, items = { ["coal"] = {1,4,10}, ["stone-axe"] = {1,1,2}, ["rotten-flesh"] = {1,1,5}, ["emerald"] = {1,1,1}, ["wheat"] = {2,3,10}, } }, { rolls = {1,1}, items = { ["leather-tunic"] = {1,1,1}, ["golden-helmet"] = {1,1,1}, ["enchanted-fishing-rod"] = {1,1,5}, ["buried-treasure-map"] = {1,1,5}, } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["village-armorer"] = { -- village\village_armorer.json header = "Armorer", superheader = "[[Aldea]]", link = "[[village]] armorer", structure = "Aldea", container = "Armorer's chest", structID = "village", poolsJava = { { rolls = {1,5}, items = { ["iron-ingot"] = {1,3,2}, ["bread"] = {1,4,4}, ["iron-helmet"] = {1,1,1}, ["emerald"] = {1,1,1} } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["village-butcher"] = { -- village\village_butcher.json header = "Butcher", superheader = "[[Village]]", link = "[[village]] butcher", structure = "Village", container = "Butcher's chest", structID = "village", poolsJava = { { rolls = {1,5}, items = { ["emerald"] = {1,1,1}, ["raw-porkchop"] = {1,3,6}, ["wheat"] = {1,3,6}, ["raw-beef"] = {1,3,6}, ["raw-mutton"] = {1,3,6}, ["coal"] = {1,3,3} } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["village-cartographer"] = { -- village\village_cartographer.json header = "Cartographer", superheader = "[[Village]]", link = "[[village]] cartographer", structure = "Village", container = "Cartographer's chest", structID = "village", poolsJava = { { rolls = {1,5}, items = { ["empty-map"] = {1,3,10}, ["paper"] = {1,5,15}, ["compass"] = {1,1,5}, ["bread"] = {1,4,15}, ["stick"] = {1,2,5} } }, }, poolsJavaUpcoming = {}, poolsBedrock = { { rolls = {1,5}, items = { ["map"] = {1,3,10}, ["paper"] = {1,5,15}, ["compass"] = {1,1,5}, ["bread"] = {1,4,15}, ["oak-sapling"] = {1,2,5} } }, }, poolsBedrockUpcoming = {} }, ["village-fisherman"] = { -- village\village_fisher.json, Java-exclusive as of Java 1.14 / Bedrock 1.12 header = "Fisherman", superheader = "[[Village]]", link = "[[village]] fisherman", structure = "Village", container = "Fisherman's chest", structID = "village", poolsJava = { { rolls = {1,5}, items = { ["emerald"] = {1,1,1}, ["raw-cod"] = {1,3,2}, ["raw-salmon"] = {1,3,1}, ["water-bucket"] = {1,3,1}, ["barrel"] = {1,3,1}, ["wheat-seeds"] = {1,3,3}, ["coal"] = {1,3,2} } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["village-fletcher"] = { -- village\village_fletcher.json header = "Fletcher", superheader = "[[Village]]", link = "[[village]] fletcher", structure = "Village", container = "Fletcher's chest", structID = "village", poolsJava = { { rolls = {1,5}, items = { ["emerald"] = {1,1,1}, ["arrow"] = {1,3,2}, ["feather"] = {1,3,6}, ["egg"] = {1,3,2}, ["flint"] = {1,3,6}, ["stick"] = {1,3,6} } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["village-mason"] = { -- village\village_mason.json header = "Mason", superheader = "[[Village]]", link = "[[village]] mason", structure = "Village", container = "Mason's chest", structID = "village", poolsJava = { { rolls = {1,5}, items = { ["clay"] = {1,3,1}, ["flower-pot"] = {1,1,1}, ["stone"] = {1,1,2}, ["stone-bricks"] = {1,1,2}, ["bread"] = {1,4,4}, ["yellow-dye"] = {1,1,1}, ["smooth-stone"] = {1,1,1}, ["emerald"] = {1,1,1} } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["village-shepherd"] = { -- village\village_shepherd.json header = "Shepherd", superheader = "[[Village]]", link = "[[village]] shepherd", structure = "Village", container = "Shepherd's chest", structID = "village", poolsJava = { { rolls = {1,5}, items = { ["white-wool"] = {1,8,6}, ["black-wool"] = {1,3,3}, ["gray-wool"] = {1,3,2}, ["brown-wool"] = {1,3,2}, ["light-gray-wool"] = {1,3,2}, ["emerald"] = {1,1,1}, ["shears"] = {1,1,1}, ["wheat"] = {1,6,6} } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["village-tannery"] = { -- village\village_tannery.json header = "Tannery", superheader = "[[Village]]", link = "[[village]] tannery", structure = "Village", container = "Tanner's chest", structID = "village", poolsJava = { { rolls = {1,5}, items = { ["leather"] = {1,3,1}, ["leather-tunic"] = {1,1,2}, ["leather-boots"] = {1,1,2}, ["leather-cap"] = {1,1,2}, ["bread"] = {1,4,5}, ["leather-pants"] = {1,1,2}, ["saddle"] = {1,1,1}, ["emerald"] = {1,4,1} } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["village-temple"] = { -- village\village_temple.json header = "Temple", superheader = "[[Village]]", link = "[[village]] temple", structure = "Village", container = "Temple chest", structID = "village", poolsJava = { { rolls = {3,8}, items = { ["redstone"] = {1,4,2}, ["bread"] = {1,4,7}, ["rotten-flesh"] = {1,4,7}, ["lapis-lazuli"] = {1,4,1}, ["gold-ingot"] = {1,4,1}, ["emerald"] = {1,4,1} } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["village-toolsmith"] = { -- village\village_toolsmith.json header = "Toolsmith", superheader = "[[Village]]", link = "[[village]] toolsmith", structure = "Village", container = "Toolsmith's chest", structID = "village", poolsJava = { { rolls = {3,8}, items = { ["diamond"] = {1,3,1}, ["iron-ingot"] = {1,5,5}, ["gold-ingot"] = {1,3,1}, ["bread"] = {1,3,15}, ["iron-pickaxe"] = {1,1,5}, ["coal"] = {1,3,1}, ["stick"] = {1,3,20}, ["iron-shovel"] = {1,1,5} } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["village-weaponsmith"] = { -- village\village_weaponsmith.json header = "Weaponsmith", superheader = "[[Village]]", link = "[[village]] weaponsmith", structure = "Village", container = "Weaponsmith's chest", structID = "village", poolsJava = { { rolls = {3,8}, items = { ["diamond"] = {1,3,3}, ["iron-ingot"] = {1,5,10}, ["gold-ingot"] = {1,3,5}, ["bread"] = {1,3,15}, ["apple"] = {1,3,15}, ["iron-pickaxe"] = {1,1,5}, ["iron-sword"] = {1,1,5}, ["iron-chestplate"] = {1,1,5}, ["iron-helmet"] = {1,1,5}, ["iron-leggings"] = {1,1,5}, ["iron-boots"] = {1,1,5}, ["obsidian"] = {3,7,5}, ["oak-sapling"] = {3,7,5}, ["saddle"] = {1,1,3}, ["iron-horse-armor"] = {1,1,1}, ["golden-horse-armor"] = {1,1,1}, ["diamond-horse-armor"] = {1,1,1} } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["village-desert-house"] = { -- village\village_desert_house.json header = "Desert House", superheader = "[[Village]]", link = "desert [[village]] house", structure = "Village", container = "Desert house chest", structID = "village", poolsJava = { { rolls = {3,8}, items = { ["clay"] = {1,1,1}, ["green-dye"] = {1,1,1}, ["cactus"] = {1,4,10}, ["wheat"] = {1,7,10}, ["bread"] = {1,4,10}, ["book"] = {1,1,1}, ["dead-bush"] = {1,3,2}, ["emerald"] = {1,3,1} } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["village-plains-house"] = { -- village\village_plains_house.json header = "Plains house", superheader = "[[Village]]", link = "plains [[village]] house", structure = "Village", container = "Plains house chest", structID = "village", poolsJava = { { rolls = {3,8}, items = { ["gold-nugget"] = {1,3,1}, ["dandelion"] = {1,1,2}, ["poppy"] = {1,1,1}, ["potato"] = {1,7,10}, ["bread"] = {1,4,10}, ["apple"] = {1,5,10}, ["book"] = {1,1,1}, ["feather"] = {1,1,1}, ["emerald"] = {1,4,2}, ["oak-sapling"] = {1,2,5} } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["village-savanna-house"] = { -- village\village_savanna_house.json header = "Savanna house", superheader = "[[Village]]", link = "savanna [[village]] house", structure = "Village", container = "Savanna house chest", structID = "village", poolsJava = { { rolls = {3,8}, items = { ["gold-nugget"] = {1,3,1}, ["grass"] = {1,1,5}, ["tall-grass"] = {1,1,5}, ["bread"] = {1,4,10}, ["wheat-seeds"] = {1,5,10}, ["emerald"] = {1,4,2}, ["acacia-sapling"] = {1,2,10}, ["saddle"] = {1,1,1}, ["torch"] = {1,2,1}, ["bucket"] = {1,1,1} } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["village-snowy-house"] = { -- village\village_snowy_house.json header = "Snowy house", superheader = "[[Village]]", link = "snowy [[village]] house", structure = "Village", container = "Snowy house chest", structID = "village", poolsJava = { { rolls = {3,8}, items = { ["blue-ice"] = {1,1,1}, ["snow-block"] = {1,1,4}, ["potato"] = {1,7,10}, ["bread"] = {1,4,10}, ["beetroot-seeds"] = {1,5,10}, ["beetroot-soup"] = {1,1,1}, ["furnace"] = {1,1,1}, ["emerald"] = {1,4,1}, ["snowball"] = {1,7,10}, ["coal"] = {1,4,5} } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["village-taiga-house"] = { -- village\village_taiga_house.json header = "Taiga house", superheader = "[[Village]]", link = "taiga [[village]] house", structure = "Village", container = "Taiga house chest", structID = "village", poolsJava = { { rolls = {3,8}, items = { ["iron-nugget"] = {1,5,1}, ["fern"] = {1,1,2}, ["large-fern"] = {1,1,2}, ["potato"] = {1,7,10}, ["sweet-berries"] = {1,7,5}, ["bread"] = {1,4,10}, ["pumpkin-seeds"] = {1,5,5}, ["pumpkin-pie"] = {1,1,1}, ["emerald"] = {1,4,2}, ["spruce-sapling"] = {1,5,5}, ["spruce-sign"] = {1,1,1}, ["spruce-log"] = {1,5,10} } }, }, poolsJavaUpcoming = {}, poolsBedrock = { { rolls = {3,8}, items = { ["iron-nugget"] = {1,5,1}, ["fern"] = {1,1,2}, ["large-fern"] = {1,1,2}, ["potato"] = {1,7,10}, ["bread"] = {1,4,10}, ["pumpkin-seeds"] = {1,5,5}, ["pumpkin-pie"] = {1,1,1}, ["emerald"] = {1,4,2}, ["spruce-sapling"] = {1,5,5}, ["oak-sign"] = {1,1,1}, ["spruce-log"] = {1,5,10} } }, }, poolsBedrockUpcoming = {} }, ["stronghold-altar"] = { -- stronghold_corridor.json header = "Altar", superheader = "[[Stronghold]]", link = "[[stronghold]] altar", structure = "Stronghold", container = "Altar chest", structID = "stronghold", poolsJava = { { rolls = {2,3}, items = { ["ender-pearl"] = {1,1,10}, ["diamond"] = {1,3,3}, ["iron-ingot"] = {1,5,10}, ["gold-ingot"] = {1,3,5}, ["redstone"] = {4,9,5}, ["bread"] = {1,3,15}, ["apple"] = {1,3,15}, ["iron-pickaxe"] = {1,1,5}, ["iron-sword"] = {1,1,5}, ["iron-chestplate"] = {1,1,5}, ["iron-helmet"] = {1,1,5}, ["iron-leggings"] = {1,1,5}, ["iron-boots"] = {1,1,5}, ["golden-apple"] = {1,1,1}, ["saddle"] = {1,1,1}, ["iron-horse-armor"] = {1,1,1}, ["golden-horse-armor"] = {1,1,1}, ["diamond-horse-armor"] = {1,1,1}, ["enchanted-book"] = {1,1,1}, } }, }, poolsJavaUpcoming = {}, poolsBedrock = { { rolls = {2,3}, items = { ["ender-pearl"] = {1,1,50}, ["emerald"] = {1,3,15}, ["diamond"] = {1,3,15}, ["iron-ingot"] = {1,5,50}, ["gold-ingot"] = {1,3,25}, ["redstone"] = {4,9,25}, ["bread"] = {1,3,75}, ["apple"] = {1,3,75}, ["iron-pickaxe"] = {1,1,25}, ["iron-sword"] = {1,1,25}, ["iron-chestplate"] = {1,1,25}, ["iron-helmet"] = {1,1,25}, ["iron-leggings"] = {1,1,25}, ["iron-boots"] = {1,1,25}, ["golden-apple"] = {1,1,5}, ["saddle"] = {1,1,5}, ["iron-horse-armor"] = {1,1,5}, ["golden-horse-armor"] = {1,1,5}, ["diamond-horse-armor"] = {1,1,5}, ["enchanted-book"] = {1,1,6}, } }, }, poolsBedrockUpcoming = {} }, ["stronghold-library"] = { -- stronghold_library.json header = "Library", superheader = "[[Stronghold]]", link = "[[stronghold]] library", structure = "Stronghold", container = "Library chest", structID = "stronghold", poolsJava = { { rolls = {2,10}, items = { ["book"] = {1,3,20}, ["paper"] = {2,7,20}, ["empty-map"] = {1,1,1}, ["compass"] = {1,1,1}, ["enchanted-book"] = {1,1,10}, } }, }, poolsJavaUpcoming = {}, poolsBedrock = { { rolls = {2,10}, items = { ["book"] = {1,3,100}, ["paper"] = {2,7,100}, ["map"] = {1,1,5}, ["compass"] = {1,1,5}, ["enchanted-book"] = {1,1,60}, } }, }, poolsBedrockUpcoming = {} }, ["stronghold-storeroom"] = { -- stronghold_crossing.json header = "Storeroom", superheader = "[[Stronghold]]", link = "[[stronghold]] storeroom", structure = "Stronghold", container = "Storeroom chest", structID = "stronghold", poolsJava = { { rolls = {1,4}, items = { ["iron-ingot"] = {1,5,10}, ["gold-ingot"] = {1,3,5}, ["redstone"] = {4,9,5}, ["coal"] = {3,8,10}, ["bread"] = {1,3,15}, ["apple"] = {1,3,15}, ["iron-pickaxe"] = {1,1,1}, ["enchanted-book"] = {1,1,1}, } }, }, poolsJavaUpcoming = {}, poolsBedrock = { { rolls = {1,4}, items = { ["iron-ingot"] = {1,5,50}, ["gold-ingot"] = {1,3,25}, ["redstone"] = {4,9,25}, ["coal"] = {3,8,50}, ["bread"] = {1,3,75}, ["apple"] = {1,3,75}, ["iron-pickaxe"] = {1,1,5}, ["enchanted-book"] = {1,1,6}, ["ink-sac"] = {1,3,75}, } }, }, poolsBedrockUpcoming = {} }, ["bonus"] = { -- spawn_bonus_chest.json header = "[[Cofre#Cofre de regalo|Cofre de regalo]]", link = "[[Cofre#Cofre de regalo|de regalo]]", structure = "Cofre de regalo", container = "", structID = "day", poolsJava = { { rolls = {1,1}, items = { ["stone-axe"] = {1,1,1}, ["wooden-axe"] = {1,1,3}, } }, { rolls = {1,1}, items = { ["stone-pickaxe"] = {1,1,1}, ["wooden-pickaxe"] = {1,1,3} } }, { rolls = {3,3}, items = { ["apple"] = {1,2,5}, ["bread"] = {1,2,3}, ["raw-salmon"] = {1,2,3}, } }, { rolls = {4,4}, items = { ["stick"] = {1,12,10}, ["oak-planks"] = {1,12,10}, ["oak-log"] = {1,3,3}, ["spruce-log"] = {1,3,3}, ["birch-log"] = {1,3,3}, ["jungle-log"] = {1,3,3}, ["acacia-log"] = {1,3,3}, ["dark-oak-log"] = {1,3,3}, } }, }, poolsJavaUpcoming = {}, poolsBedrock = { { rolls = {1,1}, items = { ["stone-axe"] = {1,1,1}, ["wooden-axe"] = {1,1,3}, } }, { rolls = {1,1}, items = { ["stone-pickaxe"] = {1,1,1}, ["wooden-pickaxe"] = {1,1,3} } }, { rolls = {1,1}, items = { ["apple"] = {1,2,1} } }, { rolls = {1,1}, items = { ["bread"] = {1,2,1} } }, { rolls = {1,1}, items = { ["raw-salmon"] = {1,2,1} } }, { rolls = {1,1}, items = { ["stick"] = {1,12,1} } }, { rolls = {1,1}, items = { ["oak-planks"] = {1,12,1} } }, { rolls = {1,1}, items = { ["dark-oak-log"] = {1,3,1}, ["acacia-log"] = {1,3,1}, } }, { rolls = {1,1}, items = { ["oak-log"] = {1,3,1}, ["spruce-log"] = {1,3,1}, ["birch-log"] = {1,3,1}, ["jungle-log"] = {1,3,1}, } }, { rolls = {1,1}, items = { ["potato"] = {1,2,3}, ["carrot"] = {1,2,3}, } }, { rolls = {1,1}, items = { ["oak-sapling"] = {4,4,2}, ["spruce-sapling"] = {4,4,2}, ["birch-sapling"] = {4,4,2}, ["jungle-sapling"] = {4,4,4}, ["dark-oak-sapling"] = {4,4,2}, ["acacia-sapling"] = {4,4,2}, } }, { rolls = {1,1}, items = { ["melon-seeds"] = {1,2,3}, ["pumpkin-seeds"] = {1,2,3}, ["beetroot-seeds"] = {1,2,3}, } }, { rolls = {1,1}, items = { ["cactus"] = {1,2,3}, ["cocoa-beans"] = {1,2,2}, } }, { rolls = {1,1}, items = { ["brown-mushroom"] = {1,2,2}, } }, }, poolsBedrockUpcoming = {} }, ["dungeon"] = { -- simple_dungeon.json header = "[[Dungeon]]", link = "[[dungeon]]", structure = "Dungeon", container = "", structID = "Dungeon", poolsJava = { { rolls = {1,3}, items = { ["saddle"] = {1,1,20}, ["golden-apple"] = {1,1,15}, ["enchanted-golden-apple"] = {1,1,2}, ["disc-13"] = {1,1,15}, ["disc-cat"] = {1,1,15}, ["name-tag"] = {1,1,20}, ["golden-horse-armor"] = {1,1,10}, ["iron-horse-armor"] = {1,1,15}, ["diamond-horse-armor"] = {1,1,5}, ["enchanted-book-rnd"] = {1,1,10}, } }, { rolls = {1,4}, items = { ["iron-ingot"] = {1,4,10}, ["gold-ingot"] = {1,4,5}, ["bread"] = {1,1,20}, ["wheat"] = {1,4,20}, ["bucket"] = {1,1,10}, ["redstone"] = {1,4,15}, ["coal"] = {1,4,15}, ["melon-seeds"] = {2,4,10}, ["pumpkin-seeds"] = {2,4,10}, ["beetroot-seeds"] = {2,4,10}, } }, { rolls = {3,3}, items = { ["bone"] = {1,8,10}, ["gunpowder"] = {1,8,10}, ["rotten-flesh"] = {1,8,10}, ["string"] = {1,8,10}, } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["mineshaft"] = { -- abandoned_mineshaft.json chest_type = "minecart with chest", header = "[[Mineshaft]]", link = "[[Mineshaft]]s", structure = "Mineshaft", container = "", structID = "abandoned-mineshaft", poolsJava = { { rolls = {1,1}, items = { ["golden-apple"] = {1,1,20}, ["enchanted-golden-apple"] = {1,1,1}, ["name-tag"] = {1,1,30}, ["enchanted-book-rnd"] = {1,1,10}, ["iron-pickaxe"] = {1,1,5}, ["empty"] = {1,1,5}, } }, { rolls = {2,4}, items = { ["iron-ingot"] = {1,5,10}, ["gold-ingot"] = {1,3,5}, ["redstone"] = {4,9,5}, ["lapis-lazuli"] = {4,9,5}, ["diamond"] = {1,2,3}, ["coal"] = {3,8,10}, ["bread"] = {1,3,15}, ["melon-seeds"] = {2,4,10}, ["pumpkin-seeds"] = {2,4,10}, ["beetroot-seeds"] = {2,4,10}, } }, { rolls = {3,3}, items = { ["rail"] = {4,8,20}, ["powered-rail"] = {1,4,5}, ["detector-rail"] = {1,4,5}, ["activator-rail"] = {1,4,5}, ["torch"] = {1,16,15}, } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["nether-fortress"] = { -- nether_bridge.json header = "[[nether fortress]]", link = "[[nether fortress]]", structure = "Nether fortress", container = "", structID = "nether-fortress", poolsJava = { { rolls = {2,4}, items = { ["diamond"] = {1,3,5}, ["iron-ingot"] = {1,5,5}, ["gold-ingot"] = {1,3,15}, ["golden-sword"] = {1,1,5}, ["golden-chestplate"] = {1,1,5}, ["flint-and-steel"] = {1,1,5}, ["nether-wart"] = {3,7,5}, ["saddle"] = {1,1,10}, ["golden-horse-armor"] = {1,1,8}, ["iron-horse-armor"] = {1,1,5}, ["diamond-horse-armor"] = {1,1,3}, ["obsidian"] = {2,4,2}, } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["desert-temple"] = { -- desert_pyramid.json header = "[[Desert temple]]", link = "[[desert temple]]", structure = "Desert temple", container = "", structID = "desert-temple", poolsJava = { { rolls = {2,4}, items = { ["diamond"] = {1,3,5}, ["iron-ingot"] = {1,5,15}, ["gold-ingot"] = {2,7,15}, ["emerald"] = {1,3,15}, ["bone"] = {4,6,25}, ["spider-eye"] = {1,3,25}, ["rotten-flesh"] = {3,7,25}, ["saddle"] = {1,1,20}, ["iron-horse-armor"] = {1,1,15}, ["golden-horse-armor"] = {1,1,10}, ["diamond-horse-armor"] = {1,1,5}, ["enchanted-book-rnd"] = {1,1,20}, ["golden-apple"] = {1,1,20}, ["enchanted-golden-apple"] = {1,1,2}, ["empty"] = {1,1,15}, } }, { rolls = {4,4}, items = { ["bone"] = {1,8,10}, ["gunpowder"] = {1,8,10}, ["rotten-flesh"] = {1,8,10}, ["string"] = {1,8,10}, ["sand"] = {1,8,10}, } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["jungle-temple"] = { -- jungle_temple.json header = "[[Jungle temple]]", link = "[[jungle temple]]", structure = "Jungle temple", container = "Chest", structID = "jungle-temple", poolsJava = { { rolls = {2,6}, items = { ["diamond"] = {1,3,3}, ["iron-ingot"] = {1,5,10}, ["gold-ingot"] = {2,7,15}, ["emerald"] = {1,3,2}, ["bone"] = {4,6,20}, ["bamboo"] = {1,3,15}, ["rotten-flesh"] = {3,7,16}, ["saddle"] = {1,1,3}, ["iron-horse-armor"] = {1,1,1}, ["golden-horse-armor"] = {1,1,1}, ["diamond-horse-armor"] = {1,1,1}, ["enchanted-book"] = {1,1,1} } }, }, poolsJavaUpcoming = {}, poolsBedrock = { { rolls = {2,6}, items = { ["diamond"] = {1,3,15}, ["iron-ingot"] = {1,5,50}, ["gold-ingot"] = {2,7,75}, ["emerald"] = {1,3,10}, ["bone"] = {4,6,100}, ["rotten-flesh"] = {3,7,80}, ["bamboo"] = {1,3,75}, ["saddle"] = {1,1,15}, ["iron-horse-armor"] = {1,1,5}, ["golden-horse-armor"] = {1,1,5}, ["diamond-horse-armor"] = {1,1,5}, ["enchanted-book"] = {1,1,6} } }, }, poolsBedrockUpcoming = {}, }, ["jungle-temple-dispenser"] = { -- jungle_temple_dispenser.json chest_type = "dispenser", link = "[[jungle temple]]s", structure = "Jungle temple", container = "Dispenser", structID = "jungle-temple", poolsJava = { { rolls = {1,2}, items = { ["arrow"] = {2,7,30} } }, }, poolsJavaUpcoming = {}, poolsBedrock = { { rolls = {2,2}, items = { ["arrow"] = {2,7,30} } }, }, poolsBedrockUpcoming = {} }, ["end-city"] = { -- end_city_treasure.json header = "[[End city]]", link = "[[End city]]", structure = "End city", container = "", structID = "end-city", poolsJava = { { rolls = {2,6}, items = { ["diamond"] = {2,7,5}, ["iron-ingot"] = {4,8,10}, ["gold-ingot"] = {2,7,15}, ["emerald"] = {2,6,2}, ["beetroot-seeds"] = {1,10,5}, ["saddle"] = {1,1,3}, ["iron-horse-armor"] = {1,1,1}, ["golden-horse-armor"] = {1,1,1}, ["diamond-horse-armor"] = {1,1,1}, ["level-enchanted-diamond-sword"] = {1,1,3}, ["level-enchanted-diamond-boots"] = {1,1,3}, ["level-enchanted-diamond-chestplate"] = {1,1,3}, ["level-enchanted-diamond-leggings"] = {1,1,3}, ["level-enchanted-diamond-helmet"] = {1,1,3}, ["level-enchanted-diamond-pickaxe"] = {1,1,3}, ["level-enchanted-diamond-shovel"] = {1,1,3}, ["level-enchanted-iron-sword"] = {1,1,3}, ["level-enchanted-iron-boots"] = {1,1,3}, ["level-enchanted-iron-chestplate"] = {1,1,3}, ["level-enchanted-iron-leggings"] = {1,1,3}, ["level-enchanted-iron-helmet"] = {1,1,3}, ["level-enchanted-iron-pickaxe"] = {1,1,3}, ["level-enchanted-iron-shovel"] = {1,1,3}, } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["igloo"] = { header = "[[Igloo]]", link = "[[igloo]]", structure = "Igloo", container = "", structID = "igloo", poolsJava = { { rolls = {2,8}, items = { ["apple"] = {1,3,15}, ["coal"] = {1,4,15}, ["gold-nugget"] = {1,3,10}, ["stone-axe"] = {1,1,2}, ["rotten-flesh"] = {1,1,10}, ["emerald"] = {1,1,1}, ["wheat"] = {2,3,10} } }, { rolls = {1,1}, items = { ["golden-apple"] = {1,1,1}, } }, }, poolsJavaUpcoming = {}, poolsBedrock = {}, poolsBedrockUpcoming = {} }, ["pillager-outpost"] = { header = "[[Pillager outpost]]", link = "[[pillager outpost]]", structure = "Puesto de saqueadores", container = "", structID = "pillager-outpost", poolsJava = { { rolls = {0,1}, items = { ["crossbow"] = {1,1,1}, } }, { rolls = {2,3}, items = { ["wheat"] = {3,5,7}, ["potato"] = {2,5,5}, ["carrot"] = {3,5,5} } }, { rolls = {1,3}, items = { ["dark-oak-log"] = {2,3,1} } }, { rolls = {2,3}, items = { ["bottle-o'-enchanting"] = {1,1,7}, ["string"] = {1,6,4}, ["arrow"] = {2,7,4}, ["tripwire-hook"] = {1,3,3}, ["iron-ingot"] = {1,3,3}, ["enchanted-book-rnd"] = {1,1,1} } } }, poolsJavaUpcoming = {}, poolsBedrock = { { rolls = {0,1}, items = { ["crossbow"] = {1,1,1}, } }, { rolls = {2,3}, items = { ["wheat"] = {3,5,7}, ["potato"] = {2,5,5}, ["carrot"] = {3,5,5} } }, { rolls = {1,3}, items = { ["dark-oak-log"] = {2,3,1} } }, { rolls = {2,3}, items = { ["bottle-o'-enchanting"] = {1,1,7}, ["string"] = {1,6,4}, ["arrow"] = {2,7,4}, ["tripwire-hook"] = {1,3,3}, ["iron-ingot"] = {1,3,3}, ["enchanted-book-rnd"] = {1,1,1} } } }, poolsBedrockUpcoming = {} }, ["bastion-bridge"] = { -- bastion_bridge.json header = "[[Bastion]] bridge", link = "[[bastion remnant|bastion remnant bridge]]", structure = "Bastion remnant", container = "Bridge chest", structID = "bastion-remnant", poolsJava = {}, poolsJavaUpcoming = { { rolls = {1,1}, items = { ["lodestone"] = {1,1,1}, } }, { rolls = {1,2}, items = { ["damaged-random-enchanted-crossbow"] = {1,1,1}, ["spectral-arrow"] = {2,12,1}, ["gilded-blackstone"] = {5,8,1}, ["crying-obsidian"] = {3,8,1}, ["block-of-gold"] = {1,1,1}, ["gold-ingot"] = {2,8,1}, ["iron-ingot"] = {2,8,1}, ["golden-sword"] = {1,1,1}, ["random-enchanted-golden-chestplate"] = {1,1,1}, ["random-enchanted-golden-helmet"] = {1,1,1}, ["random-enchanted-golden-leggings"] = {1,1,1}, ["random-enchanted-golden-boots"] = {1,1,1}, } }, { rolls = {2,4}, items = { ["string"] = {1,6,1}, ["leather"] = {1,3,1}, ["arrow"] = {5,17,1}, ["iron-nugget"] = {2,6,1}, ["gold-nugget"] = {2,6,1}, } } }, poolsBedrock = {}, poolsBedrockUpcoming = { { rolls = {0,1}, items = { ["damaged-random-enchanted-netherite-shovel"] = {1,1,45}, ["damaged-random-enchanted-netherite-axe"] = {1,1,45}, ["ancient-debris"] = {1,1,10}, } }, { rolls = {1,2}, items = { ["damaged-level-enchanted-crossbow"] = {1,1,10}, ["gold-ingot"] = {2,8,25}, ["block-of-gold"] = {1,1,25}, ["saddle"] = {1,1,1}, } }, { rolls = {2,3}, items = { ["crying-obsidian"] = {1,5,1}, ["spectral-arrow"] = {3,20,1}, ["golden-sword"] = {1,1,1}, ["golden-chestplate"] = {1,1,1}, ["golden-helmet"] = {1,1,1}, ["golden-leggings"] = {1,1,1}, ["random-enchanted-golden-boots"] = {1,1,1}, ["iron-nugget"] = {2,6,1}, ["gold-nugget"] = {2,6,1}, } }, { rolls = {3,4}, items = { ["basalt"] = {1,6,25}, ["polished-basalt"] = {1,6,25}, ["string"] = {1,6,25}, --String is here twice with different chances, table won't show this. ["leather"] = {1,3,20}, ["arrow"] = {2,7,35}, ["string"] = {3,8,20}, --String is here twice with different chances, table won't show this. } } } }, ["bastion-hoglin-stable"] = { -- bastion_hoglin_stable.json header = "[[Bastion]] hoglin stable", link = "[[bastion remnant|bastion remnant hoglin stable]]", structure = "Bastion remnant", container = "Hoglin stable chest", structID = "bastion-remnant", poolsJava = {}, poolsJavaUpcoming = { { rolls = {1,1}, items = { ["damaged-random-enchanted-diamond-shovel"] = {1,1,5}, ["netherite-scrap"] = {1,1,2}, ["ancient-debris"] = {1,1,3}, ["saddle"] = {1,1,10}, ["block-of-gold"] = {2,4,25}, ["random-enchanted-golden-hoe"] = {1,1,15}, ["empty"] = {1,1,45}, } }, { rolls = {3,4}, items = { ["glowstone"] = {1,5,1}, ["gilded-blackstone"] = {1,5,1}, ["soul-sand"] = {2,7,1}, ["crimson-nylium"] = {2,7,1}, ["gold-nugget"] = {2,8,1}, ["leather"] = {1,3,1}, ["arrow"] = {5,17,1}, ["string"] = {3,8,1}, ["raw-porkchop"] = {2,5,1}, ["cooked-porkchop"] = {2,5,1}, ["crimson-fungus"] = {2,7,1}, ["crimson-roots"] = {2,7,1}, } } }, poolsBedrock = {}, poolsBedrockUpcoming = { { rolls = {0,1}, items = { ["damaged-random-enchanted-netherite-hoe"] = {1,1,15}, ["damaged-random-enchanted-netherite-pickaxe"] = {1,1,15}, } }, { rolls = {2,3}, items = { ["block-of-gold"] = {2,4,15}, ["golden-hoe"] = {1,1,15}, ["saddle"] = {1,1,35}, ["soul-sand"] = {2,7,35}, ["crimson-nylium"] = {2,7,20}, } }, { rolls = {3,4}, items = { ["basalt"] = {1,6,1}, ["polished-basalt"] = {1,6,1}, ["gold-nugget"] = {2,8,1}, ["string"] = {1,6,1}, --String is here twice with different chances, table won't show this. ["leather"] = {1,3,1}, ["arrow"] = {2,7,1}, ["string"] = {3,8,1}, --String is here twice with different chances, table won't show this. ["raw-porkchop"] = {2,5,1}, ["cooked-porkchop"] = {2,5,1}, ["crimson-fungus"] = {2,7,20}, ["crimson-roots"] = {2,7,20}, } } } }, ["bastion-other"] = { -- bastion_other.json header = "[[Bastion]] other", link = "[[bastion remnant|bastion remnant other]]", structure = "Bastion remnant", container = "Other chest", structID = "bastion-remnant", poolsJava = {}, poolsJavaUpcoming = { { rolls = {1,1}, items = { ["damaged-random-enchanted-crossbow"] = {1,1,12}, ["ancient-debris"] = {1,1,2}, ["netherite-scrap"] = {1,1,2}, ["spectral-arrow"] = {2,15,6}, ["piglin-banner-pattern"] = {1,1,5}, ["disc-pigstep"] = {1,1,3}, ["enchanted-book-rnd-soul-speed"] = {1,1,10}, ["empty"] = {1,1,50}, } }, { rolls = {2,2}, items = { ["soul-speed-enchanted-golden-boots"] = {1,1,1}, ["block-of-gold"] = {1,1,1}, ["crossbow"] = {1,1,1}, ["gold-ingot"] = {1,6,1}, ["iron-ingot"] = {1,6,1}, ["golden-sword"] = {1,1,1}, ["golden-chestplate"] = {1,1,1}, ["golden-helmet"] = {1,1,1}, ["golden-leggings"] = {1,1,1}, ["golden-boots"] = {1,1,1}, ["empty"] = {1,1,2}, } }, { rolls = {3,5}, items = { ["crying-obsidian"] = {1,5,1}, ["gilded-blackstone"] = {1,5,1}, ["chain"] = {2,10,1}, ["magma-cream"] = {2,6,1}, ["bone-block"] = {3,6,1}, ["iron-nugget"] = {2,8,1}, ["obsidian"] = {4,6,1}, ["gold-nugget"] = {2,8,1}, ["string"] = {4,6,1}, ["arrow"] = {5,17,2}, } } }, poolsBedrock = {}, poolsBedrockUpcoming = { { rolls = {0,1}, items = { ["damaged-level-enchanted-crossbow"] = {1,1,10}, ["ancient-debris"] = {1,1,5}, ["netherite-scrap"] = {1,1,5}, ["piglin-banner-pattern"] = {1,1,10}, ["disc-pigstep"] = {1,1,10}, } }, { rolls = {1,2}, items = { ["gold-ingot"] = {1,6,1}, ["spectral-arrow"] = {3,10,1}, ["golden-boots"] = {1,1,1}, ["magma-cream"] = {1,2,1}, ["bone-block"] = {1,3,1}, ["block-of-gold"] = {1,1,1}, ["saddle"] = {1,1,1}, ["crossbow"] = {1,1,1}, ["crying-obsidian"] = {1,5,1}, ["gilded-blackstone"] = {1,5,1}, --- ["enchanted-book-rnd-soul-speed"] = {1,1,1}, ["soul-speed-enchanted-golden-boots"] = {1,1,1}, ["crossbow"] = {1,1,1}, ["iron-ingot"] = {1,6,1}, ["empty"] = {1,1,2}, } }, { rolls = {2,3}, items = { ["golden-sword"] = {1,1,15}, ["golden-chestplate"] = {1,1,5}, ["golden-helmet"] = {1,1,5}, ["golden-leggings"] = {1,1,5}, ["golden-boots"] = {1,1,10}, ["chain"] = {2,10,10}, ["iron-nugget"] = {2,8,10}, } }, { rolls = {3,4}, items = { ["basalt"] = {1,6,3}, ["polished-basalt"] = {1,6,3}, ["obsidian"] = {2,6,3}, ["gold-nugget"] = {2,8,3}, ["string"] = {1,6,4}, ["leather"] = {1,3,1}, ["arrow"] = {2,7,4}, ["string"] = {3,8,2} } } } }, ["bastion-treasure"] = { -- bastion_treasure.json header = "[[Bastion]] treasure", link = "[[bastion remnant|bastion remnant treasure]]", structure = "Bastion remnant", container = "Treasure chest", structID = "bastion-remnant", poolsJava = {}, poolsJavaUpcoming = { { rolls = {1,2}, items = { ["netherite-ingot"] = {1,1,10}, ["ancient-debris"] = {1,1,14}, ["netherite-scrap"] = {1,1,10}, ["ancient-debris"] = {2,2,1}, ["damaged-random-enchanted-diamond-sword"] = {1,1,10}, ["damaged-random-enchanted-diamond-chestplate"] = {1,1,6}, ["damaged-random-enchanted-diamond-helmet"] = {1,1,6}, ["damaged-random-enchanted-diamond-leggings"] = {1,1,6}, ["damaged-random-enchanted-diamond-boots"] = {1,1,6}, ["damaged-diamond-sword"] = {1,1,6}, ["damaged-diamond-chestplate"] = {1,1,5}, ["damaged-diamond-helmet"] = {1,1,5}, ["damaged-diamond-leggings"] = {1,1,5}, ["damaged-diamond-boots"] = {1,1,5}, ["diamond"] = {1,3,5}, } }, { rolls = {2,4}, items = { ["spectral-arrow"] = {5,21,1}, ["block-of-gold"] = {2,5,1}, ["gold-ingot"] = {3,9,1}, ["iron-ingot"] = {3,9,1}, ["crying-obsidian"] = {1,5,1}, ["nether-quartz"] = {8,23,1}, ["gilded-blackstone"] = {1,5,1}, ["magma-cream"] = {2,8,1}, ["iron-nugget"] = {8,16,1}, } } }, poolsBedrock = {}, poolsBedrockUpcoming = { { rolls = {1,1}, items = { ["netherite-ingot"] = {1,1,10}, ["ancient-debris"] = {1,1,85}, ["ancient-debris"] = {2,2,5}, } }, { rolls = {2,2}, items = { ["damaged-level-enchanted-netherite-sword"] = {1,1,5}, ["damaged-level-enchanted-netherite-chestplate"] = {1,1,3}, ["damaged-level-enchanted-netherite-helmet"] = {1,1,5}, ["damaged-level-enchanted-netherite-leggings"] = {1,1,5}, ["damaged-level-enchanted-netherite-boots"] = {1,1,5}, ["damaged-netherite-sword"] = {1,1,5}, ["damaged-netherite-chestplate"] = {1,1,2}, ["damaged-netherite-helmet"] = {1,1,2}, ["damaged-netherite-boots"] = {1,1,2}, ["damaged-netherite-leggings"] = {1,1,2}, ["diamond"] = {1,3,2}, } }, { rolls = {2,3}, items = { ["block-of-gold"] = {2,5,10}, ["spectral-arrow"] = {5,21,25}, ["gold-ingot"] = {3,9,15}, ["level-enchanted-golden-boots"] = {1,1,10}, ["level-enchanted-golden-chestplate"] = {1,1,10}, ["crying-obsidian"] = {1,5,10}, ["nether-quartz"] = {8,23,10}, ["gilded-blackstone"] = {1,5,10}, } }, { rolls = {2,2}, items = { ["magma-cream"] = {2,8,1}, ["golden-sword"] = {1,1,1}, ["golden-helmet"] = {1,1,1}, ["golden-leggings"] = {1,1,1}, ["iron-nugget"] = {8,16,1}, ["magma-block"] = {2,6,1}, ["saddle"] = {1,1,1}, } } } }, ["ruined-portal"] = { --ruined_portal.json header = "[[Ruined Portal]]", link = "[[ruined portal]]", structure = "Ruined portal", container = "", structID = "ruined-portal", poolsJava = {}, poolsJavaUpcoming = { { rolls = {4,8}, items = { ["obsidian"] = {1,2,40}, ["flint"] = {1,4,40}, ["iron-nugget"] = {9,18,40}, ["flint-and-steel"] = {1,1,40}, ["fire-charge"] = {1,1,40}, ["golden-apple"] = {1,1,40}, ["gold-nugget"] = {4,24,15}, ["random-enchanted-golden-sword"] = {1,1,15}, ["random-enchanted-golden-axe"] = {1,1,15}, ["random-enchanted-golden-hoe"] = {1,1,15}, ["random-enchanted-golden-pickaxe"] = {1,1,15}, ["random-enchanted-golden-shovel"] = {1,1,15}, ["random-enchanted-golden-helmet"] = {1,1,15}, ["random-enchanted-golden-chestplate"] = {1,1,15}, ["random-enchanted-golden-leggings"] = {1,1,15}, ["random-enchanted-golden-boots"] = {1,1,15}, ["glistering-melon-slice"] = {4,12,5}, ["golden-horse-armor"] = {1,1,5}, ["light-weighted-pressure-plate"] = {1,1,5}, ["golden-carrot"] = {4,12,5}, ["clock"] = {1,1,5}, ["gold-ingot"] = {2,8,5}, ["bell"] = {1,1,1}, ["enchanted-golden-apple"] = {1,1,1}, ["block-of-gold"] = {1,2,1}, } } }, poolsBedrock = {}, poolsBedrockUpcoming = { { rolls = {4,6}, items = { ["obsidian"] = {1,2,40}, ["flint"] = {1,4,40}, ["iron-nugget"] = {9,18,40}, ["flint-and-steel"] = {1,1,40}, ["fire-charge"] = {1,1,40}, ["golden-apple"] = {1,1,15}, ["gold-nugget"] = {4,24,15}, ["random-enchanted-golden-sword"] = {1,1,15}, ["random-enchanted-golden-axe"] = {1,1,15}, ["random-enchanted-golden-hoe"] = {1,1,15}, ["random-enchanted-golden-shovel"] = {1,1,15}, ["random-enchanted-golden-pickaxe"] = {1,1,15}, ["random-enchanted-golden-boots"] = {1,1,15}, ["random-enchanted-golden-chestplate"] = {1,1,15}, ["random-enchanted-golden-helmet"] = {1,1,15}, ["random-enchanted-golden-leggings"] = {1,1,15}, ["glistering-melon-slice"] = {1,1,5}, ["golden-horse-armor"] = {1,1,5}, ["light-weighted-pressure-plate"] = {1,1,5}, ["golden-carrot"] = {4,12,5}, ["clock"] = {1,1,5}, ["gold-ingot"] = {2,8,5}, ["bell"] = {1,1,1}, ["enchanted-golden-apple"] = {1,1,1}, ["block-of-gold"] = {1,2,1}, } } } }, ["woodland-mansion"] = { -- woodland_mansion.json header = "[[Woodland Mansion]]", link = "[[woodland mansion]]", structure = "Woodland mansion", container = "", structID = "woodland-mansion", poolsJava = { { rolls = {1,3}, items = { ["lead"] = {1,1,20}, ["golden-apple"] = {1,1,15}, ["enchanted-golden-apple"] = {1,1,2}, ["disc-13"] = {1,1,15}, ["disc-cat"] = {1,1,15}, ["name-tag"] = {1,1,20}, ["chainmail-chestplate"] = {1,1,10}, ["diamond-hoe"] = {1,1,15}, ["diamond-chestplate"] = {1,1,5}, ["enchanted-book-rnd"] = {1,1,10}, } }, { rolls = {1,4}, items = { ["iron-ingot"] = {1,4,10}, ["gold-ingot"] = {1,4,5}, ["bread"] = {1,1,20}, ["wheat"] = {1,4,20}, ["bucket"] = {1,1,10}, ["redstone"] = {1,4,15}, ["coal"] = {1,4,15}, ["melon-seeds"] = {2,4,10}, ["pumpkin-seeds"] = {2,4,10}, ["beetroot-seeds"] = {2,4,10}, } }, { rolls = {3,3}, items = { ["bone"] = {1,8,10}, ["gunpowder"] = {1,8,10}, ["rotten-flesh"] = {1,8,10}, ["string"] = {1,8,10}, } }, }, poolsJavaUpcoming = {}, poolsBedrock = { { rolls = {1,3}, items = { ["lead"] = {1,1,100}, ["golden-apple"] = {1,1,75}, ["enchanted-golden-apple"] = {1,1,10}, ["disc-13"] = {1,1,75}, ["disc-cat"] = {1,1,75}, ["name-tag"] = {1,1,100}, ["chainmail-chestplate"] = {1,1,50}, ["diamond-hoe"] = {1,1,75}, ["diamond-chestplate"] = {1,1,25}, ["enchanted-book-rnd"] = {1,1,60}, } }, { rolls = {1,4}, items = { ["iron-ingot"] = {1,4,50}, ["gold-ingot"] = {1,4,25}, ["bread"] = {1,1,100}, ["wheat"] = {1,4,100}, ["bucket"] = {1,1,50}, ["redstone"] = {1,4,75}, ["coal"] = {1,4,75}, ["melon-seeds"] = {2,4,50}, ["pumpkin-seeds"] = {2,4,50}, ["beetroot-seeds"] = {2,4,50}, } }, { rolls = {3,3}, items = { ["bone"] = {1,8,50}, ["gunpowder"] = {1,8,50}, ["rotten-flesh"] = {1,8,50}, ["string"] = {1,8,50}, } }, }, poolsBedrockUpcoming = {} }, }, -- these values are used: -- * in place of the keys, when the key is used as a parameter -- chest-param -> internally-valid-chest-param synonyms = { ["desert"] = "desert-temple", ["jungle"] = "jungle-temple", ["nether"] = "nether-fortress", ["nether-fortress"] = "nether-fortress", ["armorer"] = "village-armorer", ["butcher"] = "village-butcher", ["cartographer"] = "village-cartographer", ["fisherman"] = "village-fisherman", ["fletcher"] = "village-fletcher", ["mason"] = "village-mason", ["shepherd"] = "village-shepherd", ["tannery"] = "village-tannery", ["temple"] = "village-temple", ["toolsmith"] = "village-toolsmith", ["weaponsmith"] = "village-weaponsmith", ["desert-house"] = "village-desert-house", ["plains-house"] = "village-plains-house", ["savanna-house"] = "village-savanna-house", ["snowy-house"] = "village-snowy-house", ["taiga-house"] = "village-taiga-house", ["altar"] = "stronghold-altar", ["storeroom"] = "stronghold-storeroom", ["library"] = "stronghold-library", ["outpost"] = "pillager-outpost", ["mansion"] = "woodland-mansion" }, -- these values are used: -- * in the header-description of a table showing only a single chest -- * if the key is not here, but it is a valid chest parameter, -- that header-description defaults to use the key string from p.chests, -- e.g. "nether-fortress" -- chest-param -> description-string display_names = { ["nether-fortress"] = "Nether Fortress", ["nether"] = "nether fortress", ["fortress"] = "nether fortress", ["desert"] = "desert pyramid", ["jungle"] = "jungle pyramid", ["desert-temple"] = "desert pyramid", ["jungle-temple"] = "jungle pyramid" }, -- these descriptions are used: -- * in column <abbr> titles, -- * and above the table when only a single column-type is chosen columns = { ["stacksize"] = 'The size of stacks (or for unstackable items, number) of this item on any given roll.', ["weight"] = 'The weight of this item relative to other items in the pool.', ["chance"] = 'The odds of finding any of this item in a single chest.', ["items"] = 'The number of items expected per chest, averaged over a large number of chests.', ["chests"] = 'The average number of chests the player should expect to search to find any of this item.' }, current_frame = nil } p.base = function( ... ) p.current_frame = mw.getCurrentFrame() local args = { ... } if args[1] == p.current_frame then args = require( 'Module:ProcessArgs' ).merge( true ) else args = args[1] end -- transform args into usable list local chests, columns = q.massage_args( args ) if #chests == 0 then return "<span style='font-style:italic; color:red;'>Module:LootChest: no valid arguments</span>" end q.fill_in_chest_derivative_data( chests ) -- construct an ordered list dictating the order of the rows local ordered_item_rows_java = {} local ordered_item_rows_java_upcoming = {} local ordered_item_rows_bedrock = {} local ordered_item_rows_bedrock_upcoming = {} local ret = {} local java_specified = args.java and args.java ~= '0'; local java_upcoming_specified = args['java-upcoming'] and args['java-upcoming'] ~= '0'; local bedrock_specified = args.bedrock and args.bedrock ~= '0'; local bedrock_upcoming_specified = args['bedrock-upcoming'] and args['bedrock-upcoming'] ~= '0'; local any_specified = java_specified or java_upcoming_specified or bedrock_specified or bedrock_upcoming_specified if any_specified then if java_specified then ordered_item_rows_java = q.construct_ordered_item_rows( chests, 'Java' ) end if java_upcoming_specified then ordered_item_rows_java_upcoming = q.construct_ordered_item_rows( chests, 'JavaUpcoming' ) end if bedrock_specified then ordered_item_rows_bedrock = q.construct_ordered_item_rows( chests, 'Bedrock' ) end if bedrock_upcoming_specified then ordered_item_rows_bedrock_upcoming = q.construct_ordered_item_rows( chests, 'BedrockUpcoming' ) end else local java_excluded = args.java and args.java == '0'; local java_upcoming_excluded = args['java-upcoming'] and args['java-upcoming'] == '0'; local bedrock_excluded = args.bedrock and args.bedrock == '0'; local bedrock_upcoming_excluded = args['bedrock-upcoming'] and args['bedrock-upcoming'] == '0'; if not java_excluded then ordered_item_rows_java = q.construct_ordered_item_rows( chests, 'Java' ) end if not java_upcoming_excluded then ordered_item_rows_java_upcoming = q.construct_ordered_item_rows( chests, 'JavaUpcoming' ) end if not bedrock_excluded then ordered_item_rows_bedrock = q.construct_ordered_item_rows( chests, 'Bedrock' ) end if not bedrock_upcoming_excluded then ordered_item_rows_bedrock_upcoming = q.construct_ordered_item_rows( chests, 'BedrockUpcoming' ) end end if q.tablelength( ordered_item_rows_java ) > 0 then table.insert( ret, 'In ' .. p.current_frame:preprocess( p.java ) .. q.lcfirst( q.print_table( chests, columns, ordered_item_rows_java, 'Java' ) ) ) end if q.tablelength( ordered_item_rows_java_upcoming ) > 0 and q.compare_tables( ordered_item_rows_java, ordered_item_rows_java_upcoming ) then table.insert( ret, 'In ' .. p.current_frame:preprocess( p['java-upcoming'] ) .. q.lcfirst( q.print_table( chests, columns, ordered_item_rows_java_upcoming, 'JavaUpcoming' ) ) ) end if q.tablelength( ordered_item_rows_bedrock ) > 0 and q.compare_tables( ordered_item_rows_java, ordered_item_rows_bedrock ) then table.insert( ret, 'In ' .. p.current_frame:preprocess( p.bedrock ) .. q.lcfirst( q.print_table( chests, columns, ordered_item_rows_bedrock, 'Bedrock' ) ) .. '[[Category:Bedrock Edition specific information]]' ) end if q.tablelength( ordered_item_rows_bedrock_upcoming ) > 0 and q.compare_tables( ordered_item_rows_bedrock, ordered_item_rows_bedrock_upcoming ) then table.insert( ret, 'In ' .. p.current_frame:preprocess( p['bedrock-upcoming'] ) .. q.lcfirst( q.print_table( chests, columns, ordered_item_rows_bedrock_upcoming, 'BedrockUpcoming' ) ) .. '[[Category:Bedrock Edition specific information]]' ) end table.insert( ret, "<div class=mobileonly>" ) table.insert( ret, p.current_frame:expandTemplate{ title = 'FNlist', args = {} } ) table.insert( ret, "</div>" ) return table.concat( ret, '\n\n' ) end p.doc = function() local valid_args = {} for chest_name, val in pairs(p.chests) do local synonyms = {} for syn, orig in pairs(p.synonyms) do if orig == chest_name then table.insert( synonyms, syn ) end end if #synonyms > 0 then chest_name = chest_name .. " ( " .. table.concat( synonyms, ", " ) .. " )" end table.insert( valid_args, chest_name ) end table.sort( valid_args ) return table.concat( valid_args, ",\n<br>" ) end p.doc2 = function() local valid_args = {} for column_name, val in pairs(p.columns) do table.insert( valid_args, column_name .. ": " .. val ) end table.sort( valid_args ) return table.concat( valid_args, ",\n<br>" ) end p.doc3 = function() local valid_args = {} for item_name, val in pairs(p.items) do table.insert( valid_args, item_name ) end table.sort( valid_args ) return table.concat( valid_args, ", " ) end p.base2 = function( ... ) p.current_frame = mw.getCurrentFrame() local args = { ... } if args[1] == p.current_frame then args = require( 'Module:ProcessArgs' ).merge( true ) else args = args[1] end local itemname = args[1] if p.items[itemname] == nil then return '<span style="color:red;">unknown item "' .. itemname .. '"</span>' end if args.java and args.java ~= '0' then javaChances = q.single_item_find_values( itemname, 'poolsJava' ) javaUpcomingChances = {} bedrockChances = {} bedrockUpcomingChances = {} else if args['java-upcoming'] and args['java-upcoming'] ~= '0' then javaChances = q.single_item_find_values( itemname, 'poolsJavaUpcoming' ) javaUpcomingChances = {} bedrockChances = {} bedrockUpcomingChances = {} else if args.bedrock and args.bedrock ~= '0' then javaChances = q.single_item_find_values( itemname, 'poolsBedrock' ) javaUpcomingChances = {} bedrockChances = {} bedrockUpcomingChances = {} else if args['bedrock-upcoming'] and args['bedrock-upcoming'] ~= '0' then javaChances = q.single_item_find_values( itemname, 'poolsBedrockUpcoming' ) javaUpcomingChances = {} bedrockChances = {} bedrockUpcomingChances = {} else javaChances = q.single_item_find_values( itemname, 'poolsJava' ) javaUpcomingChances = q.single_item_find_values( itemname, 'poolsJavaUpcoming', javaChances ) bedrockChances = q.single_item_find_values( itemname, 'poolsBedrock', javaChances ) bedrockUpcomingChances = q.single_item_find_values( itemname, 'poolsBedrockUpcoming', javaChances, bedrockChances ) end end end end local html = {} local any_current = q.tablelength( javaChances ) > 0 local any_changes_upcoming = q.tablelength( javaUpcomingChances ) > 0 and q.compare_tables( javaChances, javaUpcomingChances ) local any_standard = any_current or any_changes_upcoming local any_bedrock_current = q.tablelength( bedrockChances ) > 0 local any_bedrock_upcoming = q.tablelength( bedrockUpcomingChances ) > 0 and q.compare_tables( bedrockChances, bedrockUpcomingChances ) local any_bedrock = any_bedrock_current or any_bedrock_upcoming local change_case = p.items[itemname].preserve_case == nil or p.items[itemname].preserve_case ~= true if any_current then table.insert( html, p.base2_sub( itemname, javaChances ) ) end if any_changes_upcoming then table.insert( html, p.current_frame:preprocess( p['java-upcoming'] ) .. ( change_case and q.lcfirst( p.base2_sub( itemname, javaUpcomingChances, any_current ) ) or p.base2_sub( itemname, javaUpcomingChances, any_current ) ) ) end if any_bedrock_current then table.insert( html, ( any_standard and '\n\n' or '' ) .. p.current_frame:preprocess( p.bedrock ) .. ( change_case and q.lcfirst( p.base2_sub( itemname, bedrockChances, any_standard ) ) or p.base2_sub( itemname, bedrockChances, any_standard ) ) ) end if any_bedrock_upcoming then table.insert( html, ( any_standard and not any_bedrock_current and '\n\n' or '' ) .. p.current_frame:preprocess( p['bedrock-upcoming'] ) .. ( change_case and q.lcfirst( p.base2_sub( itemname, bedrockUpcomingChances, any_bedrock_current or any_standard ) ) or p.base2_sub( itemname, bedrockUpcomingChances, any_bedrock_current or any_standard ) ) ) end if args.nocat then else table.insert( html, '[[Category:Pages with loot chest item templates]]' ) if p.items[itemname].category ~= nil and p.items[itemname].category ~= false then table.insert( html, '[[Category:Pages with specific loot chest items]]' ) end if any_bedrock then table.insert( html, '[[Category:Bedrock Edition specific information]]' ) end end return table.concat( html, ' ' ) end p.base2_sub = function( itemname, chances, use_they ) local html = {} local item_display_name = '' if use_they then item_display_name = 'they' else if p.items[itemname].plural ~= nil and p.items[itemname].plural ~= false then item_display_name = p.items[itemname].plural else if p.items[itemname].title ~= nil then item_display_name = p.items[itemname].title else item_display_name = string.gsub( itemname, '-', ' ' ) end if p.items[itemname].plural == nil or p.items[itemname].plural ~= false then item_display_name = q.single_item_plural( item_display_name ) end end if p.items[itemname].preserve_case == nil or p.items[itemname].preserve_case ~= true then item_display_name = q.capitalize( item_display_name ) end if p.items[itemname].note and p.notes[p.items[itemname].note] then item_display_name = item_display_name .. p.current_frame:extensionTag( 'ref', p.notes[p.items[itemname].note], { group='note', name=p.items[itemname].note } ) end if p.items[itemname].note1 and p.notes[p.items[itemname].note1] then if p.items[itemname].note == nil or p.notes[p.items[itemname].note] == nil or p.items[itemname].note ~= p.items[itemname].note1 then item_display_name = item_display_name .. p.current_frame:extensionTag( 'ref', p.notes[p.items[itemname].note1], { group='note', name=p.items[itemname].note1 } ) end end end table.insert( html, item_display_name ) table.insert( html, ' can be found ' ) local html_stacks = {} local stack_sep = ', ' local ns = q.tablelength( chances ) local s = 0 for stacksize, chest_details in pairs( chances ) do s = s + 1 local html_per_stack = { 'in ' } local c = 0 local nc = q.tablelength( chest_details ) local sep = ( nc > 2 and ', ' or ' ' ) if nc > 2 and s ~= ns then stack_sep = '; ' end for k, chest in pairs( chest_details ) do c = c + 1 if c == nc and nc > 1 then table.insert( html_per_stack, 'and ' ) end if chest.chance == 1 then table.insert( html_per_stack, " all " ) else table.insert( html_per_stack, string.format("%.1f", chest.chance*100) ) table.insert( html_per_stack, "% de" ) end if chest.chest_type == 'minecart with chest' then table.insert( html_per_stack, ' [[Minecart with Chest|chest minecarts]] in ' ) table.insert( html_per_stack, p.chests[chest.chest_name].link ) elseif chest.chest_type == 'dispenser' then table.insert( html_per_stack, ' [[dispenser]]s in ' ) table.insert( html_per_stack, p.chests[chest.chest_name].link ) else table.insert( html_per_stack, p.chests[chest.chest_name].link ) table.insert( html_per_stack, ' chests' ) end table.insert( html_per_stack, sep ) end if nc > 2 then table.insert( html_per_stack, 'all ' ) end table.insert( html_per_stack, 'in ' ) if p.items[itemname].cannot_stack ~= nil then table.insert( html_per_stack, 'groups of ' ) else table.insert( html_per_stack, 'stacks of ' ) end table.insert( html_per_stack, stacksize ) table.insert( html_stacks, table.concat( html_per_stack ) ) end local stackwise_summaries = '' if #html_stacks == 1 then table.insert( html, html_stacks[1] ) else for i = 1, #html_stacks - 1 do table.insert( html, html_stacks[ i ] ) table.insert( html, stack_sep ) end table.insert( html, 'and ' ) table.insert( html, html_stacks[#html_stacks] ) end table.insert( html, '.' ) return table.concat( html ) end p.base2_test = function() items = {} for item_name, v in pairs( p.items ) do table.insert( items, p.base2{ item_name, ["nocat"]=true } .. '\n\n' ) end table.sort( items ) return table.concat(items) end p.base3 = function( ... ) p.current_frame = mw.getCurrentFrame() local args = { ... } if args[1] == p.current_frame then args = require( 'Module:ProcessArgs' ).merge( true ) else args = args[1] end local z = args[1] local html_java = {} local html_java_u = {} local html_bedrock = {} local html_bedrock_u = {} local rErr = "" local zT = {} if args[1] == "!!!ALL!!!" then for item_name, v in pairs( p.items ) do table.insert( zT, item_name ) table.sort( zT ) end else zT = mw.text.split( args[1], ',' ) end for x, itemname in pairs( zT ) do if p.items[itemname] == nil then rErr = rErr .. "<span class='error'>Unknown item " .. itemname .. ".</span>\n" else local javaChances, javaUpcomingChances, bedrockChances, bedrockUpcomingChances if args.java and args.java ~= '0' then javaChances = q.single_item_find_values( itemname, 'poolsJava' ) javaUpcomingChances = {} bedrockChances = {} bedrockUpcomingChances = {} else if args['java-upcoming'] and args['java-upcoming'] ~= '0' then javaChances = q.single_item_find_values( itemname, 'poolsJavaUpcoming' ) javaUpcomingChances = {} bedrockChances = {} bedrockUpcomingChances = {} else if args.bedrock and args.bedrock ~= '0' then javaChances = q.single_item_find_values( itemname, 'poolsBedrock' ) javaUpcomingChances = {} bedrockChances = {} bedrockUpcomingChances = {} else if args['bedrock-upcoming'] and args['bedrock-upcoming'] ~= '0' then javaChances = q.single_item_find_values( itemname, 'poolsBedrockUpcoming' ) javaUpcomingChances = {} bedrockChances = {} bedrockUpcomingChances = {} else javaChances = q.single_item_find_values( itemname, 'poolsJava' ) javaUpcomingChances = q.single_item_find_values( itemname, 'poolsJavaUpcoming', javaChances ) bedrockChances = q.single_item_find_values( itemname, 'poolsBedrock', javaChances ) bedrockUpcomingChances = q.single_item_find_values( itemname, 'poolsBedrockUpcoming', javaChances, bedrockChances ) end end end end local any_current = q.tablelength( javaChances ) > 0 local any_changes_upcoming = q.tablelength( javaUpcomingChances ) > 0 and q.compare_tables( javaChances, javaUpcomingChances ) local any_standard = any_current or any_changes_upcoming local any_bedrock_current = q.tablelength( bedrockChances ) > 0 local any_bedrock_upcoming = q.tablelength( bedrockUpcomingChances ) > 0 and q.compare_tables( bedrockChances, bedrockUpcomingChances ) local any_bedrock = any_bedrock_current or any_bedrock_upcoming if any_current then table.insert( html_java, p.base3_sub( itemname, javaChances ) ) end if any_changes_upcoming then table.insert( html_java_u, p.base3_sub( itemname, javaUpcomingChances ) ) end if any_bedrock_current then table.insert( html_bedrock, p.base3_sub( itemname, bedrockChances ) ) end if any_bedrock_upcoming then table.insert( html_bedrock_u, p.base3_sub( itemname, bedrockUpcomingChances ) ) end end end local output = rErr .. '{| class="wikitable sortable" \n! Objeto \n! Estructura \n! Contenedor \n! Cantidad \n! Probabilidad \n' if q.tablelength( html_java ) > 0 then output = output .. '|-\n!colspan=5|' .. p['java'] .. ' \n' .. table.concat( html_java ) end if q.tablelength( html_java_u ) > 0 then output = output .. '|-\n!colspan=5|' .. p['java-upcoming'] .. ' \n' .. table.concat( html_java_u ) end if q.tablelength( html_bedrock ) > 0 then output = output .. '|-\n!colspan=5|' .. p.bedrock .. ' \n' .. table.concat( html_bedrock ) end if q.tablelength( html_bedrock_u ) > 0 then output = output .. '|-\n!colspan=5|' .. p['bedrock-upcoming'] .. ' \n' .. table.concat( html_bedrock_u ) end output = output .. '|}' .. p.current_frame:extensionTag( 'references', "", { group="note" } ) return output end p.base3_sub = function( itemname, chances ) local html = {} local item_display_name = '' local output = "" lang = mw.getContentLanguage() if p.items[itemname].title ~= nil then item_display_name = p.items[itemname].title else item_display_name = q.titlecase( string.gsub( itemname, '-', ' ' ) ) end local objectList = {} local ns = q.tablelength( chances ) local s = 0 local m = 0 local rn = 0 for stacksize, chest_details in pairs( chances ) do s = s + 1 local nc = q.tablelength( chest_details ) local c = 0 for k, chest in pairs( chest_details ) do c = c + 1 rn = rn + 1 local containerText = p.chests[chest.chest_name].container if string.len(containerText) == 0 then containerText = 'Cofre' end local r = "" r = r .. '|' .. string.gsub( containerText, ' ', ' ' ) .. '\n|' .. stacksize .. '\n|' .. lang:formatNum( math.floor( chest.chance*1000 + 0.5 ) /10 ) .. ' %' .. '\n' if ns ~= s or nc ~= c then r = r end table.insert( objectList , { p.chests[chest.chest_name].structID , p.chests[chest.chest_name].structure, r } ) end m = m + nc end table.sort( objectList, function(a,b) return a[1] < b[1] end ) local struct = "" local t = "" local nt = 1 local ntt = 0 for v, w in pairs( objectList ) do ntt = ntt + 1 if w[1] ~= struct then if t ~= "" then output = output .. "|rowspan=" .. nt .. t end t = "|'''" .. p.current_frame:expandTemplate{ title = 'EnvLink', args = { w[2], id = w[1] } } .. "'''\n" .. w[3] struct = w[1] nt = 1 else t = t .. w[3] nt = nt + 1 end if ntt == m then output = output .. "|rowspan=" .. nt .. t else t = t .. '|-' .. '\n' end end return "|-\n| rowspan=" .. m .. "|'''" .. p.getItem(itemname, item_display_name) .. "'''\n" .. output end p.getItem = function( itemname, item_display_name ) local s = "" local k = item_display_name local link = item_display_name local m = itemname if p.items[itemname].title ~= nil then k = p.items[itemname].title end if p.items[itemname].link ~= nil then link = p.items[itemname].link end if p.items[itemname].id ~= nil then m = p.items[itemname].id end if p.items[itemname][1] == "item" then s = p.current_frame:expandTemplate{ title = 'ItemLink', args = { link , k , id = m } } elseif p.items[itemname][1] == "block" then s = p.current_frame:expandTemplate{ title = 'BlockLink', args = { link , k , id = m } } end if p.items[itemname].note and p.notes[p.items[itemname].note] then s = s .. p.current_frame:extensionTag( 'ref', p.notes[p.items[itemname].note], { group='note', name=p.items[itemname].note } ) end if p.items[itemname].note1 and p.notes[p.items[itemname].note1] then if p.items[itemname].note == nil or p.notes[p.items[itemname].note] == nil or p.items[itemname].note ~= p.items[itemname].note1 then s = s .. p.current_frame:extensionTag( 'ref', p.notes[p.items[itemname].note1], { group='note', name=p.items[itemname].note1 } ) end end return s end q = { tablelength = function(T) local count = 0 for _ in pairs(T) do count = count + 1 end return count end, deepcopy = function(orig) local orig_type = type(orig) local copy if orig_type == 'table' then copy = {} for orig_key, orig_value in next, orig, nil do copy[q.deepcopy(orig_key)] = q.deepcopy(orig_value) end setmetatable(copy, q.deepcopy(getmetatable(orig))) else -- number, string, boolean, etc copy = orig end return copy end, single_item_find_values = function( itemname, poolsKey, exclusions_param, other_exclusions_param ) local chances = {} local exclusions = q.deepcopy(exclusions_param or {}) local other_exclusions = q.deepcopy(other_exclusions_param or {}) for stacksize, other_exclusion_list in pairs(other_exclusions) do if exclusions[stacksize] == nil then exclusions[stacksize] = {} end for _, other_exclusion in pairs(other_exclusion_list) do local already_in_here = false for _, exclusion in pairs(exclusions[stacksize]) do if exclusion["chest_name"] == other_exclusion["chest_name"] and exclusion["chance"] == other_exclusion["chance"] then already_in_here = true break end end if not already_in_here then table.insert( exclusions[stacksize], other_exclusion ) end end end for chest_name, chest in pairs( p.chests ) do local poolchances = {} for k, pool in pairs( chest[poolsKey] or chest.poolsJava or {} ) do local poolitem = pool.items[itemname] if poolitem ~= nil then local stacksize = poolitem[1] if poolitem[1] ~= poolitem[2] then stacksize = stacksize .. " a " .. poolitem[2] end local itemweight = poolitem[3] local pool_total_item_weight = 0 for itemname, item in pairs(pool.items) do pool_total_item_weight = pool_total_item_weight + item[3] end local chance = p.calc_chance_any_of_this_item_per_pool( pool.rolls[1], pool.rolls[2], itemweight, pool_total_item_weight ) if poolchances[stacksize] == nil then poolchances[stacksize] = chance else poolchances[stacksize] = poolchances[stacksize] + (1 - poolchances[stacksize]) * chance end end end for stacksize, chance in pairs( poolchances ) do local excluded = false for _, exclusion in pairs( exclusions[stacksize] or {} ) do if exclusion["chest_name"] == chest_name and exclusion["chance"] == chance then excluded = true break end end if not excluded then if chances[stacksize] == nil then chances[stacksize] = {} end table.insert( chances[stacksize], { ["chance"]=chance, ["chest_name"]=chest_name, ["chest_type"]=( chest.chest_type or "chest" ) } ) end end end return chances end, single_item_plural = function( itemname ) if string.sub( itemname, -2 ) == 'ss' or string.sub( itemname, -2 ) == 'ch' or string.sub( itemname, -2 ) == 'sh' or string.sub( itemname, -1 ) == 's' then return itemname .. 'es' end return itemname .. 's' end, massage_args = function( args ) -- find what columns to put local columns = {} for k, _arg in pairs(args) do if p.columns[_arg] ~= nil then columns[_arg] = true end end if q.tablelength(columns) == 0 then for column_name, v in pairs(p.columns) do columns[column_name] = true end end -- find what chests to show local chests = {} for k, _arg in pairs(args) do if p.chests[_arg] ~= nil then table.insert( chests, _arg ) elseif p.synonyms[_arg] ~= nil then table.insert( chests, p.synonyms[_arg] ) end if p.display_names[_arg] ~= nil then local chestname = _arg if p.chests[chestname] == nil then chestname = p.synonyms[_arg] end p.chests[chestname].display_name = p.display_names[_arg] end end if #chests == 0 then for chest_name, chest in pairs(p.chests) do local chest_type = ( chest.chest_type or "chest" ) if chest_type == "chest" or chest_type == "minecart with chest" then table.insert( chests, chest_name ) end end end table.sort( chests ) return chests, columns end, sort_items = function( e1, e2 ) if e1.chanceany ~= e2.chanceany then return ( e1.chanceany > e2.chanceany ) end if e1.avgamount ~= e2.avgamount then return ( e1.avgamount > e2.avgamount ) end if e1.material == nil then e1.material = 0 if string.find( e1.itemname, "leather" ) ~= nil then e1.material = 1 end if string.find( e1.itemname, "iron" ) ~= nil then e1.material = 2 end if string.find( e1.itemname, "gold" ) ~= nil then e1.material = 3 end if string.find( e1.itemname, "diamond" ) ~= nil then e1.material = 4 end if string.find( e1.itemname, "netherite" ) ~= nil then e1.material = 5 end e1.armor = 0 if string.find( e1.itemname, "helmet" ) ~= nil or string.find( e1.itemname, "cap" ) ~= nil then e1.armor = 1 end if string.find( e1.itemname, "chestplate" ) ~= nil or string.find( e1.itemname, "tunic" ) ~= nil then e1.armor = 2 end if string.find( e1.itemname, "leggings" ) ~= nil or string.find( e1.itemname, "pants" ) ~= nil then e1.armor = 3 end if string.find( e1.itemname, "boots" ) ~= nil then e1.armor = 4 end end if e2.material == nil then e2.material = 0 if string.find( e2.itemname, "leather" ) ~= nil then e2.material = 1 end if string.find( e2.itemname, "iron" ) ~= nil then e2.material = 2 end if string.find( e2.itemname, "gold" ) ~= nil then e2.material = 3 end if string.find( e2.itemname, "diamond" ) ~= nil then e2.material = 4 end e2.armor = 0 if string.find( e2.itemname, "helmet" ) ~= nil or string.find( e2.itemname, "cap" ) ~= nil then e2.armor = 1 end if string.find( e2.itemname, "chestplate" ) ~= nil or string.find( e2.itemname, "tunic" ) ~= nil then e2.armor = 2 end if string.find( e2.itemname, "leggings" ) ~= nil or string.find( e2.itemname, "pants" ) ~= nil then e2.armor = 3 end if string.find( e2.itemname, "boots" ) ~= nil then e2.armor = 4 end end if e1.material ~= e2.material then return ( e1.material < e2.material ) end if e1.armor ~= e2.armor then return ( e1.armor < e2.armor ) end return ( e1.itemname < e2.itemname ) end, fill_in_chest_derivative_data = function( chest_names ) for k, chest_name in pairs(chest_names) do local chest = p.chests[chest_name] if chest == nil then break end chest.allRollsJava = {} chest.itemDataJava = {} for k, pool in pairs( chest.poolsJava or {} ) do table.insert( chest.allRollsJava, ( pool.rolls[1] == pool.rolls[2] and pool.rolls[1] or pool.rolls[1]..'–'..pool.rolls[2] ) ) local total_weight = 0 for itemname, item in pairs(pool.items) do total_weight = total_weight + item[3] end pool.totalweight = total_weight q.fill_in_chest_item_details( chest.itemDataJava, pool, #chest.allRollsJava ) end chest.allRollsJavaUpcoming = {} chest.itemDataJavaUpcoming = {} for k, pool in pairs( chest.poolsJavaUpcoming or chest.poolsJava or {} ) do table.insert( chest.allRollsJavaUpcoming, ( pool.rolls[1] == pool.rolls[2] and pool.rolls[1] or pool.rolls[1]..'–'..pool.rolls[2] ) ) local total_weight = 0 for itemname, item in pairs(pool.items) do total_weight = total_weight + item[3] end pool.totalweight = total_weight q.fill_in_chest_item_details( chest.itemDataJavaUpcoming, pool, #chest.allRollsJavaUpcoming ) end chest.allRollsBedrock = {} chest.itemDataBedrock = {} for k, pool in pairs( chest.poolsBedrock or chest.poolsJava or {} ) do table.insert( chest.allRollsBedrock, ( pool.rolls[1] == pool.rolls[2] and pool.rolls[1] or pool.rolls[1]..'–'..pool.rolls[2] ) ) local total_weight = 0 for itemname, item in pairs(pool.items) do total_weight = total_weight + item[3] end pool.totalweight = total_weight q.fill_in_chest_item_details( chest.itemDataBedrock, pool, #chest.allRollsBedrock ) end chest.allRollsBedrockUpcoming = {} chest.itemDataBedrockUpcoming = {} for k, pool in pairs( chest.poolsBedrockUpcoming or chest.poolsJava or {} ) do table.insert( chest.allRollsBedrockUpcoming, ( pool.rolls[1] == pool.rolls[2] and pool.rolls[1] or pool.rolls[1]..'–'..pool.rolls[2] ) ) local total_weight = 0 for itemname, item in pairs(pool.items) do total_weight = total_weight + item[3] end pool.totalweight = total_weight q.fill_in_chest_item_details( chest.itemDataBedrockUpcoming, pool, #chest.allRollsBedrockUpcoming ) end end end, fill_in_chest_item_details = function( data, pool, ct ) for item_name, item in pairs(pool.items) do if p.items[item_name] then local min_stacksize = item[1] local max_stacksize = item[2] local min_pool_rolls = pool.rolls[1] local max_pool_rolls = pool.rolls[2] local item_weight = item[3] if data[item_name] == nil then data[item_name] = { avgamount = 0, chanceany = 0, itemname = item_name, sortsize = {}, sortweight = {}, sizes = {}, weights = {}, } for i = 1, ct-1 do data[item_name].sortsize[i] = 0 data[item_name].sortweight[i] = 0 data[item_name].sizes[i] = '—' data[item_name].weights[i] = '—' end end data[item_name].avgamount = data[item_name].avgamount + p.calc_average_amount_this_item_per_pool( min_stacksize, max_stacksize, min_pool_rolls, max_pool_rolls, item_weight, pool.totalweight ) data[item_name].chanceany = data[item_name].chanceany + (1 - data[item_name].chanceany) * p.calc_chance_any_of_this_item_per_pool( min_pool_rolls, max_pool_rolls, item_weight, pool.totalweight ) data[item_name].sortsize[ct] = ( min_stacksize + max_stacksize ) / 2 data[item_name].sortweight[ct] = item_weight; data[item_name].sizes[ct] = ( min_stacksize == max_stacksize and min_stacksize or min_stacksize .. '–' .. max_stacksize ) data[item_name].weights[ct] = p.current_frame:expandTemplate{ title = 'frac', args = { item_weight, pool.totalweight } } end end for item_name, d in pairs(data) do if not d.sizes[ct] then d.sortsize[ct] = 0 d.sortweight[ct] = 0 d.sizes[ct] = '—' d.weights[ct] = '—' end end end, construct_ordered_items_from_first_chest = function( chest_names, suffix ) local items_from_first_table = {} local item_chests = {} local item_names_ordered = {} for item_name, item in pairs( p.chests[chest_names[1]]['itemData'..suffix] ) do table.insert( items_from_first_table, item ) end table.sort( items_from_first_table, q.sort_items ) for k, item in pairs( items_from_first_table ) do table.insert( item_names_ordered, item.itemname ) item_chests[item.itemname] = true end return item_names_ordered, item_chests end, get_ordered_items_from_other_chests = function( chest_names, item_chests, suffix ) local items_not_from_first_table = {} for chest_idx = 2, #chest_names do for item_name, item in pairs( p.chests[chest_names[chest_idx]]['itemData'..suffix] ) do if item_chests[item_name] == nil then p.items[item_name].itemname = item_name table.insert( items_not_from_first_table, p.chests[chest_names[chest_idx]]['itemData'..suffix][item_name] ) item_chests[item_name] = true end end end table.sort( items_not_from_first_table, q.sort_items ) return items_not_from_first_table end, add_other_items_to_first_list = function( chest_names, item_names_ordered, item_chests, items_not_from_first_table ) for k, item in pairs( items_not_from_first_table ) do table.insert( item_names_ordered, item.itemname ) end return item_names_ordered end, set_up_ordered_item_rows = function( chest_names, item_names_ordered, suffix ) for k, itemname in pairs(item_names_ordered) do item_names_ordered[k] = {itemname} for chest_idx = 1, #chest_names do if suffix == 'JavaUpcoming' or p.chests[chest_names[chest_idx]]['pools'..suffix] ~= nil then local item_data = p.chests[chest_names[chest_idx]]['itemData'..suffix][itemname] if item_data == nil then table.insert( item_names_ordered[k], false ) else table.insert( item_names_ordered[k], item_data ) end end end end return item_names_ordered end, construct_ordered_item_rows = function( chest_names, suffix ) -- for the first chest, sort its by chance desc, then by avg amount desc, then alphabetically asc local item_names_ordered, item_chests = q.construct_ordered_items_from_first_chest( chest_names, suffix ) if #chest_names > 1 then -- after that, sort all the remaining items in list order local items_not_from_first_table = q.get_ordered_items_from_other_chests( chest_names, item_chests, suffix ) item_names_ordered = q.add_other_items_to_first_list( chest_names, item_names_ordered, item_chests, items_not_from_first_table ) end -- set up item_names_ordered so that each is a row, representing chest values item_names_ordered = q.set_up_ordered_item_rows( chest_names, item_names_ordered, suffix ) return item_names_ordered end, print_table = function( chest_names, columns, ordered_item_rows, suffix ) local html = {} local use_roll_row = false local use_superheader = false local superheader_sizes = {} for i = 1, #chest_names do sh = p.chests[chest_names[i]].superheader if sh ~= nil then if superheader_sizes[sh] == nil then superheader_sizes[sh] = 0 end superheader_sizes[sh] = superheader_sizes[sh] + 1 if #chest_names > 1 then use_superheader = true end end local allRolls = p.chests[chest_names[i]]['allRolls'..suffix] if #allRolls > 1 then use_roll_row = true end end if columns['stacksize'] == nil and columns['weight'] == nil then use_roll_row = false end local rowspan = ( #chest_names > 1 and 1 or 0 ) + ( use_superheader and 1 or 0 ) + 1 local hide_col_description = rowspan > 1 and q.tablelength(columns) == 1 if use_roll_row then rowspan = rowspan + 1 end if q.tablelength(columns) == 1 then for column_name, v in pairs(columns) do table.insert( html, "Values represent " ) table.insert( html, p.columns[column_name] ) table.insert( html, "\n" ) end end if #chest_names == 1 then if q.tablelength(columns) == 1 then table.insert( html, "<br>" ) end local chest_name = chest_names[1] local allRolls = p.chests[chest_name]['allRolls'..suffix] local chest_type = p.chests[chest_name].chest_type or "chest" local display_name = p.chests[chest_name].display_name chest_name = chest_name:gsub( "-", " " ) table.insert( html, "Each " ) table.insert( html, display_name or chest_name ) if chest_type ~= 'chest' and chest_type ~= 'minecart with chest' then table.insert( html, " contains " ) else table.insert( html, " chest contains " ) end if #allRolls == 1 then table.insert( html, allRolls[1] ) table.insert( html, " item stacks, " ) else table.insert( html, ' items drawn from ' ) table.insert( html, #allRolls ) table.insert( html, ' pools, ' ) end table.insert( html, " with the following distribution: \n" ) end table.insert( html, '<div style="overflow:auto">\n' ) table.insert( html, "<table class='wikitable sortable jquery-tablesorter'>\n" ) table.insert( html, "<tr>\n" ) table.insert( html, "<th rowspan=" ) table.insert( html, ( rowspan - ( hide_col_description and 1 or 0 ) ) ) table.insert( html, "> Item </th>\n" ) local superheader_cols_used = {} if #chest_names > 1 then local row1, row2 = {}, {} for i = 1, #chest_names do if suffix == 'JavaUpcoming' or p.chests[chest_names[i]]['pools'..suffix] ~= nil then local allRolls = p.chests[chest_names[i]]['allRolls'..suffix] local colspan = q.tablelength(columns) local allRollsSpan = #allRolls == 0 and 1 or #allRolls if columns['stacksize'] ~= nil then colspan = colspan - 1 + allRollsSpan end if columns['weight'] ~= nil then colspan = colspan - 1 + allRollsSpan end local row = row1 rowspan = 1 if use_superheader then sh = p.chests[chest_names[i]].superheader if sh ~= nil then if superheader_cols_used[sh] == nil then table.insert( row, "<th colspan=" ) table.insert( row, ( colspan * superheader_sizes[sh] ) ) table.insert( row, ">" ) table.insert( row, sh ) table.insert( row, "</th>\n" ) superheader_cols_used[sh] = 0 end row = row2 else rowspan = rowspan + 1 end end if use_roll_row and hide_col_description and #allRolls < 2 then rowspan = rowspan + 1 end table.insert( row, "<th colspan=" ) table.insert( row, colspan ) if rowspan > 1 then table.insert( row, " rowspan=" ) table.insert( row, rowspan ) end table.insert( row, ">" ) table.insert( row, p.chests[ chest_names[i] ].header ) if #allRolls > 0 then table.insert( row, ' <br><span style="font-weight:normal; font-style:italic; font-size:11px;">(' ) if #allRolls == 1 then table.insert( row, allRolls[1] ) else local s = ( #allRolls > 2 and ', ' or ' ' ) for i = 1, #allRolls-1 do table.insert( row, allRolls[i] ) table.insert( row, s ) end table.insert( row, 'and ' ) table.insert( row, allRolls[#allRolls] ) end table.insert( row, ' stacks)</span>' ) end table.insert( row, "</th>\n" ) end end table.insert( html, table.concat( row1 ) ) table.insert( html, "</tr><tr>\n" ) if #row2 then table.insert( html, table.concat( row2 ) ) table.insert( html, "</tr><tr>\n" ) end end if not hide_col_description then local headersort_th_open if use_roll_row then headersort_th_open = "<th rowspan='2' class='headersort' role='columnheader button' data-sort-type='number'> <abbr title='" else headersort_th_open = "<th class='headersort' role='columnheader button' data-sort-type='number'> <abbr title='" end for i = 1, #chest_names do if suffix == 'JavaUpcoming' or p.chests[chest_names[i]]['pools'..suffix] ~= nil then local allRolls = p.chests[chest_names[i]]['allRolls'..suffix] local allRollsSpan = #allRolls == 0 and 1 or #allRolls local headersort_th_colspan_open if #allRolls > 1 then headersort_th_colspan_open = "<th colspan='" .. allRollsSpan .. "' role='columnheader'> <abbr title='" else headersort_th_colspan_open = headersort_th_open end if columns['stacksize'] ~= nil then table.insert( html, headersort_th_colspan_open ) table.insert( html, p.columns['stacksize'] ) table.insert( html, "'> Stack Size </abbr> <span class=mobileonly>") table.insert( html, p.current_frame:extensionTag{ name = 'ref', content = p.columns['stacksize'], args = { name = 'stacksize', group = 'FN' } } ) table.insert( html, "</span></th>\n" ) end if columns['weight'] ~= nil then table.insert( html, headersort_th_colspan_open ) table.insert( html, p.columns['weight'] ) table.insert( html, "'> Weight </abbr> <span class=mobileonly> ") table.insert( html, p.current_frame:extensionTag{ name = 'ref', content = p.columns['weight'], args = { name = 'weight', group = 'FN' } } ) table.insert( html, "</span></th>\n" ) end if columns['chance'] ~= nil then table.insert( html, headersort_th_open ) table.insert( html, p.columns['chance'] ) table.insert( html, "'> Chance </abbr> <span class=mobileonly> ") table.insert( html, p.current_frame:extensionTag{ name = 'ref', content = p.columns['chance'], args = { name = 'chance', group = 'FN' } } ) table.insert( html, "</span></th>\n" ) end if columns['items'] ~= nil then table.insert( html, headersort_th_open ) table.insert( html, p.columns['items'] ) table.insert( html, "'> Avg.<br>per chest </abbr> <span class=mobileonly> ") table.insert( html, p.current_frame:extensionTag{ name = 'ref', content = p.columns['items'], args = { name = 'items', group = 'FN' } } ) table.insert( html, "</span></th>\n" ) end if columns['chests'] ~= nil then table.insert( html, headersort_th_open ) table.insert( html, p.columns['chests'] ) table.insert( html, "'> Avg. # chests<br>to search </abbr> <span class=mobileonly> ") table.insert( html, p.current_frame:extensionTag{ name = 'ref', content = p.columns['chests'], args = { name = 'chests', group = 'FN' } } ) table.insert( html, "</span></th>\n" ) end end end table.insert( html, "</tr><tr>\n" ) end if use_roll_row then local rowcols = ( columns['stacksize'] ~= nil and 1 or 0 ) + ( columns['weight'] ~= nil and 1 or 0 ) for i = 1, #chest_names do local allRolls = p.chests[chest_names[i]]['allRolls'..suffix] if #allRolls > 1 then for j = 1, rowcols do for k = 1, #allRolls do table.insert( html, "<th class='headersort' role='columnheader button' data-sort-type='number' style='font-weight:normal'><abbr title='The chest draws " ) table.insert( html, allRolls[k] ) table.insert( html, " stack(s) randomly from this pool.'>" ) table.insert( html, allRolls[k] ) table.insert( html, "×</abbr></th>\n" ) end end end end table.insert( html, "</tr><tr>\n" ) end for i = 1, #ordered_item_rows do if type( ordered_item_rows[i] ) == "table" then for j = 1, #ordered_item_rows[i] do local chest_item = ordered_item_rows[i][j] if type( chest_item ) == "table" then local avg_amount = string.format("%.3f", chest_item.avgamount) local chance_any = string.format("%.1f", chest_item.chanceany*100) .. "%" local num_chests = string.format("%.1f", 1/chest_item.chanceany) table.insert( html, "\n" ) if columns['stacksize'] ~= nil then for k = 1, #chest_item.sizes do table.insert( html, "<td style='text-align:center;' data-sort-value='" ) table.insert( html, ( chest_item.sortsize[k] == 0 and "9e99" or chest_item.sortsize[k] ) ) table.insert( html, "'>" ) table.insert( html, chest_item.sizes[k] ) table.insert( html, "</td>" ) end end if columns['weight'] ~= nil then for k = 1, #chest_item.sizes do table.insert( html, "<td style='text-align:center;' data-sort-value='" ) table.insert( html, ( chest_item.sortweight[k] == 0 and "9e99" or chest_item.sortweight[k] ) ) table.insert( html, "'>" ) table.insert( html, chest_item.weights[k] ) table.insert( html, "</td>" ) end end if columns['chance'] ~= nil then table.insert( html, "<td style='text-align:center;'>" ) table.insert( html, chance_any ) table.insert( html, "</td>" ) end if columns['items'] ~= nil then table.insert( html, "<td style='text-align:center;'>" ) table.insert( html, avg_amount ) table.insert( html, "</td>" ) end if columns['chests'] ~= nil then table.insert( html, "<td style='text-align:center;'>" ) table.insert( html, num_chests ) table.insert( html, "</td>" ) end elseif type( chest_item ) == "boolean" then local allRolls = p.chests[chest_names[j-1]]['allRolls'..suffix] local allRollsSpan = #allRolls == 0 and 1 or #allRolls table.insert( html, "\n" ) if columns['stacksize'] ~= nil then for k = 1, allRollsSpan do table.insert( html, "<td data-sort-value='9e99' style='text-align:center;'>—</td>" ) end end if columns['weight'] ~= nil then for k = 1, allRollsSpan do table.insert( html, "<td data-sort-value='9e99' style='text-align:center;'>—</td>" ) end end if columns['chance'] ~= nil then table.insert( html, "<td data-sort-value='9e99' style='text-align:center;'>—</td>" ) end if columns['items'] ~= nil then table.insert( html, "<td data-sort-value='9e99' style='text-align:center;'>—</td>" ) end if columns['chests'] ~= nil then table.insert( html, "<td data-sort-value='9e99' style='text-align:center;'>—</td>" ) end else if i > 1 then table.insert( html, "</tr><tr>" ) end local item = p.items[chest_item] local s = require( 'Module:Sprite' ) table.insert( html, "\n<td>" ) local image, spriteCat = s.link { id = item.id or chest_item, link = item.link or string.gsub(chest_item,'-',' '), text = item.title or q.titlecase(string.gsub(chest_item,'-',' ')), wrap = 'true', data = ( item[1] == 'item' and 'ItemSprite' or 'BlockSprite' ) } table.insert( html, image ) table.insert( html, spriteCat ) if item.note and p.notes[item.note] then table.insert( html, p.current_frame:extensionTag( 'ref', p.notes[item.note], { group='note', name=item.note } ) ) end if item.note1 and p.notes[item.note1] then if item.note == nil or p.notes[item.note] == nil or item.note ~= item.note1 then table.insert( html, p.current_frame:extensionTag( 'ref', p.notes[item.note1], { group='note', name=item.note1 } ) ) end end table.insert( html, "</td>" ) end if j == #ordered_item_rows[i] then table.insert( html, "</tr>" ) end end table.insert( html, "\n" ) end end table.insert( html, "</table></div>") return table.concat( html ) end, titlecase = function( str ) local buf = {} for word in string.gfind(str, "%S+") do if word == "and" then table.insert( buf, word ) else local first, rest = string.sub( word, 1, 1 ), string.sub( word, 2 ) table.insert( buf, string.upper(first) .. string.lower(rest) ) end end return table.concat( buf, " " ) end, capitalize = function( str ) return ( string.lower(str):gsub( "^%l", string.upper ) ) end, lcfirst = function( str ) return ( string.gsub( str, "^%u", string.lower ) ) end, compare_tables = function( a, b ) local seen = {} for k, v in pairs( a ) do if type( v ) ~= type( b[k] ) then return true end if v ~= b[k] then return true end if type( v ) == 'table' and q.compare_tables( v, b[k] ) then return true end seen[k] = true end for k, v in pairs( b ) do if not seen[k] then return true end end return false end, } string.lpad = function(str, len, char) if char == nil then char = ' ' end return string.rep(char, len - #(''..str)) .. str end return p