새로 오신 분들은 길라잡이를 꼭 읽어주세요.

문서의 정리·작성번역을 도와주시면 마인크래프트 위키에 큰 힘이 됩니다.

모듈:LootChest

Minecraft Wiki
이동: 둘러보기, 검색
이 문서는 설명문서입니다. 틀 페이지 본문에 삽입되어야 합니다. 자세한 정보는 틀:설명문서를 참조하십시오.

Maintenance[원본 편집]

The data for Java release versions is current as of 1.14. Sealbudsman talk | contribs 18:30, 4 May 2019 (UTC)
The data for Java snapshots is current as of 1.14. Sealbudsman talk | contribs 18:30, 4 May 2019 (UTC)
The data for Bedrock release versions is current as of 1.11.2. Sealbudsman talk | contribs 18:30, 4 May 2019 (UTC)
The data for Bedrock beta versions is current as of beta 1.12.0.3. Sealbudsman talk | contribs 18:30, 4 May 2019 (UTC)

.base usage (Template:LootChest)[원본 편집]

Generates a table of the contents of the designated chests, with columns corresponding to various statistics about the availability of those items.

Invoking[원본 편집]

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[원본 편집]

bonus,
buried-treasure,
desert-temple ( desert ),
dungeon,
end-city,
igloo,
jungle-temple ( jungle ),
jungle-temple-dispenser,
mineshaft,
nether-fortress ( nether, fortress ),
pillager-outpost ( outpost ),
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-blacksmith ( blacksmith ),
village-butcher ( butcher ),
village-cartographer ( cartographer ),
village-desert-house ( desert-house ),
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-two-room-house,
village-weaponsmith ( weaponsmith ),
woodland-mansion ( mansion )

Column parameters[원본 편집]

chance: 하나의 상자에서 이 아이템이 존재할 확률.,
chests: 이 아이템을 찾으려면 평균 몇개의 상자를 찾아야 할까?,
items: 상자당 기대되는 아이템의 수. 많은 상자를 평균한 값임.,
stacksize: 이 아이템의 묶음의 수 (쌓기가 안되는 경우, 그냥 갯수).,
weight: 이 종류에서 다른 아이템에 비한 이 아이템의 가중치.

Example[원본 편집]

{{#invoke:LootChest|base}} → all chests and all columns

{{#invoke:LootChest|base|blacksmith|jungle|bonus|chance|stacksize}} → only blacksmith and jungle chests, and only 'stacksize' and 'chance' columns

.base2 usage (Template:LootChestItem)[원본 편집]

Prints a summary of this item's availability in the various worldgen chests.

Invoking[원본 편집]

It takes exactly one item name as a parameter.

{{#invoke:LootChest|base2|<itemParam>}}

Item parameters[원본 편집]

acacia-log, acacia-sapling, activator-rail, apple, arrow, bamboo, beef, beetroot, beetroot-seeds, beetroot-soup, birch-log, birch-sapling, black-wool, blue-ice, bone, book, book-and-quill, bottle-o'-enchanting, bread, brown-mushroom, brown-wool, bucket, buried-treasure-map, cactus, cake, carrot, chainmail-boots, chainmail-chestplate, chainmail-helmet, chainmail-leggings, clay, clock, coal, cocoa-beans, compass, cooked-cod, cooked-salmon, crossbow, 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-wait, emerald, empty, empty-map, enchanted-book, enchanted-book-rnd, enchanted-book-rnd-treasure, enchanted-diamond-boots, enchanted-diamond-chestplate, enchanted-diamond-helmet, enchanted-diamond-leggings, enchanted-diamond-pickaxe, enchanted-diamond-shovel, enchanted-diamond-sword, enchanted-fishing-rod, enchanted-golden-apple, enchanted-iron-boots, enchanted-iron-chestplate, enchanted-iron-helmet, enchanted-iron-leggings, enchanted-iron-pickaxe, enchanted-iron-shovel, enchanted-iron-sword, enchanted-leather-boots, enchanted-leather-cap, enchanted-leather-pants, enchanted-leather-tunic, ender-pearl, feather, fern, flint-and-steel, flower-pot, furnace, gold-ingot, gold-nugget, golden-apple, golden-chestplate, golden-helmet, golden-horse-armor, 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-sword, jungle-log, jungle-sapling, lapis-lazuli, large-fern, lead, leather, leather-boots, leather-cap, leather-pants, leather-tunic, light-gray-wool, melon-seeds, name-tag, nether-wart, oak-log, oak-planks, oak-sapling, oak-wood-only, obsidian, paper, poisonous-potato, poppy, potato, potion-of-regeneration, potion-of-water-breathing, powered-rail, prismarine-crystals, pumpkin, pumpkin-pie, pumpkin-seeds, rail, raw-mutton, raw-porkchop, raw-salmon, redstone, rotten-flesh, saddle, sand, shears, smooth-stone, snow-block, snowball, spider-eye, spruce-log, spruce-sapling, spruce-sign, stick, stone, stone-axe, stone-bricks, stone-pickaxe, string, suspicious-stew, tall-grass, tnt, torch, wheat, wheat-seeds, white-wool, wooden-axe, wooden-hoe, wooden-pickaxe, yellow-dye

Example[원본 편집]

{{#invoke:LootChest|base2|iron-ingot}} → 철괴는 38.4%의 확률로 엔드 도시 상자에서 4~8개의 묶음으로 생성된다. 18.5%의 확률로 던전 상자에서, 18.5%의 확률로 삼림 대저택 상자에서, 99.4%의 확률로 땅에 묻힌 보물 상자에서, 모두 1~4개의 묶음으로 생성된다. 그리고 23.3%의 확률로 요새 제단 상자에서, 97.4%의 확률로 난파선#보물 상자에서, 34.3%의 확률로 요새 저장실 상자에서, 45.1%의 확률로 마을 대장간 상자에서, 18.0%의 확률로 사막 사원 상자에서, 43.3%의 확률로 정글 사원 상자에서, 19.0%의 확률로 네더 요새 상자에서, 31.6%의 확률로 폐광 상자가 실린 광산 수레에서 , 모두 1~5개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 45.1%의 확률로 마을 무기 제조인 상자에서 37.4%의 확률로 정글 사원 상자에서 1~5개의 묶음으로 생성된다. 그리고 54.2%의 확률로 마을 갑옷 제조인 상자에서 30.5%의 확률로 약탈자 전초기지 상자에서 1~3개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 57.2%의 확률로 땅에 묻힌 보물 상자에서 3~5개의 묶음으로 생성된다. 그리고 22.6%의 확률로 요새 제단 상자에서, 28.5%의 확률로 요새 저장실 상자에서, 43.2%의 확률로 정글 사원 상자에서, 모두 1~5개의 묶음으로 생성된다.

{{#invoke:LootChest|base2|emerald}} → 에메랄드는 14.9%의 확률로 해저 폐허 상자에서, 16.4%의 확률로 해저 폐허 상자에서, 7.6%의 확률로 이글루 상자에서, 모두 1개의 묶음으로 생성된다. 53.1%의 확률로 땅에 묻힌 보물 상자에서 4~8개의 묶음으로 생성된다. 9.0%의 확률로 엔드 도시 상자에서 2~6개의 묶음으로 생성된다. 18.0%의 확률로 사막 사원 상자에서 10.4%의 확률로 정글 사원 상자에서 1~3개의 묶음으로 생성된다. 그리고 73.7%의 확률로 난파선#보물 상자에서 1~5개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 31.8%의 확률로 마을 갑옷 제조인 상자에서, 12.3%의 확률로 마을 양치기 상자에서, 10.2%의 확률로 마을 도살업자 상자에서, 20.8%의 확률로 마을 석공 상자에서, 모두 1개의 묶음으로 생성된다. 21.5%의 확률로 마을 집 상자에서, 9.9%의 확률로 마을 집 상자에서, 24.3%의 확률로 마을 집 상자에서, 18.6%의 확률로 마을 집 상자에서, 17.3%의 확률로 마을 가죽 세공인 상자에서, 모두 1~4개의 묶음으로 생성된다. 그리고 14.3%의 확률로 마을 집 상자에서 8.7%의 확률로 정글 사원 상자에서 1~3개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 7.2%의 확률로 요새 제단 상자에서 10.4%의 확률로 정글 사원 상자에서 1~3개의 묶음으로 생성된다.

Source[원본 편집]

  • 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[원본 편집]

  • 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.
'<sprite-type>'
Either item or block.
[, id='<sprite-id>']
Use this to specify a sprite defined in Module:BlockSprite or Module:ItemSprite. Otherwise it will use the sprite with the name given by item-id.
[, 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.
[, preserve_case=false]
Use false when an item name should follow the capitalization exactly specified in title, and not follow sentence case, like 'TNT'.
[, note='<note-name>']
Indicates that a note will appear 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].pools[n]
  • p.chests[n].poolsDev[n]
    • rolls
{ <min-number-of-stacks>, <max-number-of-stacks> }
  • p.chests[n].pools[n].items
  • p.chests[n].poolsDev[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[원본 편집]

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 will be found, per-chest (not per-structure).

Item tests[원본 편집]

{{#invoke:LootChest|base2_test}}



TNT는 9.5%의 확률로 난파선#보급품 상자에서 62.7%의 확률로 땅에 묻힌 보물 상자에서 1~2개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 8.1%의 확률로 난파선#보급품 상자에서 1~2개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 34.3%의 확률로 땅에 묻힌 보물 상자에서 1~2개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 하얀색 양털은 55.8%의 확률로 마을 양치기 상자에서 1~8개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 고사리는 18.6%의 확률로 마을 집 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 큰 고사리는 18.6%의 확률로 마을 집 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 가죽은 17.3%의 확률로 마을 가죽 세공인 상자에서 1~3개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 가문비나무 묘목은 40.6%의 확률로 마을 집 상자에서 1~5개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 16.7%의 확률로 보너스 상자 상자에서 4개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 갈색 양털은 23.3%의 확률로 마을 양치기 상자에서 1~3개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 가죽 부츠는 31.8%의 확률로 마을 가죽 세공인 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 회색 양털은 23.3%의 확률로 마을 양치기 상자에서 1~3개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 마른 덤불은 26.6%의 확률로 마을 집 상자에서 1~3개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 가문비나무 표지판은 9.7%의 확률로 마을 집 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 양귀비는 12.9%의 확률로 마을 집 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 익히지 않은 소고기는 48.6%의 확률로 마을 도살업자 상자에서 1~3개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 회백색 양털은 23.3%의 확률로 마을 양치기 상자에서 1~3개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 대나무는 15.6%의 확률로 난파선#보급품 상자에서 51.0%의 확률로 정글 사원 상자에서 1~3개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 눈덩이는 66.3%의 확률로 마을 집 상자에서 1~7개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 석재 벽돌은 37.7%의 확률로 마을 석공 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 민들레는 12.9%의 확률로 마을 집 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 익히지 않은 돼지고기는 48.6%의 확률로 마을 도살업자 상자에서 1~3개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 초록색 염료는 14.3%의 확률로 마을 집 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 검은색 양털은 33.0%의 확률로 마을 양치기 상자에서 1~3개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 익히지 않은 양고기는 48.6%의 확률로 마을 도살업자 상자에서 1~3개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 아카시아나무 묘목은 71.7%의 확률로 마을 집 상자에서 1~2개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 16.7%의 확률로 보너스 상자 상자에서 4개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 키 큰 잔디는 45.9%의 확률로 마을 집 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 푸른얼음은 9.9%의 확률로 마을 집 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 눈 블록은 34.5%의 확률로 마을 집 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 화분은 20.8%의 확률로 마을 석공 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 수상한 스튜[note 6]는 57.4%의 확률로 난파선#보급품 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 잔디는 45.9%의 확률로 마을 집 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 노란색 염료는 20.8%의 확률로 마을 석공 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 가죽 바지는 31.8%의 확률로 마을 가죽 세공인 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 밀 씨앗은 71.7%의 확률로 마을 집 상자에서 1~5개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 55.1%의 확률로 마을 방이 두 개인 집 상자에서 2~4개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 화로는 9.9%의 확률로 마을 집 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 선인장은 80.6%의 확률로 마을 집 상자에서 1~4개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 50.0%의 확률로 보너스 상자 상자에서 1~2개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 매끄러운 돌은 20.8%의 확률로 마을 석공 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 돌은 37.7%의 확률로 마을 석공 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 가위는 12.3%의 확률로 마을 양치기 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 가죽 모자는 31.8%의 확률로 마을 가죽 세공인 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 점토는 14.3%의 확률로 마을 집 상자에서 1개의 묶음으로 생성된다. 그리고 20.8%의 확률로 마을 석공 상자에서 1~3개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 쇠뇌는 모두 약탈자 전초기지 상자에서 1개의 묶음으로 생성된다.

1.14[차기 버전용]의 경우, 사탕무 수프는 9.9%의 확률로 마을 집 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 갈색 버섯은 모두 보너스 상자 상자에서 1~2개의 묶음으로 생성된다.

베드락 에디션의 경우, 나무 괭이는 14.2%의 확률로 마을 방이 두 개인 집 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 마법이 부여된 책[note 1]은 17.5%의 확률로 삼림 대저택 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 먹물 주머니는 40.0%의 확률로 요새 저장실 상자에서 1~3개의 묶음으로 생성된다.

베드락 에디션의 경우, 사슬 각반은 57.2%의 확률로 땅에 묻힌 보물 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 사슬 부츠는 57.2%의 확률로 땅에 묻힌 보물 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 사슬 투구는 57.2%의 확률로 땅에 묻힌 보물 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 사탕무는 55.1%의 확률로 마을 방이 두 개인 집 상자에서 5~8개의 묶음으로 생성된다.

베드락 에디션의 경우, 수중 호흡의 물약은 46.9%의 확률로 땅에 묻힌 보물 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 음반 (mellohi)은 18.9%의 확률로 땅에 묻힌 보물 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 음반 (wait)은 18.9%의 확률로 땅에 묻힌 보물 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 자작나무 묘목은 16.7%의 확률로 보너스 상자 상자에서 4개의 묶음으로 생성된다.

베드락 에디션의 경우, 재생의 물약은 34.3%의 확률로 땅에 묻힌 보물 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 정글 나무 묘목은 16.7%의 확률로 보너스 상자 상자에서 4개의 묶음으로 생성된다.

베드락 에디션의 경우, 짙은 참나무 묘목은 16.7%의 확률로 보너스 상자 상자에서 4개의 묶음으로 생성된다.

베드락 에디션의 경우, 책과 깃펜은 18.9%의 확률로 땅에 묻힌 보물 상자에서 1~2개의 묶음으로 생성된다.

베드락 에디션의 경우, 케이크는 4.1%의 확률로 땅에 묻힌 보물 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 코코아 콩은 50.0%의 확률로 보너스 상자 상자에서 1~2개의 묶음으로 생성된다.

가문비나무 원목은 28.0%의 확률로 보너스 상자 상자에서 1~3개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 65.6%의 확률로 마을 집 상자에서 1~5개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 25.0%의 확률로 보너스 상자 상자에서 1~3개의 묶음으로 생성된다.

가죽 조끼는 4.3%의 확률로 해저 폐허 상자에서, 8.3%의 확률로 해저 폐허 상자에서, 75.0%의 확률로 땅에 묻힌 보물 상자에서, 모두 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 31.8%의 확률로 마을 가죽 세공인 상자에서 1개의 묶음으로 생성된다.

감자는 50.7%의 확률로 난파선#보급품 상자에서 2~6개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 66.3%의 확률로 마을 집 상자에서, 76.9%의 확률로 마을 집 상자에서, 65.6%의 확률로 마을 집 상자에서, 모두 1~7개의 묶음으로 생성된다. 57.5%의 확률로 약탈자 전초기지 상자에서 2~5개의 묶음으로 생성된다. 그리고 44.9%의 확률로 난파선#보급품 상자에서 2~6개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 50.0%의 확률로 보너스 상자 상자에서 1~2개의 묶음으로 생성된다. 그리고 81.7%의 확률로 마을 방이 두 개인 집 상자에서 5~8개의 묶음으로 생성된다.

거미 눈은 28.7%의 확률로 사막 사원 상자에서 1~3개의 묶음으로 생성된다.

경험치 병은 14.1%의 확률로 난파선#보물 상자에서 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 60.9%의 확률로 약탈자 전초기지 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 11.8%의 확률로 땅에 묻힌 보물 상자에서 1개의 묶음으로 생성된다.

금 조각은 36.6%의 확률로 난파선#보물 상자에서 1~10개의 묶음으로 생성된다. 그리고 81.0%의 확률로 해저 폐허 상자에서 55.3%의 확률로 이글루 상자에서 1~3개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 11.3%의 확률로 마을 집 상자에서 12.9%의 확률로 마을 집 상자에서 1~3개의 묶음으로 생성된다.

금괴는 18.0%의 확률로 사막 사원 상자에서, 58.0%의 확률로 정글 사원 상자에서, 52.3%의 확률로 엔드 도시 상자에서, 모두 2~7개의 묶음으로 생성된다. 26.5%의 확률로 난파선#보물 상자에서 1~5개의 묶음으로 생성된다. 9.6%의 확률로 던전 상자에서, 9.6%의 확률로 삼림 대저택 상자에서, 88.0%의 확률로 땅에 묻힌 보물 상자에서, 모두 1~4개의 묶음으로 생성된다. 그리고 12.1%의 확률로 요새 제단 상자에서, 18.6%의 확률로 요새 저장실 상자에서, 25.6%의 확률로 마을 대장간 상자에서, 49.0%의 확률로 네더 요새 상자에서, 16.9%의 확률로 폐광 상자가 실린 광산 수레에서 , 모두 1~3개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 51.0%의 확률로 정글 사원 상자에서 2~7개의 묶음으로 생성된다. 그리고 25.6%의 확률로 마을 무기 제조인 상자에서 1~3개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 57.9%의 확률로 정글 사원 상자에서 2~7개의 묶음으로 생성된다. 34.3%의 확률로 땅에 묻힌 보물 상자에서 1~5개의 묶음으로 생성된다. 그리고 11.8%의 확률로 요새 제단 상자에서 15.2%의 확률로 요새 저장실 상자에서 1~3개의 묶음으로 생성된다.

깃털은 60.0%의 확률로 난파선#지도 상자에서 1~5개의 묶음으로 생성된다.

끈은 28.3%의 확률로 삼림 대저택 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 27.9%의 확률로 삼림 대저택 상자에서 1개의 묶음으로 생성된다. 그리고 34.3%의 확률로 땅에 묻힌 보물 상자에서 1~3개의 묶음으로 생성된다.

나무 곡괭이는 75.0%의 확률로 보너스 상자 상자에서 1개의 묶음으로 생성된다.

나무 도끼는 75.0%의 확률로 보너스 상자 상자에서 1개의 묶음으로 생성된다.

나침반은 7.7%의 확률로 난파선#지도 상자에서 10.9%의 확률로 요새 도서관 상자에서 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 26.3%의 확률로 마을 지도 제작자 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 10.5%의 확률로 요새 도서관 상자에서 1개의 묶음으로 생성된다.

네더 사마귀는 19.0%의 확률로 네더 요새 상자에서 3~7개의 묶음으로 생성된다.

다이아몬드 괭이는 21.8%의 확률로 삼림 대저택 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 21.5%의 확률로 삼림 대저택 상자에서 1개의 묶음으로 생성된다.

다이아몬드 말 갑옷은 2.5%의 확률로 요새 제단 상자에서, 5.7%의 확률로 마을 대장간 상자에서, 7.7%의 확률로 던전 상자에서, 6.3%의 확률로 사막 사원 상자에서, 5.3%의 확률로 정글 사원 상자에서, 11.8%의 확률로 네더 요새 상자에서, 4.6%의 확률로 엔드 도시 상자에서, 모두 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 5.7%의 확률로 마을 무기 제조인 상자에서 4.5%의 확률로 정글 사원 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 2.4%의 확률로 요새 제단 상자에서 5.3%의 확률로 정글 사원 상자에서 1개의 묶음으로 생성된다.

다이아몬드 흉갑은 7.7%의 확률로 삼림 대저택 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 7.6%의 확률로 삼림 대저택 상자에서 1개의 묶음으로 생성된다.

다이아몬드는 14.1%의 확률로 난파선#보물 상자에서 1개의 묶음으로 생성된다. 21.2%의 확률로 엔드 도시 상자에서 2~7개의 묶음으로 생성된다. 10.4%의 확률로 폐광 상자가 실린 광산 수레에서 53.1%의 확률로 땅에 묻힌 보물 상자에서 1~2개의 묶음으로 생성된다. 그리고 7.4%의 확률로 요새 제단 상자에서, 16.2%의 확률로 마을 대장간 상자에서, 6.3%의 확률로 사막 사원 상자에서, 15.3%의 확률로 정글 사원 상자에서, 19.0%의 확률로 네더 요새 상자에서, 모두 1~3개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 16.2%의 확률로 마을 무기 제조인 상자에서 12.9%의 확률로 정글 사원 상자에서 1~3개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 46.9%의 확률로 땅에 묻힌 보물 상자에서 1개의 묶음으로 생성된다. 그리고 7.2%의 확률로 요새 제단 상자에서 15.3%의 확률로 정글 사원 상자에서 1~3개의 묶음으로 생성된다.

당근은 50.7%의 확률로 난파선#보급품 상자에서 4~8개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 44.9%의 확률로 난파선#보급품 상자에서 4~8개의 묶음으로 생성된다. 그리고 57.5%의 확률로 약탈자 전초기지 상자에서 3~5개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 81.7%의 확률로 마을 방이 두 개인 집 상자에서 4~8개의 묶음으로 생성된다. 그리고 50.0%의 확률로 보너스 상자 상자에서 1~2개의 묶음으로 생성된다.

독이 있는 감자는 50.7%의 확률로 난파선#보급품 상자에서 2~6개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 44.9%의 확률로 난파선#보급품 상자에서 2~6개의 묶음으로 생성된다.

돌 곡괭이는 25.0%의 확률로 보너스 상자 상자에서 1개의 묶음으로 생성된다.

돌 도끼는 30.2%의 확률로 해저 폐허 상자에서, 14.7%의 확률로 이글루 상자에서, 25.0%의 확률로 보너스 상자 상자에서, 모두 1개의 묶음으로 생성된다.

땅에 묻힌 보물 지도는 43.5%의 확률로 해저 폐허 상자에서, 41.7%의 확률로 해저 폐허 상자에서, 모두 난파선#지도 상자에서, 모두 1개의 묶음으로 생성된다.

레드스톤 가루는 26.6%의 확률로 던전 상자에서 26.6%의 확률로 삼림 대저택 상자에서 1~4개의 묶음으로 생성된다. 그리고 12.1%의 확률로 요새 제단 상자에서, 18.6%의 확률로 요새 저장실 상자에서, 16.9%의 확률로 폐광 상자가 실린 광산 수레에서 , 모두 4~9개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 11.8%의 확률로 요새 제단 상자에서 15.2%의 확률로 요새 저장실 상자에서 4~9개의 묶음으로 생성된다.

레일은 78.4%의 확률로 폐광 상자가 실린 광산 수레에서 4~8개의 묶음으로 생성된다.

마법이 부여된 가죽 모자[note 4]는 26.0%의 확률로 난파선#보급품 상자에서 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 22.4%의 확률로 난파선#보급품 상자에서 1개의 묶음으로 생성된다.

마법이 부여된 가죽 바지[note 4]는 26.0%의 확률로 난파선#보급품 상자에서 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 22.4%의 확률로 난파선#보급품 상자에서 1개의 묶음으로 생성된다.

마법이 부여된 가죽 부츠[note 4]는 26.0%의 확률로 난파선#보급품 상자에서 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 22.4%의 확률로 난파선#보급품 상자에서 1개의 묶음으로 생성된다.

마법이 부여된 가죽 조끼[note 4]는 26.0%의 확률로 난파선#보급품 상자에서 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 22.4%의 확률로 난파선#보급품 상자에서 1개의 묶음으로 생성된다.

마법이 부여된 낚싯대[note 4]는 21.7%의 확률로 해저 폐허 상자에서 41.7%의 확률로 해저 폐허 상자에서 1개의 묶음으로 생성된다.

마법이 부여된 다이아몬드 각반[note 2]은 13.3%의 확률로 엔드 도시 상자에서 1개의 묶음으로 생성된다.

마법이 부여된 다이아몬드 검[note 2]은 13.3%의 확률로 엔드 도시 상자에서 1개의 묶음으로 생성된다.

마법이 부여된 다이아몬드 곡괭이[note 2]는 13.3%의 확률로 엔드 도시 상자에서 1개의 묶음으로 생성된다.

마법이 부여된 다이아몬드 부츠[note 2]는 13.3%의 확률로 엔드 도시 상자에서 1개의 묶음으로 생성된다.

마법이 부여된 다이아몬드 삽[note 2]은 13.3%의 확률로 엔드 도시 상자에서 1개의 묶음으로 생성된다.

마법이 부여된 다이아몬드 투구[note 2]는 13.3%의 확률로 엔드 도시 상자에서 1개의 묶음으로 생성된다.

마법이 부여된 다이아몬드 흉갑[note 2]은 13.3%의 확률로 엔드 도시 상자에서 1개의 묶음으로 생성된다.

마법이 부여된 책[note 3]은 2.5%의 확률로 요새 제단 상자에서, 4.0%의 확률로 요새 저장실 상자에서, 67.8%의 확률로 요새 도서관 상자에서, 5.3%의 확률로 정글 사원 상자에서, 모두 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 4.5%의 확률로 정글 사원 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 2.9%의 확률로 요새 제단 상자에서, 3.8%의 확률로 요새 저장실 상자에서, 72.9%의 확률로 요새 도서관 상자에서, 6.4%의 확률로 정글 사원 상자에서, 모두 1개의 묶음으로 생성된다.

마법이 부여된 책[note 4]은 21.7%의 확률로 해저 폐허 상자에서, 14.9%의 확률로 던전 상자에서, 23.5%의 확률로 사막 사원 상자에서, 14.1%의 확률로 폐광 상자가 실린 광산 수레에서 , 14.9%의 확률로 삼림 대저택 상자에서, 모두 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 11.0%의 확률로 약탈자 전초기지 상자에서 1개의 묶음으로 생성된다.

마법이 부여된 철 각반[note 2]은 13.3%의 확률로 엔드 도시 상자에서 1개의 묶음으로 생성된다.

마법이 부여된 철 검[note 2]은 13.3%의 확률로 엔드 도시 상자에서 1개의 묶음으로 생성된다.

마법이 부여된 철 곡괭이[note 2]는 13.3%의 확률로 엔드 도시 상자에서 1개의 묶음으로 생성된다.

마법이 부여된 철 부츠[note 2]는 13.3%의 확률로 엔드 도시 상자에서 1개의 묶음으로 생성된다.

마법이 부여된 철 삽[note 2]은 13.3%의 확률로 엔드 도시 상자에서 1개의 묶음으로 생성된다.

마법이 부여된 철 투구[note 2]는 13.3%의 확률로 엔드 도시 상자에서 1개의 묶음으로 생성된다.

마법이 부여된 철 흉갑[note 2]은 13.3%의 확률로 엔드 도시 상자에서 1개의 묶음으로 생성된다.

마법이 부여된 황금 사과는 3.1%의 확률로 던전 상자에서, 2.6%의 확률로 사막 사원 상자에서, 1.4%의 확률로 폐광 상자가 실린 광산 수레에서 , 3.1%의 확률로 삼림 대저택 상자에서, 모두 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 3.1%의 확률로 삼림 대저택 상자에서 1개의 묶음으로 생성된다.

막대기는 70.5%의 확률로 보너스 상자 상자에서 1~12개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 모두 보너스 상자 상자에서 1~12개의 묶음으로 생성된다.

모래는 59.0%의 확률로 사막 사원 상자에서 1~8개의 묶음으로 생성된다.

밀은 81.0%의 확률로 해저 폐허 상자에서, 84.2%의 확률로 해저 폐허 상자에서, 55.3%의 확률로 이글루 상자에서, 모두 2~3개의 묶음으로 생성된다. 50.7%의 확률로 난파선#보급품 상자에서 8~21개의 묶음으로 생성된다. 그리고 34.1%의 확률로 던전 상자에서 34.1%의 확률로 삼림 대저택 상자에서 1~4개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 55.8%의 확률로 마을 양치기 상자에서 1~6개의 묶음으로 생성된다. 44.9%의 확률로 난파선#보급품 상자에서 8~21개의 묶음으로 생성된다. 72.5%의 확률로 약탈자 전초기지 상자에서 3~5개의 묶음으로 생성된다. 80.6%의 확률로 마을 집 상자에서 1~7개의 묶음으로 생성된다. 그리고 48.6%의 확률로 마을 도살업자 상자에서 1~3개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 93.4%의 확률로 마을 방이 두 개인 집 상자에서 8~12개의 묶음으로 생성된다.

바다의 심장은 모두 땅에 묻힌 보물 상자에서 1개의 묶음으로 생성된다.

부싯돌과 부시는 19.0%의 확률로 네더 요새 상자에서 1개의 묶음으로 생성된다.

빈 지도는 7.7%의 확률로 난파선#지도 상자에서 10.9%의 확률로 요새 도서관 상자에서 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 46.2%의 확률로 마을 지도 제작자 상자에서 1~3개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 10.5%의 확률로 요새 도서관 상자에서 1개의 묶음으로 생성된다.

빵은 34.1%의 확률로 던전 상자에서 34.1%의 확률로 삼림 대저택 상자에서 1개의 묶음으로 생성된다. 61.5%의 확률로 보너스 상자 상자에서 1~2개의 묶음으로 생성된다. 그리고 33.5%의 확률로 요새 제단 상자에서, 47.5%의 확률로 요새 저장실 상자에서, 59.8%의 확률로 마을 대장간 상자에서, 44.3%의 확률로 폐광 상자가 실린 광산 수레에서 , 모두 1~3개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 80.6%의 확률로 마을 갑옷 제조인 상자에서, 80.6%의 확률로 마을 집 상자에서, 61.2%의 확률로 마을 지도 제작자 상자에서, 71.7%의 확률로 마을 집 상자에서, 66.3%의 확률로 마을 집 상자에서, 62.2%의 확률로 마을 석공 상자에서, 76.9%의 확률로 마을 집 상자에서, 65.6%의 확률로 마을 집 상자에서, 62.8%의 확률로 마을 가죽 세공인 상자에서, 모두 1~4개의 묶음으로 생성된다. 그리고 59.8%의 확률로 마을 무기 제조인 상자에서 1~3개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 모두 보너스 상자 상자에서 1~2개의 묶음으로 생성된다. 그리고 32.5%의 확률로 요새 제단 상자에서 40.0%의 확률로 요새 저장실 상자에서 1~3개의 묶음으로 생성된다.

뼈는 28.7%의 확률로 사막 사원 상자에서 69.3%의 확률로 정글 사원 상자에서 4~6개의 묶음으로 생성된다. 그리고 57.8%의 확률로 던전 상자에서, 59.0%의 확률로 사막 사원 상자에서, 57.8%의 확률로 삼림 대저택 상자에서, 모두 1~8개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 61.9%의 확률로 정글 사원 상자에서 4~6개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 69.2%의 확률로 정글 사원 상자에서 4~6개의 묶음으로 생성된다.

사과는 83.8%의 확률로 보너스 상자 상자에서 1~2개의 묶음으로 생성된다. 그리고 33.5%의 확률로 요새 제단 상자에서, 47.5%의 확률로 요새 저장실 상자에서, 59.8%의 확률로 마을 대장간 상자에서, 70.4%의 확률로 이글루 상자에서, 모두 1~3개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 76.9%의 확률로 마을 집 상자에서 1~5개의 묶음으로 생성된다. 그리고 59.8%의 확률로 마을 무기 제조인 상자에서 1~3개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 모두 보너스 상자 상자에서 1~2개의 묶음으로 생성된다. 그리고 32.5%의 확률로 요새 제단 상자에서 40.0%의 확률로 요새 저장실 상자에서 1~3개의 묶음으로 생성된다.

사슬 흉갑은 14.9%의 확률로 삼림 대저택 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 14.7%의 확률로 삼림 대저택 상자에서 57.2%의 확률로 땅에 묻힌 보물 상자에서 1개의 묶음으로 생성된다.

사탕무 씨앗은 21.2%의 확률로 엔드 도시 상자에서 1~10개의 묶음으로 생성된다. 그리고 18.5%의 확률로 던전 상자에서, 31.6%의 확률로 폐광 상자가 실린 광산 수레에서 , 18.5%의 확률로 삼림 대저택 상자에서, 모두 2~4개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 66.3%의 확률로 마을 집 상자에서 1~5개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 33.3%의 확률로 보너스 상자 상자에서 1~2개의 묶음으로 생성된다.

생연어는 61.5%의 확률로 보너스 상자 상자에서 1~2개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 모두 보너스 상자 상자에서 1~2개의 묶음으로 생성된다.

석탄은 34.3%의 확률로 요새 저장실 상자에서 31.6%의 확률로 폐광 상자가 실린 광산 수레에서 3~8개의 묶음으로 생성된다. 81.0%의 확률로 해저 폐허 상자에서, 84.2%의 확률로 해저 폐허 상자에서, 26.6%의 확률로 던전 상자에서, 70.4%의 확률로 이글루 상자에서, 26.6%의 확률로 삼림 대저택 상자에서, 모두 1~4개의 묶음으로 생성된다. 그리고 45.4%의 확률로 난파선#보급품 상자에서 2~8개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 40.0%의 확률로 난파선#보급품 상자에서 2~8개의 묶음으로 생성된다. 41.2%의 확률로 마을 집 상자에서 1~4개의 묶음으로 생성된다. 그리고 27.9%의 확률로 마을 도살업자 상자에서 1~3개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 28.5%의 확률로 요새 저장실 상자에서 3~8개의 묶음으로 생성된다.

수박씨는 18.5%의 확률로 던전 상자에서, 31.6%의 확률로 폐광 상자가 실린 광산 수레에서 , 18.5%의 확률로 삼림 대저택 상자에서, 모두 2~4개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 33.3%의 확률로 보너스 상자 상자에서 1~2개의 묶음으로 생성된다.

시계는 7.7%의 확률로 난파선#지도 상자에서 1개의 묶음으로 생성된다.

실은 57.8%의 확률로 던전 상자에서, 59.0%의 확률로 사막 사원 상자에서, 57.8%의 확률로 삼림 대저택 상자에서, 모두 1~8개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 39.1%의 확률로 약탈자 전초기지 상자에서 1~6개의 묶음으로 생성된다.

썩은 살점은 59.6%의 확률로 해저 폐허 상자에서 55.3%의 확률로 이글루 상자에서 1개의 묶음으로 생성된다. 28.7%의 확률로 사막 사원 상자에서 60.5%의 확률로 정글 사원 상자에서 3~7개의 묶음으로 생성된다. 39.6%의 확률로 난파선#보급품 상자에서 5~24개의 묶음으로 생성된다. 그리고 57.8%의 확률로 던전 상자에서, 59.0%의 확률로 사막 사원 상자에서, 57.8%의 확률로 삼림 대저택 상자에서, 모두 1~8개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 34.6%의 확률로 난파선#보급품 상자에서 5~24개의 묶음으로 생성된다. 그리고 53.4%의 확률로 정글 사원 상자에서 3~7개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 60.4%의 확률로 정글 사원 상자에서 3~7개의 묶음으로 생성된다.

아카시아나무 원목은 28.0%의 확률로 보너스 상자 상자에서 1~3개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 50.0%의 확률로 보너스 상자 상자에서 1~3개의 묶음으로 생성된다.

안장은 2.5%의 확률로 요새 제단 상자에서, 16.2%의 확률로 마을 대장간 상자에서, 28.3%의 확률로 던전 상자에서, 23.5%의 확률로 사막 사원 상자에서, 15.3%의 확률로 정글 사원 상자에서, 35.3%의 확률로 네더 요새 상자에서, 13.3%의 확률로 엔드 도시 상자에서, 모두 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 16.2%의 확률로 마을 무기 제조인 상자에서, 11.3%의 확률로 마을 집 상자에서, 12.9%의 확률로 정글 사원 상자에서, 17.3%의 확률로 마을 가죽 세공인 상자에서, 모두 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 2.4%의 확률로 요새 제단 상자에서 15.3%의 확률로 정글 사원 상자에서 1개의 묶음으로 생성된다.

양동이는 18.5%의 확률로 던전 상자에서 18.5%의 확률로 삼림 대저택 상자에서 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 11.3%의 확률로 마을 집 상자에서 1개의 묶음으로 생성된다.

없음[note 5]은 18.0%의 확률로 사막 사원 상자에서 7.0%의 확률로 폐광 상자가 실린 광산 수레에서 1개의 묶음으로 생성된다.

에메랄드는 14.9%의 확률로 해저 폐허 상자에서, 16.4%의 확률로 해저 폐허 상자에서, 7.6%의 확률로 이글루 상자에서, 모두 1개의 묶음으로 생성된다. 53.1%의 확률로 땅에 묻힌 보물 상자에서 4~8개의 묶음으로 생성된다. 9.0%의 확률로 엔드 도시 상자에서 2~6개의 묶음으로 생성된다. 18.0%의 확률로 사막 사원 상자에서 10.4%의 확률로 정글 사원 상자에서 1~3개의 묶음으로 생성된다. 그리고 73.7%의 확률로 난파선#보물 상자에서 1~5개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 31.8%의 확률로 마을 갑옷 제조인 상자에서, 12.3%의 확률로 마을 양치기 상자에서, 10.2%의 확률로 마을 도살업자 상자에서, 20.8%의 확률로 마을 석공 상자에서, 모두 1개의 묶음으로 생성된다. 21.5%의 확률로 마을 집 상자에서, 9.9%의 확률로 마을 집 상자에서, 24.3%의 확률로 마을 집 상자에서, 18.6%의 확률로 마을 집 상자에서, 17.3%의 확률로 마을 가죽 세공인 상자에서, 모두 1~4개의 묶음으로 생성된다. 그리고 14.3%의 확률로 마을 집 상자에서 8.7%의 확률로 정글 사원 상자에서 1~3개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 7.2%의 확률로 요새 제단 상자에서 10.4%의 확률로 정글 사원 상자에서 1~3개의 묶음으로 생성된다.

엔더 진주는 23.3%의 확률로 요새 제단 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 22.6%의 확률로 요새 제단 상자에서 1개의 묶음으로 생성된다.

음반 (13)은 21.8%의 확률로 던전 상자에서 21.8%의 확률로 삼림 대저택 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 21.5%의 확률로 삼림 대저택 상자에서 1개의 묶음으로 생성된다.

음반 (cat)은 21.8%의 확률로 던전 상자에서 21.8%의 확률로 삼림 대저택 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 21.5%의 확률로 삼림 대저택 상자에서 1개의 묶음으로 생성된다.

이름표는 28.3%의 확률로 던전 상자에서, 42.3%의 확률로 폐광 상자가 실린 광산 수레에서 , 28.3%의 확률로 삼림 대저택 상자에서, 모두 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 27.9%의 확률로 삼림 대저택 상자에서 34.3%의 확률로 땅에 묻힌 보물 상자에서 1개의 묶음으로 생성된다.

익힌 대구는 75.0%의 확률로 땅에 묻힌 보물 상자에서 2~4개의 묶음으로 생성된다.

익힌 연어는 75.0%의 확률로 땅에 묻힌 보물 상자에서 2~4개의 묶음으로 생성된다.

자작나무 원목은 28.0%의 확률로 보너스 상자 상자에서 1~3개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 25.0%의 확률로 보너스 상자 상자에서 1~3개의 묶음으로 생성된다.

전동 레일은 27.1%의 확률로 폐광 상자가 실린 광산 수레에서 1~4개의 묶음으로 생성된다.

정글 나무 원목은 28.0%의 확률로 보너스 상자 상자에서 1~3개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 25.0%의 확률로 보너스 상자 상자에서 1~3개의 묶음으로 생성된다.

종이는 89.2%의 확률로 요새 도서관 상자에서 2~7개의 묶음으로 생성된다. 55.5%의 확률로 난파선#보급품 상자에서 1~12개의 묶음으로 생성된다. 그리고 89.4%의 확률로 난파선#지도 상자에서 1~10개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 49.4%의 확률로 난파선#보급품 상자에서 1~12개의 묶음으로 생성된다. 그리고 61.2%의 확률로 마을 지도 제작자 상자에서 1~5개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 88.3%의 확률로 요새 도서관 상자에서 2~7개의 묶음으로 생성된다.

짙은 참나무 원목은 28.0%의 확률로 보너스 상자 상자에서 1~3개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 모두 약탈자 전초기지 상자에서 2~3개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 50.0%의 확률로 보너스 상자 상자에서 1~3개의 묶음으로 생성된다.

참나무 묘목은 25.6%의 확률로 마을 대장간 상자에서 3~7개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 26.3%의 확률로 마을 지도 제작자 상자에서 50.8%의 확률로 마을 집 상자에서 1~2개의 묶음으로 생성된다. 그리고 25.6%의 확률로 마을 무기 제조인 상자에서 3~7개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 16.7%의 확률로 보너스 상자 상자에서 4개의 묶음으로 생성된다.

참나무 원목은 28.0%의 확률로 보너스 상자 상자에서 1~3개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 25.0%의 확률로 보너스 상자 상자에서 1~3개의 묶음으로 생성된다.

참나무 판자는 70.5%의 확률로 보너스 상자 상자에서 1~12개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 모두 보너스 상자 상자에서 1~12개의 묶음으로 생성된다.

책은 89.2%의 확률로 요새 도서관 상자에서 1~3개의 묶음으로 생성된다. 그리고 34.5%의 확률로 난파선#지도 상자에서 1~5개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 14.3%의 확률로 마을 집 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 88.3%의 확률로 요새 도서관 상자에서 1~3개의 묶음으로 생성된다.

철 각반은 12.1%의 확률로 요새 제단 상자에서 25.6%의 확률로 마을 대장간 상자에서 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 25.6%의 확률로 마을 무기 제조인 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 11.8%의 확률로 요새 제단 상자에서 1개의 묶음으로 생성된다.

철 검은 12.1%의 확률로 요새 제단 상자에서, 25.6%의 확률로 마을 대장간 상자에서, 75.0%의 확률로 땅에 묻힌 보물 상자에서, 모두 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 25.6%의 확률로 마을 무기 제조인 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 11.8%의 확률로 요새 제단 상자에서 1개의 묶음으로 생성된다.

철 곡괭이는 12.1%의 확률로 요새 제단 상자에서, 4.0%의 확률로 요새 저장실 상자에서, 25.6%의 확률로 마을 대장간 상자에서, 7.0%의 확률로 폐광 상자가 실린 광산 수레에서 , 모두 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 25.6%의 확률로 마을 무기 제조인 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 11.8%의 확률로 요새 제단 상자에서 3.2%의 확률로 요새 저장실 상자에서 1개의 묶음으로 생성된다.

철 말 갑옷은 2.5%의 확률로 요새 제단 상자에서, 5.7%의 확률로 마을 대장간 상자에서, 21.8%의 확률로 던전 상자에서, 18.0%의 확률로 사막 사원 상자에서, 5.3%의 확률로 정글 사원 상자에서, 19.0%의 확률로 네더 요새 상자에서, 4.6%의 확률로 엔드 도시 상자에서, 모두 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 5.7%의 확률로 마을 무기 제조인 상자에서 4.5%의 확률로 정글 사원 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 2.4%의 확률로 요새 제단 상자에서 5.3%의 확률로 정글 사원 상자에서 1개의 묶음으로 생성된다.

철 부츠는 12.1%의 확률로 요새 제단 상자에서 25.6%의 확률로 마을 대장간 상자에서 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 25.6%의 확률로 마을 무기 제조인 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 11.8%의 확률로 요새 제단 상자에서 1개의 묶음으로 생성된다.

철 조각은 94.5%의 확률로 난파선#보물 상자에서 1~10개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 9.7%의 확률로 마을 집 상자에서 1~5개의 묶음으로 생성된다.

철 투구는 12.1%의 확률로 요새 제단 상자에서 25.6%의 확률로 마을 대장간 상자에서 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 31.8%의 확률로 마을 갑옷 제조인 상자에서 25.6%의 확률로 마을 무기 제조인 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 11.8%의 확률로 요새 제단 상자에서 1개의 묶음으로 생성된다.

철 흉갑은 12.1%의 확률로 요새 제단 상자에서 25.6%의 확률로 마을 대장간 상자에서 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 25.6%의 확률로 마을 무기 제조인 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 11.8%의 확률로 요새 제단 상자에서 1개의 묶음으로 생성된다.

철괴는 38.4%의 확률로 엔드 도시 상자에서 4~8개의 묶음으로 생성된다. 18.5%의 확률로 던전 상자에서, 18.5%의 확률로 삼림 대저택 상자에서, 99.4%의 확률로 땅에 묻힌 보물 상자에서, 모두 1~4개의 묶음으로 생성된다. 그리고 23.3%의 확률로 요새 제단 상자에서, 97.4%의 확률로 난파선#보물 상자에서, 34.3%의 확률로 요새 저장실 상자에서, 45.1%의 확률로 마을 대장간 상자에서, 18.0%의 확률로 사막 사원 상자에서, 43.3%의 확률로 정글 사원 상자에서, 19.0%의 확률로 네더 요새 상자에서, 31.6%의 확률로 폐광 상자가 실린 광산 수레에서 , 모두 1~5개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 45.1%의 확률로 마을 무기 제조인 상자에서 37.4%의 확률로 정글 사원 상자에서 1~5개의 묶음으로 생성된다. 그리고 54.2%의 확률로 마을 갑옷 제조인 상자에서 30.5%의 확률로 약탈자 전초기지 상자에서 1~3개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 57.2%의 확률로 땅에 묻힌 보물 상자에서 3~5개의 묶음으로 생성된다. 그리고 22.6%의 확률로 요새 제단 상자에서, 28.5%의 확률로 요새 저장실 상자에서, 43.2%의 확률로 정글 사원 상자에서, 모두 1~5개의 묶음으로 생성된다.

청금석은 61.5%의 확률로 난파선#보물 상자에서 1~10개의 묶음으로 생성된다. 그리고 16.9%의 확률로 폐광 상자가 실린 광산 수레에서 4~9개의 묶음으로 생성된다.

탐지 레일은 27.1%의 확률로 폐광 상자가 실린 광산 수레에서 1~4개의 묶음으로 생성된다.

프리즈머린 수정은 53.1%의 확률로 땅에 묻힌 보물 상자에서 1~5개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 18.9%의 확률로 땅에 묻힌 보물 상자에서 1~5개의 묶음으로 생성된다.

호박씨는 18.5%의 확률로 던전 상자에서, 31.6%의 확률로 폐광 상자가 실린 광산 수레에서 , 18.5%의 확률로 삼림 대저택 상자에서, 모두 2~4개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 40.6%의 확률로 마을 집 상자에서 1~5개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 33.3%의 확률로 보너스 상자 상자에서 1~2개의 묶음으로 생성된다.

호박은 18.2%의 확률로 난파선#보급품 상자에서 1~3개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 15.6%의 확률로 난파선#보급품 상자에서 1~3개의 묶음으로 생성된다.

화살은 모두 정글 사원발사기에서 2~7개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 39.1%의 확률로 약탈자 전초기지 상자에서 2~7개의 묶음으로 생성된다.

화약은 26.0%의 확률로 난파선#보급품 상자에서 1~5개의 묶음으로 생성된다. 그리고 57.8%의 확률로 던전 상자에서, 59.0%의 확률로 사막 사원 상자에서, 57.8%의 확률로 삼림 대저택 상자에서, 모두 1~8개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 22.4%의 확률로 난파선#보급품 상자에서 1~5개의 묶음으로 생성된다.

활성화 레일은 27.1%의 확률로 폐광 상자가 실린 광산 수레에서 1~4개의 묶음으로 생성된다.

황금 검은 19.0%의 확률로 네더 요새 상자에서 1개의 묶음으로 생성된다.

황금 말 갑옷은 2.5%의 확률로 요새 제단 상자에서, 5.7%의 확률로 마을 대장간 상자에서, 14.9%의 확률로 던전 상자에서, 12.3%의 확률로 사막 사원 상자에서, 5.3%의 확률로 정글 사원 상자에서, 29.1%의 확률로 네더 요새 상자에서, 4.6%의 확률로 엔드 도시 상자에서, 모두 1개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 5.7%의 확률로 마을 무기 제조인 상자에서 4.5%의 확률로 정글 사원 상자에서 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 2.4%의 확률로 요새 제단 상자에서 5.3%의 확률로 정글 사원 상자에서 1개의 묶음으로 생성된다.

황금 사과는 2.5%의 확률로 요새 제단 상자에서, 4.3%의 확률로 해저 폐허 상자에서, 21.8%의 확률로 던전 상자에서, 모두 이글루 상자에서, 23.5%의 확률로 사막 사원 상자에서, 28.2%의 확률로 폐광 상자가 실린 광산 수레에서 , 21.8%의 확률로 삼림 대저택 상자에서, 모두 1개의 묶음으로 생성된다.

베드락 에디션의 경우, 이들은 2.4%의 확률로 요새 제단 상자에서 21.5%의 확률로 삼림 대저택 상자에서 1개의 묶음으로 생성된다.

황금 투구는 4.3%의 확률로 해저 폐허 상자에서 8.3%의 확률로 해저 폐허 상자에서 1개의 묶음으로 생성된다.

황금 흉갑은 19.0%의 확률로 네더 요새 상자에서 1개의 묶음으로 생성된다.

횃불은 65.7%의 확률로 폐광 상자가 실린 광산 수레에서 1~16개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 11.3%의 확률로 마을 집 상자에서 1~2개의 묶음으로 생성된다.

흑요석은 8.0%의 확률로 네더 요새 상자에서 2~4개의 묶음으로 생성된다. 그리고 25.6%의 확률로 마을 대장간 상자에서 3~7개의 묶음으로 생성된다. 1.14[차기 버전용]의 경우, 이들은 25.6%의 확률로 마을 무기 제조인 상자에서 3~7개의 묶음으로 생성된다.


Notes[원본 편집]

  1. 보물 마법포함한 모든 마법의 확률은 동일하며, 마법 레벨도 확률이 동일하다.
  2. 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 마법의 확률은 마법 부여대에서 레벨 20에서 레벨 39까지의 마법을 부여할 때와 동일하다. 보물 마법에도 여러 마법이 중복될 확률은 줄어들지 않는다.
  3. 마법의 확률은 마법 부여대에서 30레벨의 마법을 부여할 때와 동일하다. 보물 마법에도 적용되며, 여러 마법이 중복될 확률은 줄어들지 않는다.
  4. 4.0 4.1 4.2 4.3 4.4 4.5 보물 마법을 제외한 모든 마법의 확률은 동일하며, 마법 레벨도 확률이 동일하다.
  5. 빈 상자의 확률은 아무것도 참조되지 않는다. 그 대신, 무작위 전리품 생성기가 한번의 Roll에 아무런 전리품도 추가하지 않을 확률을 참조한다.
  6. 스튜는 다음과 같은 효과중 하나를 부여한다. 실명 상태 효과 5-7초, 점프 강화 상태 효과 7-10초, 독 상태 효과 10-20초, 포화 상태 효과 7-10초, 신속 상태 효과 7-10초, 나약함 상태 효과 6-8초.



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,
	
	dev = '[[1.14]]{{upcoming}}',
	
	bedrock = '[[베드락 에디션]]',
	
	bedrock_beta = '[[베드락 에디션 1.9]]{{upcoming}}',
	
	-- these define which sprite, label and link to use, in the table,
	-- and 'cannot_stack' and 'plural' dictate how to display the single-item summary
	
	-- NOTE: order in this list doesn't matter.

	items = {
		["acacia-log"]          = { "block", link="원목" },
		["acacia-sapling"]      = { "block", link="묘목" },
		["activator-rail"]      = { "block" },
		["apple"]               = { "item" },
		["arrow"]               = { "item" },
		["bamboo"]              = { "item", plural=false },
		["beef"]			    = { "item" },
		["beetroot"]            = { "item" },
		["beetroot-seeds"]      = { "item", plural=false },
		["beetroot-soup"]		= { "item", plural=false, cannot_stack=true },
		["birch-log"]           = { "block", link="원목" },
		["birch-sapling"]       = { "block", link="묘목" },
		["black-wool"]          = { "block", link="양털", plural=false },
		["blue-ice"]			= { "block" },
		["bone"]                = { "item" },
		["book"]                = { "item" },
		["book-and-quill"]      = { "item", plural=false, title="책과 깃펜" },
		["bottle-o'-enchanting"] = { "item", title="경험치 병" },
		["bread"]               = { "item", plural=false },
		["brown-mushroom"]      = { "block", link="버섯" },
		["brown-wool"]          = { "block", link="양털", plural=false },
		["bucket"]              = { "item" },
        ["buried-treasure-map"] = { "item", link="탐험 지도" },
		["cactus"]              = { "block", plural=false },
		["cake"]                = { "block", plural=false },
		["carrot"]              = { "item" },
		["chainmail-chestplate"] = { "item", link="흉갑", cannot_stack=true },
		["chainmail-helmet"]    = { "item", link="투구", cannot_stack=true },
		["chainmail-leggings"]  = { "item", link="각반", cannot_stack=true, plural=false },
		["chainmail-boots"]     = { "item", link="부츠", cannot_stack=true, plural=false },
		["clay"]				= { "item" },
		["clock"]				= { "item" },
		["cocoa-beans"]         = { "item", plural=false },
		["coal"]                = { "item", plural=false },
		["cooked-cod"]          = { "item", plural=false, link="대구 (아이템)" },
		["cooked-salmon"]       = { "item", plural=false, link="연어 (아이템)" },
		["compass"]             = { "item" },
		["crossbow"]            = { "item", cannot_stack=true },
		["dark-oak-log"]        = { "block", link="원목" },
		["dark-oak-sapling"]    = { "block", link="묘목" },
		["dead-bush"]			= { "block", link="마른 덤불" },
		["detector-rail"]       = { "block" },
		["dandelion"]			= { "block", link="꽃" },
		["diamond"]             = { "item" },
		["diamond-chestplate"]  = { "item", link="흉갑", cannot_stack=true },
		["diamond-hoe"]         = { "item", link="괭이", cannot_stack=true },
		["diamond-horse-armor"] = { "item", link="말 갑옷", cannot_stack=true, plural=false },
		["disc-13"]             = { "item", id='music-disc-13', title="음반 (13)", link="음반", cannot_stack=true, plural=false },
		["disc-cat"]            = { "item", id='music-disc-cat',title="음반 (Cat)", link="음반", cannot_stack=true, plural=false },
		["disc-wait"]           = { "item", id='music-disc-wait',title="음반 (Wait)", link="음반", cannot_stack=true, plural=false },
		["disc-mellohi"]        = { "item", id='music-disc-mellohi',title="음반 (Mellohi)", link="음반", cannot_stack=true, plural=false },
		["emerald"]             = { "item" },
		["empty-map"]           = { "item", link="지도", title="빈 지도" },
		["enchanted-book"]      = { "item", cannot_stack=true, note="enchant-with-levels" },
		["enchanted-book-rnd"]  = { "item", id='enchanted-book', title="마법이 부여된 책", link="마법이 부여된 책", cannot_stack=true, note="enchant-randomly" },
		["enchanted-book-rnd-treasure"] = { "item", id='enchanted-book', title="마법이 부여된 책", link="마법이 부여된 책", cannot_stack=true, note="enchant-randomly-treasure" },
		["ender-pearl"]         = { "item" },
		["enchanted-fishing-rod"] = { "item", id="fishing-rod", title="마법이 부여된 낚싯대", link="낚싯대", cannot_stack=true, note="enchant-randomly" },
		["enchanted-golden-apple"] = { "item", id='golden-apple', link="황금 사과" },
		["feather"]             = { "item" },
		["fern"]				= { "block", link="잔디" },
		["flint-and-steel"]     = { "item", cannot_stack=true, plural=false },
		["flower-pot"]			= { "item" },
		["furnace"]             = { "block" },
		["golden-apple"]        = { "item" },
		["golden-chestplate"]   = { "item", link="흉갑", cannot_stack=true },
		["golden-helmet"]       = { "item", link="투구", cannot_stack=true },
		["golden-horse-armor"]  = { "item", link="말 갑옷", cannot_stack=true, plural=false },
		["golden-sword"]        = { "item", link="검", cannot_stack=true },
		["gold-ingot"]          = { "item" },
		["gold-nugget"]         = { "item" },
		["grass"]				= { "block", link="잔디" },
		["gray-wool"]           = { "block", link="양털", plural=false },
		["green-dye"]			= { "item", link="염료" },
		["gunpowder"]           = { "item", plural=false },
		["heart-of-the-sea"]    = { "item", plural=false, link="바다의 심장" },
		["ink-sac"]             = { "item" },
		["iron-boots"]          = { "item", link="부츠", cannot_stack=true, plural=false },
		["iron-chestplate"]     = { "item", link="흉갑", cannot_stack=true },
		["iron-helmet"]         = { "item", link="투구", cannot_stack=true },
		["iron-horse-armor"]    = { "item", link="말 갑옷", cannot_stack=true, plural=false },
		["iron-ingot"]          = { "item" },
		["iron-leggings"]       = { "item", link="각반", cannot_stack=true, plural=false },
		["iron-nugget"]         = { "item" },
		["iron-pickaxe"]        = { "item", link="곡괭이", cannot_stack=true },
		["iron-sword"]          = { "item", link="검", cannot_stack=true },
		["jungle-log"]          = { "block", link="원목" },
		["jungle-sapling"]      = { "block", link="묘목" },
		["lapis-lazuli"]        = { "item", plural=false },
		["large-fern"]			= { "block", link="잔디" },
		["lead"]                = { "item" },
		["leather"]      		= { "item" },
		["leather-tunic"]       = { "item", link="흉갑", cannot_stack=true },
		["leather-boots"]       = { "item", link="부츠", cannot_stack=true },
		["leather-cap"]         = { "item", link="투구", cannot_stack=true },
		["leather-pants"]       = { "item", link="각반", cannot_stack=true },
		["light-gray-wool"]     = { "block", link="양털", plural=false },
		["melon-seeds"]         = { "item", plural=false },
		["name-tag"]            = { "item" },
		["nether-wart"]         = { "item", plural=false },
		["oak-log"]             = { "block", link="원목" },
		["oak-planks"]          = { "block", link="나무 판자", id="oak-wood-planks", plural=false },
		["oak-sapling"]         = { "block", link="묘목" },
		["oak-wood-only"]       = { "block", id='oak-log', link="원목", title="참나무 원목", plural=false },
		["obsidian"]            = { "block", plural=false },
		["paper"]               = { "item", plural=false },
		["poppy"]				= { "block", link="꽃" },
		["potato"]              = { "item" },
		["potion-of-regeneration"] = { "item", link="물약", title="재생의 물약", plural=false, preserve_case=true },
		["potion-of-water-breathing"] = { "item", link="물약", title="수중 호흡의 물약", plural=false, preserve_case=true },
		["poisonous-potato"]    = { "item" },
		["powered-rail"]        = { "block", title="전동 레일", plural=false },
		["prismarine-crystals"] = { "item", plural=false },
		["pumpkin"]             = { "block" },
		["pumpkin-seeds"]       = { "item", plural=false },
		["pumpkin-pie"]         = { "item" },
		["rail"]                = { "block", title="레일", plural=false },
		["redstone"]            = { "item", id="redstone-dust", title="레드스톤 가루", plural=false },
		["rotten-flesh"]        = { "item", plural=false },
		["sand"]                = { "block", plural=false },
		["saddle"]              = { "item", cannot_stack=true },
		["raw-mutton"]			= { "item", link="익히지 않은 양고기" },
		["raw-salmon"]          = { "item", link="연어 (아이템)", plural=false },
		["raw-porkchop"]		= { "item", link="익히지 않은 돼지고기" },
		["shears"]              = { "item", plural=false, cannot_stack=true },
		["smooth-stone"]		= { "block", plural=false },
		["snowball"]			= { "item", link="눈덩이" },
		["snow-block"]			= { "block", link="눈 블록" },
		["spider-eye"]          = { "item" },
		["spruce-log"]          = { "block", link="원목" },
		["spruce-sapling"]      = { "block", link="묘목" },
		["spruce-sign"]     	= { "item", link="표지판" },
		["stick"]               = { "item" },
		["stone"]               = { "block", plural=false },
		["stone-bricks"]        = { "block", plural=false },
		["stone-axe"]           = { "item", link="도끼", cannot_stack=true },
		["stone-pickaxe"]       = { "item", link="곡괭이", cannot_stack=true },
		["string"]              = { "item", plural=false },
		["suspicious-stew"]     = { "item", plural=false, note="suspicious-stew" },
		["tall-grass"]			= { "block", link="잔디" },
		["tnt"]                 = { "block", title="TNT", plural=false, preserve_case=true },
		["torch"]               = { "block" },
		["wheat"]               = { "item", plural=false },
		["wheat-seeds"]         = { "item", plural=false },
		["white-wool"]          = { "block", link="양털", plural=false },
		["wooden-axe"]          = { "item", link="도끼", cannot_stack=true },
		["wooden-hoe"]          = { "item", link="괭이", cannot_stack=true },
		["wooden-pickaxe"]      = { "item", link="곡괭이", cannot_stack=true },
		["yellow-dye"]			= { "item", link="염료" },

		["enchanted-leather-cap"]        = { "item", id="leather-cap", title="마법이 부여된 가죽 모자", link="투구", note="enchant-randomly", cannot_stack=true },
		["enchanted-leather-tunic"]      = { "item", id="leather-tunic", title="마법이 부여된 가죽 조끼", link="흉갑", note="enchant-randomly", cannot_stack=true },
		["enchanted-leather-pants"]      = { "item", id="leather-pants", title="마법이 부여된 가죽 바지", link="각반", note="enchant-randomly", cannot_stack=true, plural=false },
		["enchanted-leather-boots"]      = { "item", id="leather-boots", title="마법이 부여된 가죽 부츠", link="부츠", note="enchant-randomly", cannot_stack=true, plural=false },
		["enchanted-diamond-boots"]      = { "item", id="diamond-boots", title="마법이 부여된 다이아몬드 부츠", link="부츠", note="enchant-with-levels-20-39", cannot_stack=true, plural=false },
		["enchanted-diamond-chestplate"] = { "item", id="diamond-chestplate", title="마법이 부여된 다이아몬드 흉갑", link="흉갑", note="enchant-with-levels-20-39", cannot_stack=true },
		["enchanted-diamond-helmet"]     = { "item", id="diamond-helmet", title="마법이 부여된 다이아몬드 투구", link="투구", note="enchant-with-levels-20-39", cannot_stack=true },
		["enchanted-diamond-leggings"]   = { "item", id="diamond-leggings", title="마법이 부여된 다이아몬드 각반", link="각반", note="enchant-with-levels-20-39", cannot_stack=true, plural=false },
		["enchanted-diamond-pickaxe"]    = { "item", id="diamond-pickaxe", title="마법이 부여된 다이아몬드 곡괭이", link="곡괭이", note="enchant-with-levels-20-39", cannot_stack=true },
		["enchanted-diamond-shovel"]     = { "item", id="diamond-shovel", title="마법이 부여된 다이아몬드 삽", link="삽", note="enchant-with-levels-20-39", cannot_stack=true },
		["enchanted-diamond-sword"]      = { "item", id="diamond-sword", title="마법이 부여된 다이아몬드 검", link="검", note="enchant-with-levels-20-39", cannot_stack=true },
		["enchanted-iron-boots"]         = { "item", id="iron-boots", title="마법이 부여된 철 부츠", link="부츠", note="enchant-with-levels-20-39", cannot_stack=true, plural=false },
		["enchanted-iron-chestplate"]    = { "item", id="iron-chestplate", title="마법이 부여된 철 흉갑", link="흉갑", note="enchant-with-levels-20-39", cannot_stack=true },
		["enchanted-iron-helmet"]        = { "item", id="iron-helmet", title="마법이 부여된 철 투구", link="투구", note="enchant-with-levels-20-39", cannot_stack=true },
		["enchanted-iron-leggings"]      = { "item", id="iron-leggings", title="마법이 부여된 철 각반", link="각반", note="enchant-with-levels-20-39", cannot_stack=true, plural=false },
		["enchanted-iron-pickaxe"]       = { "item", id="iron-pickaxe", title="마법이 부여된 철 곡괭이", link="곡괭이", note="enchant-with-levels-20-39", cannot_stack=true },
		["enchanted-iron-shovel"]        = { "item", id="iron-shovel", title="마법이 부여된 철 삽", link="삽", note="enchant-with-levels-20-39", cannot_stack=true },
		["enchanted-iron-sword"]         = { "item", id="iron-sword", title="마법이 부여된 철 검", link="검", note="enchant-with-levels-20-39", cannot_stack=true },

		["empty"]                        = { "block", id="air", link='', title='없음', plural=false, note="nothing" },
	},

	notes3 = {
		["enchant-with-levels"] = "마법의 확률은 [[마법 부여대]]에서 30레벨의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 적용되며, 여러 마법이 중복될 확률은 줄어들지 않는다.",
		["enchant-with-levels-20-39"] = "마법의 확률은 [[마법 부여대]]에서 레벨 20에서 레벨 39까지의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 여러 마법이 중복될 확률은 줄어들지 않는다.",
		["enchant-randomly"] = "[[보물 마법]]을 제외한 모든 마법의 확률은 동일하며, 마법 레벨도 확률이 동일하다.",
		["enchant-randomly-treasure"] = "[[보물 마법]]을 '''포함한''' 모든 마법의 확률은 동일하며, 마법 레벨도 확률이 동일하다.",
		["nothing"] = "빈 상자의 확률은 아무것도 참조되지 않는다. 그 대신, 무작위 전리품 생성기가 '''한번의 Roll'''에 아무런 전리품도 추가하지 않을 확률을 참조한다.",
		["suspicious-stew"] = "스튜는 다음과 같은 효과중 하나를 부여한다. [[실명 상태 효과]] 5-7초, [[점프 강화 상태 효과]] 7-10초, [[독 상태 효과]] 10-20초, [[포화 상태 효과]] 7-10초, [[신속 상태 효과]] 7-10초, [[나약함 상태 효과]] 6-8초.",
	},

	notes = {
		["enchant-with-levels"] = "<ref group='note' name='enchant-with-levels'>마법의 확률은 [[마법 부여대]]에서 30레벨의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 적용되며, 여러 마법이 중복될 확률은 줄어들지 않는다.</ref>",
		["enchant-with-levels-20-39"] = "<ref group='note' name='enchant-with-levels-20-39'>마법의 확률은 [[마법 부여대]]에서 레벨 20에서 레벨 39까지의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 여러 마법이 중복될 확률은 줄어들지 않는다.</ref>",
		["enchant-randomly"] = "<ref group='note' name='enchant-randomly'>[[보물 마법]]을 제외한 모든 마법의 확률은 동일하며, 마법 레벨도 확률이 동일하다.</ref>",
		["enchant-randomly-treasure"] = "<ref group='note' name='enchant-randomly-treasure'>[[보물 마법]]을 '''포함한''' 모든 마법의 확률은 동일하며, 마법 레벨도 확률이 동일하다.</ref>",
		["nothing"] = "<ref group='note' name='nothing'>빈 상자의 확률은 아무것도 참조되지 않는다. 그 대신, 무작위 전리품 생성기가 '''한번의 Roll'''에 아무런 전리품도 추가하지 않을 확률을 참조한다.</ref>",
		["suspicious-stew"] = "<ref group='note' name='suspicious-stew'>스튜는 다음과 같은 효과중 하나를 부여한다. [[실명 상태 효과]] 5-7초, [[점프 강화 상태 효과]] 7-10초, [[독 상태 효과]] 10-20초, [[포화 상태 효과]] 7-10초, [[신속 상태 효과]] 7-10초, [[나약함 상태 효과]] 6-8초.</ref>",
	},
	
	-- NOTE: order here doesn't matter.  
	--		 * in the table, chests will sort in alphabetical order
	--       * in the table, items will sort by chance, then by avg#, then alphabetically.
	--       * If poolsDev is omitted, pools will be used. To omit a pool entirely in the dev version, set poolsDev = {}.
	
	chests = {
		["shipwreck-map"] = { -- shipwreck_map.json
			header = "Map",
			chest_type = "shipwreck",
			superheader = "[[난파선]]",
			link   = "[[난파선#지도 상자]]",
			structure = "난파선",
			container = "지도 상자",
			structID = "shipwreck",
			pools = {
				{
					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},
					}
				},
			},
			poolsDev = {},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["shipwreck-supply"] = { -- shipwreck_supply.json
			header = "Supply",
			chest_type = "shipwreck",
			superheader = "[[난파선]]",
			link   = "[[난파선#보급품 상자]]",
			structure = "난파선",
			container = "보급품 상자",
			structID = "shipwreck",
			pools = {
				{
					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},
						["pumpkin"]             = {1,3,2},
						["gunpowder"]           = {1,5,3},
						["tnt"]                 = {1,2,1},
						["enchanted-leather-cap"]         = {1,1,3},
						["enchanted-leather-tunic"]       = {1,1,3},
						["enchanted-leather-pants"]       = {1,1,3},
						["enchanted-leather-boots"]       = {1,1,3},
					}
				},
			},
			poolsDev = {
				{
					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},
						["enchanted-leather-cap"]         = {1,1,3},
						["enchanted-leather-tunic"]       = {1,1,3},
						["enchanted-leather-pants"]       = {1,1,3},
						["enchanted-leather-boots"]       = {1,1,3},
					}
				},
			},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["shipwreck-treasure"] = { -- shipwreck_treasure.json
			header = "Treasure",
			chest_type = "shipwreck",
			superheader = "[[난파선]]",
			link   = "[[난파선#보물 상자]]",
			structure = "난파선",
			container = "보물 상자",
			structID = "shipwreck",
			pools = {
				{
					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},
					}
				},
			},
			poolsDev = {},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["buried-treasure"] = { -- buried_treasure.json
			header = "[[땅에 묻힌 보물]]",
			link   = "[[땅에 묻힌 보물]]",
			structure = "땅에 묻힌 보물",
			container = "",
			structID = "buried-treasure",
			pools = {
				{
					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},
					}
				},
			},
			poolsDev = {},
			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},
					}
				},
			},
			poolsBedrockBeta = {}
		},
		["underwater-ruin-big"] = { -- underwater_ruin_big.json
			header = "Big",
			superheader = "[[해저 폐허]]",
			link   = "[[해저 폐허]]",
			structure = "해저 폐허",
			container = "해저 폐허의 큰 상자",
			structID = "underwater-ruins",
			pools = {
				{
					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},
					}
				},
			},
			poolsDev = {},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["underwater-ruin-small"] = { -- underwater_ruin_small.json
			header = "Small",
			superheader = "[[해저 폐허]]",
			link   = "[[해저 폐허]]",
			structure = "해저 폐허",
			container = "해저 폐허의 작은 상자",
			structID = "underwater-ruins",
			pools = {
				{
					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},
					}
				},
			},
			poolsDev = {},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["village-blacksmith"] = { -- Moved to Weaponsmith in Java 1.14
			header = "대장간",
			superheader = "[[마을]]",
			link   = "[[마을]] 대장간",
			structure = "마을",
			container = "대장간 상자",
			structID = "village",
			pools = {
				{
					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},
						["iron-horse-armor"]    = {1,1,1},
						["golden-horse-armor"]  = {1,1,1},
						["diamond-horse-armor"] = {1,1,1},
						["saddle"]              = {1,1,3}
					}
				},
			},
			poolsDev = {},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		
		["village-armorer"] = { -- village\village_armorer.json
			header = "갑옷 제조인",
			superheader = "[[마을]]",
			link   = "[[마을]] 갑옷 제조인",
			structure = "마을",
			container = "갑옷 제조인 상자",
			structID = "village",
			pools = {},
			poolsDev =  {
				{
					rolls = {1,5},
					items = {
						["iron-ingot"]     = {1,3,2},
						["bread"]          = {1,4,4},
						["iron-helmet"]    = {1,1,1},
						["emerald"]        = {1,1,1}
					}
				},
			},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["village-butcher"] = { -- village\village_butcher.json
			header = "도살업자",
			superheader = "[[마을]]",
			link   = "[[마을]] 도살업자",
			structure = "마을",
			container = "도살업자 상자",
			structID = "village",
			pools = {},
			poolsDev =  {
				{
					rolls = {1,5},
					items = {
						["emerald"]        = {1,1,1},
						["raw-porkchop"]   = {1,3,6},
						["wheat"]          = {1,3,6},
						["beef"]           = {1,3,6},
						["raw-mutton"]     = {1,3,6},
						["coal"]           = {1,3,3}
					}
				},
			},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["village-cartographer"] = { -- village\village_cartographer.json
			header = "지도 제작자",
			superheader = "[[마을]]",
			link   = "[[마을]] 지도 제작자",
			structure = "마을",
			container = "지도 제작자 상자",
			structID = "village",
			pools = {},
			poolsDev =  {
				{
					rolls = {1,5},
					items = {
						["empty-map"]      = {1,3,10},
						["paper"]          = {1,5,15},
						["compass"]        = {1,1,5},
						["bread"]          = {1,4,15},
						["oak-sapling"]    = {1,2,5}
					}
				},
			},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["village-mason"] = { -- village\village_mason.json
			header = "석공",
			superheader = "[[마을]]",
			link   = "[[마을]] 석공",
			structure = "마을",
			container = "석공 상자",
			structID = "village",
			pools = {},
			poolsDev =  {
				{
					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}
					}
				},
			},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["village-shepherd"] = { -- village\village_shepherd.json
			header = "양치기",
			superheader = "[[마을]]",
			link   = "[[마을]] 양치기",
			structure = "마을",
			container = "양치기 상자",
			structID = "village",
			pools = {},
			poolsDev =  {
				{
					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}
					}
				},
			},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["village-tannery"] = { -- village\village_tannery.json
			header = "가죽 세공인",
			superheader = "[[마을]]",
			link   = "[[마을]] 가죽 세공인",
			structure = "마을",
			container = "가죽 세공인 상자",
			structID = "village",
			pools = {},
			poolsDev =  {
				{
					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}
					}
				},
			},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["village-weaponsmith"] = { -- village\village_weaponsmith.json
			header = "무기 제조인",
			superheader = "[[마을]]",
			link   = "[[마을]] 무기 제조인",
			structure = "마을",
			container = "무기 제조인 상자",
			structID = "village",
			pools = {},
			poolsDev =  {
				{
					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}
					}
				},
			},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		
		["village-desert-house"] = { -- village\village_desert_house.json
			header = "사막의 집",
			superheader = "[[마을]]",
			link   = "[[마을]] 집",
			structure = "마을",
			container = "사막 마을 상자",
			structID = "village",
			pools = {},
			poolsDev =  {
				{
					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}
					}
				},
			},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["village-plains-house"] = { -- village\village_plains_house.json
			header = "평원의 집",
			superheader = "[[마을]]",
			link   = "[[마을]] 집",
			structure = "마을",
			container = "평원 마을 상자",
			structID = "village",
			pools = {},
			poolsDev =  {
				{
					rolls = {3,8},
					items = {
						["gold-nugget"]     = {1,3,1},
						["dandelion"]       = {1,1,1},
						["poppy"]           = {1,1,1},
						["potato"]          = {1,7,10},
						["bread"]           = {1,4,10},
						["apple"]           = {1,5,10},
						["emerald"]         = {1,4,2},
						["oak-sapling"]     = {1,2,5}
					}
				},
			},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["village-savanna-house"] = { -- village\village_savanna_house.json
			header = "사바나의 집",
			superheader = "[[마을]]",
			link   = "[[마을]] 집",
			structure = "마을",
			container = "사바나 집 상자",
			structID = "village",
			pools = {},
			poolsDev =  {
				{
					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}
					}
				},
			},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["village-snowy-house"] = { -- village\village_snowy_house.json
			header = "눈 덮인 집",
			superheader = "[[마을]]",
			link   = "[[마을]] 집",
			structure = "마을",
			container = "눈 덮인 마을 상자",
			structID = "village",
			pools = {},
			poolsDev =  {
				{
					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}
					}
				},
			},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["village-taiga-house"] = { -- village\village_taiga_house.json
			header = "타이가의 집",
			superheader = "[[마을]]",
			link   = "[[마을]] 집",
			structure = "마을",
			container = "타이가 마을 상자",
			structID = "village",
			pools = {},
			poolsDev =  {
				{
					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},
						["pumokin-pie"]     = {1,1,1},
						["emerald"]         = {1,4,2},
						["spruce-sapling"]  = {1,5,5},
						["spruce-sign"]     = {1,1,1},
						["spruce-log"]      = {1,5,10}
					}
				},
			},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		
		["village-two-room-house"] = { -- village_two_room_house.json
			header = "방이 두 개인 집",
			superheader = "[[마을]]",
			link   = "[[마을]] 방이 두 개인 집",
			structure = "마을",
			container = "마을 상자",
			structID = "village",
			pools = {},
			poolsDev = {},
			poolsBedrock = {
				{
					rolls = {6,8},
					items = {
						["potato"]      = {5,8,10},
						["carrot"]      = {4,8,10},
						["wheat"]       = {8,12,15},
						["wheat-seeds"] = {2,4,5},
						["beetroot"]    = {5,8,5},
						["wooden-hoe"]  = {1,1,1}
					}
				},
			},
			poolsBedrockBeta = {}
		},
		["stronghold-altar"] = { -- stronghold_corridor.json
			header      = "제단",
			superheader = "[[요새]]",
			link        = "[[요새]] 제단",
			structure = "요새",
			container = "제단 상자",
			structID = "stronghold",
			pools = {
				{
					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},
					}
				},
			},
			poolsDev = {},
			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},
					}
				},
			},
			poolsBedrockBeta = {}
		},
		["stronghold-library"] = { -- stronghold_library.json
			header      = "도서관",
			superheader = "[[요새]]",
			link        = "[[요새]] 도서관",
			structure = "요새",
			container = "도서관 상자",
			structID = "stronghold",
			pools = {
				{
					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},
					}
				},
			},
			poolsDev = {},
			poolsBedrock = {
				{
					rolls = {2,10},
					items = {
						["book"]                = {1,3,100},
						["paper"]               = {2,7,100},
						["empty-map"]           = {1,1,5},
						["compass"]             = {1,1,5},
						["enchanted-book"]      = {1,1,60},
					}
				},
			},
			poolsBedrockBeta = {}
		},
		["stronghold-storeroom"] = { -- stronghold_crossing.json
			header      = "저장실",
			superheader = "[[요새]]",
			link        = "[[요새]] 저장실",
			structure = "요새",
			container = "저장실 상자",
			structID = "stronghold",
			pools = {
				{
					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},
					}
				},
			},
			poolsDev = {},
			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},
					}
				},
			},
			poolsBedrockBeta = {}
		},
		["bonus"] = { -- spawn_bonus_chest.json
			header = "[[보너스 상자]]",
			link   = "[[보너스 상자]]",
			structure = "보너스 상자",
			container = "",
			structID = "day",
			pools = {
				{
					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},
					}
				},
			},
		    poolsDev = {},
			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,2},
						["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,3},
					}
				},
				{
					rolls = {1,1},
					items = {
						["brown-mushroom"]              = {1,2,2},
					}
				},
			},
			poolsBedrockBeta = {}
		},
		["dungeon"] = { -- simple_dungeon.json
			header = "[[던전]]",
			link   = "[[던전]]",
			structure = "던전",
			container = "",
			structID = "Dungeon",
			pools = {
				{
					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},
					}
				},
			},
			poolsDev = {},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["mineshaft"] = { -- abandoned_mineshaft.json
			chest_type = "minecart with chest",
			header = "[[폐광]]",
			link   = "[[폐광]]",
			structure = "폐광",
			container = "",
			structID = "abandoned-mineshaft",
			pools = {
				{
					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},
					}
				},
			},
			poolsDev = {},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["nether-fortress"] = { -- nether_bridge.json
			header = "[[네더 요새|네더]]<br>[[N네더 요새|네더]]",
			link   = "[[네더 요새]]",
			structure = "네더 요새",
			container = "",
			structID = "nether-fortress",
			pools = {
				{
					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},
					}
				},
			},
			poolsDev = {},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["desert-temple"] = { -- desert_pyramid.json
			header = "[[사막 사원]]",
			link   = "[[사막 사원]]",
			structure = "사막 사원",
			container = "",
			structID = "desert-temple",
			pools = {
				{
					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},
					}
				},
			},
			poolsDev = {},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["jungle-temple"] = { -- jungle_temple.json
			header = "[[정글 사원]]",
			link   = "[[정글 사원]]",
			structure = "정글 사원",
			container = "Chest",
			structID = "jungle-temple",
			pools = {
				{
					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},
						["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}
					}
				},
			},
			poolsDev = {
				{
					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}
					}
				},
			},
			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},
						["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}
					}
				},
			},
			poolsBedrockBeta = {},
		},
		["jungle-temple-dispenser"] = { -- jungle_temple_dispenser.json
			chest_type = "dispenser",
			link   = "[[정글 사원]]",
			structure = "정글 사원",
			container = "발사기",
			structID = "jungle-temple",
			pools = {
				{
					rolls = {1,2},
					items = {
						["arrow"] = {2,7,30}
					}
				},
			},
			poolsDev = {},
			poolsBedrock = {
				{
					rolls = {2,2},
					items = {
						["arrow"] = {2,7,30}
					}
				},
			},
			poolsBedrockBeta = {}
		},
		["end-city"] = { -- end_city_treasure.json
			header = "[[엔드 도시]]",
			link   = "[[엔드 도시]]",
			structure = "엔드 도시",
			container = "",
			structID = "end-city",
			pools = {
				{
					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},
						["enchanted-diamond-sword"]      = {1,1,3},
						["enchanted-diamond-boots"]      = {1,1,3},
						["enchanted-diamond-chestplate"] = {1,1,3},
						["enchanted-diamond-leggings"]   = {1,1,3},
						["enchanted-diamond-helmet"]     = {1,1,3},
						["enchanted-diamond-pickaxe"]    = {1,1,3},
						["enchanted-diamond-shovel"]     = {1,1,3},
						["enchanted-iron-sword"]         = {1,1,3},
						["enchanted-iron-boots"]         = {1,1,3},
						["enchanted-iron-chestplate"]    = {1,1,3},
						["enchanted-iron-leggings"]      = {1,1,3},
						["enchanted-iron-helmet"]        = {1,1,3},
						["enchanted-iron-pickaxe"]       = {1,1,3},
						["enchanted-iron-shovel"]        = {1,1,3},
					}
				},
			},
			poolsDev = {},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["igloo"] = {
			header = "[[이글루]]",
			link   = "[[이글루]]",
			structure = "이글루",
			container = "",
			structID = "igloo",
			pools = {
				{
					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},
					}
				},
			},
			poolsDev = {},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["pillager-outpost"] = {
			header = "[[약탈자 전초기지]]",
			link   = "[[약탈자 전초기지]]",
			structure = "약탈자 전초기지",
			container = "",
			structID = "pillager-outpost",
			pools = {},
			poolsDev = {			
				{
					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}
					}
				}
			},
			poolsBedrock = {},
			poolsBedrockBeta = {}
		},
		["woodland-mansion"] = { -- woodland_mansion.json
			header = "[[삼림 대저택]]",
			link   = "[[삼림 대저택]]",
			structure = "삼림 대저택",
			container = "",
			structID = "woodland-mansion",
			pools = {
				{
					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},
					}
				},
			},
			poolsDev = {},
			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-treasure"] = {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},
					}
				},
			},
			poolsBedrockBeta = {}
		},
	},

	-- 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",
		["fortress"] = "nether-fortress",

		["blacksmith"] = "village-blacksmith", -- Changed to weaponsmith in 1.14
		
		["armorer"]       = "village-armorer",
		["butcher"]       = "village-butcher",
		["cartographer"]  = "village-cartographer",
		["mason"]         = "village-mason",
		["shepherd"]      = "village-shepherd",
		["tannery"]       = "village-tannery",
		["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 will default to use the key string from p.chests,
	--   e.g. "nether-fortress"
	
	-- chest-param -> description-string
	
	display_names = {
		["nether-fortress"] = "네더 요새",
		["nether"] = "네더 요새",
		["dungeon"] = "던전",
		["fortress"] = "네더 요새",
		["desert"] = "사막 사원",
		["jungle"] = "정글 사원",
		["desert-temple"] = "사막 사원",
		["jungle-temple"] = "정글 사원",
		["igloo"] = "이글루",
		["end-city"] = "엔드 도시",
		["village-two-room-house"] = "마을의 방이 두 개인 집",
		["village-blacksmith"] = "마을 대장간",
		["village"] = "마을 대장간",
		["blacksmith"] = "마을 대장간",
		["stronghold-altar"] = "요새의 제단",
		["stronghold-storeroom"] = "요새의 저장실",
		["stronghold-library"] = "요새의 대장간",
		["altar"] = "요새의 제단",
		["storeroom"] = "요새의 저장실",
		["library"] = "요새의 도서관",
		["mineshaft"] = "폐광",
		["woodland-mansion"] = "삼림 대저택",
		["jungle-temple-dispenser"] = "정글 사원 발사기", 
		["bonus"] = "보너스 상자",
		["underwater-ruin-big"] = "해저 폐허의 큰 상자",
		["underwater-ruin-small"] = "해저 폐허의 작은 상자",
		["shipwreck-supply"] = "난파선 보급품 상자",
		["shipwreck-map"] = "난파선 지도 상자",
		["shipwreck-treasure"] = "난파선 보물 상자",
		["buried-treasure"] = "땅에 묻힌 보물"
	},
	
	-- these descriptions are used:
	-- * in column <abbr> titles,
	-- * and above the table when only a single column-type is chosen
	
	columns = {
		["stacksize"] = '이 아이템의 묶음의 수 (쌓기가 안되는 경우, 그냥 갯수).',
		["weight"] = '이 종류에서 다른 아이템에 비한 이 아이템의 가중치.',
		["items"] = '상자당 기대되는 아이템의 수. 많은 상자를 평균한 값임.',
		["chance"] = '하나의 상자에서 이 아이템이 존재할 확률.',
		["chests"] = '이 아이템을 찾으려면 평균 몇개의 상자를 찾아야 할까?'
	},
	
	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 = {}
	local ordered_item_rows_dev = {}
	local ordered_item_rows_bedrock = {}
	local ordered_item_rows_bedrock_beta = {}

	local ret = {}
	
	local java_specified         = args.java         and args.java ~= '0';
	local dev_specified          = args.dev          and args.dev ~= '0';
	local bedrock_specified      = args.bedrock      and args.bedrock ~= '0';
	local bedrock_beta_specified = args.bedrock_beta and args.bedrock_beta ~= '0';
	
	local any_specified = java_specified or dev_specified or bedrock_specified or bedrock_beta_specified
	
	if any_specified then
	
		if java_specified then
			ordered_item_rows = q.construct_ordered_item_rows( chests, '' )
		end	
		if dev_specified then
			ordered_item_rows_dev = q.construct_ordered_item_rows( chests, 'Dev' )
		end	
		if bedrock_specified then
			ordered_item_rows_bedrock = q.construct_ordered_item_rows( chests, 'Bedrock' )
		end	
		if bedrock_beta_specified then
			ordered_item_rows_bedrock_beta = q.construct_ordered_item_rows( chests, 'BedrockBeta' )
		end
	
	else
	
		local java_excluded          = args.java         and args.java == '0';
		local dev_excluded           = args.dev          and args.dev == '0';
		local bedrock_excluded       = args.bedrock      and args.bedrock == '0';
		local bedrock_beta_excluded  = args.bedrock_beta and args.bedrock_beta == '0';
		
		if not java_excluded then
			ordered_item_rows = q.construct_ordered_item_rows( chests, '' )
		end	
		if not dev_excluded then
			ordered_item_rows_dev = q.construct_ordered_item_rows( chests, 'Dev' )
		end	
		if not bedrock_excluded then
			ordered_item_rows_bedrock = q.construct_ordered_item_rows( chests, 'Bedrock' )
		end	
		if not bedrock_beta_excluded then
			ordered_item_rows_bedrock_beta = q.construct_ordered_item_rows( chests, 'BedrockBeta' )
		end
	
	end
	
	if q.tablelength( ordered_item_rows ) > 0 then
		table.insert( ret, q.print_table( chests, columns, ordered_item_rows, '' ) )
	end
	if q.tablelength( ordered_item_rows_dev ) > 0 and q.compare_tables( ordered_item_rows, ordered_item_rows_dev ) then
		table.insert( ret, p.current_frame:preprocess( p.dev ) .. '의 경우, ' .. q.lcfirst( q.print_table( chests, columns, ordered_item_rows_dev, 'Dev' ) ) )
	end
	if q.tablelength( ordered_item_rows_bedrock ) > 0 and q.compare_tables( ordered_item_rows, ordered_item_rows_bedrock ) then
		table.insert( ret, 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_beta ) > 0 and q.compare_tables( ordered_item_rows, ordered_item_rows_bedrock_beta ) then
		table.insert( ret, p.current_frame:preprocess( p.bedrock_beta ) .. '의 경우, ' .. q.lcfirst( q.print_table( chests, columns, ordered_item_rows_bedrock_beta, 'BedrockBeta' ) ) .. '[[Category:Bedrock Edition specific information]]' )
	end
	
	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;">"' .. itemname .. '"은 알 수 없는 아이템입니다.</span>'
	end
	
	if args.java and args.java ~= '0' then
		chances = q.single_item_find_values( itemname, 'pools' )
		devChances = {}
		bedrockChances = {}
		bedrockBetaChances = {}
	else
		if args.dev and args.dev ~= '0' then
			chances = q.single_item_find_values( itemname, 'poolsDev' )
			devChances = {}
			bedrockChances = {}
			bedrockBetaChances = {}
		else
			if args.bedrock and args.bedrock ~= '0' then
				chances = q.single_item_find_values( itemname, 'poolsBedrock' )
				devChances = {}
				bedrockChances = {}
				bedrockBetaChances = {}
			else
				if args.bedrock_beta and args.bedrock_beta ~= '0' then
					chances = q.single_item_find_values( itemname, 'poolsBedrockBeta' )
					devChances = {}
					bedrockChances = {}
					bedrockBetaChances = {}
				else
					chances = q.single_item_find_values( itemname, 'pools' )
					devChances = q.single_item_find_values( itemname, 'poolsDev', chances )
					bedrockChances = q.single_item_find_values( itemname, 'poolsBedrock', chances )
					bedrockBetaChances = q.single_item_find_values( itemname, 'poolsBedrockBeta', chances, bedrockChances )
				end
			end
		end
	end
	
	local html = {}
	
	local any_current = q.tablelength( chances ) > 0
	local any_changes_upcoming = q.tablelength( devChances ) > 0 and q.compare_tables( chances, devChances )
	local any_standard = any_current or any_changes_upcoming
	
	local any_bedrock_current = q.tablelength( bedrockChances ) > 0
	local any_bedrock_upcoming = q.tablelength( bedrockBetaChances ) > 0 and q.compare_tables( bedrockChances, bedrockBetaChances )
	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, chances ) )
	end
	if any_changes_upcoming then
		table.insert( html, p.current_frame:preprocess( p.dev ) .. '의 경우, ' .. ( change_case and q.lcfirst( p.base2_sub( itemname, devChances, any_current ) ) or p.base2_sub( itemname, devChances, 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_beta ) .. '의 경우, ' .. ( change_case and q.lcfirst( p.base2_sub( itemname, bedrockBetaChances, any_bedrock_current or any_standard ) ) or p.base2_sub( itemname, bedrockBetaChances, 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 = ''
	local name_without_ref = nil -- if TRUE, ref tag is being used.

	if use_they then
		item_display_name = '이들'
	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
	 	local Autolink = require( 'Module:Autolink' )
		item_display_name = Autolink.xlink(item_display_name, 'nolink')
		
		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
			name_without_ref = item_display_name
			item_display_name = item_display_name .. p.current_frame:preprocess( p.notes[p.items[itemname].note] )
		end
	end
	
	table.insert( html, item_display_name )
	-- josa insertion
	local josa = require('Module:Josa').josa 
	if (name_without_ref) then
		table.insert( html, josa(name_without_ref, '은/는')..' ' )
	else
		table.insert( html, josa(item_display_name, '은/는')..' ' )
	end

	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 = { '' }
		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, '' )
			end
			if chest.chance == 1 then
				table.insert( html_per_stack, " 모두 " )
			else
				table.insert( html_per_stack, string.format("%.1f", chest.chance*100) )
				table.insert( html_per_stack, "%의 확률로 " )
			end
			if chest.chest_type == 'minecart with chest' then
				table.insert( html_per_stack, p.chests[chest.chest_name].link )
				table.insert( html_per_stack, ' [[상자가 실린 광산 수레]]에서 ' )
			elseif chest.chest_type == 'dispenser' then
				table.insert( html_per_stack, p.chests[chest.chest_name].link )
				table.insert( html_per_stack, '의 [[발사기]]에서' )
			elseif chest.chest_type == 'bonus' then
				table.insert( html_per_stack, p.chests[chest.chest_name].link )
				table.insert( html_per_stack, '에서' )
			elseif chest.chest_type == 'shipwreck' then
				table.insert( html_per_stack, p.chests[chest.chest_name].link )
				table.insert( html_per_stack, '에서' )
			else
				table.insert( html_per_stack, p.chests[chest.chest_name].link )
				table.insert( html_per_stack, ' 상자에서' )
			end
			table.insert( html_per_stack, sep )
		end
		if nc > 2 then
			table.insert( html_per_stack, '모두 ' )
		end
		table.insert( html_per_stack, stacksize)
		if p.items[itemname].cannot_stack ~= nil then
			table.insert( html_per_stack, '개의 묶음으로 ' )
		else
			table.insert( html_per_stack, '개의 묶음으로 ' )
		end
		table.insert( html_per_stack, '생성된다' )
	
		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, '그리고 ' )
		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 = {}
	local html_dev = {}
	local html_bedrock = {}
	local html_beta = {}
	
	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'>" .. itemname .. "은 알 수 없는 아이템입니다.</span>\n"
		else
			
			local chances, devChances, bedrockChances, bedrockBetaChances
			
			if args.java and args.java ~= '0' then
				chances = q.single_item_find_values( itemname, 'pools' )
				devChances = {}
				bedrockChances = {}
				bedrockBetaChances = {}
			else
				if args.dev and args.dev ~= '0' then
					chances = q.single_item_find_values( itemname, 'poolsDev' )
					devChances = {}
					bedrockChances = {}
					bedrockBetaChances = {}
				else
					if args.bedrock and args.bedrock ~= '0' then
						chances = q.single_item_find_values( itemname, 'poolsBedrock' )
						devChances = {}
						bedrockChances = {}
						bedrockBetaChances = {}
					else
						if args.bedrock_beta and args.bedrock_beta ~= '0' then
							chances = q.single_item_find_values( itemname, 'poolsBedrockBeta' )
							devChances = {}
							bedrockChances = {}
							bedrockBetaChances = {}
						else
							chances = q.single_item_find_values( itemname, 'pools' )
							devChances = q.single_item_find_values( itemname, 'poolsDev', chances )
							bedrockChances = q.single_item_find_values( itemname, 'poolsBedrock', chances )
							bedrockBetaChances = q.single_item_find_values( itemname, 'poolsBedrockBeta', chances, bedrockChances )
						end
					end
				end
			end
			
			local any_current = q.tablelength( chances ) > 0
			local any_changes_upcoming = q.tablelength( devChances ) > 0 and q.compare_tables( chances, devChances )
			local any_standard = any_current or any_changes_upcoming
			
			local any_bedrock_current = q.tablelength( bedrockChances ) > 0
			local any_bedrock_upcoming = q.tablelength( bedrockBetaChances ) > 0 and q.compare_tables( bedrockChances, bedrockBetaChances )
			local any_bedrock = any_bedrock_current or any_bedrock_upcoming
			
			if any_current then
				table.insert( html, p.base3_sub( itemname, chances ) )
			end
			if any_changes_upcoming then
				table.insert( html_dev, p.base3_sub( itemname, devChances ) )
			end
			if any_bedrock_current then
				table.insert( html_bedrock, p.base3_sub( itemname, bedrockChances ) )
			end
			if any_bedrock_upcoming then
				table.insert( html_beta, p.base3_sub( itemname, bedrockBetaChances ) )
			end
			
		end	
	end
	
	local output = rErr .. '{| class="wikitable sortable" \n! Item \n! Structure \n! Container \n! Quantity \n! Chance \n' .. table.concat( html )
	if q.tablelength( html_dev ) > 0 then
		output = output .. '|-\n!colspan=5|' .. p.dev .. ' \n' .. table.concat( html_dev ) 
	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_beta ) > 0 then
		output = output .. '|-\n!colspan=5|' .. p.bedrock_beta .. ' \n' .. table.concat( html_beta ) 
	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 r = ""
			
			r = r .. '|' .. p.chests[chest.chest_name].container  .. '\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 ~= nil and p.items[itemname].note ~= "" then
		s = s .. p.current_frame:extensionTag( 'ref', p.notes3[p.items[itemname].note], { group='note', name=p.items[itemname].note } )
	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.pools or {} ) do
				local poolitem = pool.items[itemname]
				if poolitem ~= nil then
				
					local stacksize = poolitem[1]
					if poolitem[1] ~= poolitem[2] then
						stacksize = stacksize .. "~" .. 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
			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.allRolls = {}
			chest.itemData = {}
			for k, pool in pairs( chest.pools or {} ) do
				table.insert( chest.allRolls, ( 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.itemData, pool, #chest.allRolls )
			end

			chest.allRollsDev = {}
			chest.itemDataDev = {}
			for k, pool in pairs( chest.poolsDev or chest.pools or {} ) do
				table.insert( chest.allRollsDev, ( 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.itemDataDev, pool, #chest.allRollsDev )
			end

			chest.allRollsBedrock = {}
			chest.itemDataBedrock = {}
			for k, pool in pairs( chest.poolsBedrock or chest.pools 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.allRollsBedrockBeta = {}
			chest.itemDataBedrockBeta = {}
			for k, pool in pairs( chest.poolsBedrockBeta or chest.pools or {} ) do
				table.insert( chest.allRollsBedrockBeta, ( 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.itemDataBedrockBeta, pool, #chest.allRollsBedrockBeta )
			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 == 'Dev' 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
				use_superheader = true
			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, "각각의 " )
			table.insert( html, display_name or chest_name )
			if chest_type ~= 'chest' and chest_type ~= 'minecart with chest' then
				table.insert( html, " 에는 " )
			else
				table.insert( html, " 상자에는 " )
			end
			if #allRolls == 1 then
				table.insert( html, allRolls[1] )
				table.insert( html, " 아이템 묶음이 있으며, " )
			else
				table.insert( html, ' 다음과 같은 아이템이 들어 있다. ' )
				table.insert( html, #allRolls )
				table.insert( html, ' 가지 종류가 있으며, ' )
			end
			table.insert( html, " 분포는 다음과 같다. \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, "></th>\n" )
		
		local superheader_cols_used = {}
		
		if #chest_names > 1 then
			local row1, row2 = {}, {}

			for i = 1, #chest_names do
			
				if suffix == 'Dev' 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, '과 ' )
							table.insert( row, allRolls[#allRolls] )
						end
						table.insert( row, ' 묶음)</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 == 'Dev' 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, "'> 묶음의 갯수 </abbr></th>\n" )
					end
					if columns['weight'] ~= nil then
						table.insert( html, headersort_th_colspan_open )
						table.insert( html, p.columns['weight'] )
						table.insert( html, "'> 가중치" )
						table.insert( html, "</abbr></th>\n" )
					end
					if columns['items'] ~= nil then
						table.insert( html, headersort_th_open )
						table.insert( html, p.columns['items'] )
						table.insert( html, "'> 아이템 수 </abbr></th>\n" )
					end
					if columns['chance'] ~= nil then
						table.insert( html, headersort_th_open )
						table.insert( html, p.columns['chance'] )
						table.insert( html, "'> 확률 </abbr></th>\n" )
					end
					if columns['chests'] ~= nil then
						table.insert( html, headersort_th_open )
						table.insert( html, p.columns['chests'] )
						table.insert( html, "'> 찾을 상자 수 </abbr></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='상자에는 이 그룹으로부터 무작위로 " )
							table.insert( html, allRolls[k] )
							table.insert( html, " 개의 묶음으로 아이템이 생성된다.'>" )
							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['items'] ~= nil then
							table.insert( html, "<td style='text-align:center;'>" )
							table.insert( html, avg_amount )
							table.insert( html, "</td>" )
						end
						if columns['chance'] ~= nil then
							table.insert( html, "<td style='text-align:right;'>" )
							table.insert( html, chance_any )
							table.insert( html, "</td>" )
						end
						if columns['chests'] ~= nil then
							table.insert( html, "<td style='text-align:right;'>" )
							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['items'] ~= nil then
							table.insert( html, "<td data-sort-value='9e99' style='text-align:center;'>—</td>" )
						end
						if columns['chance'] ~= nil then
							table.insert( html, "<td data-sort-value='9e99' style='text-align:right;'>—</td>" )
						end
						if columns['chests'] ~= nil then
							table.insert( html, "<td data-sort-value='9e99' style='text-align:right;'>—</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,'-',' ')), 
							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:preprocess( p.notes[item.note] ) )
						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