Minecraft Wiki
잔글 (Autolink 모듈 호환성 수정/정보 업데이트)
잔글편집 요약 없음
(사용자 2명의 중간 판 8개는 보이지 않습니다)
1번째 줄: 1번째 줄:
 
local p = {
 
local p = {
   
calc_average_amount_this_item_per_pool = function(
+
calc_average_amount_this_item_per_pool = function(
min_stacksize, max_stacksize,
+
min_stacksize, max_stacksize,
min_pool_rolls, max_pool_rolls,
+
min_pool_rolls, max_pool_rolls,
item_weight, pool_total_item_weight )
+
item_weight, pool_total_item_weight )
   
local avg_stacksize = ( min_stacksize + max_stacksize ) / 2
+
local avg_stacksize = ( min_stacksize + max_stacksize ) / 2
local avg_rolls = ( min_pool_rolls + max_pool_rolls ) / 2
+
local avg_rolls = ( min_pool_rolls + max_pool_rolls ) / 2
  +
 
return avg_stacksize * avg_rolls * item_weight / pool_total_item_weight
+
return avg_stacksize * avg_rolls * item_weight / pool_total_item_weight
  +
 
end,
+
end,
  +
 
calc_chance_any_of_this_item_per_pool = function(
+
calc_chance_any_of_this_item_per_pool = function(
min_pool_rolls, max_pool_rolls,
+
min_pool_rolls, max_pool_rolls,
item_weight, pool_total_item_weight )
+
item_weight, pool_total_item_weight )
   
local inverse_result = 0 -- 1 - inverse_result = return value
+
local inverse_result = 0 -- 1 - inverse_result = return value
local inverse_item_weight = pool_total_item_weight - item_weight
+
local inverse_item_weight = pool_total_item_weight - item_weight
  +
 
-- will be used for the division in the for loop to avoid the slightly
+
-- will be used for the division in the for loop to avoid the slightly
-- less performant math.pow(). The divisor already includes the probability
+
-- less performant math.pow(). The divisor already includes the probability
-- of picking any specific number of rolls.
+
-- of picking any specific number of rolls.
local cur_dividend = inverse_item_weight
+
local cur_dividend = inverse_item_weight
local cur_divisor = pool_total_item_weight * (max_pool_rolls - min_pool_rolls + 1)
+
local cur_divisor = pool_total_item_weight * (max_pool_rolls - min_pool_rolls + 1)
  +
 
for i = 1, max_pool_rolls do
+
for i = 1, max_pool_rolls do
if i >= min_pool_rolls then
+
if i >= min_pool_rolls then
inverse_result = inverse_result + cur_dividend / cur_divisor
+
inverse_result = inverse_result + cur_dividend / cur_divisor
  +
end
end
 
cur_dividend = cur_dividend * inverse_item_weight -- simulate pow
+
cur_dividend = cur_dividend * inverse_item_weight -- simulate pow
cur_divisor = cur_divisor * pool_total_item_weight -- simulate pow
+
cur_divisor = cur_divisor * pool_total_item_weight -- simulate pow
end
+
end
  +
 
return 1 - inverse_result
+
return 1 - inverse_result
  +
 
end,
+
end,
  +
 
java = '[[자바 에디션]], [[분류:자바 에디션 관련 정보]]',
+
java = '[[자바 에디션]], [[분류:Java Edition 관련 정보]]',
['java-upcoming'] = '[[자바 에디션 1.16]]{{upcoming}}, [[분류:자바 에디션 관련 정보]]',
+
['java-upcoming'] = '[[Java Edition 1.18]]{{upcoming}}, [[분류:Java Edition 관련 정보]]',
bedrock = '[[베드락 에디션]][[분류:베드락 에디션 관련 정보]]',
+
bedrock = '[[베드락 에디션]][[분류:Bedrock Edition 관련 정보]]',
['bedrock-upcoming'] = '[[베드락 에디션 1.16]]{{upcoming}}[[분류:베드락 에디션 관련 정보]] ',
+
['bedrock-upcoming'] = '[[Bedrock Edition 1.17]]{{upcoming}}[[분류:Bedrock Edition 관련 정보]] ',
  +
 
-- These 'items' define which sprite, label and link to use in the table.
+
-- These 'items' define which sprite, label and link to use in the table.
-- Properties 'cannot_stack', 'preserve_case', and 'plural' describe how to display the single-item summary in p.base2.
+
-- Properties 'cannot_stack', 'preserve_case', and 'plural' describe how to display the single-item summary in p.base2.
-- Order within this 'items' list doesn't matter.
+
-- Order within this 'items' list doesn't matter.
   
items = {
+
items = {
["acacia-log"] = { "block", link="원목" },
+
["acacia-log"] = { "block", link="원목" },
["acacia-sapling"] = { "block", link="묘목" },
+
["acacia-sapling"] = { "block", link="묘목" },
["activator-rail"] = { "block" },
+
["activator-rail"] = { "block" },
["ancient-debris"] = { "block", plural=false },
+
["ancient-debris"] = { "block", plural=false },
["apple"] = { "item" },
+
["apple"] = { "item" },
["arrow"] = { "item" },
+
["arrow"] = { "item" },
["bamboo"] = { "item", plural=false },
+
["bamboo"] = { "item", plural=false },
["barrel"] = { "block" },
+
["barrel"] = { "block" },
["basalt"] = { "block", plural=false },
+
["basalt"] = { "block", plural=false },
["beetroot"] = { "item" },
+
["beetroot"] = { "item" },
["beetroot-seeds"] = { "item", plural=false },
+
["beetroot-seeds"] = { "item", plural=false },
["beetroot-soup"] = { "item", plural=false, cannot_stack=true },
+
["beetroot-soup"] = { "item", plural=false, cannot_stack=true },
["bell"] = { "block" },
+
["bell"] = { "block" },
["birch-log"] = { "block", link="원목" },
+
["birch-log"] = { "block", link="원목" },
["birch-sapling"] = { "block", link="묘목" },
+
["birch-sapling"] = { "block", link="묘목" },
["black-wool"] = { "block", link="양털", plural=false },
+
["black-wool"] = { "block", link="양털", plural=false },
["block-of-gold"] = { "block", plural="금 블록" },
+
["block-of-gold"] = { "block", plural="금 블록" },
["blue-ice"] = { "block", plural=false },
+
["blue-ice"] = { "block", plural=false },
["bone"] = { "item" },
+
["bone"] = { "item" },
["bone-block"] = { "block" },
+
["bone-block"] = { "block" },
["book"] = { "item" },
+
["book"] = { "item" },
["book-and-quill"] = { "item", plural=false, title="Book and Quill" },
+
["book-and-quill"] = { "item", plural=false, title="Book and Quill" },
["bottle-o'-enchanting"] = { "item", title="경험치 병", plural="경험치 병" },
+
["bottle-o'-enchanting"] = { "item", title="경험치 병", plural="경험치 병" },
["bread"] = { "item", plural=false },
+
["bread"] = { "item", plural=false },
["brown-mushroom"] = { "block", link="버섯" },
+
["brown-mushroom"] = { "block", link="버섯" },
["brown-wool"] = { "block", link="양털", plural=false },
+
["brown-wool"] = { "block", link="양털", plural=false },
["bucket"] = { "item" },
+
["bucket"] = { "item" },
 
["buried-treasure-map"] = { "item", link="탐험 지도" },
 
["buried-treasure-map"] = { "item", link="탐험 지도" },
["cactus"] = { "block", plural=false },
+
["cactus"] = { "block", plural=false },
["cake"] = { "block", plural=false },
+
["cake"] = { "block", plural=false },
["carrot"] = { "item" },
+
["carrot"] = { "item" },
["chain"] = { "block" },
+
["chain"] = { "block" },
["chainmail-boots"] = { "item", link="갑옷", cannot_stack=true, plural=false },
+
["chainmail-boots"] = { "item", link="갑옷", cannot_stack=true, plural=false },
["chainmail-chestplate"] = { "item", link="갑옷", cannot_stack=true },
+
["chainmail-chestplate"] = { "item", link="갑옷", cannot_stack=true },
["chainmail-helmet"] = { "item", link="갑옷", cannot_stack=true },
+
["chainmail-helmet"] = { "item", link="갑옷", cannot_stack=true },
["chainmail-leggings"] = { "item", link="갑옷", cannot_stack=true, plural=false },
+
["chainmail-leggings"] = { "item", link="갑옷", cannot_stack=true, plural=false },
["clay"] = { "item", link="점토 덩이", plural=false },
+
["clay-ball"] = { "item", link="점토 덩이", plural=false },
["clock"] = { "item" },
+
["clock"] = { "item" },
["coal"] = { "item", plural=false },
+
["coal"] = { "item", plural=false },
["cocoa-beans"] = { "item", plural=false },
+
["cocoa-beans"] = { "item", plural=false },
["cooked-cod"] = { "item", plural=false },
+
["cooked-cod"] = { "item", plural=false },
["cooked-porkchop"] = { "item" },
+
["cooked-porkchop"] = { "item" },
["cooked-salmon"] = { "item", plural=false },
+
["cooked-salmon"] = { "item", plural=false },
["compass"] = { "item" },
+
["compass"] = { "item" },
["crimson-fungus"] = { "block", link="균", plural= "crimson fungi" },
+
["crimson-fungus"] = { "block", link="균", plural= "crimson fungi" },
["crimson-nylium"] = { "block", link="네사체", plural=false},
+
["crimson-nylium"] = { "block", link="네사체", plural=false},
["crimson-roots"] = { "block", link="뿌리", plural=false},
+
["crimson-roots"] = { "block", link="뿌리", plural=false},
["crossbow"] = { "item", cannot_stack=true },
+
["crossbow"] = { "item", cannot_stack=true },
["crying-obsidian"] = { "block" },
+
["crying-obsidian"] = { "block" },
["dandelion"] = { "block", link="꽃" },
+
["dandelion"] = { "block", link="꽃" },
["dark-oak-log"] = { "block", link="원목" },
+
["dark-oak-log"] = { "block", link="원목" },
["dark-oak-sapling"] = { "block", link="묘목" },
+
["dark-oak-sapling"] = { "block", link="묘목" },
["dead-bush"] = { "block", link="마른 덤불" },
+
["dead-bush"] = { "block", link="마른 덤불" },
["detector-rail"] = { "block" },
+
["detector-rail"] = { "block" },
["diamond"] = { "item" },
+
["diamond"] = { "item" },
["diamond-chestplate"] = { "item", link="갑옷", cannot_stack=true },
+
["diamond-chestplate"] = { "item", link="갑옷", cannot_stack=true },
["diamond-hoe"] = { "item", link="괭이", cannot_stack=true },
+
["diamond-hoe"] = { "item", link="괭이", cannot_stack=true },
["diamond-horse-armor"] = { "item", link="말 갑옷", cannot_stack=true, plural=false },
+
["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-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-cat"] = { "item", id='music-disc-cat',title="음반 (Cat)", link="음반", cannot_stack=true, plural=false },
["disc-mellohi"] = { "item", id='music-disc-mellohi',title="음반 (Mellohi)", link="음반", cannot_stack=true, plural=false },
+
["disc-mellohi"] = { "item", id='music-disc-mellohi',title="음반 (Mellohi)", link="음반", cannot_stack=true, plural=false },
["disc-pigstep"] = { "item", id='music-disc-pigstep', title = "음반 (Pigstep)", link="음반", cannot_stack=true, plural=false },
+
["disc-pigstep"] = { "item", id='music-disc-pigstep', title = "음반 (Pigstep)", link="음반", cannot_stack=true, plural=false },
["disc-wait"] = { "item", id='music-disc-wait',title="음반 (Wait)", link="음반", cannot_stack=true, plural=false },
+
["disc-wait"] = { "item", id='music-disc-wait',title="음반 (Wait)", link="음반", cannot_stack=true, plural=false },
["egg"] = { "item" },
+
["egg"] = { "item" },
["emerald"] = { "item" },
+
["emerald"] = { "item" },
["empty-map"] = { "item", link="지도", title="빈 지도" },
+
["empty-map"] = { "item", link="지도", title="빈 지도" },
["enchanted-book"] = { "item", id='enchanted-book', title="마법 부여책", link="마법 부여책", cannot_stack=true, note="enchant-with-levels-30" },
+
["enchanted-book"] = { "item", id='enchanted-book', title="마법이 부여된 책", link="마법이 부여된 ", cannot_stack=true, note="enchant-with-levels-30" },
["enchanted-book-rnd"] = { "item", id='enchanted-book', title="마법 부여책", link="마법 부여책", cannot_stack=true, note="enchant-randomly" },
+
["enchanted-book-rnd"] = { "item", id='enchanted-book', title="마법이 부여된 책", link="마법이 부여된 ", cannot_stack=true, note="enchant-randomly" },
["enchanted-book-rnd-soul-speed"] = { "item", id='enchanted-book', title="마법 부여책", link="마법 부여책", cannot_stack=true, note="enchant-randomly-soul-speed" },
+
["enchanted-book-rnd-soul-speed"] = { "item", id='enchanted-book', title="마법이 부여된 책", link="마법이 부여된 ", cannot_stack=true, note="enchant-randomly-soul-speed" },
["enchanted-fishing-rod"] = { "item", id="fishing-rod", link="낚싯대", cannot_stack=true, note="enchant-randomly" },
+
["enchanted-fishing-rod"] = { "item", id="fishing-rod", link="낚싯대", cannot_stack=true, note="enchant-randomly" },
["enchanted-golden-apple"] = { "item" },
+
["enchanted-golden-apple"] = { "item" },
["ender-pearl"] = { "item" },
+
["ender-pearl"] = { "item" },
["feather"] = { "item" },
+
["feather"] = { "item" },
["fern"] = { "block", link="잔디" },
+
["fern"] = { "block", link="잔디" },
["fire-charge"] = { "item" },
+
["fire-charge"] = { "item" },
["flint"] = { "item", plural=false },
+
["flint"] = { "item", plural=false },
["flint-and-steel"] = { "item", cannot_stack=true, plural=false },
+
["flint-and-steel"] = { "item", cannot_stack=true, plural=false },
["flower-pot"] = { "item" },
+
["flower-pot"] = { "item" },
["furnace"] = { "block" },
+
["furnace"] = { "block" },
["gilded-blackstone"] = { "block", plural=false },
+
["gilded-blackstone"] = { "block", plural=false },
["glistering-melon-slice"] = { "item" },
+
["glistering-melon-slice"] = { "item" },
["glowstone"] = { "block" },
+
["glowstone"] = { "block" },
["golden-apple"] = { "item" },
+
["golden-apple"] = { "item" },
["golden-boots"] = { "item", link="갑옷", cannot_stack=true, plural=false },
+
["golden-boots"] = { "item", link="갑옷", cannot_stack=true, plural=false },
["golden-carrot"] = { "item" },
+
["golden-carrot"] = { "item" },
["golden-chestplate"] = { "item", link="갑옷", cannot_stack=true },
+
["golden-chestplate"] = { "item", link="갑옷", cannot_stack=true },
["golden-helmet"] = { "item", link="갑옷", cannot_stack=true },
+
["golden-helmet"] = { "item", link="갑옷", cannot_stack=true },
["golden-hoe"] = { "item", link="괭이", cannot_stack=true },
+
["golden-hoe"] = { "item", link="괭이", cannot_stack=true },
["golden-horse-armor"] = { "item", link="말 갑옷", cannot_stack=true, plural=false },
+
["golden-horse-armor"] = { "item", link="말 갑옷", cannot_stack=true, plural=false },
["golden-leggings"] = { "item", link="갑옷", cannot_stack=true, plural=false },
+
["golden-leggings"] = { "item", link="갑옷", cannot_stack=true, plural=false },
["golden-sword"] = { "item", link="검", cannot_stack=true },
+
["golden-sword"] = { "item", link="검", cannot_stack=true },
["gold-ingot"] = { "item" },
+
["gold-ingot"] = { "item" },
["gold-nugget"] = { "item" },
+
["gold-nugget"] = { "item" },
["grass"] = { "block", link="잔디", plural=false },
+
["grass"] = { "block", link="잔디", plural=false },
["gray-wool"] = { "block", link="양털", plural=false },
+
["gray-wool"] = { "block", link="양털", plural=false },
["green-dye"] = { "item", link="염료", plural=false },
+
["green-dye"] = { "item", link="염료", plural=false },
["gunpowder"] = { "item", plural=false },
+
["gunpowder"] = { "item", plural=false },
["heart-of-the-sea"] = { "item", plural=false, link="Heart of the Sea" },
+
["heart-of-the-sea"] = { "item", plural=false, link="Heart of the Sea" },
["ink-sac"] = { "item" },
+
["ink-sac"] = { "item" },
["iron-boots"] = { "item", link="갑옷", cannot_stack=true, plural=false },
+
["iron-boots"] = { "item", link="갑옷", cannot_stack=true, plural=false },
["iron-chestplate"] = { "item", link="갑옷", cannot_stack=true },
+
["iron-chestplate"] = { "item", link="갑옷", cannot_stack=true },
["iron-helmet"] = { "item", link="갑옷", cannot_stack=true },
+
["iron-helmet"] = { "item", link="갑옷", cannot_stack=true },
["iron-horse-armor"] = { "item", link="말 갑옷", cannot_stack=true, plural=false },
+
["iron-horse-armor"] = { "item", link="말 갑옷", cannot_stack=true, plural=false },
["iron-ingot"] = { "item" },
+
["iron-ingot"] = { "item" },
["iron-leggings"] = { "item", link="갑옷", cannot_stack=true, plural=false },
+
["iron-leggings"] = { "item", link="갑옷", cannot_stack=true, plural=false },
["iron-nugget"] = { "item" },
+
["iron-nugget"] = { "item" },
["iron-pickaxe"] = { "item", link="곡괭이", cannot_stack=true },
+
["iron-pickaxe"] = { "item", link="곡괭이", cannot_stack=true },
["iron-shovel"] = { "item", link="삽", cannot_stack=true },
+
["iron-shovel"] = { "item", link="삽", cannot_stack=true },
["iron-sword"] = { "item", link="검", cannot_stack=true },
+
["iron-sword"] = { "item", link="검", cannot_stack=true },
["jungle-log"] = { "block", link="원목" },
+
["jungle-log"] = { "block", link="원목" },
["jungle-sapling"] = { "block", link="묘목" },
+
["jungle-sapling"] = { "block", link="묘목" },
["lapis-lazuli"] = { "item", plural=false },
+
["lapis-lazuli"] = { "item", plural=false },
["large-fern"] = { "block", link="잔디" },
+
["large-fern"] = { "block", link="잔디" },
["lead"] = { "item" },
+
["lead"] = { "item" },
["leather"] = { "item", plural=false },
+
["leather"] = { "item", plural=false },
["leather-boots"] = { "item", link="갑옷", cannot_stack=true, plural=false },
+
["leather-boots"] = { "item", link="갑옷", cannot_stack=true, plural=false },
["leather-cap"] = { "item", link="갑옷", cannot_stack=true },
+
["leather-cap"] = { "item", link="갑옷", cannot_stack=true },
["leather-pants"] = { "item", link="갑옷", cannot_stack=true, plural=false },
+
["leather-pants"] = { "item", link="갑옷", cannot_stack=true, plural=false },
["leather-tunic"] = { "item", link="갑옷", cannot_stack=true },
+
["leather-tunic"] = { "item", link="갑옷", cannot_stack=true },
["light-gray-wool"] = { "block", link="양털", plural=false },
+
["light-gray-wool"] = { "block", link="양털", plural=false },
["light-weighted-pressure-plate"] = { "block", link="압력판" },
+
["light-weighted-pressure-plate"] = { "block", link="압력판" },
["lodestone"] = { "block" },
+
["lodestone"] = { "block" },
["melon-seeds"] = { "item", plural=false },
+
["melon-seeds"] = { "item", plural=false },
["magma-cream"] = { "item", plural=false },
+
["magma-cream"] = { "item", plural=false },
["magma-block"] = { "block" },
+
["magma-block"] = { "block" },
["name-tag"] = { "item" },
+
["name-tag"] = { "item" },
["netherite-boots"] = { "item", link="갑옷", cannot_stack=true, plural=false },
+
["netherite-boots"] = { "item", link="갑옷", cannot_stack=true, plural=false },
["netherite-chestplate"] = { "item", link="갑옷", cannot_stack=true },
+
["netherite-chestplate"] = { "item", link="갑옷", cannot_stack=true },
["netherite-helmet"] = { "item", link="갑옷", cannot_stack=true },
+
["netherite-helmet"] = { "item", link="갑옷", cannot_stack=true },
["netherite-ingot"] = { "item" },
+
["netherite-ingot"] = { "item" },
["netherite-leggings"] = { "item", link="갑옷", cannot_stack=true, plural=false },
+
["netherite-leggings"] = { "item", link="갑옷", cannot_stack=true, plural=false },
["netherite-scrap"] = { "item" },
+
["netherite-scrap"] = { "item" },
["nether-wart"] = { "item", plural=false },
+
["nether-wart"] = { "item", plural=false },
["nether-quartz"] = { "item", plural=false },
+
["nether-quartz"] = { "item", plural=false },
["oak-log"] = { "block", link="원목" },
+
["oak-log"] = { "block", link="원목" },
["oak-planks"] = { "block", link="판자", id="oak-wood-planks", plural=false },
+
["oak-planks"] = { "block", link="판자", id="oak-wood-planks", plural=false },
["oak-sapling"] = { "block", link="묘목" },
+
["oak-sapling"] = { "block", link="묘목" },
["oak-sign"] = { "item", link="표지판" },
+
["oak-sign"] = { "item", link="표지판" },
["obsidian"] = { "block", plural=false },
+
["obsidian"] = { "block", plural=false },
["paper"] = { "item", plural=false },
+
["paper"] = { "item", plural=false },
["piglin-banner-pattern"] = { "item", id="banner-pattern", link="Banner Pattern", cannot_stack=true },
+
["piglin-banner-pattern"] = { "item", id="banner-pattern", link="Banner Pattern", cannot_stack=true },
["poisonous-potato"] = { "item", plural="poisonous potatoes" },
+
["poisonous-potato"] = { "item", plural="poisonous potatoes" },
["polished-basalt"] = { "block", plural=false},
+
["polished-basalt"] = { "block", plural=false},
["poppy"] = { "block", link="꽃", plural="poppies" },
+
["poppy"] = { "block", link="꽃", plural="poppies" },
["potato"] = { "item", plural="potatoes" },
+
["potato"] = { "item", plural="potatoes" },
["potion-of-regeneration"] = { "item", link="물약", title="재생의 물약", plural=false, preserve_case=true },
+
["potion-of-regeneration"] = { "item", link="물약", title="재생의 물약", plural=false, preserve_case=true },
["potion-of-water-breathing"] = { "item", link="물약", title="수중 호흡 물약", plural=false, preserve_case=true },
+
["potion-of-water-breathing"] = { "item", link="물약", title="수중 호흡 물약", plural=false, preserve_case=true },
["powered-rail"] = { "block", title="Powered 레일", plural=false },
+
["powered-rail"] = { "block", title="Powered 레일", plural=false },
["prismarine-crystals"] = { "item", plural=false },
+
["prismarine-crystals"] = { "item", plural=false },
["pumpkin"] = { "block" },
+
["pumpkin"] = { "block" },
["pumpkin-pie"] = { "item", plural=false },
+
["pumpkin-pie"] = { "item", plural=false },
["pumpkin-seeds"] = { "item", plural=false },
+
["pumpkin-seeds"] = { "item", plural=false },
["rail"] = { "block", title="레일", plural=false },
+
["rail"] = { "block", title="레일", plural=false },
["raw-beef"] = { "item", link="익히지 않은 소고기", plural=false },
+
["raw-beef"] = { "item", link="익히지 않은 소고기", plural=false },
["raw-cod"] = { "item", link="생대구", plural=false },
+
["raw-cod"] = { "item", link="생대구", plural=false },
["raw-mutton"] = { "item", link="익히지 않은 양고기", plural=false },
+
["raw-mutton"] = { "item", link="익히지 않은 양고기", plural=false },
["raw-porkchop"] = { "item", link="익히지 않은 돼지고기" },
+
["raw-porkchop"] = { "item", link="익히지 않은 돼지고기" },
["raw-salmon"] = { "item", link="생대구", plural=false },
+
["raw-salmon"] = { "item", link="생대구", plural=false },
["redstone"] = { "item", id="redstone-dust", title="레드스톤 가루", plural=false },
+
["redstone"] = { "item", id="redstone-dust", title="레드스톤 가루", plural=false },
["rotten-flesh"] = { "item", plural=false },
+
["rotten-flesh"] = { "item", plural=false },
["saddle"] = { "item", cannot_stack=true },
+
["saddle"] = { "item", cannot_stack=true },
["sand"] = { "block", plural=false },
+
["sand"] = { "block", plural=false },
["shears"] = { "item", plural=false, cannot_stack=true },
+
["shears"] = { "item", plural=false, cannot_stack=true },
["smooth-stone"] = { "block", plural=false },
+
["smooth-stone"] = { "block", plural=false },
["snowball"] = { "item", link="눈덩이" },
+
["snowball"] = { "item", link="눈덩이" },
["snow-block"] = { "block", link="눈 블록" },
+
["snow-block"] = { "block", link="눈 블록" },
["soul-sand"] = { "block" },
+
["soul-sand"] = { "block" },
["spectral-arrow"] = { "item" },
+
["spectral-arrow"] = { "item" },
["spider-eye"] = { "item" },
+
["spider-eye"] = { "item" },
["spruce-log"] = { "block", link="원목" },
+
["spruce-log"] = { "block", link="원목" },
["spruce-sapling"] = { "block", link="묘목" },
+
["spruce-sapling"] = { "block", link="묘목" },
["spruce-sign"] = { "item", link="표지판" },
+
["spruce-sign"] = { "item", link="표지판" },
["stick"] = { "item" },
+
["stick"] = { "item" },
["stone"] = { "block", plural=false },
+
["stone"] = { "block", plural=false },
["stone-axe"] = { "item", link="도끼", cannot_stack=true },
+
["stone-axe"] = { "item", link="도끼", cannot_stack=true },
["stone-bricks"] = { "block", plural=false },
+
["stone-bricks"] = { "block", plural=false },
["stone-pickaxe"] = { "item", link="곡괭이", cannot_stack=true },
+
["stone-pickaxe"] = { "item", link="곡괭이", cannot_stack=true },
["string"] = { "item", plural=false },
+
["string"] = { "item", plural=false },
["suspicious-stew"] = { "item", plural=false, note="suspicious-stew" },
+
["suspicious-stew"] = { "item", plural=false, note="suspicious-stew" },
["sweet-berries"] = { "item", plural=false },
+
["sweet-berries"] = { "item", plural=false },
["tall-grass"] = { "block", plural=false, link="잔디" },
+
["tall-grass"] = { "block", plural=false, link="잔디" },
["tnt"] = { "block", title="TNT", plural=false, preserve_case=true },
+
["tnt"] = { "block", title="TNT", plural=false, preserve_case=true },
["torch"] = { "block" },
+
["torch"] = { "block" },
["tripwire-hook"] = { "block" },
+
["tripwire-hook"] = { "block" },
["water-bucket"] = { "item", cannot_stack=true },
+
["water-bucket"] = { "item", cannot_stack=true },
["wheat"] = { "item", plural=false },
+
["wheat"] = { "item", plural=false },
["wheat-seeds"] = { "item", plural=false },
+
["wheat-seeds"] = { "item", plural=false },
["white-wool"] = { "block", link="양털", plural=false },
+
["white-wool"] = { "block", link="양털", plural=false },
["wooden-axe"] = { "item", link="도끼", cannot_stack=true },
+
["wooden-axe"] = { "item", link="도끼", cannot_stack=true },
["wooden-hoe"] = { "item", link="괭이", cannot_stack=true },
+
["wooden-hoe"] = { "item", link="괭이", cannot_stack=true },
["wooden-pickaxe"] = { "item", link="곡괭이", cannot_stack=true },
+
["wooden-pickaxe"] = { "item", link="곡괭이", cannot_stack=true },
["yellow-dye"] = { "item", link="염료", plural=false },
+
["yellow-dye"] = { "item", link="염료", plural=false },
["map"] = { "item", link="지도", note="map" },
+
["map"] = { "item", link="지도", note="map" },
   
["damaged-random-enchanted-netherite-axe"] = { "item", id="netherite-axe", title="손상된 마법이 부여된 네더라이트 도끼", link="도끼", note="enchant-randomly", note1="damaged-0.15-0.85", cannot_stack=true },
+
["damaged-random-enchanted-netherite-axe"] = { "item", id="netherite-axe", title="손상된 마법이 부여된 네더라이트 도끼", link="도끼", note="enchant-randomly", note1="damaged-0.15-0.85", cannot_stack=true },
["damaged-netherite-boots"] = { "item", id="netherite-boots", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true, plural=false},
+
["damaged-netherite-boots"] = { "item", id="netherite-boots", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true, plural=false},
["damaged-level-enchanted-netherite-boots"] = { "item", id="netherite-boots", title="손상된 마법이 부여된 네더라이트 부츠", link="갑옷", note="enchant-with-levels-5-20", note1="damaged-0.2-0.65", cannot_stack=true, plural=false },
+
["damaged-level-enchanted-netherite-boots"] = { "item", id="netherite-boots", title="손상된 마법이 부여된 네더라이트 부츠", link="갑옷", note="enchant-with-levels-5-20", note1="damaged-0.2-0.65", cannot_stack=true, plural=false },
["damaged-random-enchanted-netherite-boots"] = { "item", id="netherite-boots", title="손상된 마법이 부여된 네더라이트 부츠", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true, plural=false },
+
["damaged-random-enchanted-netherite-boots"] = { "item", id="netherite-boots", title="손상된 마법이 부여된 네더라이트 부츠", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true, plural=false },
["damaged-netherite-chestplate"] = { "item", id="netherite-chestplate", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true},
+
["damaged-netherite-chestplate"] = { "item", id="netherite-chestplate", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true},
["damaged-level-enchanted-netherite-chestplate"] = { "item", id="netherite-chestplate", title="손상된 마법이 부여된 네더라이트 흉갑", link="갑옷", note="enchant-with-levels-5-20", note1="damaged-0.2-0.65", cannot_stack=true },
+
["damaged-level-enchanted-netherite-chestplate"] = { "item", id="netherite-chestplate", title="손상된 마법이 부여된 네더라이트 흉갑", link="갑옷", note="enchant-with-levels-5-20", note1="damaged-0.2-0.65", cannot_stack=true },
["damaged-random-enchanted-netherite-chestplate"] = { "item", id="netherite-chestplate", title="손상된 마법이 부여된 네더라이트 흉갑", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true },
+
["damaged-random-enchanted-netherite-chestplate"] = { "item", id="netherite-chestplate", title="손상된 마법이 부여된 네더라이트 흉갑", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true },
["damaged-netherite-helmet"] = { "item", id="netherite-helmet", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true},
+
["damaged-netherite-helmet"] = { "item", id="netherite-helmet", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true},
["damaged-random-enchanted-netherite-hoe"] = { "item", id="netherite-hoe", title="손상된 마법이 부여된 네더라이트 괭이", link="괭이", note="enchant-randomly", note1="damaged-0.1-0.95", cannot_stack=true },
+
["damaged-random-enchanted-netherite-hoe"] = { "item", id="netherite-hoe", title="손상된 마법이 부여된 네더라이트 괭이", link="괭이", note="enchant-randomly", note1="damaged-0.1-0.95", cannot_stack=true },
["damaged-level-enchanted-netherite-helmet"] = { "item", id="netherite-helmet", title="손상된 마법이 부여된 네더라이트 투구", link="갑옷", note="enchant-with-levels-5-20", note1="damaged-0.2-0.65", cannot_stack=true },
+
["damaged-level-enchanted-netherite-helmet"] = { "item", id="netherite-helmet", title="손상된 마법이 부여된 네더라이트 투구", link="갑옷", note="enchant-with-levels-5-20", note1="damaged-0.2-0.65", cannot_stack=true },
["damaged-random-enchanted-netherite-helmet"] = { "item", id="netherite-helmet", title="손상된 마법이 부여된 네더라이트 투구", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true },
+
["damaged-random-enchanted-netherite-helmet"] = { "item", id="netherite-helmet", title="손상된 마법이 부여된 네더라이트 투구", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true },
["damaged-netherite-leggings"] = { "item", id="netherite-leggings", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true, plural=false},
+
["damaged-netherite-leggings"] = { "item", id="netherite-leggings", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true, plural=false},
["damaged-level-enchanted-netherite-leggings"] = { "item", id="netherite-leggings", title="손상된 마법이 부여된 네더라이트 각반", link="갑옷", note="enchant-with-levels-5-20", note1="damaged-0.2-0.65", cannot_stack=true, plural=false },
+
["damaged-level-enchanted-netherite-leggings"] = { "item", id="netherite-leggings", title="손상된 마법이 부여된 네더라이트 각반", link="갑옷", note="enchant-with-levels-5-20", note1="damaged-0.2-0.65", cannot_stack=true, plural=false },
["damaged-random-enchanted-netherite-leggings"] = { "item", id="netherite-leggings", title="손상된 마법이 부여된 네더라이트 각반", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true, plural=false },
+
["damaged-random-enchanted-netherite-leggings"] = { "item", id="netherite-leggings", title="손상된 마법이 부여된 네더라이트 각반", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true, plural=false },
["damaged-random-enchanted-netherite-pickaxe"] = { "item", id="netherite-pickaxe", title="손상된 마법이 부여된 네더라이트 곡괭이", link="곡괭이", note="enchant-randomly", note1="damaged-0.1-0.95", cannot_stack=true },
+
["damaged-random-enchanted-netherite-pickaxe"] = { "item", id="netherite-pickaxe", title="손상된 마법이 부여된 네더라이트 곡괭이", link="곡괭이", note="enchant-randomly", note1="damaged-0.1-0.95", cannot_stack=true },
["damaged-random-enchanted-netherite-shovel"] = { "item", id="netherite-shovel", title="손상된 마법이 부여된 네더라이트 삽", link="삽", note="enchant-randomly", note1="damaged-0.15-0.45", cannot_stack=true},
+
["damaged-random-enchanted-netherite-shovel"] = { "item", id="netherite-shovel", title="손상된 마법이 부여된 네더라이트 삽", link="삽", note="enchant-randomly", note1="damaged-0.15-0.45", cannot_stack=true},
["damaged-netherite-sword"] = { "item", id="netherite-sword", link="검", note="damaged-0.2-0.65", cannot_stack=true},
+
["damaged-netherite-sword"] = { "item", id="netherite-sword", link="검", note="damaged-0.2-0.65", cannot_stack=true},
["damaged-level-enchanted-netherite-sword"] = { "item", id="netherite-sword", title="손상된 마법이 부여된 네더라이트 검", link="검", note="enchant-with-levels-5-20", note1="damaged-0.2-0.65", cannot_stack=true },
+
["damaged-level-enchanted-netherite-sword"] = { "item", id="netherite-sword", title="손상된 마법이 부여된 네더라이트 검", link="검", note="enchant-with-levels-5-20", note1="damaged-0.2-0.65", cannot_stack=true },
["damaged-random-enchanted-netherite-sword"] = { "item", id="netherite-sword", title="손상된 마법이 부여된 네더라이트 검", link="검", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true },
+
["damaged-random-enchanted-netherite-sword"] = { "item", id="netherite-sword", title="손상된 마법이 부여된 네더라이트 검", link="검", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true },
["damaged-diamond-boots"] = { "item", id="diamond-boots", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true, plural=false},
+
["damaged-diamond-boots"] = { "item", id="diamond-boots", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true, plural=false},
["level-enchanted-diamond-boots"] = { "item", id="diamond-boots", title="마법이 부여된 다이아몬드 부츠", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true, plural=false },
+
["level-enchanted-diamond-boots"] = { "item", id="diamond-boots", title="마법이 부여된 다이아몬드 부츠", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true, plural=false },
["damaged-random-enchanted-diamond-boots"] = { "item", id="diamond-boots", title="손상된 마법이 부여된 다이아몬드 부츠", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true, plural=false },
+
["damaged-random-enchanted-diamond-boots"] = { "item", id="diamond-boots", title="손상된 마법이 부여된 다이아몬드 부츠", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true, plural=false },
["damaged-diamond-chestplate"] = { "item", id="diamond-chestplate", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true},
+
["damaged-diamond-chestplate"] = { "item", id="diamond-chestplate", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true},
["level-enchanted-diamond-chestplate"] = { "item", id="diamond-chestplate", title="마법이 부여된 다이아몬드 흉갑", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true },
+
["level-enchanted-diamond-chestplate"] = { "item", id="diamond-chestplate", title="마법이 부여된 다이아몬드 흉갑", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true },
["damaged-random-enchanted-diamond-chestplate"] = { "item", id="diamond-chestplate", title="손상된 마법이 부여된 다이아몬드 흉갑", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true },
+
["damaged-random-enchanted-diamond-chestplate"] = { "item", id="diamond-chestplate", title="손상된 마법이 부여된 다이아몬드 흉갑", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true },
["damaged-diamond-helmet"] = { "item", id="diamond-helmet", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true},
+
["damaged-diamond-helmet"] = { "item", id="diamond-helmet", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true},
["level-enchanted-diamond-helmet"] = { "item", id="diamond-helmet", title="마법이 부여된 다이아몬드 투구", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true },
+
["level-enchanted-diamond-helmet"] = { "item", id="diamond-helmet", title="마법이 부여된 다이아몬드 투구", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true },
["damaged-random-enchanted-diamond-helmet"] = { "item", id="diamond-helmet", title="손상된 마법이 부여된 다이아몬드 투구", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true },
+
["damaged-random-enchanted-diamond-helmet"] = { "item", id="diamond-helmet", title="손상된 마법이 부여된 다이아몬드 투구", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true },
["damaged-diamond-leggings"] = { "item", id="diamond-leggings", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true, plural=false},
+
["damaged-diamond-leggings"] = { "item", id="diamond-leggings", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true, plural=false},
["level-enchanted-diamond-leggings"] = { "item", id="diamond-leggings", title="마법이 부여된 다이아몬드 각반", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true, plural=false },
+
["level-enchanted-diamond-leggings"] = { "item", id="diamond-leggings", title="마법이 부여된 다이아몬드 각반", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true, plural=false },
["damaged-random-enchanted-diamond-leggings"] = { "item", id="diamond-leggings", title="손상된 마법이 부여된 다이아몬드 각반", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true, plural=false },
+
["damaged-random-enchanted-diamond-leggings"] = { "item", id="diamond-leggings", title="손상된 마법이 부여된 다이아몬드 각반", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true, plural=false },
["level-enchanted-diamond-pickaxe"] = { "item", id="diamond-pickaxe", title="마법이 부여된 다이아몬드 곡괭이", link="곡괭이", note="enchant-with-levels-20-39", cannot_stack=true },
+
["level-enchanted-diamond-pickaxe"] = { "item", id="diamond-pickaxe", title="마법이 부여된 다이아몬드 곡괭이", link="곡괭이", note="enchant-with-levels-20-39", cannot_stack=true },
["level-enchanted-diamond-shovel"] = { "item", id="diamond-shovel", title="마법이 부여된 다이아몬드 삽", link="삽", note="enchant-with-levels-20-39", cannot_stack=true },
+
["level-enchanted-diamond-shovel"] = { "item", id="diamond-shovel", title="마법이 부여된 다이아몬드 삽", link="삽", note="enchant-with-levels-20-39", cannot_stack=true },
["damaged-random-enchanted-diamond-shovel"] = { "item", id="diamond-shovel", title="손상된 마법이 부여된 다이아몬드 삽", link="삽", note="enchant-randomly", note1="damaged-0.15-0.45", cannot_stack=true},
+
["damaged-random-enchanted-diamond-shovel"] = { "item", id="diamond-shovel", title="손상된 마법이 부여된 다이아몬드 삽", link="삽", note="enchant-randomly", note1="damaged-0.15-0.45", cannot_stack=true},
["damaged-diamond-sword"] = { "item", id="diamond-sword", link="검", note="damaged-0.2-0.65", cannot_stack=true},
+
["damaged-diamond-sword"] = { "item", id="diamond-sword", link="검", note="damaged-0.2-0.65", cannot_stack=true},
["level-enchanted-diamond-sword"] = { "item", id="diamond-sword", title="마법이 부여된 다이아몬드 검", link="검", note="enchant-with-levels-20-39", cannot_stack=true },
+
["level-enchanted-diamond-sword"] = { "item", id="diamond-sword", title="마법이 부여된 다이아몬드 검", link="검", note="enchant-with-levels-20-39", cannot_stack=true },
["damaged-random-enchanted-diamond-sword"] = { "item", id="diamond-sword", title="손상된 마법이 부여된 다이아몬드 검", link="검", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true },
+
["damaged-random-enchanted-diamond-sword"] = { "item", id="diamond-sword", title="손상된 마법이 부여된 다이아몬드 검", link="검", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true },
["level-enchanted-iron-boots"] = { "item", id="iron-boots", title="마법이 부여된 철 부츠", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true, plural=false },
+
["level-enchanted-iron-boots"] = { "item", id="iron-boots", title="마법이 부여된 철 부츠", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true, plural=false },
["level-enchanted-iron-chestplate"] = { "item", id="iron-chestplate", title="마법이 부여된 철 흉갑", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true },
+
["level-enchanted-iron-chestplate"] = { "item", id="iron-chestplate", title="마법이 부여된 철 흉갑", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true },
["level-enchanted-iron-helmet"] = { "item", id="iron-helmet", title="마법이 부여된 철 투구", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true },
+
["level-enchanted-iron-helmet"] = { "item", id="iron-helmet", title="마법이 부여된 철 투구", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true },
["level-enchanted-iron-leggings"] = { "item", id="iron-leggings", title="마법이 부여된 철 각반", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true, plural=false },
+
["level-enchanted-iron-leggings"] = { "item", id="iron-leggings", title="마법이 부여된 철 각반", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true, plural=false },
["level-enchanted-iron-pickaxe"] = { "item", id="iron-pickaxe", title="마법이 부여된 철 곡괭이", link="곡괭이", note="enchant-with-levels-20-39", cannot_stack=true },
+
["level-enchanted-iron-pickaxe"] = { "item", id="iron-pickaxe", title="마법이 부여된 철 곡괭이", link="곡괭이", note="enchant-with-levels-20-39", cannot_stack=true },
["level-enchanted-iron-shovel"] = { "item", id="iron-shovel", title="마법이 부여된 철 삽", link="삽", note="enchant-with-levels-20-39", cannot_stack=true },
+
["level-enchanted-iron-shovel"] = { "item", id="iron-shovel", title="마법이 부여된 철 삽", link="삽", note="enchant-with-levels-20-39", cannot_stack=true },
["level-enchanted-iron-sword"] = { "item", id="iron-sword", title="마법이 부여된 철 검", link="검", note="enchant-with-levels-20-39", cannot_stack=true },
+
["level-enchanted-iron-sword"] = { "item", id="iron-sword", title="마법이 부여된 철 검", link="검", note="enchant-with-levels-20-39", cannot_stack=true },
["random-enchanted-golden-axe"] = { "item", id="golden-axe", title="마법이 부여된 황금 도끼", link="도끼", note="enchant-randomly", cannot_stack=true },
+
["random-enchanted-golden-axe"] = { "item", id="golden-axe", title="마법이 부여된 황금 도끼", link="도끼", note="enchant-randomly", cannot_stack=true },
["level-enchanted-golden-boots"] = { "item", id="golden-boots", title="마법이 부여된 황금 부츠", link="갑옷", note="enchant-with-levels-5-15", cannot_stack=true, plural=false },
+
["level-enchanted-golden-boots"] = { "item", id="golden-boots", title="마법이 부여된 황금 부츠", link="갑옷", note="enchant-with-levels-5-15", cannot_stack=true, plural=false },
["random-enchanted-golden-boots"] = { "item", id="golden-boots", title="마법이 부여된 황금 부츠", link="갑옷", note="enchant-randomly", cannot_stack=true, plural=false },
+
["random-enchanted-golden-boots"] = { "item", id="golden-boots", title="마법이 부여된 황금 부츠", link="갑옷", note="enchant-randomly", cannot_stack=true, plural=false },
["soul-speed-enchanted-golden-boots"] = { "item", id="golden-boots", title="영혼 신속 마법이 부여된 황금 부츠", link="갑옷", note="enchant-randomly-soul-speed", cannot_stack=true, plural=false },
+
["soul-speed-enchanted-golden-boots"] = { "item", id="golden-boots", title="영혼 신속 마법이 부여된 황금 부츠", link="갑옷", note="enchant-randomly-soul-speed", cannot_stack=true, plural=false },
["level-enchanted-golden-chestplate"] = { "item", id="golden-chestplate", title="마법이 부여된 황금 흉갑", link="갑옷", note="enchant-with-levels-5-15", cannot_stack=true },
+
["level-enchanted-golden-chestplate"] = { "item", id="golden-chestplate", title="마법이 부여된 황금 흉갑", link="갑옷", note="enchant-with-levels-5-15", cannot_stack=true },
["random-enchanted-golden-chestplate"] = { "item", id="golden-chestplate", title="마법이 부여된 황금 흉갑", link="갑옷", note="enchant-randomly", cannot_stack=true },
+
["random-enchanted-golden-chestplate"] = { "item", id="golden-chestplate", title="마법이 부여된 황금 흉갑", link="갑옷", note="enchant-randomly", cannot_stack=true },
["level-enchanted-golden-helmet"] = { "item", id="golden-helmet", title="마법이 부여된 황금 투구", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true },
+
["level-enchanted-golden-helmet"] = { "item", id="golden-helmet", title="마법이 부여된 황금 투구", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true },
["random-enchanted-golden-helmet"] = { "item", id="golden-helmet", title="마법이 부여된 황금 투구", link="갑옷", note="enchant-randomly", cannot_stack=true },
+
["random-enchanted-golden-helmet"] = { "item", id="golden-helmet", title="마법이 부여된 황금 투구", link="갑옷", note="enchant-randomly", cannot_stack=true },
["level-enchanted-golden-hoe"] = { "item", id="golden-hoe", title="마법이 부여된 황금 괭이", link="괭이", note="enchant-with-levels-20-39", cannot_stack=true },
+
["level-enchanted-golden-hoe"] = { "item", id="golden-hoe", title="마법이 부여된 황금 괭이", link="괭이", note="enchant-with-levels-20-39", cannot_stack=true },
["random-enchanted-golden-hoe"] = { "item", id="golden-hoe", title="마법이 부여된 황금 괭이", link="괭이", note="enchant-randomly", cannot_stack=true },
+
["random-enchanted-golden-hoe"] = { "item", id="golden-hoe", title="마법이 부여된 황금 괭이", link="괭이", note="enchant-randomly", cannot_stack=true },
["level-enchanted-golden-leggings"] = { "item", id="golden-leggings", title="마법이 부여된 황금 각반", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true, plural=false },
+
["level-enchanted-golden-leggings"] = { "item", id="golden-leggings", title="마법이 부여된 황금 각반", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true, plural=false },
["random-enchanted-golden-leggings"] = { "item", id="golden-leggings", title="마법이 부여된 황금 각반", link="갑옷", note="enchant-randomly", cannot_stack=true, plural=false },
+
["random-enchanted-golden-leggings"] = { "item", id="golden-leggings", title="마법이 부여된 황금 각반", link="갑옷", note="enchant-randomly", cannot_stack=true, plural=false },
["random-enchanted-golden-pickaxe"] = { "item", id="golden-pickaxe", title="마법이 부여된 황금 곡괭이", link="곡괭이", note="enchant-randomly", cannot_stack=true },
+
["random-enchanted-golden-pickaxe"] = { "item", id="golden-pickaxe", title="마법이 부여된 황금 곡괭이", link="곡괭이", note="enchant-randomly", cannot_stack=true },
["random-enchanted-golden-shovel"] = { "item", id="golden-shovel", title="마법이 부여된 황금 삽", link="삽", note="enchant-randomly", cannot_stack=true },
+
["random-enchanted-golden-shovel"] = { "item", id="golden-shovel", title="마법이 부여된 황금 삽", link="삽", note="enchant-randomly", cannot_stack=true },
["random-enchanted-golden-sword"] = { "item", id="golden-sword", title="마법이 부여된 황금 검", link="검", note="enchant-randomly", cannot_stack=true },
+
["random-enchanted-golden-sword"] = { "item", id="golden-sword", title="마법이 부여된 황금 검", link="검", note="enchant-randomly", cannot_stack=true },
["random-enchanted-leather-boots"] = { "item", id="leather-boots", title="마법이 부여된 가죽 부츠", link="갑옷", note="enchant-randomly", cannot_stack=true, plural=false },
+
["random-enchanted-leather-boots"] = { "item", id="leather-boots", title="마법이 부여된 가죽 부츠", link="갑옷", note="enchant-randomly", cannot_stack=true, plural=false },
["random-enchanted-leather-cap"] = { "item", id="leather-cap", title="마법이 부여된 가죽 모자", link="갑옷", note="enchant-randomly", cannot_stack=true },
+
["random-enchanted-leather-cap"] = { "item", id="leather-cap", title="마법이 부여된 가죽 모자", link="갑옷", note="enchant-randomly", cannot_stack=true },
["random-enchanted-leather-pants"] = { "item", id="leather-pants", title="마법이 부여된 가죽 바지", link="갑옷", note="enchant-randomly", cannot_stack=true, plural=false },
+
["random-enchanted-leather-pants"] = { "item", id="leather-pants", title="마법이 부여된 가죽 바지", link="갑옷", note="enchant-randomly", cannot_stack=true, plural=false },
["random-enchanted-leather-tunic"] = { "item", id="leather-tunic", title="마법이 부여된 가죽 조끼", link="갑옷", note="enchant-randomly", cannot_stack=true },
+
["random-enchanted-leather-tunic"] = { "item", id="leather-tunic", title="마법이 부여된 가죽 조끼", link="갑옷", note="enchant-randomly", cannot_stack=true },
["damaged-level-enchanted-crossbow"] = { "item", id="crossbow", title="손상된 마법이 부여된 석궁", link="석궁", note="enchant-with-levels-20-25", note1="damaged-0.05-0.15", cannot_stack=true },
+
["damaged-level-enchanted-crossbow"] = { "item", id="crossbow", title="손상된 마법이 부여된 석궁", link="석궁", note="enchant-with-levels-20-25", note1="damaged-0.05-0.15", cannot_stack=true },
["damaged-random-enchanted-crossbow"] = { "item", id="crossbow", title="손상된 마법이 부여된 석궁", link="석궁", note="enchant-randomly", note1="damaged-0.1-0.5", cannot_stack=true },
+
["damaged-random-enchanted-crossbow"] = { "item", id="crossbow", title="손상된 마법이 부여된 석궁", link="석궁", note="enchant-randomly", note1="damaged-0.1-0.5", cannot_stack=true },
   
["empty"] = { "block", id="air", link='', title='빈 상자', plural=false, note="nothing" },
+
["empty"] = { "block", id="air", link='', title='빈 상자', plural=false, note="nothing" },
},
+
},
   
notes = {
+
notes = {
["enchant-randomly"] = "[[보물 마법]]을 '''포함한''' 모든 마법의 확률은 동일하며([[영혼 신속]] 제외), 마법 레벨도 확률이 동일하다.",
+
["enchant-randomly"] = "[[보물 마법]]을 '''포함한''' 모든 마법의 확률은 동일하며([[영혼 신속]] 제외), 마법 레벨도 확률이 동일하다.",
["enchant-randomly-soul-speed"] = "임의의 레벨로 [[영혼 신속]] 마법이 부여된다.",
+
["enchant-randomly-soul-speed"] = "임의의 레벨로 [[영혼 신속]] 마법이 부여된다.",
["enchant-with-levels-5-15"] = "마법의 확률은 [[마법 부여대]]에서 레벨 5에서 레벨 15까지의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 여러 마법이 중복될 확률은 줄어들지 않는다([[영혼 신속]]제외).",
+
["enchant-with-levels-5-15"] = "마법의 확률은 [[마법 부여대]]에서 레벨 5에서 레벨 15까지의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 여러 마법이 중복될 확률은 줄어들지 않는다([[영혼 신속]] 제외).",
["enchant-with-levels-5-20"] = "마법의 확률은 [[마법 부여대]]에서 레벨 5에서 레벨 20까지의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 여러 마법이 중복될 확률은 줄어들지 않는다([[영혼 신속]]제외).",
+
["enchant-with-levels-5-20"] = "마법의 확률은 [[마법 부여대]]에서 레벨 5에서 레벨 20까지의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 여러 마법이 중복될 확률은 줄어들지 않는다([[영혼 신속]] 제외).",
["enchant-with-levels-20-25"] = "마법의 확률은 [[마법 부여대]]에서 레벨 20에서 레벨 25까지의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 여러 마법이 중복될 확률은 줄어들지 않는다([[영혼 신속]]제외).",
+
["enchant-with-levels-20-25"] = "마법의 확률은 [[마법 부여대]]에서 레벨 20에서 레벨 25까지의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 여러 마법이 중복될 확률은 줄어들지 않는다([[영혼 신속]] 제외).",
["enchant-with-levels-20-25"] = "마법의 확률은 [[마법 부여대]]에서 레벨 20에서 레벨 25까지의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 여러 마법이 중복될 확률은 줄어들지 않는다([[영혼 신속]]제외).",
+
["enchant-with-levels-20-25"] = "마법의 확률은 [[마법 부여대]]에서 레벨 20에서 레벨 25까지의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 여러 마법이 중복될 확률은 줄어들지 않는다([[영혼 신속]] 제외).",
["enchant-with-levels-20-39"] = "마법의 확률은 [[마법 부여대]]에서 레벨 20에서 레벨 39까지의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 여러 마법이 중복될 확률은 줄어들지 않는다([[영혼 신속]]제외).",
+
["enchant-with-levels-20-39"] = "마법의 확률은 [[마법 부여대]]에서 레벨 20에서 레벨 39까지의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 여러 마법이 중복될 확률은 줄어들지 않는다([[영혼 신속]] 제외).",
["enchant-with-levels-30"] = "마법의 확률은 [[마법 부여대]]에서 레벨 30의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 여러 마법이 중복될 확률은 줄어들지 않는다([[영혼 신속]]제외).",
+
["enchant-with-levels-30"] = "마법의 확률은 [[마법 부여대]]에서 레벨 30의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 여러 마법이 중복될 확률은 줄어들지 않는다([[영혼 신속]] 제외).",
["damaged-0.05-0.15"] = "이 아이템의 내구성은 5%와 15% 사이에 있다.",
+
["damaged-0.05-0.15"] = "이 아이템의 내구성은 5%와 15% 사이에 있다.",
["damaged-0.1-0.95"] = "이 아이템의 내구성은 10%와 95% 사이에 있다.",
+
["damaged-0.1-0.95"] = "이 아이템의 내구성은 10%와 95% 사이에 있다.",
["damaged-0.15-0.45"] = "이 아이템의 내구성은 15%와 45% 사이에 있다.",
+
["damaged-0.15-0.45"] = "이 아이템의 내구성은 15%와 45% 사이에 있다.",
["damaged-0.15-0.85"] = "이 아이템의 내구성은 15%와 85% 사이에 있다.",
+
["damaged-0.15-0.85"] = "이 아이템의 내구성은 15%와 85% 사이에 있다.",
["damaged-0.1-0.5"] = "이 아이템의 내구성은 10%와 50% 사이에 있다.",
+
["damaged-0.1-0.5"] = "이 아이템의 내구성은 10%와 50% 사이에 있다.",
["damaged-0.2-0.65"] = "이 아이템의 내구성은 20%와 65% 사이에 있다.",
+
["damaged-0.2-0.65"] = "이 아이템의 내구성은 20%와 65% 사이에 있다.",
["nothing"] = "'Nothing' does not refer to the chance of an empty chest. Instead, it refers to the chance that the random loot generator does not add any loot ''on a single roll''.",
+
["nothing"] = "'Nothing' does not refer to the chance of an empty chest. Instead, it refers to the chance that the random loot generator does not add any loot ''on a single roll''.",
["suspicious-stew"] = "The stew grants one of the following effects: 5–7 seconds of [[Blindness]], 7–10 seconds of [[Jump Boost]], 7-10 seconds of [[Night Vision]], 10–20 seconds of [[Poison]], 7–10 seconds of [[Saturation]], or 6–8 seconds of [[Weakness]].",
+
["suspicious-stew"] = "The stew grants one of the following effects: 5–7 seconds of [[Blindness]], 7–10 seconds of [[Jump Boost]], 7-10 seconds of [[Night Vision]], 10–20 seconds of [[Poison]], 7–10 seconds of [[Saturation]], or 6–8 seconds of [[Weakness]].",
["map"] = "Named unknown map, but changed to map 0, the scale level is 1:4, Maps from the same stack are stackable, but maps that are not stacked are unstackable despite looking identical."
+
["map"] = "Named unknown map, but changed to map 0, the scale level is 1:4, Maps from the same stack are stackable, but maps that are not stacked are unstackable despite looking identical."
},
+
},
   
-- <ref group='note' name='enchant-randomly'>
+
-- <ref group='note' name='enchant-randomly'>
  +
 
-- NOTE: order here doesn't matter.
+
-- NOTE: order here doesn't matter.
-- * in the table, chests will sort in alphabetical order
+
-- * in the table, chests will sort in alphabetical order
-- * in the table, items will sort by chance, then by avg#, then alphabetically.
+
-- * in the table, items will sort by chance, then by avg#, then alphabetically.
-- * If poolsJavaUpcoming is omitted, poolsJava will be used. To omit a pool entirely, set it to {}.
+
-- * If poolsJavaUpcoming is omitted, poolsJava will be used. To omit a pool entirely, set it to {}.
-- * If poolsBedrock is omitted, it implies that Bedrock has the same pools as Java. This is a shortcoming; it ought to be made explicit somehow.
+
-- * If poolsBedrock is omitted, it implies that Bedrock has the same pools as Java. This is a shortcoming; it ought to be made explicit somehow.
  +
 
chests = {
+
chests = {
["shipwreck-map"] = { -- shipwreck_map.json
+
["shipwreck-map"] = { -- shipwreck_map.json
header = "지도",
+
header = "지도",
superheader = "[[난파선]]",
+
superheader = "[[난파선]]",
link = "[[난파선#지도 상자|난파선 지도]]",
+
link = "[[난파선#지도 상자|난파선 지도]]",
structure = "난파선",
+
structure = "난파선",
container = "지도 상자",
+
container = "지도 상자",
structID = "shipwreck",
+
structID = "shipwreck",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
 
["buried-treasure-map"] = {1,1,1},
 
["buried-treasure-map"] = {1,1,1},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {3,3},
+
rolls = {3,3},
items = {
+
items = {
["compass"] = {1,1,1},
+
["compass"] = {1,1,1},
["empty-map"] = {1,1,1},
+
["empty-map"] = {1,1,1},
["clock"] = {1,1,1},
+
["clock"] = {1,1,1},
["paper"] = {1,10,20},
+
["paper"] = {1,10,20},
["feather"] = {1,5,10},
+
["feather"] = {1,5,10},
["book"] = {1,5,5},
+
["book"] = {1,5,5},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {
+
poolsBedrock = {
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["buried-treasure-map"] = {1,1,1},
+
["buried-treasure-map"] = {1,1,1},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {3,3},
+
rolls = {3,3},
items = {
+
items = {
["compass"] = {1,1,1},
+
["compass"] = {1,1,1},
["map"] = {1,1,1},
+
["map"] = {1,1,1},
["clock"] = {1,1,1},
+
["clock"] = {1,1,1},
["paper"] = {1,10,20},
+
["paper"] = {1,10,20},
["feather"] = {1,5,10},
+
["feather"] = {1,5,10},
["book"] = {1,5,5},
+
["book"] = {1,5,5},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["shipwreck-supply"] = { -- shipwreck_supply.json
+
["shipwreck-supply"] = { -- shipwreck_supply.json
header = "보급품",
+
header = "보급품",
superheader = "[[난파선]]",
+
superheader = "[[난파선]]",
link = "[[난파선#보급품 상자|난파선 보급품]]",
+
link = "[[난파선#보급품 상자|난파선 보급품]]",
structure = "난파선",
+
structure = "난파선",
container = "보급품 상자",
+
container = "보급품 상자",
structID = "shipwreck",
+
structID = "shipwreck",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {3,10},
+
rolls = {3,10},
items = {
+
items = {
["paper"] = {1,12,8},
+
["paper"] = {1,12,8},
["potato"] = {2,6,7},
+
["potato"] = {2,6,7},
["poisonous-potato"] = {2,6,7},
+
["poisonous-potato"] = {2,6,7},
["carrot"] = {4,8,7},
+
["carrot"] = {4,8,7},
["wheat"] = {8,21,7},
+
["wheat"] = {8,21,7},
["coal"] = {2,8,6},
+
["coal"] = {2,8,6},
["rotten-flesh"] = {5,24,5},
+
["rotten-flesh"] = {5,24,5},
["bamboo"] = {1,3,2},
+
["bamboo"] = {1,3,2},
["suspicious-stew"] = {1,1,10},
+
["suspicious-stew"] = {1,1,10},
["pumpkin"] = {1,3,2},
+
["pumpkin"] = {1,3,2},
["gunpowder"] = {1,5,3},
+
["gunpowder"] = {1,5,3},
["tnt"] = {1,2,1},
+
["tnt"] = {1,2,1},
["random-enchanted-leather-cap"] = {1,1,3},
+
["random-enchanted-leather-cap"] = {1,1,3},
["random-enchanted-leather-tunic"] = {1,1,3},
+
["random-enchanted-leather-tunic"] = {1,1,3},
["random-enchanted-leather-pants"] = {1,1,3},
+
["random-enchanted-leather-pants"] = {1,1,3},
["random-enchanted-leather-boots"] = {1,1,3},
+
["random-enchanted-leather-boots"] = {1,1,3},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["shipwreck-treasure"] = { -- shipwreck_treasure.json
+
["shipwreck-treasure"] = { -- shipwreck_treasure.json
header = "보물",
+
header = "보물",
superheader = "[[난파선]]",
+
superheader = "[[난파선]]",
link = "[[난파선]] 보물",
+
link = "[[난파선]] 보물",
structure = "난파선",
+
structure = "난파선",
container = "보물 상자",
+
container = "보물 상자",
structID = "shipwreck",
+
structID = "shipwreck",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {3,6},
+
rolls = {3,6},
items = {
+
items = {
["iron-ingot"] = {1,5,90},
+
["iron-ingot"] = {1,5,90},
["gold-ingot"] = {1,5,10},
+
["gold-ingot"] = {1,5,10},
["emerald"] = {1,5,40},
+
["emerald"] = {1,5,40},
["diamond"] = {1,1,5},
+
["diamond"] = {1,1,5},
["bottle-o'-enchanting"] = {1,1,5},
+
["bottle-o'-enchanting"] = {1,1,5},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {2,5},
+
rolls = {2,5},
items = {
+
items = {
["iron-nugget"] = {1,10,50},
+
["iron-nugget"] = {1,10,50},
["gold-nugget"] = {1,10,10},
+
["gold-nugget"] = {1,10,10},
["lapis-lazuli"] = {1,10,20},
+
["lapis-lazuli"] = {1,10,20},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["buried-treasure"] = { -- buried_treasure.json
+
["buried-treasure"] = { -- buried_treasure.json
header = "[[땅에 묻힌 보물]]",
+
header = "[[땅에 묻힌 보물]]",
link = "[[땅에 묻힌 보물]]",
+
link = "[[땅에 묻힌 보물]]",
structure = "땅에 묻힌 보물",
+
structure = "땅에 묻힌 보물",
container = "",
+
container = "",
structID = "buried-treasure",
+
structID = "buried-treasure",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["heart-of-the-sea"] = {1,1,1},
+
["heart-of-the-sea"] = {1,1,1},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {5,8},
+
rolls = {5,8},
items = {
+
items = {
["iron-ingot"] = {1,4,20},
+
["iron-ingot"] = {1,4,20},
["gold-ingot"] = {1,4,10},
+
["gold-ingot"] = {1,4,10},
["tnt"] = {1,2,5},
+
["tnt"] = {1,2,5},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {1,3},
+
rolls = {1,3},
items = {
+
items = {
["emerald"] = {4,8,5},
+
["emerald"] = {4,8,5},
["diamond"] = {1,2,5},
+
["diamond"] = {1,2,5},
["prismarine-crystals"] = {1,5,5},
+
["prismarine-crystals"] = {1,5,5},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {0,1},
+
rolls = {0,1},
items = {
+
items = {
["leather-tunic"] = {1,1,1},
+
["leather-tunic"] = {1,1,1},
["iron-sword"] = {1,1,1},
+
["iron-sword"] = {1,1,1},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {2,2},
+
rolls = {2,2},
items = {
+
items = {
["cooked-cod"] = {2,4,1},
+
["cooked-cod"] = {2,4,1},
["cooked-salmon"] = {2,4,1},
+
["cooked-salmon"] = {2,4,1},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {
+
poolsBedrock = {
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["heart-of-the-sea"] = {1,1,1},
+
["heart-of-the-sea"] = {1,1,1},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {5,12},
+
rolls = {5,12},
items = {
+
items = {
["prismarine-crystals"] = {1,5,5},
+
["prismarine-crystals"] = {1,5,5},
["iron-ingot"] = {3,5,20},
+
["iron-ingot"] = {3,5,20},
["gold-ingot"] = {1,5,10},
+
["gold-ingot"] = {1,5,10},
["tnt"] = {1,2,10},
+
["tnt"] = {1,2,10},
["diamond"] = {1,1,15},
+
["diamond"] = {1,1,15},
["disc-wait"] = {1,1,5},
+
["disc-wait"] = {1,1,5},
["disc-mellohi"] = {1,1,5},
+
["disc-mellohi"] = {1,1,5},
["name-tag"] = {1,1,10},
+
["name-tag"] = {1,1,10},
["chainmail-chestplate"] = {1,1,20},
+
["chainmail-chestplate"] = {1,1,20},
["chainmail-helmet"] = {1,1,20},
+
["chainmail-helmet"] = {1,1,20},
["chainmail-leggings"] = {1,1,20},
+
["chainmail-leggings"] = {1,1,20},
["chainmail-boots"] = {1,1,20},
+
["chainmail-boots"] = {1,1,20},
["book-and-quill"] = {1,2,5},
+
["book-and-quill"] = {1,2,5},
["lead"] = {1,3,10},
+
["lead"] = {1,3,10},
["bottle-o'-enchanting"] = {1,1,3},
+
["bottle-o'-enchanting"] = {1,1,3},
["potion-of-water-breathing"] = {1,1,15},
+
["potion-of-water-breathing"] = {1,1,15},
["potion-of-regeneration"] = {1,1,10},
+
["potion-of-regeneration"] = {1,1,10},
["cake"] = {1,1,1},
+
["cake"] = {1,1,1},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["underwater-ruin-big"] = { -- underwater_ruin_big.json
+
["underwater-ruin-big"] = { -- underwater_ruin_big.json
header = "큰 상자",
+
header = "큰 상자",
superheader = "[[해저 폐허]]",
+
superheader = "[[해저 폐허]]",
link = "[[해저 폐허]]",
+
link = "[[해저 폐허]]",
structure = "해저 폐허",
+
structure = "해저 폐허",
container = "해저 폐허의 큰 상자",
+
container = "해저 폐허의 큰 상자",
structID = "underwater-ruins",
+
structID = "underwater-ruins",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {2,8},
+
rolls = {2,8},
items = {
+
items = {
["coal"] = {1,4,10},
+
["coal"] = {1,4,10},
["gold-nugget"] = {1,3,10},
+
["gold-nugget"] = {1,3,10},
["emerald"] = {1,1,1},
+
["emerald"] = {1,1,1},
["wheat"] = {2,3,10},
+
["wheat"] = {2,3,10},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["golden-apple"] = {1,1,1},
+
["golden-apple"] = {1,1,1},
["enchanted-book-rnd"] = {1,1,5},
+
["enchanted-book-rnd"] = {1,1,5},
["leather-tunic"] = {1,1,1},
+
["leather-tunic"] = {1,1,1},
["golden-helmet"] = {1,1,1},
+
["golden-helmet"] = {1,1,1},
["enchanted-fishing-rod"] = {1,1,5},
+
["enchanted-fishing-rod"] = {1,1,5},
 
["buried-treasure-map"] = {1,1,10},
 
["buried-treasure-map"] = {1,1,10},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["underwater-ruin-small"] = { -- underwater_ruin_small.json
+
["underwater-ruin-small"] = { -- underwater_ruin_small.json
header = "작은 상자",
+
header = "작은 상자",
superheader = "[[해저 폐허]]",
+
superheader = "[[해저 폐허]]",
link = "[[해저 폐허]]",
+
link = "[[해저 폐허]]",
structure = "해저 폐허",
+
structure = "해저 폐허",
container = "해저 폐허의 작은 상자",
+
container = "해저 폐허의 작은 상자",
structID = "underwater-ruins",
+
structID = "underwater-ruins",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {2,8},
+
rolls = {2,8},
items = {
+
items = {
["coal"] = {1,4,10},
+
["coal"] = {1,4,10},
["stone-axe"] = {1,1,2},
+
["stone-axe"] = {1,1,2},
["rotten-flesh"] = {1,1,5},
+
["rotten-flesh"] = {1,1,5},
["emerald"] = {1,1,1},
+
["emerald"] = {1,1,1},
["wheat"] = {2,3,10},
+
["wheat"] = {2,3,10},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["leather-tunic"] = {1,1,1},
+
["leather-tunic"] = {1,1,1},
["golden-helmet"] = {1,1,1},
+
["golden-helmet"] = {1,1,1},
["enchanted-fishing-rod"] = {1,1,5},
+
["enchanted-fishing-rod"] = {1,1,5},
 
["buried-treasure-map"] = {1,1,5},
 
["buried-treasure-map"] = {1,1,5},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
  +
 
["village-armorer"] = { -- village\village_armorer.json
+
["village-armorer"] = { -- village\village_armorer.json
header = "갑옷 제조인",
+
header = "갑옷 제조인",
superheader = "[[마을]]",
+
superheader = "[[마을]]",
link = "[[마을]] 갑옷 제조인",
+
link = "[[마을]] 갑옷 제조인",
structure = "마을",
+
structure = "마을",
container = "갑옷 제조인 상자",
+
container = "갑옷 제조인 상자",
structID = "village",
+
structID = "village",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {1,5},
+
rolls = {1,5},
items = {
+
items = {
["iron-ingot"] = {1,3,2},
+
["iron-ingot"] = {1,3,2},
["bread"] = {1,4,4},
+
["bread"] = {1,4,4},
["iron-helmet"] = {1,1,1},
+
["iron-helmet"] = {1,1,1},
["emerald"] = {1,1,1}
+
["emerald"] = {1,1,1}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["village-butcher"] = { -- village\village_butcher.json
+
["village-butcher"] = { -- village\village_butcher.json
header = "도살업자",
+
header = "도살업자",
superheader = "[[마을]]",
+
superheader = "[[마을]]",
link = "[[마을]] 도살업자",
+
link = "[[마을]] 도살업자",
structure = "마을",
+
structure = "마을",
container = "도살업자 상자",
+
container = "도살업자 상자",
structID = "village",
+
structID = "village",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {1,5},
+
rolls = {1,5},
items = {
+
items = {
["emerald"] = {1,1,1},
+
["emerald"] = {1,1,1},
["raw-porkchop"] = {1,3,6},
+
["raw-porkchop"] = {1,3,6},
["wheat"] = {1,3,6},
+
["wheat"] = {1,3,6},
["raw-beef"] = {1,3,6},
+
["raw-beef"] = {1,3,6},
["raw-mutton"] = {1,3,6},
+
["raw-mutton"] = {1,3,6},
["coal"] = {1,3,3}
+
["coal"] = {1,3,3}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["village-cartographer"] = { -- village\village_cartographer.json
+
["village-cartographer"] = { -- village\village_cartographer.json
header = "지도 제작자",
+
header = "지도 제작자",
superheader = "[[마을]]",
+
superheader = "[[마을]]",
link = "[[마을]] 지도 제작자",
+
link = "[[마을]] 지도 제작자",
structure = "마을",
+
structure = "마을",
container = "지도 제작자 상자",
+
container = "지도 제작자 상자",
structID = "village",
+
structID = "village",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {1,5},
+
rolls = {1,5},
items = {
+
items = {
["empty-map"] = {1,3,10},
+
["empty-map"] = {1,3,10},
["paper"] = {1,5,15},
+
["paper"] = {1,5,15},
["compass"] = {1,1,5},
+
["compass"] = {1,1,5},
["bread"] = {1,4,15},
+
["bread"] = {1,4,15},
["stick"] = {1,2,5}
+
["stick"] = {1,2,5}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {
+
poolsBedrock = {
  +
{
{
 
rolls = {1,5},
+
rolls = {1,5},
items = {
+
items = {
["map"] = {1,3,10},
+
["map"] = {1,3,10},
["paper"] = {1,5,15},
+
["paper"] = {1,5,15},
["compass"] = {1,1,5},
+
["compass"] = {1,1,5},
["bread"] = {1,4,15},
+
["bread"] = {1,4,15},
["oak-sapling"] = {1,2,5}
+
["oak-sapling"] = {1,2,5}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["village-fisherman"] = { -- village\village_fisher.json, Java-exclusive as of Java 1.14 / Bedrock 1.12
+
["village-fisherman"] = { -- village\village_fisher.json, Java-exclusive as of Java 1.14 / Bedrock 1.12
header = "어부",
+
header = "어부",
superheader = "[[마을]]",
+
superheader = "[[마을]]",
link = "[[마을]] 어부",
+
link = "[[마을]] 어부",
structure = "마을",
+
structure = "마을",
container = "어부 상자",
+
container = "어부 상자",
structID = "village",
+
structID = "village",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {1,5},
+
rolls = {1,5},
items = {
+
items = {
["emerald"] = {1,1,1},
+
["emerald"] = {1,1,1},
["raw-cod"] = {1,3,2},
+
["raw-cod"] = {1,3,2},
["raw-salmon"] = {1,3,1},
+
["raw-salmon"] = {1,3,1},
["water-bucket"] = {1,3,1},
+
["water-bucket"] = {1,3,1},
["barrel"] = {1,3,1},
+
["barrel"] = {1,3,1},
["wheat-seeds"] = {1,3,3},
+
["wheat-seeds"] = {1,3,3},
["coal"] = {1,3,2}
+
["coal"] = {1,3,2}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["village-fletcher"] = { -- village\village_fletcher.json
+
["village-fletcher"] = { -- village\village_fletcher.json
header = "화살 제조인",
+
header = "화살 제조인",
superheader = "[[마을]]",
+
superheader = "[[마을]]",
link = "[[마을]] 화살 제조인",
+
link = "[[마을]] 화살 제조인",
structure = "마을",
+
structure = "마을",
container = "화살 제조인 상자",
+
container = "화살 제조인 상자",
structID = "village",
+
structID = "village",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {1,5},
+
rolls = {1,5},
items = {
+
items = {
["emerald"] = {1,1,1},
+
["emerald"] = {1,1,1},
["arrow"] = {1,3,2},
+
["arrow"] = {1,3,2},
["feather"] = {1,3,6},
+
["feather"] = {1,3,6},
["egg"] = {1,3,2},
+
["egg"] = {1,3,2},
["flint"] = {1,3,6},
+
["flint"] = {1,3,6},
["stick"] = {1,3,6}
+
["stick"] = {1,3,6}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["village-mason"] = { -- village\village_mason.json
+
["village-mason"] = { -- village\village_mason.json
header = "석공",
+
header = "석공",
superheader = "[[마을]]",
+
superheader = "[[마을]]",
link = "[[마을]] 석공",
+
link = "[[마을]] 석공",
structure = "마을",
+
structure = "마을",
container = "석공 상자",
+
container = "석공 상자",
structID = "village",
+
structID = "village",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {1,5},
+
rolls = {1,5},
items = {
+
items = {
["clay"] = {1,3,1},
+
["clay"] = {1,3,1},
["flower-pot"] = {1,1,1},
+
["flower-pot"] = {1,1,1},
["stone"] = {1,1,2},
+
["stone"] = {1,1,2},
["stone-bricks"] = {1,1,2},
+
["stone-bricks"] = {1,1,2},
["bread"] = {1,4,4},
+
["bread"] = {1,4,4},
["yellow-dye"] = {1,1,1},
+
["yellow-dye"] = {1,1,1},
["smooth-stone"] = {1,1,1},
+
["smooth-stone"] = {1,1,1},
["emerald"] = {1,1,1}
+
["emerald"] = {1,1,1}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["village-shepherd"] = { -- village\village_shepherd.json
+
["village-shepherd"] = { -- village\village_shepherd.json
header = "양치기",
+
header = "양치기",
superheader = "[[마을]]",
+
superheader = "[[마을]]",
link = "[[마을]] 양치기",
+
link = "[[마을]] 양치기",
structure = "마을",
+
structure = "마을",
container = "양치기 상자",
+
container = "양치기 상자",
structID = "village",
+
structID = "village",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {1,5},
+
rolls = {1,5},
items = {
+
items = {
["white-wool"] = {1,8,6},
+
["white-wool"] = {1,8,6},
["black-wool"] = {1,3,3},
+
["black-wool"] = {1,3,3},
["gray-wool"] = {1,3,2},
+
["gray-wool"] = {1,3,2},
["brown-wool"] = {1,3,2},
+
["brown-wool"] = {1,3,2},
["light-gray-wool"] = {1,3,2},
+
["light-gray-wool"] = {1,3,2},
["emerald"] = {1,1,1},
+
["emerald"] = {1,1,1},
["shears"] = {1,1,1},
+
["shears"] = {1,1,1},
["wheat"] = {1,6,6}
+
["wheat"] = {1,6,6}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["village-tannery"] = { -- village\village_tannery.json
+
["village-tannery"] = { -- village\village_tannery.json
header = "가죽 세공인",
+
header = "가죽 세공인",
superheader = "[[마을]]",
+
superheader = "[[마을]]",
link = "[[마을]] 가죽 세공인",
+
link = "[[마을]] 가죽 세공인",
structure = "마을",
+
structure = "마을",
container = "가죽 세공인 상자",
+
container = "가죽 세공인 상자",
structID = "village",
+
structID = "village",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {1,5},
+
rolls = {1,5},
items = {
+
items = {
["leather"] = {1,3,1},
+
["leather"] = {1,3,1},
["leather-tunic"] = {1,1,2},
+
["leather-tunic"] = {1,1,2},
["leather-boots"] = {1,1,2},
+
["leather-boots"] = {1,1,2},
["leather-cap"] = {1,1,2},
+
["leather-cap"] = {1,1,2},
["bread"] = {1,4,5},
+
["bread"] = {1,4,5},
["leather-pants"] = {1,1,2},
+
["leather-pants"] = {1,1,2},
["saddle"] = {1,1,1},
+
["saddle"] = {1,1,1},
["emerald"] = {1,4,1}
+
["emerald"] = {1,4,1}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["village-temple"] = { -- village\village_temple.json
+
["village-temple"] = { -- village\village_temple.json
header = "사원",
+
header = "사원",
superheader = "[[마을]]",
+
superheader = "[[마을]]",
link = "[[마을]] 사원",
+
link = "[[마을]] 사원",
structure = "마을",
+
structure = "마을",
container = "사원 상자",
+
container = "사원 상자",
structID = "village",
+
structID = "village",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {3,8},
+
rolls = {3,8},
items = {
+
items = {
["redstone"] = {1,4,2},
+
["redstone"] = {1,4,2},
["bread"] = {1,4,7},
+
["bread"] = {1,4,7},
["rotten-flesh"] = {1,4,7},
+
["rotten-flesh"] = {1,4,7},
["lapis-lazuli"] = {1,4,1},
+
["lapis-lazuli"] = {1,4,1},
["gold-ingot"] = {1,4,1},
+
["gold-ingot"] = {1,4,1},
["emerald"] = {1,4,1}
+
["emerald"] = {1,4,1}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["village-toolsmith"] = { -- village\village_toolsmith.json
+
["village-toolsmith"] = { -- village\village_toolsmith.json
header = "도구 대장장이",
+
header = "도구 대장장이",
superheader = "[[마을]]",
+
superheader = "[[마을]]",
link = "[[마을]] 도구 대장장이",
+
link = "[[마을]] 도구 대장장이",
structure = "마을",
+
structure = "마을",
container = "도구 대장장이 상자",
+
container = "도구 대장장이 상자",
structID = "village",
+
structID = "village",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {3,8},
+
rolls = {3,8},
items = {
+
items = {
["diamond"] = {1,3,1},
+
["diamond"] = {1,3,1},
["iron-ingot"] = {1,5,5},
+
["iron-ingot"] = {1,5,5},
["gold-ingot"] = {1,3,1},
+
["gold-ingot"] = {1,3,1},
["bread"] = {1,3,15},
+
["bread"] = {1,3,15},
["iron-pickaxe"] = {1,1,5},
+
["iron-pickaxe"] = {1,1,5},
["coal"] = {1,3,1},
+
["coal"] = {1,3,1},
["stick"] = {1,3,20},
+
["stick"] = {1,3,20},
["iron-shovel"] = {1,1,5}
+
["iron-shovel"] = {1,1,5}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["village-weaponsmith"] = { -- village\village_weaponsmith.json
+
["village-weaponsmith"] = { -- village\village_weaponsmith.json
header = "무기 대장장이",
+
header = "무기 대장장이",
superheader = "[[마을]]",
+
superheader = "[[마을]]",
link = "[[마을]] 무기 대장장이",
+
link = "[[마을]] 무기 대장장이",
structure = "마을",
+
structure = "마을",
container = "무기 대장장이 상자",
+
container = "무기 대장장이 상자",
structID = "village",
+
structID = "village",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {3,8},
+
rolls = {3,8},
items = {
+
items = {
["diamond"] = {1,3,3},
+
["diamond"] = {1,3,3},
["iron-ingot"] = {1,5,10},
+
["iron-ingot"] = {1,5,10},
["gold-ingot"] = {1,3,5},
+
["gold-ingot"] = {1,3,5},
["bread"] = {1,3,15},
+
["bread"] = {1,3,15},
["apple"] = {1,3,15},
+
["apple"] = {1,3,15},
["iron-pickaxe"] = {1,1,5},
+
["iron-pickaxe"] = {1,1,5},
["iron-sword"] = {1,1,5},
+
["iron-sword"] = {1,1,5},
["iron-chestplate"] = {1,1,5},
+
["iron-chestplate"] = {1,1,5},
["iron-helmet"] = {1,1,5},
+
["iron-helmet"] = {1,1,5},
["iron-leggings"] = {1,1,5},
+
["iron-leggings"] = {1,1,5},
["iron-boots"] = {1,1,5},
+
["iron-boots"] = {1,1,5},
["obsidian"] = {3,7,5},
+
["obsidian"] = {3,7,5},
["oak-sapling"] = {3,7,5},
+
["oak-sapling"] = {3,7,5},
["saddle"] = {1,1,3},
+
["saddle"] = {1,1,3},
["iron-horse-armor"] = {1,1,1},
+
["iron-horse-armor"] = {1,1,1},
["golden-horse-armor"] = {1,1,1},
+
["golden-horse-armor"] = {1,1,1},
["diamond-horse-armor"] = {1,1,1}
+
["diamond-horse-armor"] = {1,1,1}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
  +
 
["village-desert-house"] = { -- village\village_desert_house.json
+
["village-desert-house"] = { -- village\village_desert_house.json
header = "사막 집",
+
header = "사막 집",
superheader = "[[마을]]",
+
superheader = "[[마을]]",
link = "사막 [[마을]] 집",
+
link = "사막 [[마을]] 집",
structure = "마을",
+
structure = "마을",
container = "사막 마을 상자",
+
container = "사막 마을 상자",
structID = "village",
+
structID = "village",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {3,8},
+
rolls = {3,8},
items = {
+
items = {
["clay"] = {1,1,1},
+
["clay"] = {1,1,1},
["green-dye"] = {1,1,1},
+
["green-dye"] = {1,1,1},
["cactus"] = {1,4,10},
+
["cactus"] = {1,4,10},
["wheat"] = {1,7,10},
+
["wheat"] = {1,7,10},
["bread"] = {1,4,10},
+
["bread"] = {1,4,10},
["book"] = {1,1,1},
+
["book"] = {1,1,1},
["dead-bush"] = {1,3,2},
+
["dead-bush"] = {1,3,2},
["emerald"] = {1,3,1}
+
["emerald"] = {1,3,1}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["village-plains-house"] = { -- village\village_plains_house.json
+
["village-plains-house"] = { -- village\village_plains_house.json
header = "평원 집",
+
header = "평원 집",
superheader = "[[마을]]",
+
superheader = "[[마을]]",
link = "평원 [[마을]] 집",
+
link = "평원 [[마을]] 집",
structure = "마을",
+
structure = "마을",
container = "평원 집 상자",
+
container = "평원 집 상자",
structID = "village",
+
structID = "village",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {3,8},
+
rolls = {3,8},
items = {
+
items = {
["gold-nugget"] = {1,3,1},
+
["gold-nugget"] = {1,3,1},
["dandelion"] = {1,1,2},
+
["dandelion"] = {1,1,2},
["poppy"] = {1,1,1},
+
["poppy"] = {1,1,1},
["potato"] = {1,7,10},
+
["potato"] = {1,7,10},
["bread"] = {1,4,10},
+
["bread"] = {1,4,10},
["apple"] = {1,5,10},
+
["apple"] = {1,5,10},
["book"] = {1,1,1},
+
["book"] = {1,1,1},
["feather"] = {1,1,1},
+
["feather"] = {1,1,1},
["emerald"] = {1,4,2},
+
["emerald"] = {1,4,2},
["oak-sapling"] = {1,2,5}
+
["oak-sapling"] = {1,2,5}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["village-savanna-house"] = { -- village\village_savanna_house.json
+
["village-savanna-house"] = { -- village\village_savanna_house.json
header = "사바나 집",
+
header = "사바나 집",
superheader = "[[마을]]",
+
superheader = "[[마을]]",
link = "사바나 [[마을]] 집",
+
link = "사바나 [[마을]] 집",
structure = "마을",
+
structure = "마을",
container = "사바나 집 상자",
+
container = "사바나 집 상자",
structID = "village",
+
structID = "village",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {3,8},
+
rolls = {3,8},
items = {
+
items = {
["gold-nugget"] = {1,3,1},
+
["gold-nugget"] = {1,3,1},
["grass"] = {1,1,5},
+
["grass"] = {1,1,5},
["tall-grass"] = {1,1,5},
+
["tall-grass"] = {1,1,5},
["bread"] = {1,4,10},
+
["bread"] = {1,4,10},
["wheat-seeds"] = {1,5,10},
+
["wheat-seeds"] = {1,5,10},
["emerald"] = {1,4,2},
+
["emerald"] = {1,4,2},
["acacia-sapling"] = {1,2,10},
+
["acacia-sapling"] = {1,2,10},
["saddle"] = {1,1,1},
+
["saddle"] = {1,1,1},
["torch"] = {1,2,1},
+
["torch"] = {1,2,1},
["bucket"] = {1,1,1}
+
["bucket"] = {1,1,1}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["village-snowy-house"] = { -- village\village_snowy_house.json
+
["village-snowy-house"] = { -- village\village_snowy_house.json
header = "눈 덮인 집",
+
header = "눈 덮인 집",
superheader = "[[마을]]",
+
superheader = "[[마을]]",
link = "눈 덮인 [[마을]] 집",
+
link = "눈 덮인 [[마을]] 집",
structure = "마을",
+
structure = "마을",
container = "눈 덮인 집 상자",
+
container = "눈 덮인 집 상자",
structID = "village",
+
structID = "village",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {3,8},
+
rolls = {3,8},
items = {
+
items = {
["blue-ice"] = {1,1,1},
+
["blue-ice"] = {1,1,1},
["snow-block"] = {1,1,4},
+
["snow-block"] = {1,1,4},
["potato"] = {1,7,10},
+
["potato"] = {1,7,10},
["bread"] = {1,4,10},
+
["bread"] = {1,4,10},
["beetroot-seeds"] = {1,5,10},
+
["beetroot-seeds"] = {1,5,10},
["beetroot-soup"] = {1,1,1},
+
["beetroot-soup"] = {1,1,1},
["furnace"] = {1,1,1},
+
["furnace"] = {1,1,1},
["emerald"] = {1,4,1},
+
["emerald"] = {1,4,1},
["snowball"] = {1,7,10},
+
["snowball"] = {1,7,10},
["coal"] = {1,4,5}
+
["coal"] = {1,4,5}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["village-taiga-house"] = { -- village\village_taiga_house.json
+
["village-taiga-house"] = { -- village\village_taiga_house.json
header = "타이가 집",
+
header = "타이가 집",
superheader = "[[마을]]",
+
superheader = "[[마을]]",
link = "타이가 [[마을]] 집",
+
link = "타이가 [[마을]] 집",
structure = "마을",
+
structure = "마을",
container = "타이가 집 상자",
+
container = "타이가 집 상자",
structID = "village",
+
structID = "village",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {3,8},
+
rolls = {3,8},
items = {
+
items = {
["iron-nugget"] = {1,5,1},
+
["iron-nugget"] = {1,5,1},
["fern"] = {1,1,2},
+
["fern"] = {1,1,2},
["large-fern"] = {1,1,2},
+
["large-fern"] = {1,1,2},
["potato"] = {1,7,10},
+
["potato"] = {1,7,10},
["sweet-berries"] = {1,7,5},
+
["sweet-berries"] = {1,7,5},
["bread"] = {1,4,10},
+
["bread"] = {1,4,10},
["pumpkin-seeds"] = {1,5,5},
+
["pumpkin-seeds"] = {1,5,5},
["pumpkin-pie"] = {1,1,1},
+
["pumpkin-pie"] = {1,1,1},
["emerald"] = {1,4,2},
+
["emerald"] = {1,4,2},
["spruce-sapling"] = {1,5,5},
+
["spruce-sapling"] = {1,5,5},
["spruce-sign"] = {1,1,1},
+
["spruce-sign"] = {1,1,1},
["spruce-log"] = {1,5,10}
+
["spruce-log"] = {1,5,10}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {
+
poolsBedrock = {
  +
{
{
 
rolls = {3,8},
+
rolls = {3,8},
items = {
+
items = {
["iron-nugget"] = {1,5,1},
+
["iron-nugget"] = {1,5,1},
["fern"] = {1,1,2},
+
["fern"] = {1,1,2},
["large-fern"] = {1,1,2},
+
["large-fern"] = {1,1,2},
["potato"] = {1,7,10},
+
["potato"] = {1,7,10},
["bread"] = {1,4,10},
+
["bread"] = {1,4,10},
["pumpkin-seeds"] = {1,5,5},
+
["pumpkin-seeds"] = {1,5,5},
["pumpkin-pie"] = {1,1,1},
+
["pumpkin-pie"] = {1,1,1},
["emerald"] = {1,4,2},
+
["emerald"] = {1,4,2},
["spruce-sapling"] = {1,5,5},
+
["spruce-sapling"] = {1,5,5},
["oak-sign"] = {1,1,1},
+
["oak-sign"] = {1,1,1},
["spruce-log"] = {1,5,10}
+
["spruce-log"] = {1,5,10}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
  +
 
["stronghold-altar"] = { -- stronghold_corridor.json
+
["stronghold-altar"] = { -- stronghold_corridor.json
header = "제단",
+
header = "제단",
superheader = "[[요새]]",
+
superheader = "[[요새]]",
link = "[[요새]] 제단",
+
link = "[[요새]] 제단",
structure = "요새",
+
structure = "요새",
container = "제단 상자",
+
container = "제단 상자",
structID = "stronghold",
+
structID = "stronghold",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {2,3},
+
rolls = {2,3},
items = {
+
items = {
["ender-pearl"] = {1,1,10},
+
["ender-pearl"] = {1,1,10},
["diamond"] = {1,3,3},
+
["diamond"] = {1,3,3},
["iron-ingot"] = {1,5,10},
+
["iron-ingot"] = {1,5,10},
["gold-ingot"] = {1,3,5},
+
["gold-ingot"] = {1,3,5},
["redstone"] = {4,9,5},
+
["redstone"] = {4,9,5},
["bread"] = {1,3,15},
+
["bread"] = {1,3,15},
["apple"] = {1,3,15},
+
["apple"] = {1,3,15},
["iron-pickaxe"] = {1,1,5},
+
["iron-pickaxe"] = {1,1,5},
["iron-sword"] = {1,1,5},
+
["iron-sword"] = {1,1,5},
["iron-chestplate"] = {1,1,5},
+
["iron-chestplate"] = {1,1,5},
["iron-helmet"] = {1,1,5},
+
["iron-helmet"] = {1,1,5},
["iron-leggings"] = {1,1,5},
+
["iron-leggings"] = {1,1,5},
["iron-boots"] = {1,1,5},
+
["iron-boots"] = {1,1,5},
["golden-apple"] = {1,1,1},
+
["golden-apple"] = {1,1,1},
["saddle"] = {1,1,1},
+
["saddle"] = {1,1,1},
["iron-horse-armor"] = {1,1,1},
+
["iron-horse-armor"] = {1,1,1},
["golden-horse-armor"] = {1,1,1},
+
["golden-horse-armor"] = {1,1,1},
["diamond-horse-armor"] = {1,1,1},
+
["diamond-horse-armor"] = {1,1,1},
["enchanted-book"] = {1,1,1},
+
["enchanted-book"] = {1,1,1},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {
+
poolsBedrock = {
  +
{
{
 
rolls = {2,3},
+
rolls = {2,3},
items = {
+
items = {
["ender-pearl"] = {1,1,50},
+
["ender-pearl"] = {1,1,50},
["emerald"] = {1,3,15},
+
["emerald"] = {1,3,15},
["diamond"] = {1,3,15},
+
["diamond"] = {1,3,15},
["iron-ingot"] = {1,5,50},
+
["iron-ingot"] = {1,5,50},
["gold-ingot"] = {1,3,25},
+
["gold-ingot"] = {1,3,25},
["redstone"] = {4,9,25},
+
["redstone"] = {4,9,25},
["bread"] = {1,3,75},
+
["bread"] = {1,3,75},
["apple"] = {1,3,75},
+
["apple"] = {1,3,75},
["iron-pickaxe"] = {1,1,25},
+
["iron-pickaxe"] = {1,1,25},
["iron-sword"] = {1,1,25},
+
["iron-sword"] = {1,1,25},
["iron-chestplate"] = {1,1,25},
+
["iron-chestplate"] = {1,1,25},
["iron-helmet"] = {1,1,25},
+
["iron-helmet"] = {1,1,25},
["iron-leggings"] = {1,1,25},
+
["iron-leggings"] = {1,1,25},
["iron-boots"] = {1,1,25},
+
["iron-boots"] = {1,1,25},
["golden-apple"] = {1,1,5},
+
["golden-apple"] = {1,1,5},
["saddle"] = {1,1,5},
+
["saddle"] = {1,1,5},
["iron-horse-armor"] = {1,1,5},
+
["iron-horse-armor"] = {1,1,5},
["golden-horse-armor"] = {1,1,5},
+
["golden-horse-armor"] = {1,1,5},
["diamond-horse-armor"] = {1,1,5},
+
["diamond-horse-armor"] = {1,1,5},
["enchanted-book"] = {1,1,6},
+
["enchanted-book"] = {1,1,6},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["stronghold-library"] = { -- stronghold_library.json
+
["stronghold-library"] = { -- stronghold_library.json
header = "도서관",
+
header = "도서관",
superheader = "[[요새]]",
+
superheader = "[[요새]]",
link = "[[요새]] 도서관",
+
link = "[[요새]] 도서관",
structure = "요새",
+
structure = "요새",
container = "도서관 상자",
+
container = "도서관 상자",
structID = "stronghold",
+
structID = "stronghold",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {2,10},
+
rolls = {2,10},
items = {
+
items = {
["book"] = {1,3,20},
+
["book"] = {1,3,20},
["paper"] = {2,7,20},
+
["paper"] = {2,7,20},
["empty-map"] = {1,1,1},
+
["empty-map"] = {1,1,1},
["compass"] = {1,1,1},
+
["compass"] = {1,1,1},
["enchanted-book"] = {1,1,10},
+
["enchanted-book"] = {1,1,10},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {
+
poolsBedrock = {
  +
{
{
 
rolls = {2,10},
+
rolls = {2,10},
items = {
+
items = {
["book"] = {1,3,100},
+
["book"] = {1,3,100},
["paper"] = {2,7,100},
+
["paper"] = {2,7,100},
["map"] = {1,1,5},
+
["map"] = {1,1,5},
["compass"] = {1,1,5},
+
["compass"] = {1,1,5},
["enchanted-book"] = {1,1,60},
+
["enchanted-book"] = {1,1,60},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["stronghold-storeroom"] = { -- stronghold_crossing.json
+
["stronghold-storeroom"] = { -- stronghold_crossing.json
header = "저장실",
+
header = "저장실",
superheader = "[[요새]]",
+
superheader = "[[요새]]",
link = "[[요새]] 저장실",
+
link = "[[요새]] 저장실",
structure = "요새",
+
structure = "요새",
container = "저장실 상자",
+
container = "저장실 상자",
structID = "stronghold",
+
structID = "stronghold",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {1,4},
+
rolls = {1,4},
items = {
+
items = {
["iron-ingot"] = {1,5,10},
+
["iron-ingot"] = {1,5,10},
["gold-ingot"] = {1,3,5},
+
["gold-ingot"] = {1,3,5},
["redstone"] = {4,9,5},
+
["redstone"] = {4,9,5},
["coal"] = {3,8,10},
+
["coal"] = {3,8,10},
["bread"] = {1,3,15},
+
["bread"] = {1,3,15},
["apple"] = {1,3,15},
+
["apple"] = {1,3,15},
["iron-pickaxe"] = {1,1,1},
+
["iron-pickaxe"] = {1,1,1},
["enchanted-book"] = {1,1,1},
+
["enchanted-book"] = {1,1,1},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {
+
poolsBedrock = {
  +
{
{
 
rolls = {1,4},
+
rolls = {1,4},
items = {
+
items = {
["iron-ingot"] = {1,5,50},
+
["iron-ingot"] = {1,5,50},
["gold-ingot"] = {1,3,25},
+
["gold-ingot"] = {1,3,25},
["redstone"] = {4,9,25},
+
["redstone"] = {4,9,25},
["coal"] = {3,8,50},
+
["coal"] = {3,8,50},
["bread"] = {1,3,75},
+
["bread"] = {1,3,75},
["apple"] = {1,3,75},
+
["apple"] = {1,3,75},
["iron-pickaxe"] = {1,1,5},
+
["iron-pickaxe"] = {1,1,5},
["enchanted-book"] = {1,1,6},
+
["enchanted-book"] = {1,1,6},
["ink-sac"] = {1,3,75},
+
["ink-sac"] = {1,3,75},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["bonus"] = { -- spawn_bonus_chest.json
+
["bonus"] = { -- spawn_bonus_chest.json
header = "[[상자#보너스 상자|보너스]]",
+
header = "[[상자#보너스 상자|보너스]]",
link = "[[상자#보너스 상자|보너스]]",
+
link = "[[상자#보너스 상자|보너스]]",
structure = "보너스 상자",
+
structure = "보너스 상자",
container = "",
+
container = "",
structID = "day",
+
structID = "day",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["stone-axe"] = {1,1,1},
+
["stone-axe"] = {1,1,1},
["wooden-axe"] = {1,1,3},
+
["wooden-axe"] = {1,1,3},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["stone-pickaxe"] = {1,1,1},
+
["stone-pickaxe"] = {1,1,1},
["wooden-pickaxe"] = {1,1,3}
+
["wooden-pickaxe"] = {1,1,3}
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {3,3},
+
rolls = {3,3},
items = {
+
items = {
["apple"] = {1,2,5},
+
["apple"] = {1,2,5},
["bread"] = {1,2,3},
+
["bread"] = {1,2,3},
["raw-salmon"] = {1,2,3},
+
["raw-salmon"] = {1,2,3},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {4,4},
+
rolls = {4,4},
items = {
+
items = {
["stick"] = {1,12,10},
+
["stick"] = {1,12,10},
["oak-planks"] = {1,12,10},
+
["oak-planks"] = {1,12,10},
["oak-log"] = {1,3,3},
+
["oak-log"] = {1,3,3},
["spruce-log"] = {1,3,3},
+
["spruce-log"] = {1,3,3},
["birch-log"] = {1,3,3},
+
["birch-log"] = {1,3,3},
["jungle-log"] = {1,3,3},
+
["jungle-log"] = {1,3,3},
["acacia-log"] = {1,3,3},
+
["acacia-log"] = {1,3,3},
["dark-oak-log"] = {1,3,3},
+
["dark-oak-log"] = {1,3,3},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {
+
poolsBedrock = {
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["stone-axe"] = {1,1,1},
+
["stone-axe"] = {1,1,1},
["wooden-axe"] = {1,1,3},
+
["wooden-axe"] = {1,1,3},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["stone-pickaxe"] = {1,1,1},
+
["stone-pickaxe"] = {1,1,1},
["wooden-pickaxe"] = {1,1,3}
+
["wooden-pickaxe"] = {1,1,3}
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["apple"] = {1,2,1}
+
["apple"] = {1,2,1}
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["bread"] = {1,2,1}
+
["bread"] = {1,2,1}
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["raw-salmon"] = {1,2,1}
+
["raw-salmon"] = {1,2,1}
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["stick"] = {1,12,1}
+
["stick"] = {1,12,1}
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["oak-planks"] = {1,12,1}
+
["oak-planks"] = {1,12,1}
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["dark-oak-log"] = {1,3,1},
+
["dark-oak-log"] = {1,3,1},
["acacia-log"] = {1,3,1},
+
["acacia-log"] = {1,3,1},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["oak-log"] = {1,3,1},
+
["oak-log"] = {1,3,1},
["spruce-log"] = {1,3,1},
+
["spruce-log"] = {1,3,1},
["birch-log"] = {1,3,1},
+
["birch-log"] = {1,3,1},
["jungle-log"] = {1,3,1},
+
["jungle-log"] = {1,3,1},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["potato"] = {1,2,3},
+
["potato"] = {1,2,3},
["carrot"] = {1,2,3},
+
["carrot"] = {1,2,3},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["oak-sapling"] = {4,4,2},
+
["oak-sapling"] = {4,4,2},
["spruce-sapling"] = {4,4,2},
+
["spruce-sapling"] = {4,4,2},
["birch-sapling"] = {4,4,2},
+
["birch-sapling"] = {4,4,2},
["jungle-sapling"] = {4,4,2},
+
["jungle-sapling"] = {4,4,2},
["dark-oak-sapling"] = {4,4,2},
+
["dark-oak-sapling"] = {4,4,2},
["acacia-sapling"] = {4,4,2},
+
["acacia-sapling"] = {4,4,2},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["melon-seeds"] = {1,2,3},
+
["melon-seeds"] = {1,2,3},
["pumpkin-seeds"] = {1,2,3},
+
["pumpkin-seeds"] = {1,2,3},
["beetroot-seeds"] = {1,2,3},
+
["beetroot-seeds"] = {1,2,3},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["cactus"] = {1,2,3},
+
["cactus"] = {1,2,3},
["cocoa-beans"] = {1,2,3},
+
["cocoa-beans"] = {1,2,3},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["brown-mushroom"] = {1,2,2},
+
["brown-mushroom"] = {1,2,2},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["dungeon"] = { -- simple_dungeon.json
+
["dungeon"] = { -- simple_dungeon.json
header = "[[던전]]",
+
header = "[[던전]]",
link = "[[던전]]",
+
link = "[[던전]]",
structure = "던전",
+
structure = "던전",
container = "",
+
container = "",
structID = "Dungeon",
+
structID = "Dungeon",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {1,3},
+
rolls = {1,3},
items = {
+
items = {
["saddle"] = {1,1,20},
+
["saddle"] = {1,1,20},
["golden-apple"] = {1,1,15},
+
["golden-apple"] = {1,1,15},
["enchanted-golden-apple"] = {1,1,2},
+
["enchanted-golden-apple"] = {1,1,2},
["disc-13"] = {1,1,15},
+
["disc-13"] = {1,1,15},
["disc-cat"] = {1,1,15},
+
["disc-cat"] = {1,1,15},
["name-tag"] = {1,1,20},
+
["name-tag"] = {1,1,20},
["golden-horse-armor"] = {1,1,10},
+
["golden-horse-armor"] = {1,1,10},
["iron-horse-armor"] = {1,1,15},
+
["iron-horse-armor"] = {1,1,15},
["diamond-horse-armor"] = {1,1,5},
+
["diamond-horse-armor"] = {1,1,5},
["enchanted-book-rnd"] = {1,1,10},
+
["enchanted-book-rnd"] = {1,1,10},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {1,4},
+
rolls = {1,4},
items = {
+
items = {
["iron-ingot"] = {1,4,10},
+
["iron-ingot"] = {1,4,10},
["gold-ingot"] = {1,4,5},
+
["gold-ingot"] = {1,4,5},
["bread"] = {1,1,20},
+
["bread"] = {1,1,20},
["wheat"] = {1,4,20},
+
["wheat"] = {1,4,20},
["bucket"] = {1,1,10},
+
["bucket"] = {1,1,10},
["redstone"] = {1,4,15},
+
["redstone"] = {1,4,15},
["coal"] = {1,4,15},
+
["coal"] = {1,4,15},
["melon-seeds"] = {2,4,10},
+
["melon-seeds"] = {2,4,10},
["pumpkin-seeds"] = {2,4,10},
+
["pumpkin-seeds"] = {2,4,10},
["beetroot-seeds"] = {2,4,10},
+
["beetroot-seeds"] = {2,4,10},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {3,3},
+
rolls = {3,3},
items = {
+
items = {
["bone"] = {1,8,10},
+
["bone"] = {1,8,10},
["gunpowder"] = {1,8,10},
+
["gunpowder"] = {1,8,10},
["rotten-flesh"] = {1,8,10},
+
["rotten-flesh"] = {1,8,10},
["string"] = {1,8,10},
+
["string"] = {1,8,10},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["mineshaft"] = { -- abandoned_mineshaft.json
+
["mineshaft"] = { -- abandoned_mineshaft.json
chest_type = "minecart with chest",
+
chest_type = "minecart with chest",
header = "[[폐광]]",
+
header = "[[폐광]]",
link = "[[폐광]]",
+
link = "[[폐광]]",
structure = "폐광",
+
structure = "폐광",
container = "",
+
container = "",
structID = "abandoned-mineshaft",
+
structID = "abandoned-mineshaft",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["golden-apple"] = {1,1,20},
+
["golden-apple"] = {1,1,20},
["enchanted-golden-apple"] = {1,1,1},
+
["enchanted-golden-apple"] = {1,1,1},
["name-tag"] = {1,1,30},
+
["name-tag"] = {1,1,30},
["enchanted-book-rnd"] = {1,1,10},
+
["enchanted-book-rnd"] = {1,1,10},
["iron-pickaxe"] = {1,1,5},
+
["iron-pickaxe"] = {1,1,5},
["empty"] = {1,1,5},
+
["empty"] = {1,1,5},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {2,4},
+
rolls = {2,4},
items = {
+
items = {
["iron-ingot"] = {1,5,10},
+
["iron-ingot"] = {1,5,10},
["gold-ingot"] = {1,3,5},
+
["gold-ingot"] = {1,3,5},
["redstone"] = {4,9,5},
+
["redstone"] = {4,9,5},
["lapis-lazuli"] = {4,9,5},
+
["lapis-lazuli"] = {4,9,5},
["diamond"] = {1,2,3},
+
["diamond"] = {1,2,3},
["coal"] = {3,8,10},
+
["coal"] = {3,8,10},
["bread"] = {1,3,15},
+
["bread"] = {1,3,15},
["melon-seeds"] = {2,4,10},
+
["melon-seeds"] = {2,4,10},
["pumpkin-seeds"] = {2,4,10},
+
["pumpkin-seeds"] = {2,4,10},
["beetroot-seeds"] = {2,4,10},
+
["beetroot-seeds"] = {2,4,10},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {3,3},
+
rolls = {3,3},
items = {
+
items = {
["rail"] = {4,8,20},
+
["rail"] = {4,8,20},
["powered-rail"] = {1,4,5},
+
["powered-rail"] = {1,4,5},
["detector-rail"] = {1,4,5},
+
["detector-rail"] = {1,4,5},
["activator-rail"] = {1,4,5},
+
["activator-rail"] = {1,4,5},
["torch"] = {1,16,15},
+
["torch"] = {1,16,15},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["nether-fortress"] = { -- nether_bridge.json
+
["nether-fortress"] = { -- nether_bridge.json
header = "[[네더 요새|요새]]",
+
header = "[[네더 요새|요새]]",
link = "[[네더 요새|요새]]",
+
link = "[[네더 요새|요새]]",
structure = "네더 요새",
+
structure = "네더 요새",
container = "",
+
container = "",
structID = "nether-fortress",
+
structID = "nether-fortress",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {2,4},
+
rolls = {2,4},
items = {
+
items = {
["diamond"] = {1,3,5},
+
["diamond"] = {1,3,5},
["iron-ingot"] = {1,5,5},
+
["iron-ingot"] = {1,5,5},
["gold-ingot"] = {1,3,15},
+
["gold-ingot"] = {1,3,15},
["golden-sword"] = {1,1,5},
+
["golden-sword"] = {1,1,5},
["golden-chestplate"] = {1,1,5},
+
["golden-chestplate"] = {1,1,5},
["flint-and-steel"] = {1,1,5},
+
["flint-and-steel"] = {1,1,5},
["nether-wart"] = {3,7,5},
+
["nether-wart"] = {3,7,5},
["saddle"] = {1,1,10},
+
["saddle"] = {1,1,10},
["golden-horse-armor"] = {1,1,8},
+
["golden-horse-armor"] = {1,1,8},
["iron-horse-armor"] = {1,1,5},
+
["iron-horse-armor"] = {1,1,5},
["diamond-horse-armor"] = {1,1,3},
+
["diamond-horse-armor"] = {1,1,3},
["obsidian"] = {2,4,2},
+
["obsidian"] = {2,4,2},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["desert-temple"] = { -- desert_pyramid.json
+
["desert-temple"] = { -- desert_pyramid.json
header = "[[사막 사원]]",
+
header = "[[사막 사원]]",
link = "[[사막 사원]]",
+
link = "[[사막 사원]]",
structure = "사막 사원",
+
structure = "사막 사원",
container = "",
+
container = "",
structID = "desert-temple",
+
structID = "desert-temple",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {2,4},
+
rolls = {2,4},
items = {
+
items = {
["diamond"] = {1,3,5},
+
["diamond"] = {1,3,5},
["iron-ingot"] = {1,5,15},
+
["iron-ingot"] = {1,5,15},
["gold-ingot"] = {2,7,15},
+
["gold-ingot"] = {2,7,15},
["emerald"] = {1,3,15},
+
["emerald"] = {1,3,15},
["bone"] = {4,6,25},
+
["bone"] = {4,6,25},
["spider-eye"] = {1,3,25},
+
["spider-eye"] = {1,3,25},
["rotten-flesh"] = {3,7,25},
+
["rotten-flesh"] = {3,7,25},
["saddle"] = {1,1,20},
+
["saddle"] = {1,1,20},
["iron-horse-armor"] = {1,1,15},
+
["iron-horse-armor"] = {1,1,15},
["golden-horse-armor"] = {1,1,10},
+
["golden-horse-armor"] = {1,1,10},
["diamond-horse-armor"] = {1,1,5},
+
["diamond-horse-armor"] = {1,1,5},
["enchanted-book-rnd"] = {1,1,20},
+
["enchanted-book-rnd"] = {1,1,20},
["golden-apple"] = {1,1,20},
+
["golden-apple"] = {1,1,20},
["enchanted-golden-apple"] = {1,1,2},
+
["enchanted-golden-apple"] = {1,1,2},
["empty"] = {1,1,15},
+
["empty"] = {1,1,15},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {4,4},
+
rolls = {4,4},
items = {
+
items = {
["bone"] = {1,8,10},
+
["bone"] = {1,8,10},
["gunpowder"] = {1,8,10},
+
["gunpowder"] = {1,8,10},
["rotten-flesh"] = {1,8,10},
+
["rotten-flesh"] = {1,8,10},
["string"] = {1,8,10},
+
["string"] = {1,8,10},
["sand"] = {1,8,10},
+
["sand"] = {1,8,10},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["jungle-temple"] = { -- jungle_temple.json
+
["jungle-temple"] = { -- jungle_temple.json
header = "[[정글 사원]]",
+
header = "[[정글 사원]]",
link = "[[정글 사원]]",
+
link = "[[정글 사원]]",
structure = "정글 사원",
+
structure = "정글 사원",
container = "상자",
+
container = "상자",
structID = "jungle-temple",
+
structID = "jungle-temple",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {2,6},
+
rolls = {2,6},
items = {
+
items = {
["diamond"] = {1,3,3},
+
["diamond"] = {1,3,3},
["iron-ingot"] = {1,5,10},
+
["iron-ingot"] = {1,5,10},
["gold-ingot"] = {2,7,15},
+
["gold-ingot"] = {2,7,15},
["emerald"] = {1,3,2},
+
["emerald"] = {1,3,2},
["bone"] = {4,6,20},
+
["bone"] = {4,6,20},
["bamboo"] = {1,3,15},
+
["bamboo"] = {1,3,15},
["rotten-flesh"] = {3,7,16},
+
["rotten-flesh"] = {3,7,16},
["saddle"] = {1,1,3},
+
["saddle"] = {1,1,3},
["iron-horse-armor"] = {1,1,1},
+
["iron-horse-armor"] = {1,1,1},
["golden-horse-armor"] = {1,1,1},
+
["golden-horse-armor"] = {1,1,1},
["diamond-horse-armor"] = {1,1,1},
+
["diamond-horse-armor"] = {1,1,1},
["enchanted-book"] = {1,1,1}
+
["enchanted-book"] = {1,1,1}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {
+
poolsBedrock = {
  +
{
{
 
rolls = {2,6},
+
rolls = {2,6},
items = {
+
items = {
["diamond"] = {1,3,15},
+
["diamond"] = {1,3,15},
["iron-ingot"] = {1,5,50},
+
["iron-ingot"] = {1,5,50},
["gold-ingot"] = {2,7,75},
+
["gold-ingot"] = {2,7,75},
["emerald"] = {1,3,10},
+
["emerald"] = {1,3,10},
["bone"] = {4,6,100},
+
["bone"] = {4,6,100},
["rotten-flesh"] = {3,7,80},
+
["rotten-flesh"] = {3,7,80},
["bamboo"] = {1,3,75},
+
["bamboo"] = {1,3,75},
["saddle"] = {1,1,15},
+
["saddle"] = {1,1,15},
["iron-horse-armor"] = {1,1,5},
+
["iron-horse-armor"] = {1,1,5},
["golden-horse-armor"] = {1,1,5},
+
["golden-horse-armor"] = {1,1,5},
["diamond-horse-armor"] = {1,1,5},
+
["diamond-horse-armor"] = {1,1,5},
["enchanted-book"] = {1,1,6}
+
["enchanted-book"] = {1,1,6}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsBedrockUpcoming = {},
+
poolsBedrockUpcoming = {},
  +
},
},
 
["jungle-temple-dispenser"] = { -- jungle_temple_dispenser.json
+
["jungle-temple-dispenser"] = { -- jungle_temple_dispenser.json
chest_type = "dispenser",
+
chest_type = "dispenser",
link = "[[정글 사원]]",
+
link = "[[정글 사원]]",
structure = "정글 사원",
+
structure = "정글 사원",
container = "발사기",
+
container = "발사기",
structID = "jungle-temple",
+
structID = "jungle-temple",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {1,2},
+
rolls = {1,2},
items = {
+
items = {
["arrow"] = {2,7,30}
+
["arrow"] = {2,7,30}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {
+
poolsBedrock = {
  +
{
{
 
rolls = {2,2},
+
rolls = {2,2},
items = {
+
items = {
["arrow"] = {2,7,30}
+
["arrow"] = {2,7,30}
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["end-city"] = { -- end_city_treasure.json
+
["end-city"] = { -- end_city_treasure.json
header = "[[엔드 시티]]",
+
header = "[[엔드 시티]]",
link = "[[엔드 시티]]",
+
link = "[[엔드 시티]]",
structure = "엔드 시티",
+
structure = "엔드 시티",
container = "",
+
container = "",
structID = "end-city",
+
structID = "end-city",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {2,6},
+
rolls = {2,6},
items = {
+
items = {
["diamond"] = {2,7,5},
+
["diamond"] = {2,7,5},
["iron-ingot"] = {4,8,10},
+
["iron-ingot"] = {4,8,10},
["gold-ingot"] = {2,7,15},
+
["gold-ingot"] = {2,7,15},
["emerald"] = {2,6,2},
+
["emerald"] = {2,6,2},
["beetroot-seeds"] = {1,10,5},
+
["beetroot-seeds"] = {1,10,5},
["saddle"] = {1,1,3},
+
["saddle"] = {1,1,3},
["iron-horse-armor"] = {1,1,1},
+
["iron-horse-armor"] = {1,1,1},
["golden-horse-armor"] = {1,1,1},
+
["golden-horse-armor"] = {1,1,1},
["diamond-horse-armor"] = {1,1,1},
+
["diamond-horse-armor"] = {1,1,1},
["enchanted-diamond-sword"] = {1,1,3},
+
["level-enchanted-diamond-sword"] = {1,1,3},
["enchanted-diamond-boots"] = {1,1,3},
+
["level-enchanted-diamond-boots"] = {1,1,3},
["enchanted-diamond-chestplate"] = {1,1,3},
+
["level-enchanted-diamond-chestplate"] = {1,1,3},
["enchanted-diamond-leggings"] = {1,1,3},
+
["level-enchanted-diamond-leggings"] = {1,1,3},
["enchanted-diamond-helmet"] = {1,1,3},
+
["level-enchanted-diamond-helmet"] = {1,1,3},
["enchanted-diamond-pickaxe"] = {1,1,3},
+
["level-enchanted-diamond-pickaxe"] = {1,1,3},
["enchanted-diamond-shovel"] = {1,1,3},
+
["level-enchanted-diamond-shovel"] = {1,1,3},
["enchanted-iron-sword"] = {1,1,3},
+
["level-enchanted-iron-sword"] = {1,1,3},
["enchanted-iron-boots"] = {1,1,3},
+
["level-enchanted-iron-boots"] = {1,1,3},
["enchanted-iron-chestplate"] = {1,1,3},
+
["level-enchanted-iron-chestplate"] = {1,1,3},
["enchanted-iron-leggings"] = {1,1,3},
+
["level-enchanted-iron-leggings"] = {1,1,3},
["enchanted-iron-helmet"] = {1,1,3},
+
["level-enchanted-iron-helmet"] = {1,1,3},
["enchanted-iron-pickaxe"] = {1,1,3},
+
["level-enchanted-iron-pickaxe"] = {1,1,3},
["enchanted-iron-shovel"] = {1,1,3},
+
["level-enchanted-iron-shovel"] = {1,1,3},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["igloo"] = {
+
["igloo"] = {
header = "[[이글루]]",
+
header = "[[이글루]]",
link = "[[이글루]]",
+
link = "[[이글루]]",
structure = "이글루",
+
structure = "이글루",
container = "",
+
container = "",
structID = "igloo",
+
structID = "igloo",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {2,8},
+
rolls = {2,8},
items = {
+
items = {
["apple"] = {1,3,15},
+
["apple"] = {1,3,15},
["coal"] = {1,4,15},
+
["coal"] = {1,4,15},
["gold-nugget"] = {1,3,10},
+
["gold-nugget"] = {1,3,10},
["stone-axe"] = {1,1,2},
+
["stone-axe"] = {1,1,2},
["rotten-flesh"] = {1,1,10},
+
["rotten-flesh"] = {1,1,10},
["emerald"] = {1,1,1},
+
["emerald"] = {1,1,1},
["wheat"] = {2,3,10}
+
["wheat"] = {2,3,10}
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {1,1},
+
rolls = {1,1},
items = {
+
items = {
["golden-apple"] = {1,1,1},
+
["golden-apple"] = {1,1,1},
  +
}
}
 
  +
},
},
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
["pillager-outpost"] = {
+
["pillager-outpost"] = {
header = "[[약탈자 전초기지]]",
+
header = "[[약탈자 전초기지]]",
link = "[[약탈자 전초기지]]",
+
link = "[[약탈자 전초기지]]",
structure = "약탈자 전초기지",
+
structure = "약탈자 전초기지",
container = "",
+
container = "",
structID = "pillager-outpost",
+
structID = "pillager-outpost",
poolsJava = {
+
poolsJava = {
  +
{
{
 
rolls = {0,1},
+
rolls = {0,1},
items = {
+
items = {
["crossbow"] = {1,1,1},
+
["crossbow"] = {1,1,1},
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {2,3},
+
rolls = {2,3},
items = {
+
items = {
["wheat"] = {3,5,7},
+
["wheat"] = {3,5,7},
["potato"] = {2,5,5},
+
["potato"] = {2,5,5},
["carrot"] = {3,5,5}
+
["carrot"] = {3,5,5}
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {1,3},
+
rolls = {1,3},
items = {
+
items = {
["dark-oak-log"] = {2,3,1}
+
["dark-oak-log"] = {2,3,1}
  +
}
}
 
  +
},
},
 
  +
{
{
 
rolls = {2,3},
+
rolls = {2,3},
items = {
+
items = {
["bottle-o'-enchanting"] = {1,1,7},
+
["bottle-o'-enchanting"] = {1,1,7},
["string"] = {1,6,4},
+
["string"] = {1,6,4},
["arrow"] = {2,7,4},
+
["arrow"] = {2,7,4},
["tripwire-hook"] = {1,3,3},
+
["tripwire-hook"] = {1,3,3},
["iron-ingot"] = {1,3,3},
+
["iron-ingot"] = {1,3,3},
["enchanted-book-rnd"] = {1,1,1}
+
["enchanted-book-rnd"] = {1,1,1}
  +
}
}
 
  +
}
}
 
  +
},
},
 
poolsJavaUpcoming = {},
+
poolsJavaUpcoming = {},
poolsBedrock = {},
+
poolsBedrock = {},
poolsBedrockUpcoming = {}
+
poolsBedrockUpcoming = {}
  +
},
},
 
 
["bastion-bridge"] = { -- bastion_bridge.json
 
["bastion-bridge"] = { -- bastion_bridge.json
header = "[[Bastion]] bridge",
+
header = "[[보루]] 다리",
link = "[[bastion remnant|bastion remnant bridge]]",
+
link = "[[보루 잔해|보루 잔해 다리]]",
structure = "Bastion remnant",
+
structure = "보루 잔해",
container = "Bridge chest",
+
container = "다리 상자",
 
structID = "bastion-remnant",
 
structID = "bastion-remnant",
poolsJava = {},
+
poolsJava = {
poolsJavaUpcoming = {
 
 
{
 
{
 
rolls = {1,1},
 
rolls = {1,1},
1,731번째 줄: 1,730번째 줄:
 
}
 
}
 
},
 
},
poolsBedrock = {},
+
poolsJavaUpcoming = {},
poolsBedrockUpcoming = {
+
poolsBedrock = {
 
{
 
{
rolls = {0,1},
+
rolls = {1,1},
 
items = {
 
items = {
["damaged-random-enchanted-netherite-shovel"] = {1,1,45},
+
["lodestone"] = {1,1,1},
["damaged-random-enchanted-netherite-axe"] = {1,1,45},
 
["ancient-debris"] = {1,1,10},
 
 
}
 
}
 
},
 
},
1,744번째 줄: 1,741번째 줄:
 
rolls = {1,2},
 
rolls = {1,2},
 
items = {
 
items = {
["damaged-level-enchanted-crossbow"] = {1,1,10},
+
["damaged-random-enchanted-crossbow"] = {1,1,1},
["gold-ingot"] = {2,8,25},
+
["arrow"] = {2,12,1},
["block-of-gold"] = {1,1,25},
+
["gilded-blackstone"] = {5,8,1},
["saddle"] = {1,1,1},
+
["crying-obsidian"] = {3,8,1},
  +
["block-of-gold"] = {1,1,1},
}
 
  +
["gold-ingot"] = {2,8,1},
},
 
  +
["iron-ingot"] = {2,8,1},
{
 
rolls = {2,3},
 
items = {
 
["crying-obsidian"] = {1,5,1},
 
["spectral-arrow"] = {3,20,1},
 
 
["golden-sword"] = {1,1,1},
 
["golden-sword"] = {1,1,1},
["golden-chestplate"] = {1,1,1},
+
["random-enchanted-golden-chestplate"] = {1,1,1},
["golden-helmet"] = {1,1,1},
+
["random-enchanted-golden-helmet"] = {1,1,1},
["golden-leggings"] = {1,1,1},
+
["random-enchanted-golden-leggings"] = {1,1,1},
 
["random-enchanted-golden-boots"] = {1,1,1},
 
["random-enchanted-golden-boots"] = {1,1,1},
["iron-nugget"] = {2,6,1},
 
["gold-nugget"] = {2,6,1},
 
 
}
 
}
 
},
 
},
 
{
 
{
rolls = {3,4},
+
rolls = {2,4},
 
items = {
 
items = {
["basalt"] = {1,6,25},
+
["string"] = {1,6,1},
["polished-basalt"] = {1,6,25},
+
["leather"] = {1,3,1},
  +
["arrow"] = {5,17,1},
["string"] = {1,6,25}, --String is here twice with different chances, table won't show this.
 
["leather"] = {1,3,20},
+
["iron-nugget"] = {2,6,1},
["arrow"] = {2,7,35},
+
["gold-nugget"] = {2,6,1}
["string"] = {3,8,20}, --String is here twice with different chances, table won't show this.
 
 
}
 
}
 
}
 
}
}
+
},
  +
poolsBedrockUpcoming = {}
 
},
 
},
 
["bastion-hoglin-stable"] = { -- bastion_hoglin_stable.json
 
["bastion-hoglin-stable"] = { -- bastion_hoglin_stable.json
header = "[[Bastion]] hoglin stable",
+
header = "[[보루]] 호글린 마구간",
link = "[[bastion remnant|bastion remnant hoglin stable]]",
+
link = "[[보루 잔해|보루 잔해 호글린 마구간]]",
structure = "Bastion remnant",
+
structure = "보루 잔해",
container = "Hoglin stable chest",
+
container = "호글린 마구간 상자",
 
structID = "bastion-remnant",
 
structID = "bastion-remnant",
poolsJava = {},
+
poolsJava = {
poolsJavaUpcoming = {
 
 
{
 
{
 
rolls = {1,1},
 
rolls = {1,1},
1,815번째 줄: 1,805번째 줄:
 
}
 
}
 
},
 
},
poolsBedrock = {},
+
poolsJavaUpcoming = {},
poolsBedrockUpcoming = {
+
poolsBedrock = {
 
{
 
{
rolls = {0,1},
+
rolls = {1,1},
 
items = {
 
items = {
["damaged-random-enchanted-netherite-hoe"] = {1,1,15},
+
["damaged-random-enchanted-diamond-shovel"] = {1,1,5},
["damaged-random-enchanted-netherite-pickaxe"] = {1,1,15},
+
["netherite-scrap"] = {1,1,2},
  +
["ancient-debris"] = {1,1,3},
}
 
},
+
["saddle"] = {1,1,10},
  +
["block-of-gold"] = {2,4,25},
{
 
rolls = {2,3},
+
["random-enchanted-golden-hoe"] = {1,1,15},
items = {
+
["empty"] = {1,1,45}
["block-of-gold"] = {2,4,15},
 
["golden-hoe"] = {1,1,15},
 
["saddle"] = {1,1,35},
 
["soul-sand"] = {2,7,35},
 
["crimson-nylium"] = {2,7,20},
 
 
}
 
}
 
},
 
},
1,837번째 줄: 1,822번째 줄:
 
rolls = {3,4},
 
rolls = {3,4},
 
items = {
 
items = {
["basalt"] = {1,6,1},
+
["glowstone"] = {1,5,1},
["polished-basalt"] = {1,6,1},
+
["gilded-blackstone"] = {1,5,1},
  +
["soul-sand"] = {2,7,1},
  +
["crimson-nylium"] = {2,7,1},
 
["gold-nugget"] = {2,8,1},
 
["gold-nugget"] = {2,8,1},
["string"] = {1,6,1}, --String is here twice with different chances, table won't show this.
 
 
["leather"] = {1,3,1},
 
["leather"] = {1,3,1},
["arrow"] = {2,7,1},
+
["arrow"] = {5,17,1},
["string"] = {3,8,1}, --String is here twice with different chances, table won't show this.
+
["string"] = {3,8,1},
 
["raw-porkchop"] = {2,5,1},
 
["raw-porkchop"] = {2,5,1},
 
["cooked-porkchop"] = {2,5,1},
 
["cooked-porkchop"] = {2,5,1},
["crimson-fungus"] = {2,7,20},
+
["crimson-fungus"] = {2,7,1},
["crimson-roots"] = {2,7,20},
+
["crimson-roots"] = {2,7,1}
 
}
 
}
 
}
 
}
}
+
},
  +
poolsBedrockUpcoming = {}
 
},
 
},
["bastion-other"] = { -- bastion_other.json
+
["bastion-generic"] = { -- bastion_other.json
header = "[[Bastion]] other",
+
header = "[[보루]]",
link = "[[bastion remnant|bastion remnant other]]",
+
link = "[[보루 잔해|보루 잔해]]",
structure = "Bastion remnant",
+
structure = "보루 잔해",
container = "Other chest",
+
container = "일반 상자",
 
structID = "bastion-remnant",
 
structID = "bastion-remnant",
poolsJava = {},
+
poolsJava = {
poolsJavaUpcoming = {
 
 
{
 
{
 
rolls = {1,1},
 
rolls = {1,1},
1,867번째 줄: 1,853번째 줄:
 
["netherite-scrap"] = {1,1,2},
 
["netherite-scrap"] = {1,1,2},
 
["spectral-arrow"] = {2,15,6},
 
["spectral-arrow"] = {2,15,6},
["piglin-banner-pattern"] = {1,1,5},
+
["snout-banner-pattern"] = {1,1,5},
 
["disc-pigstep"] = {1,1,3},
 
["disc-pigstep"] = {1,1,3},
 
["enchanted-book-rnd-soul-speed"] = {1,1,10},
 
["enchanted-book-rnd-soul-speed"] = {1,1,10},
1,905번째 줄: 1,891번째 줄:
 
}
 
}
 
},
 
},
poolsBedrock = {},
+
poolsJavaUpcoming = {},
poolsBedrockUpcoming = {
+
poolsBedrock = {
 
{
 
{
rolls = {0,1},
+
rolls = {1,1},
 
items = {
 
items = {
["damaged-level-enchanted-crossbow"] = {1,1,10},
+
["damaged-random-enchanted-crossbow"] = {1,1,12},
["ancient-debris"] = {1,1,5},
+
["ancient-debris"] = {1,1,2},
["netherite-scrap"] = {1,1,5},
+
["netherite-scrap"] = {1,1,2},
["piglin-banner-pattern"] = {1,1,10},
+
["arrow"] = {2,15,16},
["disc-pigstep"] = {1,1,10},
+
["snout-banner-pattern"] = {1,1,5},
  +
["disc-pigstep"] = {1,1,3},
  +
["enchanted-book-rnd-soul-speed"] = {1,1,10},
  +
["empty"] = {1,1,50},
 
}
 
}
 
},
 
},
 
{
 
{
rolls = {1,2},
+
rolls = {2,2},
 
items = {
 
items = {
["gold-ingot"] = {1,6,1},
+
["soul-speed-enchanted-golden-boots"] = {1,1,1},
["spectral-arrow"] = {3,10,1},
 
["golden-boots"] = {1,1,1},
 
["magma-cream"] = {1,2,1},
 
["bone-block"] = {1,3,1},
 
 
["block-of-gold"] = {1,1,1},
 
["block-of-gold"] = {1,1,1},
["saddle"] = {1,1,1},
 
["crossbow"] = {1,1,1},
 
["crying-obsidian"] = {1,5,1},
 
["gilded-blackstone"] = {1,5,1}, ---
 
["enchanted-book-rnd-soul-speed"] = {1,1,1},
 
["soul-speed-enchanted-golden-boots"] = {1,1,1},
 
 
["crossbow"] = {1,1,1},
 
["crossbow"] = {1,1,1},
  +
["gold-ingot"] = {1,6,1},
 
["iron-ingot"] = {1,6,1},
 
["iron-ingot"] = {1,6,1},
  +
["golden-sword"] = {1,1,1},
  +
["golden-chestplate"] = {1,1,1},
  +
["golden-helmet"] = {1,1,1},
  +
["golden-leggings"] = {1,1,1},
  +
["golden-boots"] = {1,1,1},
 
["empty"] = {1,1,2},
 
["empty"] = {1,1,2},
 
}
 
}
 
},
 
},
 
{
 
{
rolls = {2,3},
+
rolls = {3,5},
 
items = {
 
items = {
["golden-sword"] = {1,1,15},
+
["crying-obsidian"] = {1,5,1},
["golden-chestplate"] = {1,1,5},
+
["gilded-blackstone"] = {1,5,1},
["golden-helmet"] = {1,1,5},
+
["chain"] = {2,10,1},
["golden-leggings"] = {1,1,5},
+
["magma-cream"] = {2,6,1},
["golden-boots"] = {1,1,10},
+
["bone-block"] = {3,6,1},
["chain"] = {2,10,10},
+
["iron-nugget"] = {2,8,1},
["iron-nugget"] = {2,8,10},
+
["obsidian"] = {4,6,1},
  +
["gold-nugget"] = {2,8,1},
}
 
},
+
["string"] = {4,6,1},
  +
["arrow"] = {5,17,2},
{
 
rolls = {3,4},
 
items = {
 
["basalt"] = {1,6,3},
 
["polished-basalt"] = {1,6,3},
 
["obsidian"] = {2,6,3},
 
["gold-nugget"] = {2,8,3},
 
["string"] = {1,6,4},
 
["leather"] = {1,3,1},
 
["arrow"] = {2,7,4},
 
["string"] = {3,8,2}
 
 
}
 
}
 
}
 
}
}
+
},
  +
poolsBedrockUpcoming = {}
 
},
 
},
 
["bastion-treasure"] = { -- bastion_treasure.json
 
["bastion-treasure"] = { -- bastion_treasure.json
header = "[[Bastion]] treasure",
+
header = "[[보루]] 보물",
link = "[[bastion remnant|bastion remnant treasure]]",
+
link = "[[보루 잔해|보루 잔해 보물]]",
structure = "Bastion remnant",
+
structure = "보루 잔해",
container = "Treasure chest",
+
container = "보물 상자",
 
structID = "bastion-remnant",
 
structID = "bastion-remnant",
poolsJava = {},
+
poolsJava = {
poolsJavaUpcoming = {
 
 
{
 
{
 
rolls = {1,2},
 
rolls = {1,2},
2,007번째 줄: 1,982번째 줄:
 
}
 
}
 
},
 
},
poolsBedrock = {},
+
poolsJavaUpcoming = {},
poolsBedrockUpcoming = {
+
poolsBedrock = {
 
{
 
{
rolls = {1,1},
+
rolls = {1,2},
 
items = {
 
items = {
 
["netherite-ingot"] = {1,1,10},
 
["netherite-ingot"] = {1,1,10},
["ancient-debris"] = {1,1,85},
+
["ancient-debris"] = {1,1,14},
["ancient-debris"] = {2,2,5},
+
["netherite-scrap"] = {1,1,10},
  +
["ancient-debris"] = {2,2,1},
  +
["damaged-random-enchanted-diamond-sword"] = {1,1,10},
  +
["damaged-random-enchanted-diamond-chestplate"] = {1,1,6},
  +
["damaged-random-enchanted-diamond-helmet"] = {1,1,6},
  +
["damaged-random-enchanted-diamond-leggings"] = {1,1,6},
  +
["damaged-random-enchanted-diamond-boots"] = {1,1,6},
  +
["damaged-diamond-sword"] = {1,1,6},
  +
["damaged-diamond-chestplate"] = {1,1,5},
  +
["damaged-diamond-helmet"] = {1,1,5},
  +
["damaged-diamond-boots"] = {1,1,5},
  +
["damaged-diamond-leggings"] = {1,1,5},
  +
["diamond"] = {1,3,5},
 
}
 
}
 
},
 
},
 
{
 
{
rolls = {2,2},
+
rolls = {2,4},
items = {
 
["damaged-level-enchanted-netherite-sword"] = {1,1,5},
 
["damaged-level-enchanted-netherite-chestplate"] = {1,1,3},
 
["damaged-level-enchanted-netherite-helmet"] = {1,1,5},
 
["damaged-level-enchanted-netherite-leggings"] = {1,1,5},
 
["damaged-level-enchanted-netherite-boots"] = {1,1,5},
 
["damaged-netherite-sword"] = {1,1,5},
 
["damaged-netherite-chestplate"] = {1,1,2},
 
["damaged-netherite-helmet"] = {1,1,2},
 
["damaged-netherite-boots"] = {1,1,2},
 
["damaged-netherite-leggings"] = {1,1,2},
 
["diamond"] = {1,3,2},
 
}
 
},
 
{
 
rolls = {2,3},
 
items = {
 
["block-of-gold"] = {2,5,10},
 
["spectral-arrow"] = {5,21,25},
 
["gold-ingot"] = {3,9,15},
 
["level-enchanted-golden-boots"] = {1,1,10},
 
["level-enchanted-golden-chestplate"] = {1,1,10},
 
["crying-obsidian"] = {1,5,10},
 
["nether-quartz"] = {8,23,10},
 
["gilded-blackstone"] = {1,5,10},
 
}
 
},
 
{
 
rolls = {2,2},
 
 
items = {
 
items = {
  +
["arrow"] = {5,21,1},
  +
["block-of-gold"] = {2,5,1},
  +
["gold-ingot"] = {3,9,1},
  +
["iron-ingot"] = {3,9,1},
  +
["crying-obsidian"] = {1,5,1},
  +
["nether-quartz"] = {8,23,1},
  +
["gilded-blackstone"] = {1,5,1},
 
["magma-cream"] = {2,8,1},
 
["magma-cream"] = {2,8,1},
["golden-sword"] = {1,1,1},
 
["golden-helmet"] = {1,1,1},
 
["golden-leggings"] = {1,1,1},
 
 
["iron-nugget"] = {8,16,1},
 
["iron-nugget"] = {8,16,1},
["magma-block"] = {2,6,1},
 
["saddle"] = {1,1,1},
 
 
}
 
}
 
}
 
}
}
+
},
  +
poolsBedrockUpcoming = {}
 
},
 
},
 
["ruined-portal"] = { --ruined_portal.json
 
["ruined-portal"] = { --ruined_portal.json
header = "[[무너진 네더 포탈]]",
+
header = "[[무너진 차원문]]",
link = "[[무너진 네더 포탈]]",
+
link = "[[무너진 차원문]]",
structure = "무너진 네더 포탈",
+
structure = "무너진 차원문",
 
container = "",
 
container = "",
 
structID = "ruined-portal",
 
structID = "ruined-portal",
poolsJava = {},
+
poolsJava = {
poolsJavaUpcoming = {
 
 
{
 
{
 
rolls = {4,8},
 
rolls = {4,8},
2,076번째 줄: 2,036번째 줄:
 
["flint-and-steel"] = {1,1,40},
 
["flint-and-steel"] = {1,1,40},
 
["fire-charge"] = {1,1,40},
 
["fire-charge"] = {1,1,40},
["golden-apple"] = {1,1,40},
+
["golden-apple"] = {1,1,15},
 
["gold-nugget"] = {4,24,15},
 
["gold-nugget"] = {4,24,15},
 
["random-enchanted-golden-sword"] = {1,1,15},
 
["random-enchanted-golden-sword"] = {1,1,15},
2,099번째 줄: 2,059번째 줄:
 
}
 
}
 
},
 
},
poolsBedrock = {},
+
poolsJavaUpcoming = {},
poolsBedrockUpcoming = {
+
poolsBedrock = {
 
{
 
{
rolls = {4,6},
+
rolls = {4,8},
 
items = {
 
items = {
 
["obsidian"] = {1,2,40},
 
["obsidian"] = {1,2,40},
2,131번째 줄: 2,091번째 줄:
 
}
 
}
 
}
 
}
}
 
},
 
["woodland-mansion"] = { -- woodland_mansion.json
 
header = "[[삼림 대저택]]",
 
link = "[[삼림 대저택]]",
 
structure = "삼림 대저택",
 
container = "",
 
structID = "woodland-mansion",
 
poolsJava = {
 
{
 
rolls = {1,3},
 
items = {
 
["lead"] = {1,1,20},
 
["golden-apple"] = {1,1,15},
 
["enchanted-golden-apple"] = {1,1,2},
 
["disc-13"] = {1,1,15},
 
["disc-cat"] = {1,1,15},
 
["name-tag"] = {1,1,20},
 
["chainmail-chestplate"] = {1,1,10},
 
["diamond-hoe"] = {1,1,15},
 
["diamond-chestplate"] = {1,1,5},
 
["enchanted-book-rnd"] = {1,1,10},
 
}
 
},
 
{
 
rolls = {1,4},
 
items = {
 
["iron-ingot"] = {1,4,10},
 
["gold-ingot"] = {1,4,5},
 
["bread"] = {1,1,20},
 
["wheat"] = {1,4,20},
 
["bucket"] = {1,1,10},
 
["redstone"] = {1,4,15},
 
["coal"] = {1,4,15},
 
["melon-seeds"] = {2,4,10},
 
["pumpkin-seeds"] = {2,4,10},
 
["beetroot-seeds"] = {2,4,10},
 
}
 
},
 
{
 
rolls = {3,3},
 
items = {
 
["bone"] = {1,8,10},
 
["gunpowder"] = {1,8,10},
 
["rotten-flesh"] = {1,8,10},
 
["string"] = {1,8,10},
 
}
 
},
 
},
 
poolsJavaUpcoming = {},
 
poolsBedrock = {
 
{
 
rolls = {1,3},
 
items = {
 
["lead"] = {1,1,100},
 
["golden-apple"] = {1,1,75},
 
["enchanted-golden-apple"] = {1,1,10},
 
["disc-13"] = {1,1,75},
 
["disc-cat"] = {1,1,75},
 
["name-tag"] = {1,1,100},
 
["chainmail-chestplate"] = {1,1,50},
 
["diamond-hoe"] = {1,1,75},
 
["diamond-chestplate"] = {1,1,25},
 
["enchanted-book-rnd-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},
 
}
 
},
 
 
},
 
},
 
poolsBedrockUpcoming = {}
 
poolsBedrockUpcoming = {}
 
},
 
},
  +
["woodland-mansion"] = { -- woodland_mansion.json
},
 
  +
header = "[[삼림 대저택]]",
  +
link = "[[삼림 대저택]]",
  +
structure = "삼림 대저택",
  +
container = "",
  +
structID = "woodland-mansion",
  +
poolsJava = {
  +
{
  +
rolls = {1,3},
  +
items = {
  +
["lead"] = {1,1,20},
  +
["golden-apple"] = {1,1,15},
  +
["enchanted-golden-apple"] = {1,1,2},
  +
["disc-13"] = {1,1,15},
  +
["disc-cat"] = {1,1,15},
  +
["name-tag"] = {1,1,20},
  +
["chainmail-chestplate"] = {1,1,10},
  +
["diamond-hoe"] = {1,1,15},
  +
["diamond-chestplate"] = {1,1,5},
  +
["enchanted-book-rnd"] = {1,1,10},
  +
}
  +
},
  +
{
  +
rolls = {1,4},
  +
items = {
  +
["iron-ingot"] = {1,4,10},
  +
["gold-ingot"] = {1,4,5},
  +
["bread"] = {1,1,20},
  +
["wheat"] = {1,4,20},
  +
["bucket"] = {1,1,10},
  +
["redstone"] = {1,4,15},
  +
["coal"] = {1,4,15},
  +
["melon-seeds"] = {2,4,10},
  +
["pumpkin-seeds"] = {2,4,10},
  +
["beetroot-seeds"] = {2,4,10},
  +
}
  +
},
  +
{
  +
rolls = {3,3},
  +
items = {
  +
["bone"] = {1,8,10},
  +
["gunpowder"] = {1,8,10},
  +
["rotten-flesh"] = {1,8,10},
  +
["string"] = {1,8,10},
  +
}
  +
},
  +
},
  +
poolsJavaUpcoming = {},
  +
poolsBedrock = {
  +
{
  +
rolls = {1,3},
  +
items = {
  +
["lead"] = {1,1,100},
  +
["golden-apple"] = {1,1,75},
  +
["enchanted-golden-apple"] = {1,1,10},
  +
["disc-13"] = {1,1,75},
  +
["disc-cat"] = {1,1,75},
  +
["name-tag"] = {1,1,100},
  +
["chainmail-chestplate"] = {1,1,50},
  +
["diamond-hoe"] = {1,1,75},
  +
["diamond-chestplate"] = {1,1,25},
  +
["enchanted-book-rnd-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},
  +
}
  +
},
  +
},
  +
poolsBedrockUpcoming = {}
  +
},
  +
},
   
-- these values are used:
+
-- these values are used:
-- * in place of the keys, when the key is used as a parameter
+
-- * in place of the keys, when the key is used as a parameter
  +
 
-- chest-param -> internally-valid-chest-param
+
-- chest-param -> internally-valid-chest-param
  +
 
synonyms = {
+
synonyms = {
["desert"] = "desert-temple",
+
["desert"] = "desert-temple",
["jungle"] = "jungle-temple",
+
["jungle"] = "jungle-temple",
["nether"] = "nether-fortress",
+
["nether"] = "nether-fortress",
["fortress"] = "nether-fortress",
+
["fortress"] = "nether-fortress",
  +
 
["armorer"] = "village-armorer",
+
["armorer"] = "village-armorer",
["butcher"] = "village-butcher",
+
["butcher"] = "village-butcher",
["cartographer"] = "village-cartographer",
+
["cartographer"] = "village-cartographer",
["fisherman"] = "village-fisherman",
+
["fisherman"] = "village-fisherman",
["fletcher"] = "village-fletcher",
+
["fletcher"] = "village-fletcher",
["mason"] = "village-mason",
+
["mason"] = "village-mason",
["shepherd"] = "village-shepherd",
+
["shepherd"] = "village-shepherd",
["tannery"] = "village-tannery",
+
["tannery"] = "village-tannery",
["temple"] = "village-temple",
+
["temple"] = "village-temple",
["toolsmith"] = "village-toolsmith",
+
["toolsmith"] = "village-toolsmith",
["weaponsmith"] = "village-weaponsmith",
+
["weaponsmith"] = "village-weaponsmith",
   
["desert-house"] = "village-desert-house",
+
["desert-house"] = "village-desert-house",
["plains-house"] = "village-plains-house",
+
["plains-house"] = "village-plains-house",
["savanna-house"] = "village-savanna-house",
+
["savanna-house"] = "village-savanna-house",
["snowy-house"] = "village-snowy-house",
+
["snowy-house"] = "village-snowy-house",
["taiga-house"] = "village-taiga-house",
+
["taiga-house"] = "village-taiga-house",
  +
 
["altar"] = "stronghold-altar",
+
["altar"] = "stronghold-altar",
["storeroom"] = "stronghold-storeroom",
+
["storeroom"] = "stronghold-storeroom",
["library"] = "stronghold-library",
+
["library"] = "stronghold-library",
["outpost"] = "pillager-outpost",
+
["outpost"] = "pillager-outpost",
["mansion"] = "woodland-mansion"
+
["mansion"] = "woodland-mansion"
},
+
},
   
-- these values are used:
+
-- these values are used:
-- * in the header-description of a table showing only a single chest
+
-- * 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,
+
-- * 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,
+
-- that header-description will default to use the key string from p.chests,
-- e.g. "nether-fortress"
+
-- e.g. "nether-fortress"
  +
 
-- chest-param -> description-string
+
-- chest-param -> description-string
  +
 
display_names = {
+
display_names = {
["nether-fortress"] = "네더 요새",
+
["nether-fortress"] = "네더 요새",
["nether"] = "네더 요새",
+
["nether"] = "네더 요새",
["fortress"] = "네더 요새",
+
["fortress"] = "네더 요새",
["desert"] = "사막 사원",
+
["desert"] = "사막 사원",
["jungle"] = "정글 사원",
+
["jungle"] = "정글 사원",
["desert-temple"] = "사막 사원",
+
["desert-temple"] = "사막 사원",
["jungle-temple"] = "정글 사원",
+
["jungle-temple"] = "정글 사원",
},
+
},
  +
 
-- these descriptions are used:
+
-- these descriptions are used:
-- * in column <abbr> titles,
+
-- * in column <abbr> titles,
-- * and above the table when only a single column-type is chosen
+
-- * and above the table when only a single column-type is chosen
  +
 
columns = {
+
columns = {
["stacksize"] = '이 아이템의 묶음의 수 (쌓기가 안되는 경우, 그냥 갯수).',
+
["stacksize"] = '이 아이템의 묶음의 수 (쌓기가 안되는 경우, 그냥 갯수).',
["weight"] = '이 종류에서 다른 아이템에 비한 이 아이템의 가중치.',
+
["weight"] = '이 종류에서 다른 아이템에 비한 이 아이템의 가중치.',
["chance"] = '하나의 상자에서 이 아이템이 존재할 확률.',
+
["chance"] = '하나의 상자에서 이 아이템이 존재할 확률.',
["items"] = '상자당 기대되는 아이템의 수. 많은 상자를 평균한 값임.',
+
["items"] = '상자당 기대되는 아이템의 수. 많은 상자를 평균한 값임.',
["chests"] = '이 아이템을 찾으려면 평균 몇개의 상자를 찾아야 할까?'
+
["chests"] = '이 아이템을 찾으려면 평균 몇개의 상자를 찾아야 할까?'
},
+
},
  +
 
current_frame = nil
+
current_frame = nil
 
}
 
}
   
 
p.base = function( ... )
 
p.base = function( ... )
   
p.current_frame = mw.getCurrentFrame()
+
p.current_frame = mw.getCurrentFrame()
   
local args = { ... }
+
local args = { ... }
if args[1] == p.current_frame then
+
if args[1] == p.current_frame then
args = require( '모듈:ProcessArgs' ).merge( true )
+
args = require( '모듈:ProcessArgs' ).merge( true )
else
+
else
args = args[1]
+
args = args[1]
end
+
end
  +
 
-- transform args into usable list
+
-- transform args into usable list
  +
 
local chests, columns = q.massage_args( args )
+
local chests, columns = q.massage_args( args )
  +
 
if #chests == 0 then
+
if #chests == 0 then
return "<span style='font-style:italic; color:red;'>모듈:LootChest: no valid arguments</span>"
+
return "<span style='font-style:italic; color:red;'>모듈:LootChest: no valid arguments</span>"
end
+
end
   
q.fill_in_chest_derivative_data( chests )
+
q.fill_in_chest_derivative_data( chests )
  +
 
-- construct an ordered list dictating the order of the rows
+
-- construct an ordered list dictating the order of the rows
  +
 
local ordered_item_rows_java = {}
+
local ordered_item_rows_java = {}
local ordered_item_rows_java_upcoming = {}
+
local ordered_item_rows_java_upcoming = {}
local ordered_item_rows_bedrock = {}
+
local ordered_item_rows_bedrock = {}
local ordered_item_rows_bedrock_upcoming = {}
+
local ordered_item_rows_bedrock_upcoming = {}
   
local ret = {}
+
local ret = {}
  +
 
local java_specified = args.java and args.java ~= '0';
+
local java_specified = args.java and args.java ~= '0';
local java_upcoming_specified = args['java-upcoming'] and args['java-upcoming'] ~= '0';
+
local java_upcoming_specified = args['java-upcoming'] and args['java-upcoming'] ~= '0';
local bedrock_specified = args.bedrock and args.bedrock ~= '0';
+
local bedrock_specified = args.bedrock and args.bedrock ~= '0';
local bedrock_upcoming_specified = args['bedrock-upcoming'] and args['bedrock-upcoming'] ~= '0';
+
local bedrock_upcoming_specified = args['bedrock-upcoming'] and args['bedrock-upcoming'] ~= '0';
  +
 
local any_specified = java_specified or java_upcoming_specified or bedrock_specified or bedrock_upcoming_specified
+
local any_specified = java_specified or java_upcoming_specified or bedrock_specified or bedrock_upcoming_specified
  +
 
if any_specified then
+
if any_specified then
  +
 
if java_specified then
+
if java_specified then
ordered_item_rows_java = q.construct_ordered_item_rows( chests, 'Java' )
+
ordered_item_rows_java = q.construct_ordered_item_rows( chests, 'Java' )
end
+
end
if java_upcoming_specified then
+
if java_upcoming_specified then
ordered_item_rows_java_upcoming = q.construct_ordered_item_rows( chests, 'JavaUpcoming' )
+
ordered_item_rows_java_upcoming = q.construct_ordered_item_rows( chests, 'JavaUpcoming' )
end
+
end
if bedrock_specified then
+
if bedrock_specified then
ordered_item_rows_bedrock = q.construct_ordered_item_rows( chests, 'Bedrock' )
+
ordered_item_rows_bedrock = q.construct_ordered_item_rows( chests, 'Bedrock' )
end
+
end
if bedrock_upcoming_specified then
+
if bedrock_upcoming_specified then
ordered_item_rows_bedrock_upcoming = q.construct_ordered_item_rows( chests, 'BedrockUpcoming' )
+
ordered_item_rows_bedrock_upcoming = q.construct_ordered_item_rows( chests, 'BedrockUpcoming' )
end
+
end
  +
 
else
+
else
  +
 
local java_excluded = args.java and args.java == '0';
+
local java_excluded = args.java and args.java == '0';
local java_upcoming_excluded = args['java-upcoming'] and args['java-upcoming'] == '0';
+
local java_upcoming_excluded = args['java-upcoming'] and args['java-upcoming'] == '0';
local bedrock_excluded = args.bedrock and args.bedrock == '0';
+
local bedrock_excluded = args.bedrock and args.bedrock == '0';
local bedrock_upcoming_excluded = args['bedrock-upcoming'] and args['bedrock-upcoming'] == '0';
+
local bedrock_upcoming_excluded = args['bedrock-upcoming'] and args['bedrock-upcoming'] == '0';
  +
 
if not java_excluded then
+
if not java_excluded then
ordered_item_rows_java = q.construct_ordered_item_rows( chests, 'Java' )
+
ordered_item_rows_java = q.construct_ordered_item_rows( chests, 'Java' )
end
+
end
if not java_upcoming_excluded then
+
if not java_upcoming_excluded then
ordered_item_rows_java_upcoming = q.construct_ordered_item_rows( chests, 'JavaUpcoming' )
+
ordered_item_rows_java_upcoming = q.construct_ordered_item_rows( chests, 'JavaUpcoming' )
end
+
end
if not bedrock_excluded then
+
if not bedrock_excluded then
ordered_item_rows_bedrock = q.construct_ordered_item_rows( chests, 'Bedrock' )
+
ordered_item_rows_bedrock = q.construct_ordered_item_rows( chests, 'Bedrock' )
end
+
end
if not bedrock_upcoming_excluded then
+
if not bedrock_upcoming_excluded then
ordered_item_rows_bedrock_upcoming = q.construct_ordered_item_rows( chests, 'BedrockUpcoming' )
+
ordered_item_rows_bedrock_upcoming = q.construct_ordered_item_rows( chests, 'BedrockUpcoming' )
end
+
end
  +
 
end
+
end
  +
 
if q.tablelength( ordered_item_rows_java ) > 0 then
+
if q.tablelength( ordered_item_rows_java ) > 0 then
table.insert( ret, q.print_table( chests, columns, ordered_item_rows_java, 'Java' ) )
+
table.insert( ret, q.print_table( chests, columns, ordered_item_rows_java, 'Java' ) )
end
+
end
if q.tablelength( ordered_item_rows_java_upcoming ) > 0 and q.compare_tables( ordered_item_rows_java, ordered_item_rows_java_upcoming ) then
+
if q.tablelength( ordered_item_rows_java_upcoming ) > 0 and q.compare_tables( ordered_item_rows_java, ordered_item_rows_java_upcoming ) then
table.insert( ret, p.current_frame:preprocess( p['java-upcoming'] ) .. '에서는 ' .. q.lcfirst( q.print_table( chests, columns, ordered_item_rows_java_upcoming, 'JavaUpcoming' ) ) )
+
table.insert( ret, p.current_frame:preprocess( p['java-upcoming'] ) .. '에서는 ' .. q.lcfirst( q.print_table( chests, columns, ordered_item_rows_java_upcoming, 'JavaUpcoming' ) ) )
end
+
end
if q.tablelength( ordered_item_rows_bedrock ) > 0 and q.compare_tables( ordered_item_rows_java, ordered_item_rows_bedrock ) then
+
if q.tablelength( ordered_item_rows_bedrock ) > 0 and q.compare_tables( ordered_item_rows_java, 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' ) ) .. '[[분류:베드락 에디션 관련 정보]]' )
+
table.insert( ret, p.current_frame:preprocess( p.bedrock ) .. '에서는 ' .. q.lcfirst( q.print_table( chests, columns, ordered_item_rows_bedrock, 'Bedrock' ) ) .. '[[분류:베드락 에디션 관련 정보]]' )
end
+
end
if q.tablelength( ordered_item_rows_bedrock_upcoming ) > 0 and q.compare_tables( ordered_item_rows, ordered_item_rows_bedrock_upcoming ) then
+
if q.tablelength( ordered_item_rows_bedrock_upcoming ) > 0 and q.compare_tables( ordered_item_rows, ordered_item_rows_bedrock_upcoming ) then
table.insert( ret, p.current_frame:preprocess( p['bedrock-upcoming'] ) .. '에서는 ' .. q.lcfirst( q.print_table( chests, columns, ordered_item_rows_bedrock_upcoming, 'BedrockUpcoming' ) ) .. '[[분류:베드락 에디션 관련 정보]]' )
+
table.insert( ret, p.current_frame:preprocess( p['bedrock-upcoming'] ) .. '에서는 ' .. q.lcfirst( q.print_table( chests, columns, ordered_item_rows_bedrock_upcoming, 'BedrockUpcoming' ) ) .. '[[분류:베드락 에디션 관련 정보]]' )
end
+
end
  +
 
return table.concat( ret, '\n\n' )
+
return table.concat( ret, '\n\n' )
 
end
 
end
   
 
p.doc = function()
 
p.doc = function()
   
local valid_args = {}
+
local valid_args = {}
for chest_name, val in pairs(p.chests) do
+
for chest_name, val in pairs(p.chests) do
local synonyms = {}
+
local synonyms = {}
for syn, orig in pairs(p.synonyms) do
+
for syn, orig in pairs(p.synonyms) do
if orig == chest_name then
+
if orig == chest_name then
table.insert( synonyms, syn )
+
table.insert( synonyms, syn )
  +
end
end
 
end
+
end
if #synonyms > 0 then
+
if #synonyms > 0 then
chest_name = chest_name .. " ( " .. table.concat( synonyms, ", " ) .. " )"
+
chest_name = chest_name .. " ( " .. table.concat( synonyms, ", " ) .. " )"
end
+
end
table.insert( valid_args, chest_name )
+
table.insert( valid_args, chest_name )
end
+
end
table.sort( valid_args )
+
table.sort( valid_args )
return table.concat( valid_args, ",\n<br>" )
+
return table.concat( valid_args, ",\n<br>" )
   
 
end
 
end
2,407번째 줄: 2,368번째 줄:
 
p.doc2 = function()
 
p.doc2 = function()
   
local valid_args = {}
+
local valid_args = {}
for column_name, val in pairs(p.columns) do
+
for column_name, val in pairs(p.columns) do
table.insert( valid_args, column_name .. ": " .. val )
+
table.insert( valid_args, column_name .. ": " .. val )
end
+
end
table.sort( valid_args )
+
table.sort( valid_args )
return table.concat( valid_args, ",\n<br>" )
+
return table.concat( valid_args, ",\n<br>" )
   
 
end
 
end
2,418번째 줄: 2,379번째 줄:
 
p.doc3 = function()
 
p.doc3 = function()
   
local valid_args = {}
+
local valid_args = {}
for item_name, val in pairs(p.items) do
+
for item_name, val in pairs(p.items) do
table.insert( valid_args, item_name )
+
table.insert( valid_args, item_name )
end
+
end
table.sort( valid_args )
+
table.sort( valid_args )
return table.concat( valid_args, ", " )
+
return table.concat( valid_args, ", " )
   
 
end
 
end
2,429번째 줄: 2,390번째 줄:
 
p.base2 = function( ... )
 
p.base2 = function( ... )
   
p.current_frame = mw.getCurrentFrame()
+
p.current_frame = mw.getCurrentFrame()
   
local args = { ... }
+
local args = { ... }
if args[1] == p.current_frame then
+
if args[1] == p.current_frame then
args = require( '모듈:ProcessArgs' ).merge( true )
+
args = require( '모듈:ProcessArgs' ).merge( true )
else
+
else
args = args[1]
+
args = args[1]
end
+
end
  +
 
local itemname = args[1]
+
local itemname = args[1]
  +
 
if p.items[itemname] == nil then
+
if p.items[itemname] == nil then
return '<span style="color:red;">"' .. itemname .. '"은 알 수 없는 아이템입니다</span>'
+
return '<span style="color:red;">"' .. itemname .. '"은 알 수 없는 아이템입니다</span>'
end
+
end
  +
 
if args.java and args.java ~= '0' then
+
if args.java and args.java ~= '0' then
javaChances = q.single_item_find_values( itemname, 'poolsJava' )
+
javaChances = q.single_item_find_values( itemname, 'poolsJava' )
javaUpcomingChances = {}
+
javaUpcomingChances = {}
bedrockChances = {}
+
bedrockChances = {}
bedrockUpcomingChances = {}
+
bedrockUpcomingChances = {}
else
+
else
if args['java-upcoming'] and args['java-upcoming'] ~= '0' then
+
if args['java-upcoming'] and args['java-upcoming'] ~= '0' then
javaChances = q.single_item_find_values( itemname, 'poolsJavaUpcoming' )
+
javaChances = q.single_item_find_values( itemname, 'poolsJavaUpcoming' )
javaUpcomingChances = {}
+
javaUpcomingChances = {}
bedrockChances = {}
+
bedrockChances = {}
bedrockUpcomingChances = {}
+
bedrockUpcomingChances = {}
else
+
else
if args.bedrock and args.bedrock ~= '0' then
+
if args.bedrock and args.bedrock ~= '0' then
javaChances = q.single_item_find_values( itemname, 'poolsBedrock' )
+
javaChances = q.single_item_find_values( itemname, 'poolsBedrock' )
javaUpcomingChances = {}
+
javaUpcomingChances = {}
bedrockChances = {}
+
bedrockChances = {}
bedrockUpcomingChances = {}
+
bedrockUpcomingChances = {}
else
+
else
if args['bedrock-upcoming'] and args['bedrock-upcoming'] ~= '0' then
+
if args['bedrock-upcoming'] and args['bedrock-upcoming'] ~= '0' then
javaChances = q.single_item_find_values( itemname, 'poolsBedrockUpcoming' )
+
javaChances = q.single_item_find_values( itemname, 'poolsBedrockUpcoming' )
javaUpcomingChances = {}
+
javaUpcomingChances = {}
bedrockChances = {}
+
bedrockChances = {}
bedrockUpcomingChances = {}
+
bedrockUpcomingChances = {}
  +
else
else
 
javaChances = q.single_item_find_values( itemname, 'poolsJava' )
+
javaChances = q.single_item_find_values( itemname, 'poolsJava' )
javaUpcomingChances = q.single_item_find_values( itemname, 'poolsJavaUpcoming', javaChances )
+
javaUpcomingChances = q.single_item_find_values( itemname, 'poolsJavaUpcoming', javaChances )
bedrockChances = q.single_item_find_values( itemname, 'poolsBedrock', javaChances )
+
bedrockChances = q.single_item_find_values( itemname, 'poolsBedrock', javaChances )
bedrockUpcomingChances = q.single_item_find_values( itemname, 'poolsBedrockUpcoming', javaChances, bedrockChances )
+
bedrockUpcomingChances = q.single_item_find_values( itemname, 'poolsBedrockUpcoming', javaChances, bedrockChances )
  +
end
end
 
  +
end
end
 
end
+
end
end
+
end
  +
 
local html = {}
+
local html = {}
  +
 
local any_current = q.tablelength( javaChances ) > 0
+
local any_current = q.tablelength( javaChances ) > 0
local any_changes_upcoming = q.tablelength( javaUpcomingChances ) > 0 and q.compare_tables( javaChances, javaUpcomingChances )
+
local any_changes_upcoming = q.tablelength( javaUpcomingChances ) > 0 and q.compare_tables( javaChances, javaUpcomingChances )
local any_standard = any_current or any_changes_upcoming
+
local any_standard = any_current or any_changes_upcoming
  +
 
local any_bedrock_current = q.tablelength( bedrockChances ) > 0
+
local any_bedrock_current = q.tablelength( bedrockChances ) > 0
local any_bedrock_upcoming = q.tablelength( bedrockUpcomingChances ) > 0 and q.compare_tables( bedrockChances, bedrockUpcomingChances )
+
local any_bedrock_upcoming = q.tablelength( bedrockUpcomingChances ) > 0 and q.compare_tables( bedrockChances, bedrockUpcomingChances )
local any_bedrock = any_bedrock_current or any_bedrock_upcoming
+
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
+
local change_case = p.items[itemname].preserve_case == nil or p.items[itemname].preserve_case ~= true
   
if any_current then
+
if any_current then
table.insert( html, p.base2_sub( itemname, javaChances ) )
+
table.insert( html, p.base2_sub( itemname, javaChances ) )
end
+
end
if any_changes_upcoming then
+
if any_changes_upcoming then
table.insert( html, p.current_frame:preprocess( p['java-upcoming'] ) .. '에서는 ' .. ( change_case and q.lcfirst( p.base2_sub( itemname, javaUpcomingChances, any_current ) ) or p.base2_sub( itemname, javaUpcomingChances, any_current ) ) )
+
table.insert( html, p.current_frame:preprocess( p['java-upcoming'] ) .. '에서는 ' .. ( change_case and q.lcfirst( p.base2_sub( itemname, javaUpcomingChances, any_current ) ) or p.base2_sub( itemname, javaUpcomingChances, any_current ) ) )
end
+
end
if any_bedrock_current then
+
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 ) ) )
+
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
+
end
if any_bedrock_upcoming then
+
if any_bedrock_upcoming then
table.insert( html, ( any_standard and not any_bedrock_current and '\n\n' or '' ) .. p.current_frame:preprocess( p['bedrock-upcoming'] ) .. '에서는 ' .. ( change_case and q.lcfirst( p.base2_sub( itemname, bedrockUpcomingChances, any_bedrock_current or any_standard ) ) or p.base2_sub( itemname, bedrockUpcomingChances, any_bedrock_current or any_standard ) ) )
+
table.insert( html, ( any_standard and not any_bedrock_current and '\n\n' or '' ) .. p.current_frame:preprocess( p['bedrock-upcoming'] ) .. '에서는 ' .. ( change_case and q.lcfirst( p.base2_sub( itemname, bedrockUpcomingChances, any_bedrock_current or any_standard ) ) or p.base2_sub( itemname, bedrockUpcomingChances, any_bedrock_current or any_standard ) ) )
end
+
end
   
if args.nocat then
+
if args.nocat then
else
+
else
table.insert( html, '[[분류:전리품 상자 항목 틀이 있는 페이지]]' )
+
table.insert( html, '[[분류:전리품 상자 항목 틀이 있는 페이지]]' )
if p.items[itemname].category ~= nil and p.items[itemname].category ~= false then
+
if p.items[itemname].category ~= nil and p.items[itemname].category ~= false then
table.insert( html, '[[분류:특정 전리품 상자 항목이 있는 페이지]]' )
+
table.insert( html, '[[분류:특정 전리품 상자 항목이 있는 페이지]]' )
end
+
end
if any_bedrock then
+
if any_bedrock then
table.insert( html, '[[분류:베드락 에디션 관련 정보]]' )
+
table.insert( html, '[[분류:베드락 에디션 관련 정보]]' )
end
+
end
end
+
end
  +
 
return table.concat( html, ' ' )
+
return table.concat( html, ' ' )
 
end
 
end
   
 
p.base2_sub = function( itemname, chances, use_they )
 
p.base2_sub = function( itemname, chances, use_they )
   
-- 복붙 시작!
+
-- 복붙 시작!
   
local html = {}
+
local html = {}
local item_display_name = ''
+
local item_display_name = ''
local name_without_ref = nil -- if TRUE, ref tag is being used.
+
local name_without_ref = nil -- if TRUE, ref tag is being used.
  +
 
   
-- use_they가 참일 경우는 "베드락 에디션에서는 이들은 ~~의 확률로"를 출력할 때 뿐인데,
+
-- use_they가 참일 경우는 "베드락 에디션에서는 이들은 ~~의 확률로"를 출력할 때 뿐인데,
-- 한국어판에서는 "베드락 에디션에서는 ~~의 확률로"로 출력하도록 텍스트를 간소화한다.
+
-- 한국어판에서는 "베드락 에디션에서는 ~~의 확률로"로 출력하도록 텍스트를 간소화한다.
if not use_they then
+
if not use_they then
if p.items[itemname].plural ~= nil and p.items[itemname].plural ~= false then
+
if p.items[itemname].plural ~= nil and p.items[itemname].plural ~= false then
item_display_name = p.items[itemname].plural
+
item_display_name = p.items[itemname].plural
else
+
else
if p.items[itemname].title ~= nil then
+
if p.items[itemname].title ~= nil then
item_display_name = p.items[itemname].title
+
item_display_name = p.items[itemname].title
else
+
else
item_display_name = string.gsub( itemname, '-', ' ' )
+
item_display_name = string.gsub( itemname, '-', ' ' )
  +
end
end
 
-- if p.items[itemname].plural == nil or p.items[itemname].plural ~= false then
+
-- if p.items[itemname].plural == nil or p.items[itemname].plural ~= false then
-- item_display_name = q.single_item_plural( item_display_name )
+
-- item_display_name = q.single_item_plural( item_display_name )
-- end
+
-- end
end
+
end
local Autolink = require( '모듈:Autolink' )
+
local Autolink = require( '모듈:Autolink' )
item_display_name = Autolink.invlink(item_display_name, 'nolink')
+
item_display_name = Autolink.invlink(item_display_name, 'nolink')
  +
 
if p.items[itemname].preserve_case == nil or p.items[itemname].preserve_case ~= true then
+
if p.items[itemname].preserve_case == nil or p.items[itemname].preserve_case ~= true then
item_display_name = q.capitalize( item_display_name )
+
item_display_name = q.capitalize( item_display_name )
end
+
end
  +
 
if p.items[itemname].note and p.notes[p.items[itemname].note] then
+
if p.items[itemname].note and p.notes[p.items[itemname].note] then
name_without_ref = item_display_name
+
name_without_ref = item_display_name
item_display_name = item_display_name .. p.current_frame:preprocess( p.notes[p.items[itemname].note] )
+
item_display_name = item_display_name .. p.current_frame:preprocess( p.notes[p.items[itemname].note] )
end
+
end
end
+
end
  +
 
table.insert( html, item_display_name )
+
table.insert( html, item_display_name )
-- josa insertion
+
-- josa insertion
if not use_they then -- use_they에 관한 주석은 위를 볼 것
+
if not use_they then -- use_they에 관한 주석은 위를 볼 것
local josa = require('모듈:Josa').josa
+
local josa = require('모듈:Josa').josa
if (name_without_ref) then
+
if (name_without_ref) then
table.insert( html, josa(name_without_ref, '은/는')..' ' )
+
table.insert( html, josa(name_without_ref, '은/는')..' ' )
else
+
else
table.insert( html, josa(item_display_name, '은/는')..' ' )
+
table.insert( html, josa(item_display_name, '은/는')..' ' )
end
+
end
end
+
end
   
local html_stacks = {}
+
local html_stacks = {}
local stack_sep = '. '
+
local stack_sep = '. '
local ns = q.tablelength( chances )
+
local ns = q.tablelength( chances )
local s = 0
+
local s = 0
   
-- 주의: 미래에 전리품을 획득할 수 있는 장소가 추가되면 이 부분이 수정되어야 한다.
+
-- 주의: 미래에 전리품을 획득할 수 있는 장소가 추가되면 이 부분이 수정되어야 한다.
   
for stacksize, chest_details in pairs( chances ) do
+
for stacksize, chest_details in pairs( chances ) do
s = s + 1
+
s = s + 1
  +
 
local html_per_stack = { '' }
+
local html_per_stack = { '' }
local c = 0
+
local c = 0
local nc = q.tablelength( chest_details )
+
local nc = q.tablelength( chest_details )
local sep = ( nc > 1 and ', ' or ' ' ) -- 영어에서는 항목 열거 시 마지막 항목 앞에 반점을 없애고 'and'를 쓰기 때문에 조건 값이 2지만, 한국어는 그렇지 않기 때문에 조건 값이 1이다
+
local sep = ( nc > 1 and ', ' or ' ' ) -- 영어에서는 항목 열거 시 마지막 항목 앞에 반점을 없애고 'and'를 쓰기 때문에 조건 값이 2지만, 한국어는 그렇지 않기 때문에 조건 값이 1이다
if nc > 2 and s ~= ns then
+
if nc > 2 and s ~= ns then
stack_sep = '. '
+
stack_sep = '. '
end
+
end
for k, chest in pairs( chest_details ) do
+
for k, chest in pairs( chest_details ) do
c = c + 1
+
c = c + 1
if c == nc and nc > 1 then
+
if c == nc and nc > 1 then
table.insert( html_per_stack, '' )
+
table.insert( html_per_stack, '' )
  +
end
end
 
if chest.chance == 1 then -- 확률 100%
+
if chest.chance == 1 then -- 확률 100%
table.insert( html_per_stack, " 모든 " ) -- 예: 모든 보너스 상자에서
+
table.insert( html_per_stack, " 모든 " ) -- 예: 모든 보너스 상자에서
else
+
else
table.insert( html_per_stack, string.format("%.1f", chest.chance*100) )
+
table.insert( html_per_stack, string.format("%.1f", chest.chance*100) )
table.insert( html_per_stack, "% 확률로 " )
+
table.insert( html_per_stack, "% 확률로 " )
  +
end
end
 
if chest.chest_type == 'minecart with chest' then
+
if chest.chest_type == 'minecart with chest' then
table.insert( html_per_stack, p.chests[chest.chest_name].link )
+
table.insert( html_per_stack, p.chests[chest.chest_name].link )
table.insert( html_per_stack, ' [[상자가 실린 광산 수레]]에서' )
+
table.insert( html_per_stack, ' [[상자가 실린 광산 수레]]에서' )
elseif chest.chest_type == 'dispenser' then
+
elseif chest.chest_type == 'dispenser' then
table.insert( html_per_stack, p.chests[chest.chest_name].link )
+
table.insert( html_per_stack, p.chests[chest.chest_name].link )
table.insert( html_per_stack, '의 [[발사기]]에서' )
+
table.insert( html_per_stack, '의 [[발사기]]에서' )
elseif chest.chest_type == 'bonus' then
+
elseif chest.chest_type == 'bonus' then
table.insert( html_per_stack, p.chests[chest.chest_name].link )
+
table.insert( html_per_stack, p.chests[chest.chest_name].link )
table.insert( html_per_stack, '에서' )
+
table.insert( html_per_stack, '에서' )
elseif chest.chest_type == 'shipwreck' then
+
elseif chest.chest_type == 'shipwreck' then
table.insert( html_per_stack, p.chests[chest.chest_name].link )
+
table.insert( html_per_stack, p.chests[chest.chest_name].link )
table.insert( html_per_stack, '에서' )
+
table.insert( html_per_stack, '에서' )
else
+
else
table.insert( html_per_stack, p.chests[chest.chest_name].link )
+
table.insert( html_per_stack, p.chests[chest.chest_name].link )
table.insert( html_per_stack, ' 상자에서' )
+
table.insert( html_per_stack, ' 상자에서' )
  +
end
end
 
table.insert( html_per_stack, sep )
+
table.insert( html_per_stack, sep )
end
+
end
if nc > 2 then
+
if nc > 2 then
-- "모두" 앞에 반점이 붙는 것을 없애기 위해 출력 스택을 직접 건드린다.
+
-- "모두" 앞에 반점이 붙는 것을 없애기 위해 출력 스택을 직접 건드린다.
-- 미친 짓이니 다음에는 이러지 마라
+
-- 미친 짓이니 다음에는 이러지 마라
table.remove( html_per_stack )
+
table.remove( html_per_stack )
table.insert( html_per_stack, ' 모두 ' ) -- 예: 모두 nn%의 확률로
+
table.insert( html_per_stack, ' 모두 ' ) -- 예: 모두 nn%의 확률로
end
+
end
table.insert( html_per_stack, stacksize)
+
table.insert( html_per_stack, stacksize)
   
-- ~개 묶음으로 앞에 오는 반점 제거. 또 스택을 직접 건드린다.
+
-- ~개 묶음으로 앞에 오는 반점 제거. 또 스택을 직접 건드린다.
if html_per_stack[#html_per_stack - 1] == ', ' then
+
if html_per_stack[#html_per_stack - 1] == ', ' then
html_per_stack[#html_per_stack - 1] = ' ' -- 공백은 필요하다
+
html_per_stack[#html_per_stack - 1] = ' ' -- 공백은 필요하다
end
+
end
   
if p.items[itemname].cannot_stack ~= nil then
+
if p.items[itemname].cannot_stack ~= nil then
table.insert( html_per_stack, '개 묶음으로 ' )
+
table.insert( html_per_stack, '개 묶음으로 ' )
else
+
else
table.insert( html_per_stack, '개 묶음으로 ' )
+
table.insert( html_per_stack, '개 묶음으로 ' )
end
+
end
table.insert( html_per_stack, '생성된다' )
+
table.insert( html_per_stack, '생성된다' )
   
table.insert( html_stacks, table.concat( html_per_stack ) )
+
table.insert( html_stacks, table.concat( html_per_stack ) )
end
+
end
  +
 
local stackwise_summaries = ''
+
local stackwise_summaries = ''
if #html_stacks == 1 then
+
if #html_stacks == 1 then
table.insert( html, html_stacks[1] )
+
table.insert( html, html_stacks[1] )
else
+
else
for i = 1, #html_stacks - 1 do
+
for i = 1, #html_stacks - 1 do
table.insert( html, html_stacks[ i ] )
+
table.insert( html, html_stacks[ i ] )
table.insert( html, stack_sep )
+
table.insert( html, stack_sep )
end
+
end
--table.insert( html, '그리고 ' )
+
--table.insert( html, '그리고 ' )
table.insert( html, html_stacks[#html_stacks] )
+
table.insert( html, html_stacks[#html_stacks] )
end
+
end
  +
 
-- 복붙 끝!
+
-- 복붙 끝!
   
table.insert( html, '.' )
+
table.insert( html, '.' )
  +
 
return table.concat( html )
+
return table.concat( html )
  +
 
 
end
 
end
   
 
p.base2_test = function()
 
p.base2_test = function()
   
items = {}
+
items = {}
for item_name, v in pairs( p.items ) do
+
for item_name, v in pairs( p.items ) do
table.insert( items, p.base2{ item_name, ["nocat"]=true } .. '\n\n' )
+
table.insert( items, p.base2{ item_name, ["nocat"]=true } .. '\n\n' )
end
+
end
   
table.sort( items )
+
table.sort( items )
  +
 
return table.concat(items)
+
return table.concat(items)
 
end
 
end
   
2,674번째 줄: 2,635번째 줄:
 
p.base3 = function( ... )
 
p.base3 = function( ... )
   
p.current_frame = mw.getCurrentFrame()
+
p.current_frame = mw.getCurrentFrame()
   
local args = { ... }
+
local args = { ... }
if args[1] == p.current_frame then
+
if args[1] == p.current_frame then
args = require( '모듈:ProcessArgs' ).merge( true )
+
args = require( '모듈:ProcessArgs' ).merge( true )
else
+
else
args = args[1]
+
args = args[1]
end
+
end
  +
 
local z = args[1]
+
local z = args[1]
  +
 
local html_java = {}
+
local html_java = {}
local html_java_u = {}
+
local html_java_u = {}
local html_bedrock = {}
+
local html_bedrock = {}
local html_bedrock_u = {}
+
local html_bedrock_u = {}
  +
 
local rErr = ""
+
local rErr = ""
  +
 
local zT = {}
+
local zT = {}
if args[1] == "!!!ALL!!!" then
+
if args[1] == "!!!ALL!!!" then
for item_name, v in pairs( p.items ) do
+
for item_name, v in pairs( p.items ) do
table.insert( zT, item_name )
+
table.insert( zT, item_name )
table.sort( zT )
+
table.sort( zT )
end
+
end
else
+
else
zT = mw.text.split( args[1], ',' )
+
zT = mw.text.split( args[1], ',' )
end
+
end
  +
 
for x, itemname in pairs( zT ) do
+
for x, itemname in pairs( zT ) do
  +
 
if p.items[itemname] == nil then
+
if p.items[itemname] == nil then
rErr = rErr .. "<span class='error'>Unknown item " .. itemname .. ".</span>\n"
+
rErr = rErr .. "<span class='error'>Unknown item " .. itemname .. ".</span>\n"
else
+
else
  +
 
local javaChances, javaUpcomingChances, bedrockChances, bedrockUpcomingChances
+
local javaChances, javaUpcomingChances, bedrockChances, bedrockUpcomingChances
  +
 
if args.java and args.java ~= '0' then
+
if args.java and args.java ~= '0' then
javaChances = q.single_item_find_values( itemname, 'poolsJava' )
+
javaChances = q.single_item_find_values( itemname, 'poolsJava' )
javaUpcomingChances = {}
+
javaUpcomingChances = {}
bedrockChances = {}
+
bedrockChances = {}
bedrockUpcomingChances = {}
+
bedrockUpcomingChances = {}
else
+
else
if args['java-upcoming'] and args['java-upcoming'] ~= '0' then
+
if args['java-upcoming'] and args['java-upcoming'] ~= '0' then
javaChances = q.single_item_find_values( itemname, 'poolsJavaUpcoming' )
+
javaChances = q.single_item_find_values( itemname, 'poolsJavaUpcoming' )
javaUpcomingChances = {}
+
javaUpcomingChances = {}
bedrockChances = {}
+
bedrockChances = {}
bedrockUpcomingChances = {}
+
bedrockUpcomingChances = {}
  +
else
else
 
if args.bedrock and args.bedrock ~= '0' then
+
if args.bedrock and args.bedrock ~= '0' then
javaChances = q.single_item_find_values( itemname, 'poolsBedrock' )
+
javaChances = q.single_item_find_values( itemname, 'poolsBedrock' )
javaUpcomingChances = {}
+
javaUpcomingChances = {}
bedrockChances = {}
+
bedrockChances = {}
bedrockUpcomingChances = {}
+
bedrockUpcomingChances = {}
  +
else
else
 
if args['bedrock-upcoming'] and args['bedrock-upcoming'] ~= '0' then
+
if args['bedrock-upcoming'] and args['bedrock-upcoming'] ~= '0' then
javaChances = q.single_item_find_values( itemname, 'poolsBedrockUpcoming' )
+
javaChances = q.single_item_find_values( itemname, 'poolsBedrockUpcoming' )
javaUpcomingChances = {}
+
javaUpcomingChances = {}
bedrockChances = {}
+
bedrockChances = {}
bedrockUpcomingChances = {}
+
bedrockUpcomingChances = {}
  +
else
else
 
javaChances = q.single_item_find_values( itemname, 'poolsJava' )
+
javaChances = q.single_item_find_values( itemname, 'poolsJava' )
javaUpcomingChances = q.single_item_find_values( itemname, 'poolsJavaUpcoming', javaChances )
+
javaUpcomingChances = q.single_item_find_values( itemname, 'poolsJavaUpcoming', javaChances )
bedrockChances = q.single_item_find_values( itemname, 'poolsBedrock', javaChances )
+
bedrockChances = q.single_item_find_values( itemname, 'poolsBedrock', javaChances )
bedrockUpcomingChances = q.single_item_find_values( itemname, 'poolsBedrockUpcoming', javaChances, bedrockChances )
+
bedrockUpcomingChances = q.single_item_find_values( itemname, 'poolsBedrockUpcoming', javaChances, bedrockChances )
  +
end
end
 
  +
end
end
 
  +
end
end
 
  +
end
end
 
  +
 
local any_current = q.tablelength( javaChances ) > 0
+
local any_current = q.tablelength( javaChances ) > 0
local any_changes_upcoming = q.tablelength( javaUpcomingChances ) > 0 and q.compare_tables( javaChances, javaUpcomingChances )
+
local any_changes_upcoming = q.tablelength( javaUpcomingChances ) > 0 and q.compare_tables( javaChances, javaUpcomingChances )
local any_standard = any_current or any_changes_upcoming
+
local any_standard = any_current or any_changes_upcoming
  +
 
local any_bedrock_current = q.tablelength( bedrockChances ) > 0
+
local any_bedrock_current = q.tablelength( bedrockChances ) > 0
local any_bedrock_upcoming = q.tablelength( bedrockUpcomingChances ) > 0 and q.compare_tables( bedrockChances, bedrockUpcomingChances )
+
local any_bedrock_upcoming = q.tablelength( bedrockUpcomingChances ) > 0 and q.compare_tables( bedrockChances, bedrockUpcomingChances )
local any_bedrock = any_bedrock_current or any_bedrock_upcoming
+
local any_bedrock = any_bedrock_current or any_bedrock_upcoming
  +
 
if any_current then
+
if any_current then
table.insert( html_java, p.base3_sub( itemname, javaChances ) )
+
table.insert( html_java, p.base3_sub( itemname, javaChances ) )
  +
end
end
 
if any_changes_upcoming then
+
if any_changes_upcoming then
table.insert( html_java_u, p.base3_sub( itemname, javaUpcomingChances ) )
+
table.insert( html_java_u, p.base3_sub( itemname, javaUpcomingChances ) )
  +
end
end
 
if any_bedrock_current then
+
if any_bedrock_current then
table.insert( html_bedrock, p.base3_sub( itemname, bedrockChances ) )
+
table.insert( html_bedrock, p.base3_sub( itemname, bedrockChances ) )
  +
end
end
 
if any_bedrock_upcoming then
+
if any_bedrock_upcoming then
table.insert( html_bedrock_u, p.base3_sub( itemname, bedrockUpcomingChances ) )
+
table.insert( html_bedrock_u, p.base3_sub( itemname, bedrockUpcomingChances ) )
  +
end
end
 
  +
 
end
+
end
end
+
end
  +
 
local output = rErr .. '{| class="wikitable sortable" \n! Item \n! Structure \n! Container \n! Quantity \n! Chance \n' .. table.concat( html_java )
+
local output = rErr .. '{| class="wikitable sortable" \n! 아이템 \n! 구조물 \n! 상자 \n! 수량 \n! 확률 \n' .. table.concat( html_java )
if q.tablelength( html_java_u ) > 0 then
+
if q.tablelength( html_java_u ) > 0 then
output = output .. '|-\n!colspan=5|' .. p['java-upcoming'] .. ' \n' .. table.concat( html_java_u )
+
output = output .. '|-\n!colspan=5|' .. p['java-upcoming'] .. ' \n' .. table.concat( html_java_u )
end
+
end
if q.tablelength( html_bedrock ) > 0 then
+
if q.tablelength( html_bedrock ) > 0 then
output = output .. '|-\n!colspan=5|' .. p.bedrock .. ' \n' .. table.concat( html_bedrock )
+
output = output .. '|-\n!colspan=5|' .. p.bedrock .. ' \n' .. table.concat( html_bedrock )
end
+
end
if q.tablelength( html_bedrock_u ) > 0 then
+
if q.tablelength( html_bedrock_u ) > 0 then
output = output .. '|-\n!colspan=5|' .. p['bedrock-upcoming'] .. ' \n' .. table.concat( html_bedrock_u )
+
output = output .. '|-\n!colspan=5|' .. p['bedrock-upcoming'] .. ' \n' .. table.concat( html_bedrock_u )
end
+
end
output = output .. '|}' .. p.current_frame:extensionTag( 'references', "", { group="note" } )
+
output = output .. '|}' .. p.current_frame:extensionTag( 'references', "", { group="note" } )
  +
 
return output
+
return output
 
end
 
end
   
 
p.base3_sub = function( itemname, chances )
 
p.base3_sub = function( itemname, chances )
local html = {}
+
local html = {}
local item_display_name = ''
+
local item_display_name = ''
local output = ""
+
local output = ""
lang = mw.getContentLanguage()
+
lang = mw.getContentLanguage()
  +
 
if p.items[itemname].title ~= nil then
+
if p.items[itemname].title ~= nil then
item_display_name = p.items[itemname].title
+
item_display_name = p.items[itemname].title
else
+
else
item_display_name = q.titlecase( string.gsub( itemname, '-', ' ' ) )
+
item_display_name = q.titlecase( string.gsub( itemname, '-', ' ' ) )
end
+
end
  +
 
local objectList = {}
+
local objectList = {}
local ns = q.tablelength( chances )
+
local ns = q.tablelength( chances )
local s = 0
+
local s = 0
local m = 0
+
local m = 0
  +
 
local rn = 0
+
local rn = 0
   
for stacksize, chest_details in pairs( chances ) do
+
for stacksize, chest_details in pairs( chances ) do
s = s + 1
+
s = s + 1
  +
 
local nc = q.tablelength( chest_details )
+
local nc = q.tablelength( chest_details )
local c = 0
+
local c = 0
for k, chest in pairs( chest_details ) do
+
for k, chest in pairs( chest_details ) do
c = c + 1
+
c = c + 1
rn = rn + 1
+
rn = rn + 1
local r = ""
+
local r = ""
  +
 
r = r .. '|' .. p.chests[chest.chest_name].container .. '\n|' .. stacksize .. '\n|' .. lang:formatNum( math.floor( chest.chance*1000 + 0.5 ) /10 ) .. ' %' .. '\n'
+
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
+
if ns ~= s or nc ~= c then
r = r
+
r = r
  +
end
end
 
  +
 
table.insert( objectList , { p.chests[chest.chest_name].structID , p.chests[chest.chest_name].structure, r } )
+
table.insert( objectList , { p.chests[chest.chest_name].structID , p.chests[chest.chest_name].structure, r } )
  +
 
end
+
end
m = m + nc
+
m = m + nc
end
+
end
table.sort( objectList, function(a,b) return a[1] < b[1] end )
+
table.sort( objectList, function(a,b) return a[1] < b[1] end )
local struct = ""
+
local struct = ""
local t = ""
+
local t = ""
local nt = 1
+
local nt = 1
local ntt = 0
+
local ntt = 0
for v, w in pairs( objectList ) do
+
for v, w in pairs( objectList ) do
ntt = ntt + 1
+
ntt = ntt + 1
if w[1] ~= struct then
+
if w[1] ~= struct then
if t ~= "" then
+
if t ~= "" then
output = output .. "|rowspan=" .. nt .. t
+
output = output .. "|rowspan=" .. nt .. t
  +
end
end
 
t = "|'''" .. p.current_frame:expandTemplate{ title = 'EnvLink', args = { w[2], id = w[1] } } .. "'''\n" .. w[3]
+
t = "|'''" .. p.current_frame:expandTemplate{ title = 'EnvLink', args = { w[2], id = w[1] } } .. "'''\n" .. w[3]
struct = w[1]
+
struct = w[1]
nt = 1
+
nt = 1
else
+
else
t = t .. w[3]
+
t = t .. w[3]
nt = nt + 1
+
nt = nt + 1
end
+
end
if ntt == m then
+
if ntt == m then
output = output .. "|rowspan=" .. nt .. t
+
output = output .. "|rowspan=" .. nt .. t
else
+
else
t = t .. '|-' .. '\n'
+
t = t .. '|-' .. '\n'
end
+
end
end
+
end
   
return "|-\n| rowspan=" .. m .. "|'''" .. p.getItem(itemname, item_display_name) .. "'''\n" .. output
+
return "|-\n| rowspan=" .. m .. "|'''" .. p.getItem(itemname, item_display_name) .. "'''\n" .. output
  +
 
 
end
 
end
   
 
p.getItem = function( itemname, item_display_name )
 
p.getItem = function( itemname, item_display_name )
local s = ""
+
local s = ""
local k = item_display_name
+
local k = item_display_name
local link = item_display_name
+
local link = item_display_name
local m = itemname
+
local m = itemname
  +
 
if p.items[itemname].title ~= nil then
+
if p.items[itemname].title ~= nil then
k = p.items[itemname].title
+
k = p.items[itemname].title
end
+
end
if p.items[itemname].link ~= nil then
+
if p.items[itemname].link ~= nil then
link = p.items[itemname].link
+
link = p.items[itemname].link
end
+
end
if p.items[itemname].id ~= nil then
+
if p.items[itemname].id ~= nil then
m = p.items[itemname].id
+
m = p.items[itemname].id
end
+
end
  +
 
if p.items[itemname][1] == "item" then
+
if p.items[itemname][1] == "item" then
s = p.current_frame:expandTemplate{ title = 'ItemLink', args = { link , k , id = m } }
+
s = p.current_frame:expandTemplate{ title = 'ItemLink', args = { link , k , id = m } }
elseif p.items[itemname][1] == "block" then
+
elseif p.items[itemname][1] == "block" then
s = p.current_frame:expandTemplate{ title = 'BlockLink', args = { link , k , id = m } }
+
s = p.current_frame:expandTemplate{ title = 'BlockLink', args = { link , k , id = m } }
end
+
end
if p.items[itemname].note ~= nil and p.items[itemname].note ~= "" then
+
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='참고', name=p.items[itemname].note } )
+
s = s .. p.current_frame:extensionTag( 'ref', p.notes[p.items[itemname].note], { group='note', name=p.items[itemname].note } )
end
+
end
return s
+
return s
  +
 
 
end
 
end
   
2,887번째 줄: 2,848번째 줄:
 
q = {
 
q = {
   
tablelength = function(T)
+
tablelength = function(T)
local count = 0
+
local count = 0
for _ in pairs(T) do count = count + 1 end
+
for _ in pairs(T) do count = count + 1 end
return count
+
return count
end,
+
end,
  +
 
deepcopy = function(orig)
+
deepcopy = function(orig)
local orig_type = type(orig)
+
local orig_type = type(orig)
local copy
+
local copy
if orig_type == 'table' then
+
if orig_type == 'table' then
copy = {}
+
copy = {}
for orig_key, orig_value in next, orig, nil do
+
for orig_key, orig_value in next, orig, nil do
copy[q.deepcopy(orig_key)] = q.deepcopy(orig_value)
+
copy[q.deepcopy(orig_key)] = q.deepcopy(orig_value)
end
+
end
setmetatable(copy, q.deepcopy(getmetatable(orig)))
+
setmetatable(copy, q.deepcopy(getmetatable(orig)))
else -- number, string, boolean, etc
+
else -- number, string, boolean, etc
copy = orig
+
copy = orig
end
+
end
return copy
+
return copy
end,
+
end,
  +
 
single_item_find_values = function( itemname, poolsKey, exclusions_param, other_exclusions_param )
+
single_item_find_values = function( itemname, poolsKey, exclusions_param, other_exclusions_param )
  +
 
local chances = {}
+
local chances = {}
  +
 
local exclusions = q.deepcopy(exclusions_param or {})
+
local exclusions = q.deepcopy(exclusions_param or {})
local other_exclusions = q.deepcopy(other_exclusions_param or {})
+
local other_exclusions = q.deepcopy(other_exclusions_param or {})
  +
 
for stacksize, other_exclusion_list in pairs(other_exclusions) do
+
for stacksize, other_exclusion_list in pairs(other_exclusions) do
if exclusions[stacksize] == nil then
+
if exclusions[stacksize] == nil then
exclusions[stacksize] = {}
+
exclusions[stacksize] = {}
end
+
end
for _, other_exclusion in pairs(other_exclusion_list) do
+
for _, other_exclusion in pairs(other_exclusion_list) do
local already_in_here = false
+
local already_in_here = false
for _, exclusion in pairs(exclusions[stacksize]) do
+
for _, exclusion in pairs(exclusions[stacksize]) do
if exclusion["chest_name"] == other_exclusion["chest_name"] and exclusion["chance"] == other_exclusion["chance"] then
+
if exclusion["chest_name"] == other_exclusion["chest_name"] and exclusion["chance"] == other_exclusion["chance"] then
already_in_here = true
+
already_in_here = true
  +
break
break
 
  +
end
end
 
  +
end
end
 
if not already_in_here then
+
if not already_in_here then
table.insert( exclusions[stacksize], other_exclusion )
+
table.insert( exclusions[stacksize], other_exclusion )
  +
end
end
 
  +
end
end
 
end
+
end
   
for chest_name, chest in pairs( p.chests ) do
+
for chest_name, chest in pairs( p.chests ) do
local poolchances = {}
+
local poolchances = {}
for k, pool in pairs( chest[poolsKey] or chest.poolsJava or {} ) do
+
for k, pool in pairs( chest[poolsKey] or chest.poolsJava or {} ) do
local poolitem = pool.items[itemname]
+
local poolitem = pool.items[itemname]
if poolitem ~= nil then
+
if poolitem ~= nil then
  +
 
local stacksize = poolitem[1]
+
local stacksize = poolitem[1]
if poolitem[1] ~= poolitem[2] then
+
if poolitem[1] ~= poolitem[2] then
stacksize = stacksize .. "–" .. poolitem[2]
+
stacksize = stacksize .. "–" .. poolitem[2]
  +
end
end
 
  +
 
local itemweight = poolitem[3]
+
local itemweight = poolitem[3]
  +
 
local pool_total_item_weight = 0
+
local pool_total_item_weight = 0
for itemname, item in pairs(pool.items) do
+
for itemname, item in pairs(pool.items) do
pool_total_item_weight = pool_total_item_weight + item[3]
+
pool_total_item_weight = pool_total_item_weight + item[3]
  +
end
end
 
  +
 
local chance = p.calc_chance_any_of_this_item_per_pool(
+
local chance = p.calc_chance_any_of_this_item_per_pool(
pool.rolls[1], pool.rolls[2],
+
pool.rolls[1], pool.rolls[2],
itemweight, pool_total_item_weight )
+
itemweight, pool_total_item_weight )
   
if poolchances[stacksize] == nil then
+
if poolchances[stacksize] == nil then
poolchances[stacksize] = chance
+
poolchances[stacksize] = chance
  +
else
else
 
poolchances[stacksize] = poolchances[stacksize] + (1 - poolchances[stacksize]) * chance
+
poolchances[stacksize] = poolchances[stacksize] + (1 - poolchances[stacksize]) * chance
  +
end
end
 
  +
end
end
 
  +
end
end
 
for stacksize, chance in pairs( poolchances ) do
+
for stacksize, chance in pairs( poolchances ) do
local excluded = false
+
local excluded = false
for _, exclusion in pairs( exclusions[stacksize] or {} ) do
+
for _, exclusion in pairs( exclusions[stacksize] or {} ) do
if exclusion["chest_name"] == chest_name and exclusion["chance"] == chance then
+
if exclusion["chest_name"] == chest_name and exclusion["chance"] == chance then
excluded = true
+
excluded = true
  +
break
break
 
  +
end
end
 
  +
end
end
 
if not excluded then
+
if not excluded then
if chances[stacksize] == nil then
+
if chances[stacksize] == nil then
chances[stacksize] = {}
+
chances[stacksize] = {}
  +
end
end
 
table.insert( chances[stacksize], { ["chance"]=chance, ["chest_name"]=chest_name, ["chest_type"]=( chest.chest_type or "chest" ) } )
+
table.insert( chances[stacksize], { ["chance"]=chance, ["chest_name"]=chest_name, ["chest_type"]=( chest.chest_type or "chest" ) } )
  +
end
end
 
  +
end
end
 
end
+
end
   
return chances
+
return chances
  +
 
end,
+
end,
  +
 
single_item_plural = function( itemname )
+
single_item_plural = function( itemname )
  +
 
if string.sub( itemname, -2 ) == 'ss'
+
if string.sub( itemname, -2 ) == 'ss'
or string.sub( itemname, -2 ) == 'ch'
+
or string.sub( itemname, -2 ) == 'ch'
or string.sub( itemname, -2 ) == 'sh'
+
or string.sub( itemname, -2 ) == 'sh'
or string.sub( itemname, -1 ) == 's' then
+
or string.sub( itemname, -1 ) == 's' then
return itemname .. 'es'
+
return itemname .. 'es'
end
+
end
  +
 
return itemname .. 's'
+
return itemname .. 's'
  +
 
end,
+
end,
  +
 
massage_args = function( args )
+
massage_args = function( args )
   
-- find what columns to put
+
-- find what columns to put
  +
 
local columns = {}
+
local columns = {}
  +
 
for k, _arg in pairs(args) do
+
for k, _arg in pairs(args) do
if p.columns[_arg] ~= nil then
+
if p.columns[_arg] ~= nil then
columns[_arg] = true
+
columns[_arg] = true
  +
end
end
 
end
+
end
  +
 
if q.tablelength(columns) == 0 then
+
if q.tablelength(columns) == 0 then
for column_name, v in pairs(p.columns) do
+
for column_name, v in pairs(p.columns) do
columns[column_name] = true
+
columns[column_name] = true
  +
end
end
 
end
+
end
  +
 
-- find what chests to show
+
-- find what chests to show
   
local chests = {}
+
local chests = {}
  +
 
for k, _arg in pairs(args) do
+
for k, _arg in pairs(args) do
if p.chests[_arg] ~= nil then
+
if p.chests[_arg] ~= nil then
table.insert( chests, _arg )
+
table.insert( chests, _arg )
elseif p.synonyms[_arg] ~= nil then
+
elseif p.synonyms[_arg] ~= nil then
table.insert( chests, p.synonyms[_arg] )
+
table.insert( chests, p.synonyms[_arg] )
  +
end
end
 
if p.display_names[_arg] ~= nil then
+
if p.display_names[_arg] ~= nil then
local chestname = _arg
+
local chestname = _arg
if p.chests[chestname] == nil then
+
if p.chests[chestname] == nil then
chestname = p.synonyms[_arg]
+
chestname = p.synonyms[_arg]
  +
end
end
 
p.chests[chestname].display_name = p.display_names[_arg]
+
p.chests[chestname].display_name = p.display_names[_arg]
  +
end
end
 
end
+
end
  +
 
if #chests == 0 then
+
if #chests == 0 then
for chest_name, chest in pairs(p.chests) do
+
for chest_name, chest in pairs(p.chests) do
local chest_type = ( chest.chest_type or "chest" )
+
local chest_type = ( chest.chest_type or "chest" )
if chest_type == "chest" or chest_type == "minecart with chest" then
+
if chest_type == "chest" or chest_type == "minecart with chest" then
table.insert( chests, chest_name )
+
table.insert( chests, chest_name )
  +
end
end
 
  +
end
end
 
end
+
end
  +
 
table.sort( chests )
+
table.sort( chests )
  +
 
return chests, columns
+
return chests, columns
  +
 
end,
+
end,
   
sort_items = function( e1, e2 )
+
sort_items = function( e1, e2 )
  +
 
if e1.chanceany ~= e2.chanceany then return ( e1.chanceany > e2.chanceany ) end
+
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.avgamount ~= e2.avgamount then return ( e1.avgamount > e2.avgamount ) end
  +
 
if e1.material == nil then
+
if e1.material == nil then
  +
 
e1.material = 0
+
e1.material = 0
if string.find( e1.itemname, "leather" ) ~= nil then e1.material = 1 end
+
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, "iron" ) ~= nil then e1.material = 2 end
if string.find( e1.itemname, "gold" ) ~= nil then e1.material = 3 end
+
if string.find( e1.itemname, "gold" ) ~= nil then e1.material = 3 end
if string.find( e1.itemname, "diamond" ) ~= nil then e1.material = 4 end
+
if string.find( e1.itemname, "diamond" ) ~= nil then e1.material = 4 end
e1.armor = 0
+
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, "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, "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, "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
+
if string.find( e1.itemname, "boots" ) ~= nil then e1.armor = 4 end
  +
 
end
+
end
  +
 
if e2.material == nil then
+
if e2.material == nil then
  +
 
e2.material = 0
+
e2.material = 0
if string.find( e2.itemname, "leather" ) ~= nil then e2.material = 1 end
+
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, "iron" ) ~= nil then e2.material = 2 end
if string.find( e2.itemname, "gold" ) ~= nil then e2.material = 3 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
+
if string.find( e2.itemname, "diamond" ) ~= nil then e2.material = 4 end
e2.armor = 0
+
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, "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, "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, "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
+
if string.find( e2.itemname, "boots" ) ~= nil then e2.armor = 4 end
  +
 
end
+
end
  +
 
if e1.material ~= e2.material then return ( e1.material < e2.material ) 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
+
if e1.armor ~= e2.armor then return ( e1.armor < e2.armor ) end
  +
 
return ( e1.itemname < e2.itemname )
+
return ( e1.itemname < e2.itemname )
  +
 
end,
+
end,
  +
 
fill_in_chest_derivative_data = function( chest_names )
+
fill_in_chest_derivative_data = function( chest_names )
   
for k, chest_name in pairs(chest_names) do
+
for k, chest_name in pairs(chest_names) do
local chest = p.chests[chest_name]
+
local chest = p.chests[chest_name]
if chest == nil then break end
+
if chest == nil then break end
   
chest.allRollsJava = {}
+
chest.allRollsJava = {}
chest.itemDataJava = {}
+
chest.itemDataJava = {}
for k, pool in pairs( chest.poolsJava or {} ) do
+
for k, pool in pairs( chest.poolsJava or {} ) do
table.insert( chest.allRollsJava, ( pool.rolls[1] == pool.rolls[2] and pool.rolls[1] or pool.rolls[1]..'–'..pool.rolls[2] ) )
+
table.insert( chest.allRollsJava, ( pool.rolls[1] == pool.rolls[2] and pool.rolls[1] or pool.rolls[1]..'–'..pool.rolls[2] ) )
   
local total_weight = 0
+
local total_weight = 0
for itemname, item in pairs(pool.items) do
+
for itemname, item in pairs(pool.items) do
total_weight = total_weight + item[3]
+
total_weight = total_weight + item[3]
  +
end
end
 
pool.totalweight = total_weight
+
pool.totalweight = total_weight
   
q.fill_in_chest_item_details( chest.itemDataJava, pool, #chest.allRollsJava )
+
q.fill_in_chest_item_details( chest.itemDataJava, pool, #chest.allRollsJava )
  +
end
end
 
   
chest.allRollsJavaUpcoming = {}
+
chest.allRollsJavaUpcoming = {}
chest.itemDataJavaUpcoming = {}
+
chest.itemDataJavaUpcoming = {}
for k, pool in pairs( chest.poolsJavaUpcoming or chest.poolsJava or {} ) do
+
for k, pool in pairs( chest.poolsJavaUpcoming or chest.poolsJava or {} ) do
table.insert( chest.allRollsJavaUpcoming, ( pool.rolls[1] == pool.rolls[2] and pool.rolls[1] or pool.rolls[1]..'–'..pool.rolls[2] ) )
+
table.insert( chest.allRollsJavaUpcoming, ( pool.rolls[1] == pool.rolls[2] and pool.rolls[1] or pool.rolls[1]..'–'..pool.rolls[2] ) )
   
local total_weight = 0
+
local total_weight = 0
for itemname, item in pairs(pool.items) do
+
for itemname, item in pairs(pool.items) do
total_weight = total_weight + item[3]
+
total_weight = total_weight + item[3]
  +
end
end
 
pool.totalweight = total_weight
+
pool.totalweight = total_weight
   
q.fill_in_chest_item_details( chest.itemDataJavaUpcoming, pool, #chest.allRollsJavaUpcoming )
+
q.fill_in_chest_item_details( chest.itemDataJavaUpcoming, pool, #chest.allRollsJavaUpcoming )
  +
end
end
 
   
chest.allRollsBedrock = {}
+
chest.allRollsBedrock = {}
chest.itemDataBedrock = {}
+
chest.itemDataBedrock = {}
for k, pool in pairs( chest.poolsBedrock or chest.poolsJava or {} ) do
+
for k, pool in pairs( chest.poolsBedrock or chest.poolsJava or {} ) do
table.insert( chest.allRollsBedrock, ( pool.rolls[1] == pool.rolls[2] and pool.rolls[1] or pool.rolls[1]..'–'..pool.rolls[2] ) )
+
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
+
local total_weight = 0
for itemname, item in pairs(pool.items) do
+
for itemname, item in pairs(pool.items) do
total_weight = total_weight + item[3]
+
total_weight = total_weight + item[3]
  +
end
end
 
pool.totalweight = total_weight
+
pool.totalweight = total_weight
   
q.fill_in_chest_item_details( chest.itemDataBedrock, pool, #chest.allRollsBedrock )
+
q.fill_in_chest_item_details( chest.itemDataBedrock, pool, #chest.allRollsBedrock )
  +
end
end
 
   
chest.allRollsBedrockUpcoming = {}
+
chest.allRollsBedrockUpcoming = {}
chest.itemDataBedrockUpcoming = {}
+
chest.itemDataBedrockUpcoming = {}
for k, pool in pairs( chest.poolsBedrockUpcoming or chest.poolsJava or {} ) do
+
for k, pool in pairs( chest.poolsBedrockUpcoming or chest.poolsJava or {} ) do
table.insert( chest.allRollsBedrockUpcoming, ( pool.rolls[1] == pool.rolls[2] and pool.rolls[1] or pool.rolls[1]..'–'..pool.rolls[2] ) )
+
table.insert( chest.allRollsBedrockUpcoming, ( pool.rolls[1] == pool.rolls[2] and pool.rolls[1] or pool.rolls[1]..'–'..pool.rolls[2] ) )
   
local total_weight = 0
+
local total_weight = 0
for itemname, item in pairs(pool.items) do
+
for itemname, item in pairs(pool.items) do
total_weight = total_weight + item[3]
+
total_weight = total_weight + item[3]
  +
end
end
 
pool.totalweight = total_weight
+
pool.totalweight = total_weight
   
q.fill_in_chest_item_details( chest.itemDataBedrockUpcoming, pool, #chest.allRollsBedrockUpcoming )
+
q.fill_in_chest_item_details( chest.itemDataBedrockUpcoming, pool, #chest.allRollsBedrockUpcoming )
  +
end
end
 
end
+
end
end,
+
end,
   
fill_in_chest_item_details = function( data, pool, ct )
+
fill_in_chest_item_details = function( data, pool, ct )
for item_name, item in pairs(pool.items) do
+
for item_name, item in pairs(pool.items) do
if p.items[item_name] then
+
if p.items[item_name] then
local min_stacksize = item[1]
+
local min_stacksize = item[1]
local max_stacksize = item[2]
+
local max_stacksize = item[2]
local min_pool_rolls = pool.rolls[1]
+
local min_pool_rolls = pool.rolls[1]
local max_pool_rolls = pool.rolls[2]
+
local max_pool_rolls = pool.rolls[2]
local item_weight = item[3]
+
local item_weight = item[3]
  +
 
if data[item_name] == nil then
+
if data[item_name] == nil then
data[item_name] = {
+
data[item_name] = {
avgamount = 0,
+
avgamount = 0,
chanceany = 0,
+
chanceany = 0,
itemname = item_name,
+
itemname = item_name,
sortsize = {},
+
sortsize = {},
sortweight = {},
+
sortweight = {},
sizes = {},
+
sizes = {},
weights = {},
+
weights = {},
  +
}
}
 
for i = 1, ct-1 do
+
for i = 1, ct-1 do
data[item_name].sortsize[i] = 0
+
data[item_name].sortsize[i] = 0
data[item_name].sortweight[i] = 0
+
data[item_name].sortweight[i] = 0
data[item_name].sizes[i] = '—'
+
data[item_name].sizes[i] = '—'
data[item_name].weights[i] = '—'
+
data[item_name].weights[i] = '—'
  +
end
end
 
  +
end
end
 
   
data[item_name].avgamount = data[item_name].avgamount + p.calc_average_amount_this_item_per_pool(
+
data[item_name].avgamount = data[item_name].avgamount + p.calc_average_amount_this_item_per_pool(
min_stacksize, max_stacksize,
+
min_stacksize, max_stacksize,
min_pool_rolls, max_pool_rolls,
+
min_pool_rolls, max_pool_rolls,
item_weight, pool.totalweight )
+
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(
+
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,
+
min_pool_rolls, max_pool_rolls,
item_weight, pool.totalweight )
+
item_weight, pool.totalweight )
   
data[item_name].sortsize[ct] = ( min_stacksize + max_stacksize ) / 2
+
data[item_name].sortsize[ct] = ( min_stacksize + max_stacksize ) / 2
data[item_name].sortweight[ct] = item_weight;
+
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].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 } }
+
data[item_name].weights[ct] = p.current_frame:expandTemplate{ title = 'frac', args = { item_weight, pool.totalweight } }
  +
end
end
 
end
+
end
   
for item_name, d in pairs(data) do
+
for item_name, d in pairs(data) do
if not d.sizes[ct] then
+
if not d.sizes[ct] then
d.sortsize[ct] = 0
+
d.sortsize[ct] = 0
d.sortweight[ct] = 0
+
d.sortweight[ct] = 0
d.sizes[ct] = '—'
+
d.sizes[ct] = '—'
d.weights[ct] = '—'
+
d.weights[ct] = '—'
  +
end
end
 
end
+
end
end,
+
end,
   
construct_ordered_items_from_first_chest = function( chest_names, suffix )
+
construct_ordered_items_from_first_chest = function( chest_names, suffix )
local items_from_first_table = {}
+
local items_from_first_table = {}
local item_chests = {}
+
local item_chests = {}
local item_names_ordered = {}
+
local item_names_ordered = {}
for item_name, item in pairs( p.chests[chest_names[1]]['itemData'..suffix] ) do
+
for item_name, item in pairs( p.chests[chest_names[1]]['itemData'..suffix] ) do
table.insert( items_from_first_table, item )
+
table.insert( items_from_first_table, item )
end
+
end
  +
 
table.sort( items_from_first_table, q.sort_items )
+
table.sort( items_from_first_table, q.sort_items )
  +
 
for k, item in pairs( items_from_first_table ) do
+
for k, item in pairs( items_from_first_table ) do
table.insert( item_names_ordered, item.itemname )
+
table.insert( item_names_ordered, item.itemname )
item_chests[item.itemname] = true
+
item_chests[item.itemname] = true
end
+
end
  +
 
return item_names_ordered, item_chests
+
return item_names_ordered, item_chests
end,
+
end,
   
get_ordered_items_from_other_chests = function( chest_names, item_chests, suffix )
+
get_ordered_items_from_other_chests = function( chest_names, item_chests, suffix )
local items_not_from_first_table = {}
+
local items_not_from_first_table = {}
  +
 
for chest_idx = 2, #chest_names do
+
for chest_idx = 2, #chest_names do
for item_name, item in pairs( p.chests[chest_names[chest_idx]]['itemData'..suffix] ) do
+
for item_name, item in pairs( p.chests[chest_names[chest_idx]]['itemData'..suffix] ) do
if item_chests[item_name] == nil then
+
if item_chests[item_name] == nil then
p.items[item_name].itemname = item_name
+
p.items[item_name].itemname = item_name
table.insert( items_not_from_first_table, p.chests[chest_names[chest_idx]]['itemData'..suffix][item_name] )
+
table.insert( items_not_from_first_table, p.chests[chest_names[chest_idx]]['itemData'..suffix][item_name] )
item_chests[item_name] = true
+
item_chests[item_name] = true
  +
end
end
 
  +
end
end
 
end
+
end
   
table.sort( items_not_from_first_table, q.sort_items )
+
table.sort( items_not_from_first_table, q.sort_items )
  +
 
return items_not_from_first_table
+
return items_not_from_first_table
end,
+
end,
   
add_other_items_to_first_list = function( chest_names, item_names_ordered, item_chests, items_not_from_first_table )
+
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
+
for k, item in pairs( items_not_from_first_table ) do
table.insert( item_names_ordered, item.itemname )
+
table.insert( item_names_ordered, item.itemname )
end
+
end
  +
 
return item_names_ordered
+
return item_names_ordered
end,
+
end,
   
set_up_ordered_item_rows = function( chest_names, item_names_ordered, suffix )
+
set_up_ordered_item_rows = function( chest_names, item_names_ordered, suffix )
for k, itemname in pairs(item_names_ordered) do
+
for k, itemname in pairs(item_names_ordered) do
item_names_ordered[k] = {itemname}
+
item_names_ordered[k] = {itemname}
for chest_idx = 1, #chest_names do
+
for chest_idx = 1, #chest_names do
if suffix == 'JavaUpcoming' or p.chests[chest_names[chest_idx]]['pools'..suffix] ~= nil then
+
if suffix == 'JavaUpcoming' or p.chests[chest_names[chest_idx]]['pools'..suffix] ~= nil then
local item_data = p.chests[chest_names[chest_idx]]['itemData'..suffix][itemname]
+
local item_data = p.chests[chest_names[chest_idx]]['itemData'..suffix][itemname]
if item_data == nil then
+
if item_data == nil then
table.insert( item_names_ordered[k], false )
+
table.insert( item_names_ordered[k], false )
  +
else
else
 
table.insert( item_names_ordered[k], item_data )
+
table.insert( item_names_ordered[k], item_data )
  +
end
end
 
  +
end
end
 
  +
end
end
 
end
+
end
   
return item_names_ordered
+
return item_names_ordered
end,
+
end,
   
construct_ordered_item_rows = function( chest_names, suffix )
+
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
+
-- 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 )
+
local item_names_ordered, item_chests = q.construct_ordered_items_from_first_chest( chest_names, suffix )
  +
 
if #chest_names > 1 then
+
if #chest_names > 1 then
-- after that, sort all the remaining items in list order
+
-- 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 )
+
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 )
+
item_names_ordered = q.add_other_items_to_first_list( chest_names, item_names_ordered, item_chests, items_not_from_first_table )
end
+
end
   
-- set up item_names_ordered so that each is a row, representing chest values
+
-- 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 )
+
item_names_ordered = q.set_up_ordered_item_rows( chest_names, item_names_ordered, suffix )
  +
 
return item_names_ordered
+
return item_names_ordered
end,
+
end,
   
print_table = function( chest_names, columns, ordered_item_rows, suffix )
+
print_table = function( chest_names, columns, ordered_item_rows, suffix )
   
local html = {}
+
local html = {}
  +
 
local use_roll_row = false
+
local use_roll_row = false
local use_superheader = false
+
local use_superheader = false
local superheader_sizes = {}
+
local superheader_sizes = {}
for i = 1, #chest_names do
+
for i = 1, #chest_names do
sh = p.chests[chest_names[i]].superheader
+
sh = p.chests[chest_names[i]].superheader
if sh ~= nil then
+
if sh ~= nil then
if superheader_sizes[sh] == nil then
+
if superheader_sizes[sh] == nil then
superheader_sizes[sh] = 0
+
superheader_sizes[sh] = 0
  +
end
end
 
superheader_sizes[sh] = superheader_sizes[sh] + 1
+
superheader_sizes[sh] = superheader_sizes[sh] + 1
use_superheader = true
+
use_superheader = true
  +
end
end
 
local allRolls = p.chests[chest_names[i]]['allRolls'..suffix]
+
local allRolls = p.chests[chest_names[i]]['allRolls'..suffix]
if #allRolls > 1 then
+
if #allRolls > 1 then
use_roll_row = true
+
use_roll_row = true
  +
end
end
 
end
+
end
if columns['stacksize'] == nil and columns['weight'] == nil then
+
if columns['stacksize'] == nil and columns['weight'] == nil then
use_roll_row = false
+
use_roll_row = false
end
+
end
  +
 
local rowspan = ( #chest_names > 1 and 1 or 0 ) + ( use_superheader and 1 or 0 ) + 1
+
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
+
local hide_col_description = rowspan > 1 and q.tablelength(columns) == 1
if use_roll_row then
+
if use_roll_row then
rowspan = rowspan + 1
+
rowspan = rowspan + 1
end
+
end
  +
 
if q.tablelength(columns) == 1 then
+
if q.tablelength(columns) == 1 then
for column_name, v in pairs(columns) do
+
for column_name, v in pairs(columns) do
table.insert( html, "Values represent " )
+
table.insert( html, "Values represent " )
table.insert( html, p.columns[column_name] )
+
table.insert( html, p.columns[column_name] )
table.insert( html, "\n" )
+
table.insert( html, "\n" )
  +
end
end
 
end
+
end
   
if #chest_names == 1 then
+
if #chest_names == 1 then
  +
 
if q.tablelength(columns) == 1 then
+
if q.tablelength(columns) == 1 then
table.insert( html, "<br>" )
+
table.insert( html, "<br>" )
  +
end
end
 
  +
 
local chest_name = chest_names[1]
+
local chest_name = chest_names[1]
local allRolls = p.chests[chest_name]['allRolls'..suffix]
+
local allRolls = p.chests[chest_name]['allRolls'..suffix]
local chest_type = p.chests[chest_name].chest_type or "chest"
+
local chest_type = p.chests[chest_name].chest_type or "chest"
   
local display_name = p.chests[chest_name].display_name
+
local display_name = p.chests[chest_name].display_name
   
chest_name = chest_name:gsub( "-", " " )
+
chest_name = chest_name:gsub( "-", " " )
  +
 
table.insert( html, "Each " )
+
table.insert( html, "Each " )
table.insert( html, display_name or chest_name )
+
table.insert( html, display_name or chest_name )
if chest_type ~= 'chest' and chest_type ~= 'minecart with chest' then
+
if chest_type ~= 'chest' and chest_type ~= 'minecart with chest' then
table.insert( html, " contains " )
+
table.insert( html, " contains " )
else
+
else
table.insert( html, " chest contains " )
+
table.insert( html, " chest contains " )
  +
end
end
 
if #allRolls == 1 then
+
if #allRolls == 1 then
table.insert( html, allRolls[1] )
+
table.insert( html, allRolls[1] )
table.insert( html, " item stacks, " )
+
table.insert( html, " item stacks, " )
else
+
else
table.insert( html, ' items drawn from ' )
+
table.insert( html, ' items drawn from ' )
table.insert( html, #allRolls )
+
table.insert( html, #allRolls )
table.insert( html, ' pools, ' )
+
table.insert( html, ' pools, ' )
  +
end
end
 
table.insert( html, " with the following distribution: \n" )
+
table.insert( html, " with the following distribution: \n" )
end
+
end
  +
 
table.insert( html, '<div style="overflow:auto">\n' )
+
table.insert( html, '<div style="overflow:auto">\n' )
table.insert( html, "<table class='wikitable sortable jquery-tablesorter'>\n" )
+
table.insert( html, "<table class='wikitable sortable jquery-tablesorter'>\n" )
table.insert( html, "<tr>\n" )
+
table.insert( html, "<tr>\n" )
table.insert( html, "<th rowspan=" )
+
table.insert( html, "<th rowspan=" )
table.insert( html, ( rowspan - ( hide_col_description and 1 or 0 ) ) )
+
table.insert( html, ( rowspan - ( hide_col_description and 1 or 0 ) ) )
table.insert( html, "></th>\n" )
+
table.insert( html, "></th>\n" )
  +
 
local superheader_cols_used = {}
+
local superheader_cols_used = {}
  +
 
if #chest_names > 1 then
+
if #chest_names > 1 then
local row1, row2 = {}, {}
+
local row1, row2 = {}, {}
   
for i = 1, #chest_names do
+
for i = 1, #chest_names do
  +
 
if suffix == 'JavaUpcoming' or p.chests[chest_names[i]]['pools'..suffix] ~= nil then
+
if suffix == 'JavaUpcoming' or p.chests[chest_names[i]]['pools'..suffix] ~= nil then
local allRolls = p.chests[chest_names[i]]['allRolls'..suffix]
+
local allRolls = p.chests[chest_names[i]]['allRolls'..suffix]
local colspan = q.tablelength(columns)
+
local colspan = q.tablelength(columns)
local allRollsSpan = #allRolls == 0 and 1 or #allRolls
+
local allRollsSpan = #allRolls == 0 and 1 or #allRolls
if columns['stacksize'] ~= nil then
+
if columns['stacksize'] ~= nil then
colspan = colspan - 1 + allRollsSpan
+
colspan = colspan - 1 + allRollsSpan
  +
end
end
 
if columns['weight'] ~= nil then
+
if columns['weight'] ~= nil then
colspan = colspan - 1 + allRollsSpan
+
colspan = colspan - 1 + allRollsSpan
  +
end
end
 
local row = row1
+
local row = row1
  +
 
rowspan = 1
+
rowspan = 1
if use_superheader then
+
if use_superheader then
sh = p.chests[chest_names[i]].superheader
+
sh = p.chests[chest_names[i]].superheader
if sh ~= nil then
+
if sh ~= nil then
if superheader_cols_used[sh] == nil then
+
if superheader_cols_used[sh] == nil then
table.insert( row, "<th colspan=" )
+
table.insert( row, "<th colspan=" )
table.insert( row, ( colspan * superheader_sizes[sh] ) )
+
table.insert( row, ( colspan * superheader_sizes[sh] ) )
table.insert( row, ">" )
+
table.insert( row, ">" )
table.insert( row, sh )
+
table.insert( row, sh )
table.insert( row, "</th>\n" )
+
table.insert( row, "</th>\n" )
superheader_cols_used[sh] = 0
+
superheader_cols_used[sh] = 0
  +
end
end
 
row = row2
+
row = row2
  +
else
else
 
rowspan = rowspan + 1
+
rowspan = rowspan + 1
  +
end
end
 
  +
end
end
 
if use_roll_row and hide_col_description and #allRolls < 2 then
+
if use_roll_row and hide_col_description and #allRolls < 2 then
rowspan = rowspan + 1
+
rowspan = rowspan + 1
  +
end
end
 
   
table.insert( row, "<th colspan=" )
+
table.insert( row, "<th colspan=" )
table.insert( row, colspan )
+
table.insert( row, colspan )
if rowspan > 1 then
+
if rowspan > 1 then
table.insert( row, " rowspan=" )
+
table.insert( row, " rowspan=" )
table.insert( row, rowspan )
+
table.insert( row, rowspan )
  +
end
end
 
table.insert( row, ">" )
+
table.insert( row, ">" )
table.insert( row, p.chests[ chest_names[i] ].header )
+
table.insert( row, p.chests[ chest_names[i] ].header )
if #allRolls > 0 then
+
if #allRolls > 0 then
table.insert( row, ' <br><span style="font-weight:normal; font-style:italic; font-size:11px;">(' )
+
table.insert( row, ' <br><span style="font-weight:normal; font-style:italic; font-size:11px;">(' )
if #allRolls == 1 then
+
if #allRolls == 1 then
table.insert( row, allRolls[1] )
+
table.insert( row, allRolls[1] )
  +
else
else
 
local s = ( #allRolls > 2 and ', ' or ' ' )
+
local s = ( #allRolls > 2 and ', ' or ' ' )
for i = 1, #allRolls-1 do
+
for i = 1, #allRolls-1 do
table.insert( row, allRolls[i] )
+
table.insert( row, allRolls[i] )
table.insert( row, s )
+
table.insert( row, s )
  +
end
end
 
table.insert( row, 'and ' )
+
table.insert( row, 'and ' )
table.insert( row, allRolls[#allRolls] )
+
table.insert( row, allRolls[#allRolls] )
  +
end
end
 
table.insert( row, ' stacks)</span>' )
+
table.insert( row, ' stacks)</span>' )
  +
end
end
 
table.insert( row, "</th>\n" )
+
table.insert( row, "</th>\n" )
  +
end
end
 
  +
end
end
 
  +
 
table.insert( html, table.concat( row1 ) )
+
table.insert( html, table.concat( row1 ) )
table.insert( html, "</tr><tr>\n" )
+
table.insert( html, "</tr><tr>\n" )
if #row2 then
+
if #row2 then
table.insert( html, table.concat( row2 ) )
+
table.insert( html, table.concat( row2 ) )
table.insert( html, "</tr><tr>\n" )
+
table.insert( html, "</tr><tr>\n" )
  +
end
end
 
end
+
end
   
if not hide_col_description then
+
if not hide_col_description then
local headersort_th_open
+
local headersort_th_open
if use_roll_row then
+
if use_roll_row then
headersort_th_open = "<th rowspan='2' class='headersort' role='columnheader button' data-sort-type='number'> <abbr title='"
+
headersort_th_open = "<th rowspan='2' class='headersort' role='columnheader button' data-sort-type='number'> <abbr title='"
else
+
else
headersort_th_open = "<th class='headersort' role='columnheader button' data-sort-type='number'> <abbr title='"
+
headersort_th_open = "<th class='headersort' role='columnheader button' data-sort-type='number'> <abbr title='"
  +
end
end
 
for i = 1, #chest_names do
+
for i = 1, #chest_names do
if suffix == 'JavaUpcoming' or p.chests[chest_names[i]]['pools'..suffix] ~= nil then
+
if suffix == 'JavaUpcoming' or p.chests[chest_names[i]]['pools'..suffix] ~= nil then
local allRolls = p.chests[chest_names[i]]['allRolls'..suffix]
+
local allRolls = p.chests[chest_names[i]]['allRolls'..suffix]
local allRollsSpan = #allRolls == 0 and 1 or #allRolls
+
local allRollsSpan = #allRolls == 0 and 1 or #allRolls
local headersort_th_colspan_open
+
local headersort_th_colspan_open
if #allRolls > 1 then
+
if #allRolls > 1 then
headersort_th_colspan_open = "<th colspan='" .. allRollsSpan .. "' role='columnheader'> <abbr title='"
+
headersort_th_colspan_open = "<th colspan='" .. allRollsSpan .. "' role='columnheader'> <abbr title='"
  +
else
else
 
headersort_th_colspan_open = headersort_th_open
+
headersort_th_colspan_open = headersort_th_open
  +
end
end
 
   
if columns['stacksize'] ~= nil then
+
if columns['stacksize'] ~= nil then
table.insert( html, headersort_th_colspan_open )
+
table.insert( html, headersort_th_colspan_open )
table.insert( html, p.columns['stacksize'] )
+
table.insert( html, p.columns['stacksize'] )
table.insert( html, "'> Stack Size </abbr></th>\n" )
+
table.insert( html, "'> Stack Size </abbr></th>\n" )
  +
end
end
 
if columns['weight'] ~= nil then
+
if columns['weight'] ~= nil then
table.insert( html, headersort_th_colspan_open )
+
table.insert( html, headersort_th_colspan_open )
table.insert( html, p.columns['weight'] )
+
table.insert( html, p.columns['weight'] )
table.insert( html, "'> Weight" )
+
table.insert( html, "'> Weight" )
table.insert( html, "</abbr></th>\n" )
+
table.insert( html, "</abbr></th>\n" )
  +
end
end
 
if columns['items'] ~= nil then
+
if columns['items'] ~= nil then
table.insert( html, headersort_th_open )
+
table.insert( html, headersort_th_open )
table.insert( html, p.columns['items'] )
+
table.insert( html, p.columns['items'] )
table.insert( html, "'> # Items </abbr></th>\n" )
+
table.insert( html, "'> # Items </abbr></th>\n" )
  +
end
end
 
if columns['chance'] ~= nil then
+
if columns['chance'] ~= nil then
table.insert( html, headersort_th_open )
+
table.insert( html, headersort_th_open )
table.insert( html, p.columns['chance'] )
+
table.insert( html, p.columns['chance'] )
table.insert( html, "'> Chance </abbr></th>\n" )
+
table.insert( html, "'> Chance </abbr></th>\n" )
  +
end
end
 
if columns['chests'] ~= nil then
+
if columns['chests'] ~= nil then
table.insert( html, headersort_th_open )
+
table.insert( html, headersort_th_open )
table.insert( html, p.columns['chests'] )
+
table.insert( html, p.columns['chests'] )
table.insert( html, "'> # Chests </abbr></th>\n" )
+
table.insert( html, "'> # Chests </abbr></th>\n" )
  +
end
end
 
  +
end
end
 
  +
end
end
 
table.insert( html, "</tr><tr>\n" )
+
table.insert( html, "</tr><tr>\n" )
end
+
end
  +
 
if use_roll_row then
+
if use_roll_row then
local rowcols = ( columns['stacksize'] ~= nil and 1 or 0 ) + ( columns['weight'] ~= nil and 1 or 0 )
+
local rowcols = ( columns['stacksize'] ~= nil and 1 or 0 ) + ( columns['weight'] ~= nil and 1 or 0 )
for i = 1, #chest_names do
+
for i = 1, #chest_names do
local allRolls = p.chests[chest_names[i]]['allRolls'..suffix]
+
local allRolls = p.chests[chest_names[i]]['allRolls'..suffix]
if #allRolls > 1 then
+
if #allRolls > 1 then
for j = 1, rowcols do
+
for j = 1, rowcols do
for k = 1, #allRolls do
+
for k = 1, #allRolls do
table.insert( html, "<th class='headersort' role='columnheader button' data-sort-type='number' style='font-weight:normal'><abbr title='The chest will draw " )
+
table.insert( html, "<th class='headersort' role='columnheader button' data-sort-type='number' style='font-weight:normal'><abbr title='The chest will draw " )
table.insert( html, allRolls[k] )
+
table.insert( html, allRolls[k] )
table.insert( html, " stack(s) randomly from this pool.'>" )
+
table.insert( html, " stack(s) randomly from this pool.'>" )
table.insert( html, allRolls[k] )
+
table.insert( html, allRolls[k] )
table.insert( html, "×</abbr></th>\n" )
+
table.insert( html, "×</abbr></th>\n" )
  +
end
end
 
  +
end
end
 
  +
end
end
 
  +
end
end
 
table.insert( html, "</tr><tr>\n" )
+
table.insert( html, "</tr><tr>\n" )
end
+
end
   
for i = 1, #ordered_item_rows do
+
for i = 1, #ordered_item_rows do
if type( ordered_item_rows[i] ) == "table" then
+
if type( ordered_item_rows[i] ) == "table" then
for j = 1, #ordered_item_rows[i] do
+
for j = 1, #ordered_item_rows[i] do
   
local chest_item = ordered_item_rows[i][j]
+
local chest_item = ordered_item_rows[i][j]
  +
 
if type( chest_item ) == "table" then
+
if type( chest_item ) == "table" then
  +
 
local avg_amount = string.format("%.3f", chest_item.avgamount)
+
local avg_amount = string.format("%.3f", chest_item.avgamount)
local chance_any = string.format("%.1f", chest_item.chanceany*100) .. "%"
+
local chance_any = string.format("%.1f", chest_item.chanceany*100) .. "%"
local num_chests = string.format("%.1f", 1/chest_item.chanceany)
+
local num_chests = string.format("%.1f", 1/chest_item.chanceany)
  +
 
table.insert( html, "\n" )
+
table.insert( html, "\n" )
if columns['stacksize'] ~= nil then
+
if columns['stacksize'] ~= nil then
for k = 1, #chest_item.sizes do
+
for k = 1, #chest_item.sizes do
table.insert( html, "<td style='text-align:center;' data-sort-value='" )
+
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, ( chest_item.sortsize[k] == 0 and "9e99" or chest_item.sortsize[k] ) )
table.insert( html, "'>" )
+
table.insert( html, "'>" )
table.insert( html, chest_item.sizes[k] )
+
table.insert( html, chest_item.sizes[k] )
table.insert( html, "</td>" )
+
table.insert( html, "</td>" )
  +
end
end
 
  +
end
end
 
if columns['weight'] ~= nil then
+
if columns['weight'] ~= nil then
for k = 1, #chest_item.sizes do
+
for k = 1, #chest_item.sizes do
table.insert( html, "<td style='text-align:center;' data-sort-value='" )
+
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, ( chest_item.sortweight[k] == 0 and "9e99" or chest_item.sortweight[k] ) )
table.insert( html, "'>" )
+
table.insert( html, "'>" )
table.insert( html, chest_item.weights[k] )
+
table.insert( html, chest_item.weights[k] )
table.insert( html, "</td>" )
+
table.insert( html, "</td>" )
  +
end
end
 
  +
end
end
 
if columns['items'] ~= nil then
+
if columns['items'] ~= nil then
table.insert( html, "<td style='text-align:center;'>" )
+
table.insert( html, "<td style='text-align:center;'>" )
table.insert( html, avg_amount )
+
table.insert( html, avg_amount )
table.insert( html, "</td>" )
+
table.insert( html, "</td>" )
  +
end
end
 
if columns['chance'] ~= nil then
+
if columns['chance'] ~= nil then
table.insert( html, "<td style='text-align:center;'>" )
+
table.insert( html, "<td style='text-align:center;'>" )
table.insert( html, chance_any )
+
table.insert( html, chance_any )
table.insert( html, "</td>" )
+
table.insert( html, "</td>" )
  +
end
end
 
if columns['chests'] ~= nil then
+
if columns['chests'] ~= nil then
table.insert( html, "<td style='text-align:center;'>" )
+
table.insert( html, "<td style='text-align:center;'>" )
table.insert( html, num_chests )
+
table.insert( html, num_chests )
table.insert( html, "</td>" )
+
table.insert( html, "</td>" )
  +
end
end
 
  +
 
elseif type( chest_item ) == "boolean" then
+
elseif type( chest_item ) == "boolean" then
local allRolls = p.chests[chest_names[j-1]]['allRolls'..suffix]
+
local allRolls = p.chests[chest_names[j-1]]['allRolls'..suffix]
local allRollsSpan = #allRolls == 0 and 1 or #allRolls
+
local allRollsSpan = #allRolls == 0 and 1 or #allRolls
   
table.insert( html, "\n" )
+
table.insert( html, "\n" )
if columns['stacksize'] ~= nil then
+
if columns['stacksize'] ~= nil then
for k = 1, allRollsSpan do
+
for k = 1, allRollsSpan do
table.insert( html, "<td data-sort-value='9e99' style='text-align:center;'>—</td>" )
+
table.insert( html, "<td data-sort-value='9e99' style='text-align:center;'>—</td>" )
  +
end
end
 
  +
end
end
 
if columns['weight'] ~= nil then
+
if columns['weight'] ~= nil then
for k = 1, allRollsSpan do
+
for k = 1, allRollsSpan do
table.insert( html, "<td data-sort-value='9e99' style='text-align:center;'>—</td>" )
+
table.insert( html, "<td data-sort-value='9e99' style='text-align:center;'>—</td>" )
  +
end
end
 
  +
end
end
 
if columns['items'] ~= nil then
+
if columns['items'] ~= nil then
table.insert( html, "<td data-sort-value='9e99' style='text-align:center;'>—</td>" )
+
table.insert( html, "<td data-sort-value='9e99' style='text-align:center;'>—</td>" )
  +
end
end
 
if columns['chance'] ~= nil then
+
if columns['chance'] ~= nil then
table.insert( html, "<td data-sort-value='9e99' style='text-align:center;'>—</td>" )
+
table.insert( html, "<td data-sort-value='9e99' style='text-align:center;'>—</td>" )
  +
end
end
 
if columns['chests'] ~= nil then
+
if columns['chests'] ~= nil then
table.insert( html, "<td data-sort-value='9e99' style='text-align:center;'>—</td>" )
+
table.insert( html, "<td data-sort-value='9e99' style='text-align:center;'>—</td>" )
  +
end
end
 
  +
else
else
 
if i > 1 then
+
if i > 1 then
table.insert( html, "</tr><tr>" )
+
table.insert( html, "</tr><tr>" )
  +
end
end
 
  +
 
local item = p.items[chest_item]
+
local item = p.items[chest_item]
  +
 
local s = require( '모듈:Sprite' )
+
local s = require( '모듈:Sprite' )
table.insert( html, "\n<td>" )
+
table.insert( html, "\n<td>" )
local image, spriteCat = s.link{
+
local image, spriteCat = s.link{
id=item.id or chest_item,
+
id=item.id or chest_item,
link=item.link or string.gsub(chest_item,'-',' '),
+
link=item.link or string.gsub(chest_item,'-',' '),
text=item.title or q.titlecase(string.gsub(chest_item,'-',' ')),
+
text=item.title or q.titlecase(string.gsub(chest_item,'-',' ')),
data= ( item[1] == 'item' and 'ItemSprite' or 'BlockSprite' )
+
data= ( item[1] == 'item' and 'ItemSprite' or 'BlockSprite' )
  +
}
}
 
table.insert( html, image )
+
table.insert( html, image )
table.insert( html, spriteCat )
+
table.insert( html, spriteCat )
if item.note and p.notes[item.note] then
+
if item.note and p.notes[item.note] then
table.insert( html, p.current_frame:extensionTag( 'ref', p.notes[item.note], { group='참고', name=item.note } ) )
+
table.insert( html, p.current_frame:extensionTag( 'ref', p.notes[item.note], { group='note', name=item.note } ) )
  +
end
end
 
table.insert( html, "</td>" )
+
table.insert( html, "</td>" )
  +
end
end
 
  +
 
if j == #ordered_item_rows[i] then
+
if j == #ordered_item_rows[i] then
table.insert( html, "</tr>" )
+
table.insert( html, "</tr>" )
  +
end
end
 
  +
 
  +
end
end
 
table.insert( html, "\n" )
+
table.insert( html, "\n" )
  +
end
end
 
end
+
end
  +
 
table.insert( html, "</table></div>" )
+
table.insert( html, "</table></div>" )
  +
 
return table.concat( html )
+
return table.concat( html )
  +
 
end,
+
end,
  +
 
titlecase = function( str )
+
titlecase = function( str )
local buf = {}
+
local buf = {}
for word in string.gfind(str, "%S+") do
+
for word in string.gfind(str, "%S+") do
if word == "and" then
+
if word == "and" then
table.insert( buf, word )
+
table.insert( buf, word )
else
+
else
local first, rest = string.sub( word, 1, 1 ), string.sub( word, 2 )
+
local first, rest = string.sub( word, 1, 1 ), string.sub( word, 2 )
table.insert( buf, string.upper(first) .. string.lower(rest) )
+
table.insert( buf, string.upper(first) .. string.lower(rest) )
  +
end
end
 
end
+
end
return table.concat( buf, " " )
+
return table.concat( buf, " " )
end,
+
end,
  +
 
capitalize = function( str )
+
capitalize = function( str )
return ( string.lower(str):gsub( "^%l", string.upper ) )
+
return ( string.lower(str):gsub( "^%l", string.upper ) )
end,
+
end,
   
lcfirst = function( str )
+
lcfirst = function( str )
return ( string.gsub( str, "^%u", string.lower ) )
+
return ( string.gsub( str, "^%u", string.lower ) )
end,
+
end,
  +
 
compare_tables = function( a, b )
+
compare_tables = function( a, b )
local seen = {}
+
local seen = {}
for k, v in pairs( a ) do
+
for k, v in pairs( a ) do
if type( v ) ~= type( b[k] ) then
+
if type( v ) ~= type( b[k] ) then
return true
+
return true
  +
end
end
 
if v ~= b[k] then
+
if v ~= b[k] then
return true
+
return true
  +
end
end
 
if type( v ) == 'table' and q.compare_tables( v, b[k] ) then
+
if type( v ) == 'table' and q.compare_tables( v, b[k] ) then
return true
+
return true
  +
end
end
 
seen[k] = true
+
seen[k] = true
end
+
end
for k, v in pairs( b ) do
+
for k, v in pairs( b ) do
if not seen[k] then
+
if not seen[k] then
return true
+
return true
  +
end
end
 
end
+
end
return false
+
return false
end,
+
end,
 
}
 
}
   
 
string.lpad = function(str, len, char)
 
string.lpad = function(str, len, char)
if char == nil then char = ' ' end
+
if char == nil then char = ' ' end
return string.rep(char, len - #(''..str)) .. str
+
return string.rep(char, len - #(''..str)) .. str
 
end
 
end
   

2021년 9월 11일 (토) 00:59 판

함께 보기: Chest loot

Maintenance

이 문서는 Java Edition 1.15.2의 데이터를 가지고 있습니다. (1.20.1 데이터로 업데이트 필요). 23:21, 15 April 2020 (UTC)
이 문서는 Java Edition 스냅숏 20w17a의 데이터를 가지고 있습니다. 15:38, 22 April 2020 (UTC)
이 문서는 Bedrock Edition 1.14.60의 데이터를 가지고 있습니다. (1.20.0 데이터로 업데이트 필요). 04:02, 19 April 2020 (UTC)
이 문서는 Bedrock Edition 베타 beta 1.16.0.57의 데이터를 가지고 있습니다. (베타 1.20.10.21 데이터로 업데이트 필요). 04:02, 19 April 2020 (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

bastion-bridge,
bastion-generic,
bastion-hoglin-stable,
bastion-treasure,
bonus,
buried-treasure,
desert-temple ( desert ),
dungeon,
end-city,
igloo,
jungle-temple ( jungle ),
jungle-temple-dispenser,
mineshaft,
nether-fortress ( nether, fortress ),
pillager-outpost ( outpost ),
ruined-portal,
shipwreck-map,
shipwreck-supply,
shipwreck-treasure,
stronghold-altar ( altar ),
stronghold-library ( library ),
stronghold-storeroom ( storeroom ),
underwater-ruin-big,
underwater-ruin-small,
village-armorer ( armorer ),
village-butcher ( butcher ),
village-cartographer ( cartographer ),
village-desert-house ( desert-house ),
village-fisherman ( fisherman ),
village-fletcher ( fletcher ),
village-mason ( mason ),
village-plains-house ( plains-house ),
village-savanna-house ( savanna-house ),
village-shepherd ( shepherd ),
village-snowy-house ( snowy-house ),
village-taiga-house ( taiga-house ),
village-tannery ( tannery ),
village-temple ( temple ),
village-toolsmith ( toolsmith ),
village-weaponsmith ( weaponsmith ),
woodland-mansion ( mansion )

Column parameters

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, ancient-debris, apple, arrow, bamboo, barrel, basalt, beetroot, beetroot-seeds, beetroot-soup, bell, birch-log, birch-sapling, black-wool, block-of-gold, blue-ice, bone, bone-block, book, book-and-quill, bottle-o'-enchanting, bread, brown-mushroom, brown-wool, bucket, buried-treasure-map, cactus, cake, carrot, chain, chainmail-boots, chainmail-chestplate, chainmail-helmet, chainmail-leggings, clay-ball, clock, coal, cocoa-beans, compass, cooked-cod, cooked-porkchop, cooked-salmon, crimson-fungus, crimson-nylium, crimson-roots, crossbow, crying-obsidian, damaged-diamond-boots, damaged-diamond-chestplate, damaged-diamond-helmet, damaged-diamond-leggings, damaged-diamond-sword, damaged-level-enchanted-crossbow, damaged-level-enchanted-netherite-boots, damaged-level-enchanted-netherite-chestplate, damaged-level-enchanted-netherite-helmet, damaged-level-enchanted-netherite-leggings, damaged-level-enchanted-netherite-sword, damaged-netherite-boots, damaged-netherite-chestplate, damaged-netherite-helmet, damaged-netherite-leggings, damaged-netherite-sword, damaged-random-enchanted-crossbow, damaged-random-enchanted-diamond-boots, damaged-random-enchanted-diamond-chestplate, damaged-random-enchanted-diamond-helmet, damaged-random-enchanted-diamond-leggings, damaged-random-enchanted-diamond-shovel, damaged-random-enchanted-diamond-sword, damaged-random-enchanted-netherite-axe, damaged-random-enchanted-netherite-boots, damaged-random-enchanted-netherite-chestplate, damaged-random-enchanted-netherite-helmet, damaged-random-enchanted-netherite-hoe, damaged-random-enchanted-netherite-leggings, damaged-random-enchanted-netherite-pickaxe, damaged-random-enchanted-netherite-shovel, damaged-random-enchanted-netherite-sword, dandelion, dark-oak-log, dark-oak-sapling, dead-bush, detector-rail, diamond, diamond-chestplate, diamond-hoe, diamond-horse-armor, disc-13, disc-cat, disc-mellohi, disc-pigstep, disc-wait, egg, emerald, empty, empty-map, enchanted-book, enchanted-book-rnd, enchanted-book-rnd-soul-speed, enchanted-fishing-rod, enchanted-golden-apple, ender-pearl, feather, fern, fire-charge, flint, flint-and-steel, flower-pot, furnace, gilded-blackstone, glistering-melon-slice, glowstone, gold-ingot, gold-nugget, golden-apple, golden-boots, golden-carrot, golden-chestplate, golden-helmet, golden-hoe, golden-horse-armor, golden-leggings, golden-sword, grass, gray-wool, green-dye, gunpowder, heart-of-the-sea, ink-sac, iron-boots, iron-chestplate, iron-helmet, iron-horse-armor, iron-ingot, iron-leggings, iron-nugget, iron-pickaxe, iron-shovel, iron-sword, jungle-log, jungle-sapling, lapis-lazuli, large-fern, lead, leather, leather-boots, leather-cap, leather-pants, leather-tunic, level-enchanted-diamond-boots, level-enchanted-diamond-chestplate, level-enchanted-diamond-helmet, level-enchanted-diamond-leggings, level-enchanted-diamond-pickaxe, level-enchanted-diamond-shovel, level-enchanted-diamond-sword, level-enchanted-golden-boots, level-enchanted-golden-chestplate, level-enchanted-golden-helmet, level-enchanted-golden-hoe, level-enchanted-golden-leggings, level-enchanted-iron-boots, level-enchanted-iron-chestplate, level-enchanted-iron-helmet, level-enchanted-iron-leggings, level-enchanted-iron-pickaxe, level-enchanted-iron-shovel, level-enchanted-iron-sword, light-gray-wool, light-weighted-pressure-plate, lodestone, magma-block, magma-cream, map, melon-seeds, name-tag, nether-quartz, nether-wart, netherite-boots, netherite-chestplate, netherite-helmet, netherite-ingot, netherite-leggings, netherite-scrap, oak-log, oak-planks, oak-sapling, oak-sign, obsidian, paper, piglin-banner-pattern, poisonous-potato, polished-basalt, poppy, potato, potion-of-regeneration, potion-of-water-breathing, powered-rail, prismarine-crystals, pumpkin, pumpkin-pie, pumpkin-seeds, rail, random-enchanted-golden-axe, random-enchanted-golden-boots, random-enchanted-golden-chestplate, random-enchanted-golden-helmet, random-enchanted-golden-hoe, random-enchanted-golden-leggings, random-enchanted-golden-pickaxe, random-enchanted-golden-shovel, random-enchanted-golden-sword, random-enchanted-leather-boots, random-enchanted-leather-cap, random-enchanted-leather-pants, random-enchanted-leather-tunic, raw-beef, raw-cod, raw-mutton, raw-porkchop, raw-salmon, redstone, rotten-flesh, saddle, sand, shears, smooth-stone, snow-block, snowball, soul-sand, soul-speed-enchanted-golden-boots, spectral-arrow, spider-eye, spruce-log, spruce-sapling, spruce-sign, stick, stone, stone-axe, stone-bricks, stone-pickaxe, string, suspicious-stew, sweet-berries, tall-grass, tnt, torch, tripwire-hook, water-bucket, wheat, wheat-seeds, white-wool, wooden-axe, wooden-hoe, wooden-pickaxe, yellow-dye

Example

{{#invoke:LootChest|base2|iron-ingot}}

아이템 구조물 상자 수량 확률
철 주괴 던전 1–4 18.5 %
폐광 1–5 31.6 %
보루 잔해 다리 상자 2–8 12.2 %
보물 상자 3–9 29.4 %
일반 상자 1–6 16 %
땅에 묻힌 보물 1–4 99.4 %
사막 사원 1–5 18 %
엔드 시티 4–8 38.4 %
정글 사원 상자 1–5 37.4 %
네더 요새 1–5 19 %
약탈자 전초기지 1–3 30.5 %
난파선 보물 상자 1–5 97.4 %
요새 저장실 상자 1–5 34.3 %
제단 상자 1–5 23.3 %
마을 갑옷 제조인 상자 1–3 54.2 %
무기 대장장이 상자 1–5 45.1 %
도구 대장장이 상자 1–5 41.2 %
삼림 대저택 1–4 18.5 %
베드락 에디션
철 주괴 땅에 묻힌 보물 3–5 57.2 %
정글 사원 상자 1–5 37.3 %
요새 저장실 상자 1–5 28.5 %
제단 상자 1–5 22.6 %

{{#invoke:LootChest|base2|emerald}}

아이템 구조물 상자 수량 확률
에메랄드 땅에 묻힌 보물 4–8 53.1 %
사막 사원 1–3 18 %
엔드 시티 2–6 9 %
이글루 1 7.6 %
정글 사원 상자 1–3 8.7 %
난파선 보물 상자 1–5 73.7 %
해저 폐허 해저 폐허의 큰 상자 1 14.9 %
해저 폐허의 작은 상자 1 16.4 %
마을 양치기 상자 1 12.3 %
가죽 세공인 상자 1–4 17.3 %
갑옷 제조인 상자 1 31.8 %
어부 상자 1 24.2 %
사막 마을 상자 1–3 14.3 %
화살 제조인 상자 1 12.3 %
타이가 집 상자 1–4 18.6 %
사바나 집 상자 1–4 21.5 %
석공 상자 1 20.8 %
평원 집 상자 1–4 22.8 %
사원 상자 1–4 25.4 %
도살업자 상자 1 10.2 %
눈 덮인 집 상자 1–4 9.9 %
베드락 에디션
에메랄드 정글 사원 상자 1–3 8.7 %
요새 제단 상자 1–3 7.2 %
마을 타이가 집 상자 1–4 20.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}}






































Crimson fungi는 26.2% 확률로 보루 잔해 호글린 마구간 상자에서 2–7개 묶음으로 생성된다.

Damaged diamond boots이 아이템의 내구성은 20%와 65% 사이에 있다.는 8.6% 확률로 보루 잔해 보물 상자에서 1개 묶음으로 생성된다.

Damaged diamond chestplate이 아이템의 내구성은 20%와 65% 사이에 있다.는 8.6% 확률로 보루 잔해 보물 상자에서 1개 묶음으로 생성된다.

Damaged diamond helmet이 아이템의 내구성은 20%와 65% 사이에 있다.는 8.6% 확률로 보루 잔해 보물 상자에서 1개 묶음으로 생성된다.

Damaged diamond leggings이 아이템의 내구성은 20%와 65% 사이에 있다.는 8.6% 확률로 보루 잔해 보물 상자에서 1개 묶음으로 생성된다.

Enchanted fishing rod보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.는 21.7% 확률로 해저 폐허 상자에서, 41.7% 확률로 해저 폐허 상자에서 1개 묶음으로 생성된다.

Poisonous potatoes는 44.9% 확률로 난파선 보급품 상자에서 2–6개 묶음으로 생성된다.

Poppies는 12.1% 확률로 평원 마을 집 상자에서 1개 묶음으로 생성된다.

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

TNT는 8.1% 확률로 난파선 보급품 상자에서, 62.7% 확률로 땅에 묻힌 보물 상자에서 1–2개 묶음으로 생성된다.

베드락 에디션에서는 34.3% 확률로 땅에 묻힌 보물 상자에서 1–2개 묶음으로 생성된다.

베드락 에디션에서는 갈색 버섯은 모든 보너스 상자에서 1–2개 묶음으로 생성된다.

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

베드락 에디션에서는 사슬 레깅스는 57.2% 확률로 땅에 묻힌 보물 상자에서 1개 묶음으로 생성된다.

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

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

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

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

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

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

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

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

베드락 에디션에서는 지도Named unknown map, but changed to map 0, the scale level is 1:4, Maps from the same stack are stackable, but maps that are not stacked are unstackable despite looking identical.는 7.7% 확률로 난파선 지도 상자에서, 10.5% 확률로 요새 도서관 상자에서 1개 묶음으로 생성된다. 46.2% 확률로 마을 지도 제작자 상자에서 1–3개 묶음으로 생성된다.

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

베드락 에디션에서는 참나무 표지판은 10.7% 확률로 타이가 마을 집 상자에서 1개 묶음으로 생성된다.

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

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

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

가문비나무 묘목은 40.6% 확률로 타이가 마을 집 상자에서 1–5개 묶음으로 생성된다.

베드락 에디션에서는 16.7% 확률로 보너스 상자에서 4개 묶음으로 생성된다. 43.7% 확률로 타이가 마을 집 상자에서 1–5개 묶음으로 생성된다.

가문비나무 원목은 28.0% 확률로 보너스 상자에서 1–3개 묶음으로 생성된다. 65.6% 확률로 타이가 마을 집 상자에서 1–5개 묶음으로 생성된다.

베드락 에디션에서는 25.0% 확률로 보너스 상자에서 1–3개 묶음으로 생성된다. 69.3% 확률로 타이가 마을 집 상자에서 1–5개 묶음으로 생성된다.

가문비나무 표지판은 9.7% 확률로 타이가 마을 집 상자에서 1개 묶음으로 생성된다.

가위는 12.3% 확률로 마을 양치기 상자에서 1개 묶음으로 생성된다.

가죽 모자는 31.8% 확률로 마을 가죽 세공인 상자에서 1개 묶음으로 생성된다.

가죽 바지는 31.8% 확률로 마을 가죽 세공인 상자에서 1개 묶음으로 생성된다.

가죽 부츠는 31.8% 확률로 마을 가죽 세공인 상자에서 1개 묶음으로 생성된다.

가죽 조끼는 4.3% 확률로 해저 폐허 상자에서, 8.3% 확률로 해저 폐허 상자에서, 75.0% 확률로 땅에 묻힌 보물 상자에서, 31.8% 확률로 마을 가죽 세공인 상자에서 모두 1개 묶음으로 생성된다.

가죽은 47.9% 확률로 보루 잔해 다리 상자에서, 26.2% 확률로 보루 잔해 호글린 마구간 상자에서, 17.3% 확률로 마을 가죽 세공인 상자에서 모두 1–3개 묶음으로 생성된다.

갈색 양털은 23.3% 확률로 마을 양치기 상자에서 1–3개 묶음으로 생성된다.

감자는 44.9% 확률로 난파선 보급품 상자에서 2–6개 묶음으로 생성된다. 66.3% 확률로 눈 덮인 마을 집 상자에서, 74.2% 확률로 평원 마을 집 상자에서, 65.6% 확률로 타이가 마을 집 상자에서 모두 1–7개 묶음으로 생성된다. 57.5% 확률로 약탈자 전초기지 상자에서 2–5개 묶음으로 생성된다.

베드락 에디션에서는 50.0% 확률로 보너스 상자에서 1–2개 묶음으로 생성된다. 69.3% 확률로 타이가 마을 집 상자에서 1–7개 묶음으로 생성된다.

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

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

검은색 양털은 33.0% 확률로 마을 양치기 상자에서 1–3개 묶음으로 생성된다.

경험치 병은 14.1% 확률로 난파선 보물 상자에서, 60.9% 확률로 약탈자 전초기지 상자에서 1개 묶음으로 생성된다.

베드락 에디션에서는 11.8% 확률로 땅에 묻힌 보물 상자에서 1개 묶음으로 생성된다.

경형 무게 압력판은 7.3% 확률로 무너진 차원문 상자에서 1개 묶음으로 생성된다.

고대 잔해는 2.2% 확률로 보루 잔해 상자에서, 2.9% 확률로 보루 잔해 호글린 마구간 상자에서 1개 묶음으로 생성된다. 1.7% 확률로 보루 잔해 보물 상자에서 2개 묶음으로 생성된다.

베드락 에디션에서는 2.0% 확률로 보루 잔해 상자에서 1개 묶음으로 생성된다.

고사리는 18.6% 확률로 타이가 마을 집 상자에서 1개 묶음으로 생성된다.

베드락 에디션에서는 20.3% 확률로 타이가 마을 집 상자에서 1개 묶음으로 생성된다.

금 검은 12.2% 확률로 보루 잔해 다리 상자에서, 16.0% 확률로 보루 잔해 상자에서, 19.0% 확률로 요새 상자에서 모두 1개 묶음으로 생성된다.

금 레깅스는 16.0% 확률로 보루 잔해 상자에서 1개 묶음으로 생성된다.

금 말 갑옷은 2.5% 확률로 요새 제단 상자에서, 5.7% 확률로 마을 무기 대장장이 상자에서, 14.9% 확률로 던전 상자에서, 7.3% 확률로 무너진 차원문 상자에서, 29.1% 확률로 요새 상자에서, 4.5% 확률로 정글 사원 상자에서, 12.3% 확률로 사막 사원 상자에서, 4.6% 확률로 엔드 시티 상자에서 모두 1개 묶음으로 생성된다.

베드락 에디션에서는 2.4% 확률로 요새 제단 상자에서, 4.4% 확률로 정글 사원 상자에서 1개 묶음으로 생성된다.

금 부츠는 16.0% 확률로 보루 잔해 상자에서 1개 묶음으로 생성된다.

금 블록은 12.2% 확률로 보루 잔해 다리 상자에서, 16.0% 확률로 보루 잔해 상자에서 1개 묶음으로 생성된다. 29.4% 확률로 보루 잔해 보물 상자에서 2–5개 묶음으로 생성된다. 1.5% 확률로 무너진 차원문 상자에서 1–2개 묶음으로 생성된다. 23.8% 확률로 보루 잔해 호글린 마구간 상자에서 2–4개 묶음으로 생성된다.

금 조각은 31.5% 확률로 보루 잔해 상자에서, 26.2% 확률로 보루 잔해 호글린 마구간 상자에서 2–8개 묶음으로 생성된다. 36.6% 확률로 난파선 보물 상자에서 1–10개 묶음으로 생성된다. 20.5% 확률로 무너진 차원문 상자에서 4–24개 묶음으로 생성된다. 81.0% 확률로 해저 폐허 상자에서, 55.3% 확률로 이글루 상자에서, 11.3% 확률로 사바나 마을 집 상자에서, 12.1% 확률로 평원 마을 집 상자에서 모두 1–3개 묶음으로 생성된다. 47.9% 확률로 보루 잔해 다리 상자에서 2–6개 묶음으로 생성된다.

금 주괴는 7.3% 확률로 무너진 차원문 상자에서, 12.2% 확률로 보루 잔해 다리 상자에서 2–8개 묶음으로 생성된다. 26.5% 확률로 난파선 보물 상자에서 1–5개 묶음으로 생성된다. 51.0% 확률로 정글 사원 상자에서, 18.0% 확률로 사막 사원 상자에서, 52.3% 확률로 엔드 시티 상자에서 모두 2–7개 묶음으로 생성된다. 12.1% 확률로 요새 제단 상자에서, 9.9% 확률로 마을 도구 대장장이 상자에서, 18.6% 확률로 요새 저장실 상자에서, 25.6% 확률로 마을 무기 대장장이 상자에서, 49.0% 확률로 요새 상자에서, 16.9% 확률로 폐광 상자가 실린 광산 수레에서 모두 1–3개 묶음으로 생성된다. 25.4% 확률로 마을 사원 상자에서, 9.6% 확률로 던전 상자에서, 9.6% 확률로 삼림 대저택 상자에서, 88.0% 확률로 땅에 묻힌 보물 상자에서 모두 1–4개 묶음으로 생성된다. 29.4% 확률로 보루 잔해 보물 상자에서 3–9개 묶음으로 생성된다. 16.0% 확률로 보루 잔해 상자에서 1–6개 묶음으로 생성된다.

베드락 에디션에서는 11.8% 확률로 요새 제단 상자에서, 15.2% 확률로 요새 저장실 상자에서 1–3개 묶음으로 생성된다. 34.3% 확률로 땅에 묻힌 보물 상자에서 1–5개 묶음으로 생성된다. 50.9% 확률로 정글 사원 상자에서 2–7개 묶음으로 생성된다.

금 투구는 4.3% 확률로 해저 폐허 상자에서, 8.3% 확률로 해저 폐허 상자에서, 16.0% 확률로 보루 잔해 상자에서 모두 1개 묶음으로 생성된다.

금 흉갑은 16.0% 확률로 보루 잔해 상자에서, 19.0% 확률로 요새 상자에서 1개 묶음으로 생성된다.

깃털은 12.1% 확률로 평원 마을 집 상자에서 1개 묶음으로 생성된다. 55.8% 확률로 마을 화살 제조인 상자에서 1–3개 묶음으로 생성된다. 60.0% 확률로 난파선 지도 상자에서 1–5개 묶음으로 생성된다.

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

베드락 에디션에서는 27.9% 확률로 삼림 대저택 상자에서 1개 묶음으로 생성된다. 34.3% 확률로 땅에 묻힌 보물 상자에서 1–3개 묶음으로 생성된다.

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

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

나침반은 7.7% 확률로 난파선 지도 상자에서, 26.3% 확률로 마을 지도 제작자 상자에서, 10.9% 확률로 요새 도서관 상자에서 모두 1개 묶음으로 생성된다.

베드락 에디션에서는 10.5% 확률로 요새 도서관 상자에서 1개 묶음으로 생성된다.

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

네더 석영은 29.4% 확률로 보루 잔해 보물 상자에서 8–23개 묶음으로 생성된다.

네더라이트 주괴는 16.8% 확률로 보루 잔해 보물 상자에서 1개 묶음으로 생성된다.

네더라이트 파편은 16.8% 확률로 보루 잔해 보물 상자에서, 2.2% 확률로 보루 잔해 상자에서, 1.9% 확률로 보루 잔해 호글린 마구간 상자에서 모두 1개 묶음으로 생성된다.

베드락 에디션에서는 2.0% 확률로 보루 잔해 상자에서 1개 묶음으로 생성된다.

노란색 염료는 20.8% 확률로 마을 석공 상자에서 1개 묶음으로 생성된다.

눈 블록은 34.5% 확률로 눈 덮인 마을 집 상자에서 1개 묶음으로 생성된다.

눈덩이는 66.3% 확률로 눈 덮인 마을 집 상자에서 1–7개 묶음으로 생성된다.

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

베드락 에디션에서는 21.5% 확률로 삼림 대저택 상자에서 1개 묶음으로 생성된다.

다이아몬드 말 갑옷은 2.5% 확률로 요새 제단 상자에서, 5.7% 확률로 마을 무기 대장장이 상자에서, 7.7% 확률로 던전 상자에서, 11.8% 확률로 요새 상자에서, 4.5% 확률로 정글 사원 상자에서, 6.3% 확률로 사막 사원 상자에서, 4.6% 확률로 엔드 시티 상자에서 모두 1개 묶음으로 생성된다.

베드락 에디션에서는 2.4% 확률로 요새 제단 상자에서, 4.4% 확률로 정글 사원 상자에서 1개 묶음으로 생성된다.

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

베드락 에디션에서는 7.6% 확률로 삼림 대저택 상자에서 1개 묶음으로 생성된다.

다이아몬드는 14.1% 확률로 난파선 보물 상자에서 1개 묶음으로 생성된다. 7.4% 확률로 요새 제단 상자에서, 9.9% 확률로 마을 도구 대장장이 상자에서, 16.2% 확률로 마을 무기 대장장이 상자에서, 8.6% 확률로 보루 잔해 보물 상자에서, 19.0% 확률로 요새 상자에서, 12.9% 확률로 정글 사원 상자에서, 6.3% 확률로 사막 사원 상자에서 모두 1–3개 묶음으로 생성된다. 10.4% 확률로 폐광 상자가 실린 광산 수레에서, 53.1% 확률로 땅에 묻힌 보물 상자에서 1–2개 묶음으로 생성된다. 21.2% 확률로 엔드 시티 상자에서 2–7개 묶음으로 생성된다.

베드락 에디션에서는 46.9% 확률로 땅에 묻힌 보물 상자에서 1개 묶음으로 생성된다. 7.2% 확률로 요새 제단 상자에서, 12.8% 확률로 정글 사원 상자에서 1–3개 묶음으로 생성된다.

달걀은 23.3% 확률로 마을 화살 제조인 상자에서 1–3개 묶음으로 생성된다.

달콤한 열매는 40.6% 확률로 타이가 마을 집 상자에서 1–7개 묶음으로 생성된다.

당근은 44.9% 확률로 난파선 보급품 상자에서 4–8개 묶음으로 생성된다. 57.5% 확률로 약탈자 전초기지 상자에서 3–5개 묶음으로 생성된다.

베드락 에디션에서는 50.0% 확률로 보너스 상자에서 1–2개 묶음으로 생성된다.

대나무는 15.6% 확률로 난파선 보급품 상자에서, 51.0% 확률로 정글 사원 상자에서 1–3개 묶음으로 생성된다.

베드락 에디션에서는 50.9% 확률로 정글 사원 상자에서 1–3개 묶음으로 생성된다.

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

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

돌은 37.7% 확률로 마을 석공 상자에서 1개 묶음으로 생성된다.

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

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

베드락 에디션에서는 11.8% 확률로 요새 제단 상자에서, 15.2% 확률로 요새 저장실 상자에서 4–9개 묶음으로 생성된다.

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

마그마 크림은 29.4% 확률로 보루 잔해 보물 상자에서 2–8개 묶음으로 생성된다. 31.5% 확률로 보루 잔해 상자에서 2–6개 묶음으로 생성된다.

마른 덤불은 26.6% 확률로 사막 마을 집 상자에서 1–3개 묶음으로 생성된다.

마법이 부여된 가죽 모자보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.는 22.4% 확률로 난파선 보급품 상자에서 1개 묶음으로 생성된다.

마법이 부여된 가죽 바지보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.는 22.4% 확률로 난파선 보급품 상자에서 1개 묶음으로 생성된다.

마법이 부여된 가죽 부츠보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.는 22.4% 확률로 난파선 보급품 상자에서 1개 묶음으로 생성된다.

마법이 부여된 가죽 조끼보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.는 22.4% 확률로 난파선 보급품 상자에서 1개 묶음으로 생성된다.

마법이 부여된 다이아몬드 각반마법의 확률은 마법 부여대에서 레벨 20에서 레벨 39까지의 마법을 부여할 때와 동일하다. 보물 마법에도 여러 마법이 중복될 확률은 줄어들지 않는다(영혼 신속 제외).은 13.3% 확률로 엔드 시티 상자에서 1개 묶음으로 생성된다.

마법이 부여된 다이아몬드 검마법의 확률은 마법 부여대에서 레벨 20에서 레벨 39까지의 마법을 부여할 때와 동일하다. 보물 마법에도 여러 마법이 중복될 확률은 줄어들지 않는다(영혼 신속 제외).은 13.3% 확률로 엔드 시티 상자에서 1개 묶음으로 생성된다.

마법이 부여된 다이아몬드 곡괭이마법의 확률은 마법 부여대에서 레벨 20에서 레벨 39까지의 마법을 부여할 때와 동일하다. 보물 마법에도 여러 마법이 중복될 확률은 줄어들지 않는다(영혼 신속 제외).는 13.3% 확률로 엔드 시티 상자에서 1개 묶음으로 생성된다.

마법이 부여된 다이아몬드 부츠마법의 확률은 마법 부여대에서 레벨 20에서 레벨 39까지의 마법을 부여할 때와 동일하다. 보물 마법에도 여러 마법이 중복될 확률은 줄어들지 않는다(영혼 신속 제외).는 13.3% 확률로 엔드 시티 상자에서 1개 묶음으로 생성된다.

마법이 부여된 다이아몬드 삽마법의 확률은 마법 부여대에서 레벨 20에서 레벨 39까지의 마법을 부여할 때와 동일하다. 보물 마법에도 여러 마법이 중복될 확률은 줄어들지 않는다(영혼 신속 제외).은 13.3% 확률로 엔드 시티 상자에서 1개 묶음으로 생성된다.

마법이 부여된 다이아몬드 투구마법의 확률은 마법 부여대에서 레벨 20에서 레벨 39까지의 마법을 부여할 때와 동일하다. 보물 마법에도 여러 마법이 중복될 확률은 줄어들지 않는다(영혼 신속 제외).는 13.3% 확률로 엔드 시티 상자에서 1개 묶음으로 생성된다.

마법이 부여된 다이아몬드 흉갑마법의 확률은 마법 부여대에서 레벨 20에서 레벨 39까지의 마법을 부여할 때와 동일하다. 보물 마법에도 여러 마법이 중복될 확률은 줄어들지 않는다(영혼 신속 제외).은 13.3% 확률로 엔드 시티 상자에서 1개 묶음으로 생성된다.

마법이 부여된 책보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.은 21.7% 확률로 해저 폐허 상자에서, 14.9% 확률로 던전 상자에서, 23.5% 확률로 사막 사원 상자에서, 11.0% 확률로 약탈자 전초기지 상자에서, 14.1% 확률로 폐광 상자가 실린 광산 수레에서, 14.9% 확률로 삼림 대저택 상자에서 모두 1개 묶음으로 생성된다.

마법이 부여된 책마법의 확률은 마법 부여대에서 레벨 30의 마법을 부여할 때와 동일하다. 보물 마법에도 여러 마법이 중복될 확률은 줄어들지 않는다(영혼 신속 제외).은 2.5% 확률로 요새 제단 상자에서, 4.0% 확률로 요새 저장실 상자에서, 4.5% 확률로 정글 사원 상자에서, 67.8% 확률로 요새 도서관 상자에서 모두 1개 묶음으로 생성된다.

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

마법이 부여된 책임의의 레벨로 영혼 신속 마법이 부여된다.은 11.1% 확률로 보루 잔해 상자에서 1개 묶음으로 생성된다.

베드락 에디션에서는 10.0% 확률로 보루 잔해 상자에서 1개 묶음으로 생성된다.

마법이 부여된 철 각반마법의 확률은 마법 부여대에서 레벨 20에서 레벨 39까지의 마법을 부여할 때와 동일하다. 보물 마법에도 여러 마법이 중복될 확률은 줄어들지 않는다(영혼 신속 제외).은 13.3% 확률로 엔드 시티 상자에서 1개 묶음으로 생성된다.

마법이 부여된 철 검마법의 확률은 마법 부여대에서 레벨 20에서 레벨 39까지의 마법을 부여할 때와 동일하다. 보물 마법에도 여러 마법이 중복될 확률은 줄어들지 않는다(영혼 신속 제외).은 13.3% 확률로 엔드 시티 상자에서 1개 묶음으로 생성된다.

마법이 부여된 철 곡괭이마법의 확률은 마법 부여대에서 레벨 20에서 레벨 39까지의 마법을 부여할 때와 동일하다. 보물 마법에도 여러 마법이 중복될 확률은 줄어들지 않는다(영혼 신속 제외).는 13.3% 확률로 엔드 시티 상자에서 1개 묶음으로 생성된다.

마법이 부여된 철 부츠마법의 확률은 마법 부여대에서 레벨 20에서 레벨 39까지의 마법을 부여할 때와 동일하다. 보물 마법에도 여러 마법이 중복될 확률은 줄어들지 않는다(영혼 신속 제외).는 13.3% 확률로 엔드 시티 상자에서 1개 묶음으로 생성된다.

마법이 부여된 철 삽마법의 확률은 마법 부여대에서 레벨 20에서 레벨 39까지의 마법을 부여할 때와 동일하다. 보물 마법에도 여러 마법이 중복될 확률은 줄어들지 않는다(영혼 신속 제외).은 13.3% 확률로 엔드 시티 상자에서 1개 묶음으로 생성된다.

마법이 부여된 철 투구마법의 확률은 마법 부여대에서 레벨 20에서 레벨 39까지의 마법을 부여할 때와 동일하다. 보물 마법에도 여러 마법이 중복될 확률은 줄어들지 않는다(영혼 신속 제외).는 13.3% 확률로 엔드 시티 상자에서 1개 묶음으로 생성된다.

마법이 부여된 철 흉갑마법의 확률은 마법 부여대에서 레벨 20에서 레벨 39까지의 마법을 부여할 때와 동일하다. 보물 마법에도 여러 마법이 중복될 확률은 줄어들지 않는다(영혼 신속 제외).은 13.3% 확률로 엔드 시티 상자에서 1개 묶음으로 생성된다.

마법이 부여된 황금 각반보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.은 20.5% 확률로 무너진 차원문 상자에서, 12.2% 확률로 보루 잔해 다리 상자에서 1개 묶음으로 생성된다.

마법이 부여된 황금 검보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.은 20.5% 확률로 무너진 차원문 상자에서 1개 묶음으로 생성된다.

마법이 부여된 황금 곡괭이보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.는 20.5% 확률로 무너진 차원문 상자에서 1개 묶음으로 생성된다.

마법이 부여된 황금 괭이보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.는 20.5% 확률로 무너진 차원문 상자에서, 14.3% 확률로 보루 잔해 호글린 마구간 상자에서 1개 묶음으로 생성된다.

마법이 부여된 황금 도끼보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.는 20.5% 확률로 무너진 차원문 상자에서 1개 묶음으로 생성된다.

마법이 부여된 황금 부츠보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.는 20.5% 확률로 무너진 차원문 상자에서, 12.2% 확률로 보루 잔해 다리 상자에서 1개 묶음으로 생성된다.

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

베드락 에디션에서는 3.1% 확률로 삼림 대저택 상자에서 1개 묶음으로 생성된다.

마법이 부여된 황금 삽보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.은 20.5% 확률로 무너진 차원문 상자에서 1개 묶음으로 생성된다.

마법이 부여된 황금 투구보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.는 20.5% 확률로 무너진 차원문 상자에서, 12.2% 확률로 보루 잔해 다리 상자에서 1개 묶음으로 생성된다.

마법이 부여된 황금 흉갑보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.은 20.5% 확률로 무너진 차원문 상자에서, 12.2% 확률로 보루 잔해 다리 상자에서 1개 묶음으로 생성된다.

막대기는 90.0% 확률로 마을 도구 대장장이 상자에서, 55.8% 확률로 마을 화살 제조인 상자에서 1–3개 묶음으로 생성된다. 26.3% 확률로 마을 지도 제작자 상자에서 1–2개 묶음으로 생성된다. 70.5% 확률로 보너스 상자에서 1–12개 묶음으로 생성된다.

베드락 에디션에서는 모든 보너스 상자에서 1–12개 묶음으로 생성된다.

매끄러운 돌은 20.8% 확률로 마을 석공 상자에서 1개 묶음으로 생성된다.

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

물 양동이는 24.2% 확률로 마을 어부 상자에서 1–3개 묶음으로 생성된다.

민들레는 22.8% 확률로 평원 마을 집 상자에서 1개 묶음으로 생성된다.

밀 씨앗은 57.5% 확률로 마을 어부 상자에서 1–3개 묶음으로 생성된다. 71.7% 확률로 사바나 마을 집 상자에서 1–5개 묶음으로 생성된다.

밀은 34.1% 확률로 던전 상자에서, 34.1% 확률로 삼림 대저택 상자에서 1–4개 묶음으로 생성된다. 80.6% 확률로 사막 마을 집 상자에서 1–7개 묶음으로 생성된다. 81.0% 확률로 해저 폐허 상자에서, 84.2% 확률로 해저 폐허 상자에서, 55.3% 확률로 이글루 상자에서 모두 2–3개 묶음으로 생성된다. 48.6% 확률로 마을 도살업자 상자에서 1–3개 묶음으로 생성된다. 72.5% 확률로 약탈자 전초기지 상자에서 3–5개 묶음으로 생성된다. 44.9% 확률로 난파선 보급품 상자에서 8–21개 묶음으로 생성된다. 55.8% 확률로 마을 양치기 상자에서 1–6개 묶음으로 생성된다.

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

반짝이는 수박 조각은 7.3% 확률로 무너진 차원문 상자에서 4–12개 묶음으로 생성된다.

베드락 에디션에서는 7.3% 확률로 무너진 차원문 상자에서 1개 묶음으로 생성된다.

발광석은 26.2% 확률로 보루 잔해 호글린 마구간 상자에서 1–5개 묶음으로 생성된다.

부싯돌과 부시는 46.4% 확률로 무너진 차원문 상자에서, 19.0% 확률로 요새 상자에서 1개 묶음으로 생성된다.

부싯돌은 55.8% 확률로 마을 화살 제조인 상자에서 1–3개 묶음으로 생성된다. 46.4% 확률로 무너진 차원문 상자에서 1–4개 묶음으로 생성된다.

분광 화살은 29.4% 확률로 보루 잔해 보물 상자에서 5–21개 묶음으로 생성된다. 6.7% 확률로 보루 잔해 상자에서 2–15개 묶음으로 생성된다. 12.2% 확률로 보루 잔해 다리 상자에서 2–12개 묶음으로 생성된다.

빈 상자'Nothing' does not refer to the chance of an empty chest. Instead, it refers to the chance that the random loot generator does not add any loot on a single roll.는 69.1% 확률로 보루 잔해 상자에서, 42.9% 확률로 보루 잔해 호글린 마구간 상자에서, 18.0% 확률로 사막 사원 상자에서, 7.0% 확률로 폐광 상자가 실린 광산 수레에서 모두 1개 묶음으로 생성된다.

베드락 에디션에서는 65.3% 확률로 보루 잔해 상자에서 1개 묶음으로 생성된다.

빈 지도는 7.7% 확률로 난파선 지도 상자에서, 10.9% 확률로 요새 도서관 상자에서 1개 묶음으로 생성된다. 46.2% 확률로 마을 지도 제작자 상자에서 1–3개 묶음으로 생성된다.

빵은 34.1% 확률로 던전 상자에서, 34.1% 확률로 삼림 대저택 상자에서 1개 묶음으로 생성된다. 33.5% 확률로 요새 제단 상자에서, 81.2% 확률로 마을 도구 대장장이 상자에서, 47.5% 확률로 요새 저장실 상자에서, 59.8% 확률로 마을 무기 대장장이 상자에서, 44.3% 확률로 폐광 상자가 실린 광산 수레에서 모두 1–3개 묶음으로 생성된다. 61.5% 확률로 보너스 상자에서 1–2개 묶음으로 생성된다. 89.3% 확률로 마을 사원 상자에서, 80.6% 확률로 마을 갑옷 제조인 상자에서, 80.6% 확률로 사막 마을 집 상자에서, 61.2% 확률로 마을 지도 제작자 상자에서, 66.3% 확률로 눈 덮인 마을 집 상자에서, 71.7% 확률로 사바나 마을 집 상자에서, 74.2% 확률로 평원 마을 집 상자에서, 62.2% 확률로 마을 석공 상자에서, 65.6% 확률로 타이가 마을 집 상자에서, 62.8% 확률로 마을 가죽 세공인 상자에서 모두 1–4개 묶음으로 생성된다.

베드락 에디션에서는 69.3% 확률로 타이가 마을 집 상자에서 1–4개 묶음으로 생성된다. 모든 보너스 상자에서 1–2개 묶음으로 생성된다. 32.5% 확률로 요새 제단 상자에서, 40.0% 확률로 요새 저장실 상자에서 1–3개 묶음으로 생성된다.

뼈 블록은 31.5% 확률로 보루 잔해 상자에서 3–6개 묶음으로 생성된다.

뼈는 61.9% 확률로 정글 사원 상자에서, 28.7% 확률로 사막 사원 상자에서 4–6개 묶음으로 생성된다. 57.8% 확률로 던전 상자에서, 59.0% 확률로 사막 사원 상자에서, 57.8% 확률로 삼림 대저택 상자에서 모두 1–8개 묶음으로 생성된다.

베드락 에디션에서는 61.8% 확률로 정글 사원 상자에서 4–6개 묶음으로 생성된다.

사과는 33.5% 확률로 요새 제단 상자에서, 47.5% 확률로 요새 저장실 상자에서, 59.8% 확률로 마을 무기 대장장이 상자에서, 70.4% 확률로 이글루 상자에서 모두 1–3개 묶음으로 생성된다. 74.2% 확률로 평원 마을 집 상자에서 1–5개 묶음으로 생성된다. 83.8% 확률로 보너스 상자에서 1–2개 묶음으로 생성된다.

베드락 에디션에서는 32.5% 확률로 요새 제단 상자에서, 40.0% 확률로 요새 저장실 상자에서 1–3개 묶음으로 생성된다. 모든 보너스 상자에서 1–2개 묶음으로 생성된다.

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

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

사슬은 31.5% 확률로 보루 잔해 상자에서 2–10개 묶음으로 생성된다.

사탕무 수프는 9.9% 확률로 눈 덮인 마을 집 상자에서 1개 묶음으로 생성된다.

사탕무 씨앗은 18.5% 확률로 던전 상자에서, 31.6% 확률로 폐광 상자가 실린 광산 수레에서, 18.5% 확률로 삼림 대저택 상자에서 모두 2–4개 묶음으로 생성된다. 21.2% 확률로 엔드 시티 상자에서 1–10개 묶음으로 생성된다. 66.3% 확률로 눈 덮인 마을 집 상자에서 1–5개 묶음으로 생성된다.

베드락 에디션에서는 33.3% 확률로 보너스 상자에서 1–2개 묶음으로 생성된다.

생대구는 43.0% 확률로 마을 어부 상자에서 1–3개 묶음으로 생성된다.

생연어는 24.2% 확률로 마을 어부 상자에서 1–3개 묶음으로 생성된다. 61.5% 확률로 보너스 상자에서 1–2개 묶음으로 생성된다.

베드락 에디션에서는 모든 보너스 상자에서 1–2개 묶음으로 생성된다.

석재 벽돌은 37.7% 확률로 마을 석공 상자에서 1개 묶음으로 생성된다.

석탄은 43.0% 확률로 마을 어부 상자에서, 9.9% 확률로 마을 도구 대장장이 상자에서, 27.9% 확률로 마을 도살업자 상자에서 모두 1–3개 묶음으로 생성된다. 40.0% 확률로 난파선 보급품 상자에서 2–8개 묶음으로 생성된다. 81.0% 확률로 해저 폐허 상자에서, 84.2% 확률로 해저 폐허 상자에서, 26.6% 확률로 던전 상자에서, 41.2% 확률로 눈 덮인 마을 집 상자에서, 70.4% 확률로 이글루 상자에서, 26.6% 확률로 삼림 대저택 상자에서 모두 1–4개 묶음으로 생성된다. 34.3% 확률로 요새 저장실 상자에서, 31.6% 확률로 폐광 상자가 실린 광산 수레에서 3–8개 묶음으로 생성된다.

베드락 에디션에서는 28.5% 확률로 요새 저장실 상자에서 3–8개 묶음으로 생성된다.

선인장은 80.6% 확률로 사막 마을 집 상자에서 1–4개 묶음으로 생성된다.

베드락 에디션에서는 50.0% 확률로 보너스 상자에서 1–2개 묶음으로 생성된다.

손상된 다이아몬드 검이 아이템의 내구성은 20%와 65% 사이에 있다.은 10.2% 확률로 보루 잔해 보물 상자에서 1개 묶음으로 생성된다.

손상된 마법이 부여된 다이아몬드 각반보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.은 10.2% 확률로 보루 잔해 보물 상자에서 1개 묶음으로 생성된다.

손상된 마법이 부여된 다이아몬드 검보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.은 16.8% 확률로 보루 잔해 보물 상자에서 1개 묶음으로 생성된다.

손상된 마법이 부여된 다이아몬드 부츠보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.는 10.2% 확률로 보루 잔해 보물 상자에서 1개 묶음으로 생성된다.

손상된 마법이 부여된 다이아몬드 삽보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.은 4.8% 확률로 보루 잔해 호글린 마구간 상자에서 1개 묶음으로 생성된다.

손상된 마법이 부여된 다이아몬드 투구보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.는 10.2% 확률로 보루 잔해 보물 상자에서 1개 묶음으로 생성된다.

손상된 마법이 부여된 다이아몬드 흉갑보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.은 10.2% 확률로 보루 잔해 보물 상자에서 1개 묶음으로 생성된다.

손상된 마법이 부여된 석궁보물 마법포함한 모든 마법의 확률은 동일하며(영혼 신속 제외), 마법 레벨도 확률이 동일하다.은 12.2% 확률로 보루 잔해 다리 상자에서, 13.3% 확률로 보루 잔해 상자에서 1개 묶음으로 생성된다.

베드락 에디션에서는 12.0% 확률로 보루 잔해 상자에서 1개 묶음으로 생성된다.

쇠뇌는 16.0% 확률로 보루 잔해 상자에서, 모든 약탈자 전초기지 상자에서 1개 묶음으로 생성된다.

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

베드락 에디션에서는 33.3% 확률로 보너스 상자에서 1–2개 묶음으로 생성된다.

수상한 스튜The stew grants one of the following effects: 5–7 seconds of Blindness, 7–10 seconds of Jump Boost, 7-10 seconds of Night Vision, 10–20 seconds of Poison, 7–10 seconds of Saturation, or 6–8 seconds of Weakness.는 57.4% 확률로 난파선 보급품 상자에서 1개 묶음으로 생성된다.

시계는 7.7% 확률로 난파선 지도 상자에서, 7.3% 확률로 무너진 차원문 상자에서 1개 묶음으로 생성된다.

실은 26.2% 확률로 보루 잔해 호글린 마구간 상자에서 3–8개 묶음으로 생성된다. 57.8% 확률로 던전 상자에서, 59.0% 확률로 사막 사원 상자에서, 57.8% 확률로 삼림 대저택 상자에서 모두 1–8개 묶음으로 생성된다. 31.5% 확률로 보루 잔해 상자에서 4–6개 묶음으로 생성된다. 47.9% 확률로 보루 잔해 다리 상자에서, 39.1% 확률로 약탈자 전초기지 상자에서 1–6개 묶음으로 생성된다.

썩은 살점은 59.6% 확률로 해저 폐허 상자에서, 55.3% 확률로 이글루 상자에서 1개 묶음으로 생성된다. 89.3% 확률로 마을 사원 상자에서 1–4개 묶음으로 생성된다. 57.8% 확률로 던전 상자에서, 59.0% 확률로 사막 사원 상자에서, 57.8% 확률로 삼림 대저택 상자에서 모두 1–8개 묶음으로 생성된다. 34.6% 확률로 난파선 보급품 상자에서 5–24개 묶음으로 생성된다. 53.4% 확률로 정글 사원 상자에서, 28.7% 확률로 사막 사원 상자에서 3–7개 묶음으로 생성된다.

베드락 에디션에서는 53.3% 확률로 정글 사원 상자에서 3–7개 묶음으로 생성된다.

아카시아나무 묘목은 71.7% 확률로 사바나 마을 집 상자에서 1–2개 묶음으로 생성된다.

베드락 에디션에서는 16.7% 확률로 보너스 상자에서 4개 묶음으로 생성된다.

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

베드락 에디션에서는 50.0% 확률로 보너스 상자에서 1–3개 묶음으로 생성된다.

안장은 2.5% 확률로 요새 제단 상자에서, 16.2% 확률로 마을 무기 대장장이 상자에서, 28.3% 확률로 던전 상자에서, 11.3% 확률로 사바나 마을 집 상자에서, 9.5% 확률로 보루 잔해 호글린 마구간 상자에서, 35.3% 확률로 요새 상자에서, 12.9% 확률로 정글 사원 상자에서, 23.5% 확률로 사막 사원 상자에서, 13.3% 확률로 엔드 시티 상자에서, 17.3% 확률로 마을 가죽 세공인 상자에서 모두 1개 묶음으로 생성된다.

베드락 에디션에서는 2.4% 확률로 요새 제단 상자에서, 12.8% 확률로 정글 사원 상자에서 1개 묶음으로 생성된다.

양동이는 18.5% 확률로 던전 상자에서, 11.3% 확률로 사바나 마을 집 상자에서, 18.5% 확률로 삼림 대저택 상자에서 모두 1개 묶음으로 생성된다.

에메랄드는 14.9% 확률로 해저 폐허 상자에서, 24.2% 확률로 마을 어부 상자에서, 31.8% 확률로 마을 갑옷 제조인 상자에서, 12.3% 확률로 마을 양치기 상자에서, 10.2% 확률로 마을 도살업자 상자에서, 16.4% 확률로 해저 폐허 상자에서, 12.3% 확률로 마을 화살 제조인 상자에서, 7.6% 확률로 이글루 상자에서, 20.8% 확률로 마을 석공 상자에서 모두 1개 묶음으로 생성된다. 25.4% 확률로 마을 사원 상자에서, 9.9% 확률로 눈 덮인 마을 집 상자에서, 21.5% 확률로 사바나 마을 집 상자에서, 22.8% 확률로 평원 마을 집 상자에서, 18.6% 확률로 타이가 마을 집 상자에서, 17.3% 확률로 마을 가죽 세공인 상자에서 모두 1–4개 묶음으로 생성된다. 73.7% 확률로 난파선 보물 상자에서 1–5개 묶음으로 생성된다. 53.1% 확률로 땅에 묻힌 보물 상자에서 4–8개 묶음으로 생성된다. 14.3% 확률로 사막 마을 집 상자에서, 8.7% 확률로 정글 사원 상자에서, 18.0% 확률로 사막 사원 상자에서 모두 1–3개 묶음으로 생성된다. 9.0% 확률로 엔드 시티 상자에서 2–6개 묶음으로 생성된다.

베드락 에디션에서는 7.2% 확률로 요새 제단 상자에서, 8.7% 확률로 정글 사원 상자에서 1–3개 묶음으로 생성된다. 20.3% 확률로 타이가 마을 집 상자에서 1–4개 묶음으로 생성된다.

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

베드락 에디션에서는 22.6% 확률로 요새 제단 상자에서 1개 묶음으로 생성된다.

영혼 모래는 26.2% 확률로 보루 잔해 호글린 마구간 상자에서 2–7개 묶음으로 생성된다.

영혼 신속 마법이 부여된 황금 부츠임의의 레벨로 영혼 신속 마법이 부여된다.는 16.0% 확률로 보루 잔해 상자에서 1개 묶음으로 생성된다.

우는 흑요석은 12.2% 확률로 보루 잔해 다리 상자에서 3–8개 묶음으로 생성된다. 29.4% 확률로 보루 잔해 보물 상자에서, 31.5% 확률로 보루 잔해 상자에서 1–5개 묶음으로 생성된다.

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

베드락 에디션에서는 21.5% 확률로 삼림 대저택 상자에서 1개 묶음으로 생성된다.

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

베드락 에디션에서는 21.5% 확률로 삼림 대저택 상자에서 1개 묶음으로 생성된다.

음반 (pigstep)은 3.3% 확률로 보루 잔해 상자에서 1개 묶음으로 생성된다.

베드락 에디션에서는 3.0% 확률로 보루 잔해 상자에서 1개 묶음으로 생성된다.

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

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

익히지 않은 돼지고기는 48.6% 확률로 마을 도살업자 상자에서 1–3개 묶음으로 생성된다. 26.2% 확률로 보루 잔해 호글린 마구간 상자에서 2–5개 묶음으로 생성된다.

익히지 않은 소고기는 48.6% 확률로 마을 도살업자 상자에서 1–3개 묶음으로 생성된다.

익히지 않은 양고기는 48.6% 확률로 마을 도살업자 상자에서 1–3개 묶음으로 생성된다.

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

익힌 돼지고기는 26.2% 확률로 보루 잔해 호글린 마구간 상자에서 2–5개 묶음으로 생성된다.

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

자석석은 모든 보루 잔해 다리 상자에서 1개 묶음으로 생성된다.

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

베드락 에디션에서는 25.0% 확률로 보너스 상자에서 1–3개 묶음으로 생성된다.

잔디는 45.9% 확률로 사바나 마을 집 상자에서 1개 묶음으로 생성된다.

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

베드락 에디션에서는 25.0% 확률로 보너스 상자에서 1–3개 묶음으로 생성된다.

종은 1.5% 확률로 무너진 차원문 상자에서 1개 묶음으로 생성된다.

종이는 49.4% 확률로 난파선 보급품 상자에서 1–12개 묶음으로 생성된다. 89.4% 확률로 난파선 지도 상자에서 1–10개 묶음으로 생성된다. 89.2% 확률로 요새 도서관 상자에서 2–7개 묶음으로 생성된다. 61.2% 확률로 마을 지도 제작자 상자에서 1–5개 묶음으로 생성된다.

베드락 에디션에서는 88.3% 확률로 요새 도서관 상자에서 2–7개 묶음으로 생성된다.

진홍빛 네사체는 26.2% 확률로 보루 잔해 호글린 마구간 상자에서 2–7개 묶음으로 생성된다.

진홍빛 뿌리는 26.2% 확률로 보루 잔해 호글린 마구간 상자에서 2–7개 묶음으로 생성된다.

짙은 참나무 원목은 28.0% 확률로 보너스 상자에서 1–3개 묶음으로 생성된다. 모든 약탈자 전초기지 상자에서 2–3개 묶음으로 생성된다.

베드락 에디션에서는 50.0% 확률로 보너스 상자에서 1–3개 묶음으로 생성된다.

참나무 묘목은 48.2% 확률로 평원 마을 집 상자에서 1–2개 묶음으로 생성된다. 25.6% 확률로 마을 무기 대장장이 상자에서 3–7개 묶음으로 생성된다.

베드락 에디션에서는 16.7% 확률로 보너스 상자에서 4개 묶음으로 생성된다. 26.3% 확률로 마을 지도 제작자 상자에서 1–2개 묶음으로 생성된다.

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

베드락 에디션에서는 25.0% 확률로 보너스 상자에서 1–3개 묶음으로 생성된다.

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

베드락 에디션에서는 모든 보너스 상자에서 1–12개 묶음으로 생성된다.

책은 14.3% 확률로 사막 마을 집 상자에서, 12.1% 확률로 평원 마을 집 상자에서 1개 묶음으로 생성된다. 89.2% 확률로 요새 도서관 상자에서 1–3개 묶음으로 생성된다. 34.5% 확률로 난파선 지도 상자에서 1–5개 묶음으로 생성된다.

베드락 에디션에서는 88.3% 확률로 요새 도서관 상자에서 1–3개 묶음으로 생성된다.

철 검은 12.1% 확률로 요새 제단 상자에서, 25.6% 확률로 마을 무기 대장장이 상자에서, 75.0% 확률로 땅에 묻힌 보물 상자에서 모두 1개 묶음으로 생성된다.

베드락 에디션에서는 11.8% 확률로 요새 제단 상자에서 1개 묶음으로 생성된다.

철 곡괭이는 12.1% 확률로 요새 제단 상자에서, 41.2% 확률로 마을 도구 대장장이 상자에서, 4.0% 확률로 요새 저장실 상자에서, 25.6% 확률로 마을 무기 대장장이 상자에서, 7.0% 확률로 폐광 상자가 실린 광산 수레에서 모두 1개 묶음으로 생성된다.

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

철 레깅스는 12.1% 확률로 요새 제단 상자에서, 25.6% 확률로 마을 무기 대장장이 상자에서 1개 묶음으로 생성된다.

베드락 에디션에서는 11.8% 확률로 요새 제단 상자에서 1개 묶음으로 생성된다.

철 말 갑옷은 2.5% 확률로 요새 제단 상자에서, 5.7% 확률로 마을 무기 대장장이 상자에서, 21.8% 확률로 던전 상자에서, 19.0% 확률로 요새 상자에서, 4.5% 확률로 정글 사원 상자에서, 18.0% 확률로 사막 사원 상자에서, 4.6% 확률로 엔드 시티 상자에서 모두 1개 묶음으로 생성된다.

베드락 에디션에서는 2.4% 확률로 요새 제단 상자에서, 4.4% 확률로 정글 사원 상자에서 1개 묶음으로 생성된다.

철 부츠는 12.1% 확률로 요새 제단 상자에서, 25.6% 확률로 마을 무기 대장장이 상자에서 1개 묶음으로 생성된다.

베드락 에디션에서는 11.8% 확률로 요새 제단 상자에서 1개 묶음으로 생성된다.

철 삽은 41.2% 확률로 마을 도구 대장장이 상자에서 1개 묶음으로 생성된다.

철 조각은 31.5% 확률로 보루 잔해 상자에서 2–8개 묶음으로 생성된다. 94.5% 확률로 난파선 보물 상자에서 1–10개 묶음으로 생성된다. 46.4% 확률로 무너진 차원문 상자에서 9–18개 묶음으로 생성된다. 29.4% 확률로 보루 잔해 보물 상자에서 8–16개 묶음으로 생성된다. 47.9% 확률로 보루 잔해 다리 상자에서 2–6개 묶음으로 생성된다. 9.7% 확률로 타이가 마을 집 상자에서 1–5개 묶음으로 생성된다.

베드락 에디션에서는 10.7% 확률로 타이가 마을 집 상자에서 1–5개 묶음으로 생성된다.

철 주괴는 18.5% 확률로 던전 상자에서, 18.5% 확률로 삼림 대저택 상자에서, 99.4% 확률로 땅에 묻힌 보물 상자에서 모두 1–4개 묶음으로 생성된다. 23.3% 확률로 요새 제단 상자에서, 41.2% 확률로 마을 도구 대장장이 상자에서, 97.4% 확률로 난파선 보물 상자에서, 34.3% 확률로 요새 저장실 상자에서, 45.1% 확률로 마을 무기 대장장이 상자에서, 19.0% 확률로 요새 상자에서, 37.4% 확률로 정글 사원 상자에서, 18.0% 확률로 사막 사원 상자에서, 31.6% 확률로 폐광 상자가 실린 광산 수레에서 모두 1–5개 묶음으로 생성된다. 38.4% 확률로 엔드 시티 상자에서 4–8개 묶음으로 생성된다. 54.2% 확률로 마을 갑옷 제조인 상자에서, 30.5% 확률로 약탈자 전초기지 상자에서 1–3개 묶음으로 생성된다. 12.2% 확률로 보루 잔해 다리 상자에서 2–8개 묶음으로 생성된다. 29.4% 확률로 보루 잔해 보물 상자에서 3–9개 묶음으로 생성된다. 16.0% 확률로 보루 잔해 상자에서 1–6개 묶음으로 생성된다.

베드락 에디션에서는 57.2% 확률로 땅에 묻힌 보물 상자에서 3–5개 묶음으로 생성된다. 22.6% 확률로 요새 제단 상자에서, 28.5% 확률로 요새 저장실 상자에서, 37.3% 확률로 정글 사원 상자에서 모두 1–5개 묶음으로 생성된다.

철 투구는 12.1% 확률로 요새 제단 상자에서, 31.8% 확률로 마을 갑옷 제조인 상자에서, 25.6% 확률로 마을 무기 대장장이 상자에서 모두 1개 묶음으로 생성된다.

베드락 에디션에서는 11.8% 확률로 요새 제단 상자에서 1개 묶음으로 생성된다.

철 흉갑은 12.1% 확률로 요새 제단 상자에서, 25.6% 확률로 마을 무기 대장장이 상자에서 1개 묶음으로 생성된다.

베드락 에디션에서는 11.8% 확률로 요새 제단 상자에서 1개 묶음으로 생성된다.

철사 덫 갈고리는 30.5% 확률로 약탈자 전초기지 상자에서 1–3개 묶음으로 생성된다.

청금석은 25.4% 확률로 마을 사원 상자에서 1–4개 묶음으로 생성된다. 61.5% 확률로 난파선 보물 상자에서 1–10개 묶음으로 생성된다. 16.9% 확률로 폐광 상자가 실린 광산 수레에서 4–9개 묶음으로 생성된다.

초록색 염료는 14.3% 확률로 사막 마을 집 상자에서 1개 묶음으로 생성된다.

큰 고사리는 18.6% 확률로 타이가 마을 집 상자에서 1개 묶음으로 생성된다.

베드락 에디션에서는 20.3% 확률로 타이가 마을 집 상자에서 1개 묶음으로 생성된다.

키 큰 잔디는 45.9% 확률로 사바나 마을 집 상자에서 1개 묶음으로 생성된다.

통은 24.2% 확률로 마을 어부 상자에서 1–3개 묶음으로 생성된다.

푸른얼음은 9.9% 확률로 눈 덮인 마을 집 상자에서 1개 묶음으로 생성된다.

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

베드락 에디션에서는 18.9% 확률로 땅에 묻힌 보물 상자에서 1–5개 묶음으로 생성된다.

하얀색 양털은 55.8% 확률로 마을 양치기 상자에서 1–8개 묶음으로 생성된다.

호박 파이는 9.7% 확률로 타이가 마을 집 상자에서 1개 묶음으로 생성된다.

베드락 에디션에서는 10.7% 확률로 타이가 마을 집 상자에서 1개 묶음으로 생성된다.

호박씨는 40.6% 확률로 타이가 마을 집 상자에서 1–5개 묶음으로 생성된다. 18.5% 확률로 던전 상자에서, 31.6% 확률로 폐광 상자가 실린 광산 수레에서, 18.5% 확률로 삼림 대저택 상자에서 모두 2–4개 묶음으로 생성된다.

베드락 에디션에서는 33.3% 확률로 보너스 상자에서 1–2개 묶음으로 생성된다. 43.7% 확률로 타이가 마을 집 상자에서 1–5개 묶음으로 생성된다.

호박은 15.6% 확률로 난파선 보급품 상자에서 1–3개 묶음으로 생성된다.

화로는 9.9% 확률로 눈 덮인 마을 집 상자에서 1개 묶음으로 생성된다.

화분은 20.8% 확률로 마을 석공 상자에서 1개 묶음으로 생성된다.

화살은 23.3% 확률로 마을 화살 제조인 상자에서 1–3개 묶음으로 생성된다. 모든 정글 사원발사기에서, 39.1% 확률로 약탈자 전초기지 상자에서 2–7개 묶음으로 생성된다. 47.9% 확률로 보루 잔해 다리 상자에서, 54.6% 확률로 보루 잔해 상자에서, 26.2% 확률로 보루 잔해 호글린 마구간 상자에서 모두 5–17개 묶음으로 생성된다.

베드락 에디션에서는 29.4% 확률로 보루 잔해 보물 상자에서 5–21개 묶음으로 생성된다. 16.0% 확률로 보루 잔해 상자에서 2–15개 묶음으로 생성된다. 12.2% 확률로 보루 잔해 다리 상자에서 2–12개 묶음으로 생성된다.

화약은 22.4% 확률로 난파선 보급품 상자에서 1–5개 묶음으로 생성된다. 57.8% 확률로 던전 상자에서, 59.0% 확률로 사막 사원 상자에서, 57.8% 확률로 삼림 대저택 상자에서 모두 1–8개 묶음으로 생성된다.

화염구는 46.4% 확률로 무너진 차원문 상자에서 1개 묶음으로 생성된다.

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

황금 당근은 7.3% 확률로 무너진 차원문 상자에서 4–12개 묶음으로 생성된다.

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

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

황금이 박힌 흑암은 12.2% 확률로 보루 잔해 다리 상자에서 5–8개 묶음으로 생성된다. 29.4% 확률로 보루 잔해 보물 상자에서, 31.5% 확률로 보루 잔해 상자에서, 26.2% 확률로 보루 잔해 호글린 마구간 상자에서 모두 1–5개 묶음으로 생성된다.

횃불은 65.7% 확률로 폐광 상자가 실린 광산 수레에서 1–16개 묶음으로 생성된다. 11.3% 확률로 사바나 마을 집 상자에서 1–2개 묶음으로 생성된다.

회백색 양털은 23.3% 확률로 마을 양치기 상자에서 1–3개 묶음으로 생성된다.

회색 양털은 23.3% 확률로 마을 양치기 상자에서 1–3개 묶음으로 생성된다.

흑요석은 8.0% 확률로 요새 상자에서 2–4개 묶음으로 생성된다. 46.4% 확률로 무너진 차원문 상자에서 1–2개 묶음으로 생성된다. 31.5% 확률로 보루 잔해 상자에서 4–6개 묶음으로 생성된다. 25.6% 확률로 마을 무기 대장장이 상자에서 3–7개 묶음으로 생성된다.


Notes

[보기 | 편집 | 역사 | 캐시 제거]위 설명문서는 모듈:LootChest/doc에서 왔습니다.
local p = {

    calc_average_amount_this_item_per_pool = function( 
            min_stacksize, max_stacksize,
            min_pool_rolls, max_pool_rolls, 
            item_weight, pool_total_item_weight )

        local avg_stacksize = ( min_stacksize + max_stacksize ) / 2
        local avg_rolls = ( min_pool_rolls + max_pool_rolls ) / 2
        
        return avg_stacksize * avg_rolls * item_weight / pool_total_item_weight
        
    end,
    
    calc_chance_any_of_this_item_per_pool = function( 
            min_pool_rolls, max_pool_rolls,
            item_weight, pool_total_item_weight )

        local inverse_result = 0 -- 1 - inverse_result = return value
        local inverse_item_weight = pool_total_item_weight - item_weight
        
        -- will be used for the division in the for loop to avoid the slightly
        -- less performant math.pow(). The divisor already includes the probability
        -- of picking any specific number of rolls.
        local cur_dividend = inverse_item_weight
        local cur_divisor = pool_total_item_weight * (max_pool_rolls - min_pool_rolls + 1)
        
        for i = 1, max_pool_rolls do
            if i >= min_pool_rolls then
                inverse_result = inverse_result + cur_dividend / cur_divisor
            end
            cur_dividend = cur_dividend * inverse_item_weight -- simulate pow
            cur_divisor = cur_divisor * pool_total_item_weight -- simulate pow
        end
        
        return 1 - inverse_result
        
    end,
    
    java = '[[자바 에디션]], [[분류:Java Edition 관련 정보]]',
    ['java-upcoming'] = '[[Java Edition 1.18]]{{upcoming}}, [[분류:Java Edition 관련 정보]]',
    bedrock = '[[베드락 에디션]][[분류:Bedrock Edition 관련 정보]]',
    ['bedrock-upcoming'] = '[[Bedrock Edition 1.17]]{{upcoming}}[[분류:Bedrock Edition 관련 정보]] ',
    
    -- These 'items' define which sprite, label and link to use in the table.
    -- Properties 'cannot_stack', 'preserve_case', and 'plural' describe how to display the single-item summary in p.base2.
    -- Order within this 'items' list doesn't matter.

    items = {
        ["acacia-log"]          = { "block", link="원목" },
        ["acacia-sapling"]      = { "block", link="묘목" },
        ["activator-rail"]      = { "block" },
        ["ancient-debris"]      = { "block", plural=false },
        ["apple"]               = { "item" },
        ["arrow"]               = { "item" },
        ["bamboo"]              = { "item", plural=false },
        ["barrel"]              = { "block" },
        ["basalt"]              = { "block", plural=false },
        ["beetroot"]            = { "item" },
        ["beetroot-seeds"]      = { "item", plural=false },
        ["beetroot-soup"]       = { "item", plural=false, cannot_stack=true },
        ["bell"]                = { "block" },
        ["birch-log"]           = { "block", link="원목" },
        ["birch-sapling"]       = { "block", link="묘목" },
        ["black-wool"]          = { "block", link="양털", plural=false },
        ["block-of-gold"]       = { "block", plural="금 블록"  },
        ["blue-ice"]            = { "block", plural=false },
        ["bone"]                = { "item" },
        ["bone-block"]          = { "block" },
        ["book"]                = { "item" },
        ["book-and-quill"]      = { "item", plural=false, title="Book and Quill" },
        ["bottle-o'-enchanting"] = { "item", title="경험치 병", plural="경험치 병" },
        ["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" },
        ["chain"]               = { "block" },
        ["chainmail-boots"]     = { "item", link="갑옷", cannot_stack=true, plural=false },
        ["chainmail-chestplate"] = { "item", link="갑옷", cannot_stack=true },
        ["chainmail-helmet"]    = { "item", link="갑옷", cannot_stack=true },
        ["chainmail-leggings"]  = { "item", link="갑옷", cannot_stack=true, plural=false },
        ["clay-ball"]                = { "item", link="점토 덩이", plural=false },
        ["clock"]               = { "item" },
        ["coal"]                = { "item", plural=false },
        ["cocoa-beans"]         = { "item", plural=false },
        ["cooked-cod"]          = { "item", plural=false },
        ["cooked-porkchop"]     = { "item" },
        ["cooked-salmon"]       = { "item", plural=false },
        ["compass"]             = { "item" },
        ["crimson-fungus"]      = { "block", link="균", plural= "crimson fungi" },
        ["crimson-nylium"]      = { "block", link="네사체", plural=false},
        ["crimson-roots"]       = { "block", link="뿌리", plural=false},
        ["crossbow"]            = { "item", cannot_stack=true },
        ["crying-obsidian"]     = { "block" },
        ["dandelion"]           = { "block", link="꽃" },
        ["dark-oak-log"]        = { "block", link="원목" },
        ["dark-oak-sapling"]    = { "block", link="묘목" },
        ["dead-bush"]           = { "block", link="마른 덤불" },
        ["detector-rail"]       = { "block" },
        ["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-mellohi"]        = { "item", id='music-disc-mellohi',title="음반 (Mellohi)", link="음반", cannot_stack=true, plural=false },
        ["disc-pigstep"]        = { "item", id='music-disc-pigstep', title = "음반 (Pigstep)", link="음반", cannot_stack=true, plural=false },
        ["disc-wait"]           = { "item", id='music-disc-wait',title="음반 (Wait)", link="음반", cannot_stack=true, plural=false },
        ["egg"]                 = { "item" },
        ["emerald"]             = { "item" },
        ["empty-map"]           = { "item", link="지도", title="빈 지도" },
        ["enchanted-book"]   = { "item", id='enchanted-book', title="마법이 부여된 책", link="마법이 부여된 책", cannot_stack=true, note="enchant-with-levels-30" },
        ["enchanted-book-rnd"]  = { "item", id='enchanted-book', title="마법이 부여된 책", link="마법이 부여된 책", cannot_stack=true, note="enchant-randomly" },
        ["enchanted-book-rnd-soul-speed"] = { "item", id='enchanted-book', title="마법이 부여된 책", link="마법이 부여된 책", cannot_stack=true, note="enchant-randomly-soul-speed" },
        ["enchanted-fishing-rod"] = { "item", id="fishing-rod", link="낚싯대", cannot_stack=true, note="enchant-randomly" },
        ["enchanted-golden-apple"] = { "item" },
        ["ender-pearl"]         = { "item" },
        ["feather"]             = { "item" },
        ["fern"]                = { "block", link="잔디" },
        ["fire-charge"]         = { "item" },
        ["flint"]               = { "item", plural=false },
        ["flint-and-steel"]     = { "item", cannot_stack=true, plural=false },
        ["flower-pot"]          = { "item" },
        ["furnace"]             = { "block" },
        ["gilded-blackstone"]   = { "block", plural=false },
        ["glistering-melon-slice"] = { "item" },
        ["glowstone"]           = { "block" },
        ["golden-apple"]        = { "item" },
        ["golden-boots"]        = { "item", link="갑옷", cannot_stack=true, plural=false },
        ["golden-carrot"]       = { "item" },
        ["golden-chestplate"]   = { "item", link="갑옷", cannot_stack=true },
        ["golden-helmet"]       = { "item", link="갑옷", cannot_stack=true },
        ["golden-hoe"]          = { "item", link="괭이", cannot_stack=true },
        ["golden-horse-armor"]  = { "item", link="말 갑옷", cannot_stack=true, plural=false },
        ["golden-leggings"]     = { "item", link="갑옷", cannot_stack=true, plural=false },
        ["golden-sword"]        = { "item", link="검", cannot_stack=true },
        ["gold-ingot"]          = { "item" },
        ["gold-nugget"]         = { "item" },
        ["grass"]               = { "block", link="잔디", plural=false },
        ["gray-wool"]           = { "block", link="양털", plural=false },
        ["green-dye"]           = { "item", link="염료", plural=false },
        ["gunpowder"]           = { "item", plural=false },
        ["heart-of-the-sea"]    = { "item", plural=false, link="Heart of the Sea" },
        ["ink-sac"]             = { "item" },
        ["iron-boots"]          = { "item", link="갑옷", 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-shovel"]         = { "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", plural=false },
        ["leather-boots"]       = { "item", link="갑옷", cannot_stack=true, plural=false },
        ["leather-cap"]         = { "item", link="갑옷", cannot_stack=true },
        ["leather-pants"]       = { "item", link="갑옷", cannot_stack=true, plural=false },
        ["leather-tunic"]       = { "item", link="갑옷", cannot_stack=true },
        ["light-gray-wool"]     = { "block", link="양털", plural=false },
        ["light-weighted-pressure-plate"] = { "block", link="압력판" },
        ["lodestone"]           = { "block" },
        ["melon-seeds"]         = { "item", plural=false },
        ["magma-cream"]         = { "item", plural=false },
        ["magma-block"]         = { "block" },
        ["name-tag"]            = { "item" },
        ["netherite-boots"]     = { "item", link="갑옷", cannot_stack=true, plural=false },
        ["netherite-chestplate"] = { "item", link="갑옷", cannot_stack=true },
        ["netherite-helmet"]    = { "item", link="갑옷", cannot_stack=true },
        ["netherite-ingot"]     = { "item" },
        ["netherite-leggings"]  = { "item", link="갑옷", cannot_stack=true, plural=false },
        ["netherite-scrap"]     = { "item" },
        ["nether-wart"]         = { "item", plural=false },
        ["nether-quartz"]       = { "item", plural=false },
        ["oak-log"]             = { "block", link="원목" },
        ["oak-planks"]          = { "block", link="판자", id="oak-wood-planks", plural=false },
        ["oak-sapling"]         = { "block", link="묘목" },
        ["oak-sign"]            = { "item", link="표지판" },
        ["obsidian"]            = { "block", plural=false },
        ["paper"]               = { "item", plural=false },
        ["piglin-banner-pattern"] = { "item", id="banner-pattern", link="Banner Pattern", cannot_stack=true },
        ["poisonous-potato"]    = { "item", plural="poisonous potatoes" },
        ["polished-basalt"]     = { "block", plural=false},
        ["poppy"]               = { "block", link="꽃", plural="poppies" },
        ["potato"]              = { "item", plural="potatoes" },
        ["potion-of-regeneration"] = { "item", link="물약", title="재생의 물약", plural=false, preserve_case=true },
        ["potion-of-water-breathing"] = { "item", link="물약", title="수중 호흡 물약", plural=false, preserve_case=true },
        ["powered-rail"]        = { "block", title="Powered 레일", plural=false },
        ["prismarine-crystals"] = { "item", plural=false },
        ["pumpkin"]             = { "block" },
        ["pumpkin-pie"]         = { "item", plural=false },
        ["pumpkin-seeds"]       = { "item", plural=false },
        ["rail"]                = { "block", title="레일", plural=false },
        ["raw-beef"]            = { "item", link="익히지 않은 소고기", plural=false },
        ["raw-cod"]             = { "item", link="생대구", plural=false },
        ["raw-mutton"]          = { "item", link="익히지 않은 양고기", plural=false },
        ["raw-porkchop"]        = { "item", link="익히지 않은 돼지고기" },
        ["raw-salmon"]          = { "item", link="생대구", plural=false },
        ["redstone"]            = { "item", id="redstone-dust", title="레드스톤 가루", plural=false },
        ["rotten-flesh"]        = { "item", plural=false },
        ["saddle"]              = { "item", cannot_stack=true },
        ["sand"]                = { "block", plural=false },
        ["shears"]              = { "item", plural=false, cannot_stack=true },
        ["smooth-stone"]        = { "block", plural=false },
        ["snowball"]            = { "item", link="눈덩이" },
        ["snow-block"]          = { "block", link="눈 블록" },
        ["soul-sand"]           = { "block" },
        ["spectral-arrow"]      = { "item" },
        ["spider-eye"]          = { "item" },
        ["spruce-log"]          = { "block", link="원목" },
        ["spruce-sapling"]      = { "block", link="묘목" },
        ["spruce-sign"]         = { "item", link="표지판" },
        ["stick"]               = { "item" },
        ["stone"]               = { "block", plural=false },
        ["stone-axe"]           = { "item", link="도끼", cannot_stack=true },
        ["stone-bricks"]        = { "block", plural=false },
        ["stone-pickaxe"]       = { "item", link="곡괭이", cannot_stack=true },
        ["string"]              = { "item", plural=false },
        ["suspicious-stew"]     = { "item", plural=false, note="suspicious-stew" },
        ["sweet-berries"]       = { "item", plural=false },
        ["tall-grass"]          = { "block", plural=false, link="잔디" },
        ["tnt"]                 = { "block", title="TNT", plural=false, preserve_case=true },
        ["torch"]               = { "block" },
        ["tripwire-hook"]       = { "block" },
        ["water-bucket"]        = { "item", cannot_stack=true },
        ["wheat"]               = { "item", plural=false },
        ["wheat-seeds"]         = { "item", plural=false },
        ["white-wool"]          = { "block", link="양털", 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="염료", plural=false },
        ["map"]                 = { "item", link="지도", note="map" },

        ["damaged-random-enchanted-netherite-axe"] = { "item", id="netherite-axe", title="손상된 마법이 부여된 네더라이트 도끼", link="도끼", note="enchant-randomly", note1="damaged-0.15-0.85", cannot_stack=true },
        ["damaged-netherite-boots"]             = { "item", id="netherite-boots", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true, plural=false},
        ["damaged-level-enchanted-netherite-boots"] = { "item", id="netherite-boots", title="손상된 마법이 부여된 네더라이트 부츠", link="갑옷", note="enchant-with-levels-5-20", note1="damaged-0.2-0.65", cannot_stack=true, plural=false },
        ["damaged-random-enchanted-netherite-boots"] = { "item", id="netherite-boots", title="손상된 마법이 부여된 네더라이트 부츠", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true, plural=false },
        ["damaged-netherite-chestplate"]        = { "item", id="netherite-chestplate", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true},
        ["damaged-level-enchanted-netherite-chestplate"] = { "item", id="netherite-chestplate", title="손상된 마법이 부여된 네더라이트 흉갑", link="갑옷", note="enchant-with-levels-5-20", note1="damaged-0.2-0.65", cannot_stack=true },
        ["damaged-random-enchanted-netherite-chestplate"] = { "item", id="netherite-chestplate", title="손상된 마법이 부여된 네더라이트 흉갑", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true },
        ["damaged-netherite-helmet"]            = { "item", id="netherite-helmet", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true},
        ["damaged-random-enchanted-netherite-hoe"] = { "item", id="netherite-hoe", title="손상된 마법이 부여된 네더라이트 괭이", link="괭이", note="enchant-randomly", note1="damaged-0.1-0.95", cannot_stack=true },
        ["damaged-level-enchanted-netherite-helmet"] = { "item", id="netherite-helmet", title="손상된 마법이 부여된 네더라이트 투구", link="갑옷", note="enchant-with-levels-5-20", note1="damaged-0.2-0.65", cannot_stack=true },
        ["damaged-random-enchanted-netherite-helmet"] = { "item", id="netherite-helmet", title="손상된 마법이 부여된 네더라이트 투구", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true },
        ["damaged-netherite-leggings"]          = { "item", id="netherite-leggings", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true, plural=false},
        ["damaged-level-enchanted-netherite-leggings"] = { "item", id="netherite-leggings", title="손상된 마법이 부여된 네더라이트 각반", link="갑옷", note="enchant-with-levels-5-20", note1="damaged-0.2-0.65", cannot_stack=true, plural=false },
        ["damaged-random-enchanted-netherite-leggings"] = { "item", id="netherite-leggings", title="손상된 마법이 부여된 네더라이트 각반", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true, plural=false },
        ["damaged-random-enchanted-netherite-pickaxe"] = { "item", id="netherite-pickaxe", title="손상된 마법이 부여된 네더라이트 곡괭이", link="곡괭이", note="enchant-randomly", note1="damaged-0.1-0.95", cannot_stack=true },
        ["damaged-random-enchanted-netherite-shovel"] = { "item", id="netherite-shovel", title="손상된 마법이 부여된 네더라이트 삽", link="삽", note="enchant-randomly", note1="damaged-0.15-0.45", cannot_stack=true},
        ["damaged-netherite-sword"]             = { "item", id="netherite-sword", link="검", note="damaged-0.2-0.65", cannot_stack=true},
        ["damaged-level-enchanted-netherite-sword"] = { "item", id="netherite-sword", title="손상된 마법이 부여된 네더라이트 검", link="검", note="enchant-with-levels-5-20", note1="damaged-0.2-0.65", cannot_stack=true },
        ["damaged-random-enchanted-netherite-sword"] = { "item", id="netherite-sword", title="손상된 마법이 부여된 네더라이트 검", link="검", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true },
        ["damaged-diamond-boots"]               = { "item", id="diamond-boots", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true, plural=false},
        ["level-enchanted-diamond-boots"]       = { "item", id="diamond-boots", title="마법이 부여된 다이아몬드 부츠", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true, plural=false },
        ["damaged-random-enchanted-diamond-boots"] = { "item", id="diamond-boots", title="손상된 마법이 부여된 다이아몬드 부츠", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true, plural=false },
        ["damaged-diamond-chestplate"]          = { "item", id="diamond-chestplate", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true},
        ["level-enchanted-diamond-chestplate"]  = { "item", id="diamond-chestplate", title="마법이 부여된 다이아몬드 흉갑", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true },
        ["damaged-random-enchanted-diamond-chestplate"] = { "item", id="diamond-chestplate", title="손상된 마법이 부여된 다이아몬드 흉갑", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true },
        ["damaged-diamond-helmet"]              = { "item", id="diamond-helmet", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true},
        ["level-enchanted-diamond-helmet"]      = { "item", id="diamond-helmet", title="마법이 부여된 다이아몬드 투구", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true },
        ["damaged-random-enchanted-diamond-helmet"] = { "item", id="diamond-helmet", title="손상된 마법이 부여된 다이아몬드 투구", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true },
        ["damaged-diamond-leggings"]            = { "item", id="diamond-leggings", link="갑옷", note="damaged-0.2-0.65", cannot_stack=true, plural=false},
        ["level-enchanted-diamond-leggings"]    = { "item", id="diamond-leggings", title="마법이 부여된 다이아몬드 각반", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true, plural=false },
        ["damaged-random-enchanted-diamond-leggings"] = { "item", id="diamond-leggings", title="손상된 마법이 부여된 다이아몬드 각반", link="갑옷", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true, plural=false },
        ["level-enchanted-diamond-pickaxe"]     = { "item", id="diamond-pickaxe", title="마법이 부여된 다이아몬드 곡괭이", link="곡괭이", note="enchant-with-levels-20-39", cannot_stack=true },
        ["level-enchanted-diamond-shovel"]      = { "item", id="diamond-shovel", title="마법이 부여된 다이아몬드 삽", link="삽", note="enchant-with-levels-20-39", cannot_stack=true },
        ["damaged-random-enchanted-diamond-shovel"] = { "item", id="diamond-shovel", title="손상된 마법이 부여된 다이아몬드 삽", link="삽", note="enchant-randomly", note1="damaged-0.15-0.45", cannot_stack=true},
        ["damaged-diamond-sword"]               = { "item", id="diamond-sword", link="검", note="damaged-0.2-0.65", cannot_stack=true},
        ["level-enchanted-diamond-sword"]       = { "item", id="diamond-sword", title="마법이 부여된 다이아몬드 검", link="검", note="enchant-with-levels-20-39", cannot_stack=true },
        ["damaged-random-enchanted-diamond-sword"] = { "item", id="diamond-sword", title="손상된 마법이 부여된 다이아몬드 검", link="검", note="enchant-randomly", note1="damaged-0.2-0.65", cannot_stack=true },
        ["level-enchanted-iron-boots"]          = { "item", id="iron-boots", title="마법이 부여된 철 부츠", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true, plural=false },
        ["level-enchanted-iron-chestplate"]     = { "item", id="iron-chestplate", title="마법이 부여된 철 흉갑", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true },
        ["level-enchanted-iron-helmet"]         = { "item", id="iron-helmet", title="마법이 부여된 철 투구", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true },
        ["level-enchanted-iron-leggings"]       = { "item", id="iron-leggings", title="마법이 부여된 철 각반", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true, plural=false },
        ["level-enchanted-iron-pickaxe"]        = { "item", id="iron-pickaxe", title="마법이 부여된 철 곡괭이", link="곡괭이", note="enchant-with-levels-20-39", cannot_stack=true },
        ["level-enchanted-iron-shovel"]         = { "item", id="iron-shovel", title="마법이 부여된 철 삽", link="삽", note="enchant-with-levels-20-39", cannot_stack=true },
        ["level-enchanted-iron-sword"]          = { "item", id="iron-sword", title="마법이 부여된 철 검", link="검", note="enchant-with-levels-20-39", cannot_stack=true },
        ["random-enchanted-golden-axe"]         = { "item", id="golden-axe", title="마법이 부여된 황금 도끼", link="도끼", note="enchant-randomly", cannot_stack=true },
        ["level-enchanted-golden-boots"]        = { "item", id="golden-boots", title="마법이 부여된 황금 부츠", link="갑옷", note="enchant-with-levels-5-15", cannot_stack=true, plural=false },
        ["random-enchanted-golden-boots"]       = { "item", id="golden-boots", title="마법이 부여된 황금 부츠", link="갑옷", note="enchant-randomly", cannot_stack=true, plural=false },
        ["soul-speed-enchanted-golden-boots"]   = { "item", id="golden-boots", title="영혼 신속 마법이 부여된 황금 부츠", link="갑옷", note="enchant-randomly-soul-speed", cannot_stack=true, plural=false },
        ["level-enchanted-golden-chestplate"]   = { "item", id="golden-chestplate", title="마법이 부여된 황금 흉갑", link="갑옷", note="enchant-with-levels-5-15", cannot_stack=true },
        ["random-enchanted-golden-chestplate"]  = { "item", id="golden-chestplate", title="마법이 부여된 황금 흉갑", link="갑옷", note="enchant-randomly", cannot_stack=true },
        ["level-enchanted-golden-helmet"]       = { "item", id="golden-helmet", title="마법이 부여된 황금 투구", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true },
        ["random-enchanted-golden-helmet"]      = { "item", id="golden-helmet", title="마법이 부여된 황금 투구", link="갑옷", note="enchant-randomly", cannot_stack=true },
        ["level-enchanted-golden-hoe"]          = { "item", id="golden-hoe", title="마법이 부여된 황금 괭이", link="괭이", note="enchant-with-levels-20-39", cannot_stack=true },
        ["random-enchanted-golden-hoe"]         = { "item", id="golden-hoe", title="마법이 부여된 황금 괭이", link="괭이", note="enchant-randomly", cannot_stack=true },
        ["level-enchanted-golden-leggings"]     = { "item", id="golden-leggings", title="마법이 부여된 황금 각반", link="갑옷", note="enchant-with-levels-20-39", cannot_stack=true, plural=false },
        ["random-enchanted-golden-leggings"]    = { "item", id="golden-leggings", title="마법이 부여된 황금 각반", link="갑옷", note="enchant-randomly", cannot_stack=true, plural=false },
        ["random-enchanted-golden-pickaxe"]     = { "item", id="golden-pickaxe", title="마법이 부여된 황금 곡괭이", link="곡괭이", note="enchant-randomly", cannot_stack=true },
        ["random-enchanted-golden-shovel"]      = { "item", id="golden-shovel", title="마법이 부여된 황금 삽", link="삽", note="enchant-randomly", cannot_stack=true },
        ["random-enchanted-golden-sword"]       = { "item", id="golden-sword", title="마법이 부여된 황금 검", link="검", note="enchant-randomly", cannot_stack=true },
        ["random-enchanted-leather-boots"]      = { "item", id="leather-boots", title="마법이 부여된 가죽 부츠", link="갑옷", note="enchant-randomly", cannot_stack=true, plural=false },
        ["random-enchanted-leather-cap"]        = { "item", id="leather-cap", title="마법이 부여된 가죽 모자", link="갑옷", note="enchant-randomly", cannot_stack=true },
        ["random-enchanted-leather-pants"]      = { "item", id="leather-pants", title="마법이 부여된 가죽 바지", link="갑옷", note="enchant-randomly", cannot_stack=true, plural=false },
        ["random-enchanted-leather-tunic"]      = { "item", id="leather-tunic", title="마법이 부여된 가죽 조끼", link="갑옷", note="enchant-randomly", cannot_stack=true },
        ["damaged-level-enchanted-crossbow"]    = { "item", id="crossbow", title="손상된 마법이 부여된 석궁", link="석궁", note="enchant-with-levels-20-25", note1="damaged-0.05-0.15", cannot_stack=true },
        ["damaged-random-enchanted-crossbow"]   = { "item", id="crossbow", title="손상된 마법이 부여된 석궁", link="석궁", note="enchant-randomly", note1="damaged-0.1-0.5", cannot_stack=true },

        ["empty"]                        = { "block", id="air", link='', title='빈 상자', plural=false, note="nothing" },
    },

    notes = {
        ["enchant-randomly"] = "[[보물 마법]]을 '''포함한''' 모든 마법의 확률은 동일하며([[영혼 신속]] 제외), 마법 레벨도 확률이 동일하다.",
        ["enchant-randomly-soul-speed"] = "임의의 레벨로 [[영혼 신속]] 마법이 부여된다.",
        ["enchant-with-levels-5-15"] = "마법의 확률은 [[마법 부여대]]에서 레벨 5에서 레벨 15까지의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 여러 마법이 중복될 확률은 줄어들지 않는다([[영혼 신속]] 제외).",
        ["enchant-with-levels-5-20"] = "마법의 확률은 [[마법 부여대]]에서 레벨 5에서 레벨 20까지의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 여러 마법이 중복될 확률은 줄어들지 않는다([[영혼 신속]] 제외).",
        ["enchant-with-levels-20-25"] = "마법의 확률은 [[마법 부여대]]에서 레벨 20에서 레벨 25까지의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 여러 마법이 중복될 확률은 줄어들지 않는다([[영혼 신속]] 제외).",
        ["enchant-with-levels-20-25"] = "마법의 확률은 [[마법 부여대]]에서 레벨 20에서 레벨 25까지의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 여러 마법이 중복될 확률은 줄어들지 않는다([[영혼 신속]] 제외).",
        ["enchant-with-levels-20-39"] = "마법의 확률은 [[마법 부여대]]에서 레벨 20에서 레벨 39까지의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 여러 마법이 중복될 확률은 줄어들지 않는다([[영혼 신속]] 제외).",
        ["enchant-with-levels-30"] = "마법의 확률은 [[마법 부여대]]에서 레벨 30의 마법을 부여할 때와 동일하다. [[보물 마법]]에도 여러 마법이 중복될 확률은 줄어들지 않는다([[영혼 신속]] 제외).",
        ["damaged-0.05-0.15"] = "이 아이템의 내구성은 5%와 15% 사이에 있다.",
        ["damaged-0.1-0.95"] = "이 아이템의 내구성은 10%와 95% 사이에 있다.",
        ["damaged-0.15-0.45"] = "이 아이템의 내구성은 15%와 45% 사이에 있다.",
        ["damaged-0.15-0.85"] = "이 아이템의 내구성은 15%와 85% 사이에 있다.",
        ["damaged-0.1-0.5"] = "이 아이템의 내구성은 10%와 50% 사이에 있다.",
        ["damaged-0.2-0.65"] = "이 아이템의 내구성은 20%와 65% 사이에 있다.",
        ["nothing"] = "'Nothing' does not refer to the chance of an empty chest.  Instead, it refers to the chance that the random loot generator does not add any loot ''on a single roll''.",
        ["suspicious-stew"] = "The stew grants one of the following effects: 5–7 seconds of [[Blindness]], 7–10 seconds of [[Jump Boost]], 7-10 seconds of [[Night Vision]], 10–20 seconds of [[Poison]], 7–10 seconds of [[Saturation]], or 6–8 seconds of [[Weakness]].",
        ["map"] = "Named unknown map, but changed to map 0, the scale level is 1:4, Maps from the same stack are stackable, but maps that are not stacked are unstackable despite looking identical."
    },

    -- <ref group='note' name='enchant-randomly'>
    
    -- NOTE: order here doesn't matter.  
    --       * in the table, chests will sort in alphabetical order
    --       * in the table, items will sort by chance, then by avg#, then alphabetically.
    --       * If poolsJavaUpcoming is omitted, poolsJava will be used. To omit a pool entirely, set it to {}.
    --       * If poolsBedrock is omitted, it implies that Bedrock has the same pools as Java.  This is a shortcoming; it ought to be made explicit somehow.
    
    chests = {
        ["shipwreck-map"] = { -- shipwreck_map.json
            header = "지도",
            superheader = "[[난파선]]",
            link   = "[[난파선#지도 상자|난파선 지도]]",
            structure = "난파선",
            container = "지도 상자",
            structID = "shipwreck",
            poolsJava = {
                {
                    rolls = {1,1},
                    items = {
                        ["buried-treasure-map"] = {1,1,1},
                    }
                },
                {
                    rolls = {3,3},
                    items = {
                        ["compass"]             = {1,1,1},
                        ["empty-map"]           = {1,1,1},
                        ["clock"]               = {1,1,1},
                        ["paper"]               = {1,10,20},
                        ["feather"]             = {1,5,10},
                        ["book"]                = {1,5,5},
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {
                {
                    rolls = {1,1},
                    items = {
                        ["buried-treasure-map"] = {1,1,1},
                    }
                },
                {
                    rolls = {3,3},
                    items = {
                        ["compass"]             = {1,1,1},
                        ["map"]                 = {1,1,1},
                        ["clock"]               = {1,1,1},
                        ["paper"]               = {1,10,20},
                        ["feather"]             = {1,5,10},
                        ["book"]                = {1,5,5},
                    }
                },
            },
            poolsBedrockUpcoming = {}
        },
        ["shipwreck-supply"] = { -- shipwreck_supply.json
            header = "보급품",
            superheader = "[[난파선]]",
            link   = "[[난파선#보급품 상자|난파선 보급품]]",
            structure = "난파선",
            container = "보급품 상자",
            structID = "shipwreck",
            poolsJava = {
                {
                    rolls = {3,10},
                    items = {
                        ["paper"]               = {1,12,8},
                        ["potato"]              = {2,6,7},
                        ["poisonous-potato"]    = {2,6,7},
                        ["carrot"]              = {4,8,7},
                        ["wheat"]               = {8,21,7},
                        ["coal"]                = {2,8,6},
                        ["rotten-flesh"]        = {5,24,5},
                        ["bamboo"]              = {1,3,2},
                        ["suspicious-stew"]     = {1,1,10},
                        ["pumpkin"]             = {1,3,2},
                        ["gunpowder"]           = {1,5,3},
                        ["tnt"]                 = {1,2,1},
                        ["random-enchanted-leather-cap"]         = {1,1,3},
                        ["random-enchanted-leather-tunic"]       = {1,1,3},
                        ["random-enchanted-leather-pants"]       = {1,1,3},
                        ["random-enchanted-leather-boots"]       = {1,1,3},
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["shipwreck-treasure"] = { -- shipwreck_treasure.json
            header = "보물",
            superheader = "[[난파선]]",
            link   = "[[난파선]] 보물",
            structure = "난파선",
            container = "보물 상자",
            structID = "shipwreck",
            poolsJava = {
                {
                    rolls = {3,6},
                    items = {
                        ["iron-ingot"]          = {1,5,90},
                        ["gold-ingot"]          = {1,5,10},
                        ["emerald"]             = {1,5,40},
                        ["diamond"]             = {1,1,5},
                        ["bottle-o'-enchanting"] = {1,1,5},
                    }
                },
                {
                    rolls = {2,5},
                    items = {
                        ["iron-nugget"]         = {1,10,50},
                        ["gold-nugget"]         = {1,10,10},
                        ["lapis-lazuli"]        = {1,10,20},
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["buried-treasure"] = { -- buried_treasure.json
            header = "[[땅에 묻힌 보물]]",
            link   = "[[땅에 묻힌 보물]]",
            structure = "땅에 묻힌 보물",
            container = "",
            structID = "buried-treasure",
            poolsJava = {
                {
                    rolls = {1,1},
                    items = {
                        ["heart-of-the-sea"]    = {1,1,1},
                    }
                },
                {
                    rolls = {5,8},
                    items = {
                        ["iron-ingot"]          = {1,4,20},
                        ["gold-ingot"]          = {1,4,10},
                        ["tnt"]                 = {1,2,5},
                    }
                },
                {
                    rolls = {1,3},
                    items = {
                        ["emerald"]             = {4,8,5},
                        ["diamond"]             = {1,2,5},
                        ["prismarine-crystals"] = {1,5,5},
                    }
                },
                {
                    rolls = {0,1},
                    items = {
                        ["leather-tunic"]       = {1,1,1},
                        ["iron-sword"]          = {1,1,1},
                    }
                },
                {
                    rolls = {2,2},
                    items = {
                        ["cooked-cod"]          = {2,4,1},
                        ["cooked-salmon"]       = {2,4,1},
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {
                {
                    rolls = {1,1},
                    items = {
                        ["heart-of-the-sea"]    = {1,1,1},
                    }
                },
                {
                    rolls = {5,12},
                    items = {
                        ["prismarine-crystals"] = {1,5,5},
                        ["iron-ingot"]          = {3,5,20},
                        ["gold-ingot"]          = {1,5,10},
                        ["tnt"]                 = {1,2,10},
                        ["diamond"]             = {1,1,15},
                        ["disc-wait"]           = {1,1,5},
                        ["disc-mellohi"]        = {1,1,5},
                        ["name-tag"]            = {1,1,10},
                        ["chainmail-chestplate"] = {1,1,20},
                        ["chainmail-helmet"]    = {1,1,20},
                        ["chainmail-leggings"]  = {1,1,20},
                        ["chainmail-boots"]     = {1,1,20},
                        ["book-and-quill"]      = {1,2,5},
                        ["lead"]                = {1,3,10},
                        ["bottle-o'-enchanting"] = {1,1,3},
                        ["potion-of-water-breathing"] = {1,1,15},
                        ["potion-of-regeneration"] = {1,1,10},
                        ["cake"]                = {1,1,1},
                    }
                },
            },
            poolsBedrockUpcoming = {}
        },
        ["underwater-ruin-big"] = { -- underwater_ruin_big.json
            header = "큰 상자",
            superheader = "[[해저 폐허]]",
            link   = "[[해저 폐허]]",
            structure = "해저 폐허",
            container = "해저 폐허의 큰 상자",
            structID = "underwater-ruins",
            poolsJava = {
                {
                    rolls = {2,8},
                    items = {
                        ["coal"]                = {1,4,10},
                        ["gold-nugget"]         = {1,3,10},
                        ["emerald"]             = {1,1,1},
                        ["wheat"]               = {2,3,10},
                    }
                },
                {
                    rolls = {1,1},
                    items = {
                        ["golden-apple"]        = {1,1,1},
                        ["enchanted-book-rnd"]  = {1,1,5},
                        ["leather-tunic"]       = {1,1,1},
                        ["golden-helmet"]       = {1,1,1},
                        ["enchanted-fishing-rod"] = {1,1,5},
                        ["buried-treasure-map"] = {1,1,10},
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["underwater-ruin-small"] = { -- underwater_ruin_small.json
            header = "작은 상자",
            superheader = "[[해저 폐허]]",
            link   = "[[해저 폐허]]",
            structure = "해저 폐허",
            container = "해저 폐허의 작은 상자",
            structID = "underwater-ruins",
            poolsJava = {
                {
                    rolls = {2,8},
                    items = {
                        ["coal"]                = {1,4,10},
                        ["stone-axe"]           = {1,1,2},
                        ["rotten-flesh"]        = {1,1,5},
                        ["emerald"]             = {1,1,1},
                        ["wheat"]               = {2,3,10},
                    }
                },
                {
                    rolls = {1,1},
                    items = {
                        ["leather-tunic"]       = {1,1,1},
                        ["golden-helmet"]       = {1,1,1},
                        ["enchanted-fishing-rod"] = {1,1,5},
                        ["buried-treasure-map"] = {1,1,5},
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        
        ["village-armorer"] = { -- village\village_armorer.json
            header = "갑옷 제조인",
            superheader = "[[마을]]",
            link   = "[[마을]] 갑옷 제조인",
            structure = "마을",
            container = "갑옷 제조인 상자",
            structID = "village",
            poolsJava = {
                {
                    rolls = {1,5},
                    items = {
                        ["iron-ingot"]     = {1,3,2},
                        ["bread"]          = {1,4,4},
                        ["iron-helmet"]    = {1,1,1},
                        ["emerald"]        = {1,1,1}
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["village-butcher"] = { -- village\village_butcher.json
            header = "도살업자",
            superheader = "[[마을]]",
            link   = "[[마을]] 도살업자",
            structure = "마을",
            container = "도살업자 상자",
            structID = "village",
            poolsJava = {
                {
                    rolls = {1,5},
                    items = {
                        ["emerald"]        = {1,1,1},
                        ["raw-porkchop"]   = {1,3,6},
                        ["wheat"]          = {1,3,6},
                        ["raw-beef"]       = {1,3,6},
                        ["raw-mutton"]     = {1,3,6},
                        ["coal"]           = {1,3,3}
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["village-cartographer"] = { -- village\village_cartographer.json
            header = "지도 제작자",
            superheader = "[[마을]]",
            link   = "[[마을]] 지도 제작자",
            structure = "마을",
            container = "지도 제작자 상자",
            structID = "village",
            poolsJava = {
                {
                    rolls = {1,5},
                    items = {
                        ["empty-map"]      = {1,3,10},
                        ["paper"]          = {1,5,15},
                        ["compass"]        = {1,1,5},
                        ["bread"]          = {1,4,15},
                        ["stick"]          = {1,2,5}
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {
                {
                    rolls = {1,5},
                    items = {
                        ["map"]            = {1,3,10},
                        ["paper"]          = {1,5,15},
                        ["compass"]        = {1,1,5},
                        ["bread"]          = {1,4,15},
                        ["oak-sapling"]    = {1,2,5}
                    }
                },
            },
            poolsBedrockUpcoming = {}
        },
        ["village-fisherman"] = { -- village\village_fisher.json, Java-exclusive as of Java 1.14 / Bedrock 1.12
            header = "어부",
            superheader = "[[마을]]",
            link   = "[[마을]] 어부",
            structure = "마을",
            container = "어부 상자",
            structID = "village",
            poolsJava = {
                {
                    rolls = {1,5},
                    items = {
                        ["emerald"]         = {1,1,1},
                        ["raw-cod"]         = {1,3,2},
                        ["raw-salmon"]      = {1,3,1},
                        ["water-bucket"]    = {1,3,1},
                        ["barrel"]          = {1,3,1},
                        ["wheat-seeds"]     = {1,3,3},
                        ["coal"]            = {1,3,2}
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["village-fletcher"] = { -- village\village_fletcher.json
            header = "화살 제조인",
            superheader = "[[마을]]",
            link   = "[[마을]] 화살 제조인",
            structure = "마을",
            container = "화살 제조인 상자",
            structID = "village",
            poolsJava = {
                {
                    rolls = {1,5},
                    items = {
                        ["emerald"]         = {1,1,1},
                        ["arrow"]           = {1,3,2},
                        ["feather"]         = {1,3,6},
                        ["egg"]             = {1,3,2},
                        ["flint"]           = {1,3,6},
                        ["stick"]           = {1,3,6}
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["village-mason"] = { -- village\village_mason.json
            header = "석공",
            superheader = "[[마을]]",
            link   = "[[마을]] 석공",
            structure = "마을",
            container = "석공 상자",
            structID = "village",
            poolsJava = {
                {
                    rolls = {1,5},
                    items = {
                        ["clay"]           = {1,3,1},
                        ["flower-pot"]     = {1,1,1},
                        ["stone"]          = {1,1,2},
                        ["stone-bricks"]   = {1,1,2},
                        ["bread"]          = {1,4,4},
                        ["yellow-dye"]     = {1,1,1},
                        ["smooth-stone"]   = {1,1,1},
                        ["emerald"]        = {1,1,1}
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["village-shepherd"] = { -- village\village_shepherd.json
            header = "양치기",
            superheader = "[[마을]]",
            link   = "[[마을]] 양치기",
            structure = "마을",
            container = "양치기 상자",
            structID = "village",
            poolsJava = {
                {
                    rolls = {1,5},
                    items = {
                        ["white-wool"]      = {1,8,6},
                        ["black-wool"]      = {1,3,3},
                        ["gray-wool"]       = {1,3,2},
                        ["brown-wool"]      = {1,3,2},
                        ["light-gray-wool"] = {1,3,2},
                        ["emerald"]         = {1,1,1},
                        ["shears"]          = {1,1,1},
                        ["wheat"]           = {1,6,6}
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["village-tannery"] = { -- village\village_tannery.json
            header = "가죽 세공인",
            superheader = "[[마을]]",
            link   = "[[마을]] 가죽 세공인",
            structure = "마을",
            container = "가죽 세공인 상자",
            structID = "village",
            poolsJava = {
                {
                    rolls = {1,5},
                    items = {
                        ["leather"]         = {1,3,1},
                        ["leather-tunic"]   = {1,1,2},
                        ["leather-boots"]   = {1,1,2},
                        ["leather-cap"]     = {1,1,2},
                        ["bread"]           = {1,4,5},
                        ["leather-pants"]   = {1,1,2},
                        ["saddle"]          = {1,1,1},
                        ["emerald"]         = {1,4,1}
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["village-temple"] = { -- village\village_temple.json
            header = "사원",
            superheader = "[[마을]]",
            link   = "[[마을]] 사원",
            structure = "마을",
            container = "사원 상자",
            structID = "village",
            poolsJava = {
                {
                    rolls = {3,8},
                    items = {
                        ["redstone"]        = {1,4,2},
                        ["bread"]           = {1,4,7},
                        ["rotten-flesh"]    = {1,4,7},
                        ["lapis-lazuli"]    = {1,4,1},
                        ["gold-ingot"]      = {1,4,1},
                        ["emerald"]         = {1,4,1}
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["village-toolsmith"] = { -- village\village_toolsmith.json
            header = "도구 대장장이",
            superheader = "[[마을]]",
            link   = "[[마을]] 도구 대장장이",
            structure = "마을",
            container = "도구 대장장이 상자",
            structID = "village",
            poolsJava = {
                {
                    rolls = {3,8},
                    items = {
                        ["diamond"]         = {1,3,1},
                        ["iron-ingot"]      = {1,5,5},
                        ["gold-ingot"]      = {1,3,1},
                        ["bread"]           = {1,3,15},
                        ["iron-pickaxe"]    = {1,1,5},
                        ["coal"]            = {1,3,1},
                        ["stick"]           = {1,3,20},
                        ["iron-shovel"]     = {1,1,5}
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["village-weaponsmith"] = { -- village\village_weaponsmith.json
            header = "무기 대장장이",
            superheader = "[[마을]]",
            link   = "[[마을]] 무기 대장장이",
            structure = "마을",
            container = "무기 대장장이 상자",
            structID = "village",
            poolsJava = {
                {
                    rolls = {3,8},
                    items = {
                        ["diamond"]             = {1,3,3},
                        ["iron-ingot"]          = {1,5,10},
                        ["gold-ingot"]          = {1,3,5},
                        ["bread"]               = {1,3,15},
                        ["apple"]               = {1,3,15},
                        ["iron-pickaxe"]        = {1,1,5},
                        ["iron-sword"]          = {1,1,5},
                        ["iron-chestplate"]     = {1,1,5},
                        ["iron-helmet"]         = {1,1,5},
                        ["iron-leggings"]       = {1,1,5},
                        ["iron-boots"]          = {1,1,5},
                        ["obsidian"]            = {3,7,5},
                        ["oak-sapling"]         = {3,7,5},
                        ["saddle"]              = {1,1,3},
                        ["iron-horse-armor"]    = {1,1,1},
                        ["golden-horse-armor"]  = {1,1,1},
                        ["diamond-horse-armor"] = {1,1,1}
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        
        ["village-desert-house"] = { -- village\village_desert_house.json
            header = "사막 집",
            superheader = "[[마을]]",
            link   = "사막 [[마을]] 집",
            structure = "마을",
            container = "사막 마을 상자",
            structID = "village",
            poolsJava = {
                {
                    rolls = {3,8},
                    items = {
                        ["clay"]            = {1,1,1},
                        ["green-dye"]       = {1,1,1},
                        ["cactus"]          = {1,4,10},
                        ["wheat"]           = {1,7,10},
                        ["bread"]           = {1,4,10},
                        ["book"]            = {1,1,1},
                        ["dead-bush"]       = {1,3,2},
                        ["emerald"]         = {1,3,1}
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["village-plains-house"] = { -- village\village_plains_house.json
            header = "평원 집",
            superheader = "[[마을]]",
            link   = "평원 [[마을]] 집",
            structure = "마을",
            container = "평원 집 상자",
            structID = "village",
            poolsJava = {
                {
                    rolls = {3,8},
                    items = {
                        ["gold-nugget"]     = {1,3,1},
                        ["dandelion"]       = {1,1,2},
                        ["poppy"]           = {1,1,1},
                        ["potato"]          = {1,7,10},
                        ["bread"]           = {1,4,10},
                        ["apple"]           = {1,5,10},
                        ["book"]            = {1,1,1},
                        ["feather"]         = {1,1,1},
                        ["emerald"]         = {1,4,2},
                        ["oak-sapling"]     = {1,2,5}
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["village-savanna-house"] = { -- village\village_savanna_house.json
            header = "사바나 집",
            superheader = "[[마을]]",
            link   = "사바나 [[마을]] 집",
            structure = "마을",
            container = "사바나 집 상자",
            structID = "village",
            poolsJava = {
                {
                    rolls = {3,8},
                    items = {
                        ["gold-nugget"]     = {1,3,1},
                        ["grass"]           = {1,1,5},
                        ["tall-grass"]      = {1,1,5},
                        ["bread"]           = {1,4,10},
                        ["wheat-seeds"]     = {1,5,10},
                        ["emerald"]         = {1,4,2},
                        ["acacia-sapling"]  = {1,2,10},
                        ["saddle"]          = {1,1,1},
                        ["torch"]           = {1,2,1},
                        ["bucket"]          = {1,1,1}
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["village-snowy-house"] = { -- village\village_snowy_house.json
            header = "눈 덮인 집",
            superheader = "[[마을]]",
            link   = "눈 덮인 [[마을]] 집",
            structure = "마을",
            container = "눈 덮인 집 상자",
            structID = "village",
            poolsJava = {
                {
                    rolls = {3,8},
                    items = {
                        ["blue-ice"]        = {1,1,1},
                        ["snow-block"]      = {1,1,4},
                        ["potato"]          = {1,7,10},
                        ["bread"]           = {1,4,10},
                        ["beetroot-seeds"]  = {1,5,10},
                        ["beetroot-soup"]   = {1,1,1},
                        ["furnace"]         = {1,1,1},
                        ["emerald"]         = {1,4,1},
                        ["snowball"]        = {1,7,10},
                        ["coal"]            = {1,4,5}
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["village-taiga-house"] = { -- village\village_taiga_house.json
            header = "타이가 집",
            superheader = "[[마을]]",
            link   = "타이가 [[마을]] 집",
            structure = "마을",
            container = "타이가 집 상자",
            structID = "village",
            poolsJava = {
                {
                    rolls = {3,8},
                    items = {
                        ["iron-nugget"]     = {1,5,1},
                        ["fern"]            = {1,1,2},
                        ["large-fern"]      = {1,1,2},
                        ["potato"]          = {1,7,10},
                        ["sweet-berries"]   = {1,7,5},
                        ["bread"]           = {1,4,10},
                        ["pumpkin-seeds"]   = {1,5,5},
                        ["pumpkin-pie"]     = {1,1,1},
                        ["emerald"]         = {1,4,2},
                        ["spruce-sapling"]  = {1,5,5},
                        ["spruce-sign"]     = {1,1,1},
                        ["spruce-log"]      = {1,5,10}
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {
                {
                    rolls = {3,8},
                    items = {
                        ["iron-nugget"]     = {1,5,1},
                        ["fern"]            = {1,1,2},
                        ["large-fern"]      = {1,1,2},
                        ["potato"]          = {1,7,10},
                        ["bread"]           = {1,4,10},
                        ["pumpkin-seeds"]   = {1,5,5},
                        ["pumpkin-pie"]     = {1,1,1},
                        ["emerald"]         = {1,4,2},
                        ["spruce-sapling"]  = {1,5,5},
                        ["oak-sign"]        = {1,1,1},
                        ["spruce-log"]      = {1,5,10}
                    }
                },
            },
            poolsBedrockUpcoming = {}
        },
        
        ["stronghold-altar"] = { -- stronghold_corridor.json
            header      = "제단",
            superheader = "[[요새]]",
            link        = "[[요새]] 제단",
            structure = "요새",
            container = "제단 상자",
            structID = "stronghold",
            poolsJava = {
                {
                    rolls = {2,3},
                    items = {
                        ["ender-pearl"]         = {1,1,10},
                        ["diamond"]             = {1,3,3},
                        ["iron-ingot"]          = {1,5,10},
                        ["gold-ingot"]          = {1,3,5},
                        ["redstone"]            = {4,9,5},
                        ["bread"]               = {1,3,15},
                        ["apple"]               = {1,3,15},
                        ["iron-pickaxe"]        = {1,1,5},
                        ["iron-sword"]          = {1,1,5},
                        ["iron-chestplate"]     = {1,1,5},
                        ["iron-helmet"]         = {1,1,5},
                        ["iron-leggings"]       = {1,1,5},
                        ["iron-boots"]          = {1,1,5},
                        ["golden-apple"]        = {1,1,1},
                        ["saddle"]              = {1,1,1},
                        ["iron-horse-armor"]    = {1,1,1},
                        ["golden-horse-armor"]  = {1,1,1},
                        ["diamond-horse-armor"] = {1,1,1},
                        ["enchanted-book"]      = {1,1,1},
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {
                {
                    rolls = {2,3},
                    items = {
                        ["ender-pearl"]         = {1,1,50},
                        ["emerald"]             = {1,3,15},
                        ["diamond"]             = {1,3,15},
                        ["iron-ingot"]          = {1,5,50},
                        ["gold-ingot"]          = {1,3,25},
                        ["redstone"]            = {4,9,25},
                        ["bread"]               = {1,3,75},
                        ["apple"]               = {1,3,75},
                        ["iron-pickaxe"]        = {1,1,25},
                        ["iron-sword"]          = {1,1,25},
                        ["iron-chestplate"]     = {1,1,25},
                        ["iron-helmet"]         = {1,1,25},
                        ["iron-leggings"]       = {1,1,25},
                        ["iron-boots"]          = {1,1,25},
                        ["golden-apple"]        = {1,1,5},
                        ["saddle"]              = {1,1,5},
                        ["iron-horse-armor"]    = {1,1,5},
                        ["golden-horse-armor"]  = {1,1,5},
                        ["diamond-horse-armor"] = {1,1,5},
                        ["enchanted-book"]      = {1,1,6},
                    }
                },
            },
            poolsBedrockUpcoming = {}
        },
        ["stronghold-library"] = { -- stronghold_library.json
            header      = "도서관",
            superheader = "[[요새]]",
            link        = "[[요새]] 도서관",
            structure = "요새",
            container = "도서관 상자",
            structID = "stronghold",
            poolsJava = {
                {
                    rolls = {2,10},
                    items = {
                        ["book"]                = {1,3,20},
                        ["paper"]               = {2,7,20},
                        ["empty-map"]           = {1,1,1},
                        ["compass"]             = {1,1,1},
                        ["enchanted-book"]      = {1,1,10},
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {
                {
                    rolls = {2,10},
                    items = {
                        ["book"]                = {1,3,100},
                        ["paper"]               = {2,7,100},
                        ["map"]                 = {1,1,5},
                        ["compass"]             = {1,1,5},
                        ["enchanted-book"]      = {1,1,60},
                    }
                },
            },
            poolsBedrockUpcoming = {}
        },
        ["stronghold-storeroom"] = { -- stronghold_crossing.json
            header      = "저장실",
            superheader = "[[요새]]",
            link        = "[[요새]] 저장실",
            structure = "요새",
            container = "저장실 상자",
            structID = "stronghold",
            poolsJava = {
                {
                    rolls = {1,4},
                    items = {
                        ["iron-ingot"]          = {1,5,10},
                        ["gold-ingot"]          = {1,3,5},
                        ["redstone"]            = {4,9,5},
                        ["coal"]                = {3,8,10},
                        ["bread"]               = {1,3,15},
                        ["apple"]               = {1,3,15},
                        ["iron-pickaxe"]        = {1,1,1},
                        ["enchanted-book"]      = {1,1,1},
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {
                {
                    rolls = {1,4},
                    items = {
                        ["iron-ingot"]          = {1,5,50},
                        ["gold-ingot"]          = {1,3,25},
                        ["redstone"]            = {4,9,25},
                        ["coal"]                = {3,8,50},
                        ["bread"]               = {1,3,75},
                        ["apple"]               = {1,3,75},
                        ["iron-pickaxe"]        = {1,1,5},
                        ["enchanted-book"]      = {1,1,6},
                        ["ink-sac"]             = {1,3,75},
                    }
                },
            },
            poolsBedrockUpcoming = {}
        },
        ["bonus"] = { -- spawn_bonus_chest.json
            header = "[[상자#보너스 상자|보너스]]",
            link   = "[[상자#보너스 상자|보너스]]",
            structure = "보너스 상자",
            container = "",
            structID = "day",
            poolsJava = {
                {
                    rolls = {1,1},
                    items = {
                        ["stone-axe"]           = {1,1,1},
                        ["wooden-axe"]          = {1,1,3},
                    }
                },
                {
                    rolls = {1,1},
                    items = {
                        ["stone-pickaxe"]       = {1,1,1},
                        ["wooden-pickaxe"]      = {1,1,3}
                    }
                },
                {
                    rolls = {3,3},
                    items = {
                        ["apple"]               = {1,2,5},
                        ["bread"]               = {1,2,3},
                        ["raw-salmon"]          = {1,2,3},
                    }
                },
                {
                    rolls = {4,4},
                    items = {
                        ["stick"]               = {1,12,10},
                        ["oak-planks"]          = {1,12,10},
                        ["oak-log"]             = {1,3,3},
                        ["spruce-log"]          = {1,3,3},
                        ["birch-log"]           = {1,3,3},
                        ["jungle-log"]          = {1,3,3},
                        ["acacia-log"]          = {1,3,3},
                        ["dark-oak-log"]        = {1,3,3},
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {
                {
                    rolls = {1,1},
                    items = {
                        ["stone-axe"]           = {1,1,1},
                        ["wooden-axe"]          = {1,1,3},
                    }
                },
                {
                    rolls = {1,1},
                    items = {
                        ["stone-pickaxe"]       = {1,1,1},
                        ["wooden-pickaxe"]      = {1,1,3}
                    }
                },
                {
                    rolls = {1,1},
                    items = {
                        ["apple"]               = {1,2,1}
                    }
                },
                {
                    rolls = {1,1},
                    items = {
                        ["bread"]               = {1,2,1}
                    }
                },
                {
                    rolls = {1,1},
                    items = {
                        ["raw-salmon"]          = {1,2,1}
                    }
                },
                {
                    rolls = {1,1},
                    items = {
                        ["stick"]               = {1,12,1}
                    }  
                },
                {
                    rolls = {1,1},
                    items = {
                        ["oak-planks"]          = {1,12,1}
                    }  
                },
                {
                    rolls = {1,1},
                    items = {
                        ["dark-oak-log"]        = {1,3,1},
                        ["acacia-log"]          = {1,3,1},
                    }
                },
                {
                    rolls = {1,1},
                    items = {
                        ["oak-log"]             = {1,3,1},
                        ["spruce-log"]          = {1,3,1},
                        ["birch-log"]           = {1,3,1},
                        ["jungle-log"]          = {1,3,1},
                    }
                },
                {
                    rolls = {1,1},
                    items = {
                        ["potato"]              = {1,2,3},
                        ["carrot"]              = {1,2,3},
                    }
                },
                {
                    rolls = {1,1},
                    items = {
                        ["oak-sapling"]         = {4,4,2},
                        ["spruce-sapling"]      = {4,4,2},
                        ["birch-sapling"]       = {4,4,2},
                        ["jungle-sapling"]      = {4,4,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},
                    }
                },
            },
            poolsBedrockUpcoming = {}
        },
        ["dungeon"] = { -- simple_dungeon.json
            header = "[[던전]]",
            link   = "[[던전]]",
            structure = "던전",
            container = "",
            structID = "Dungeon",
            poolsJava = {
                {
                    rolls = {1,3},
                    items = {
                        ["saddle"]              = {1,1,20},
                        ["golden-apple"]        = {1,1,15},
                        ["enchanted-golden-apple"] = {1,1,2},
                        ["disc-13"]             = {1,1,15},
                        ["disc-cat"]            = {1,1,15},
                        ["name-tag"]            = {1,1,20},
                        ["golden-horse-armor"]  = {1,1,10},
                        ["iron-horse-armor"]    = {1,1,15},
                        ["diamond-horse-armor"] = {1,1,5},
                        ["enchanted-book-rnd"]  = {1,1,10},
                    }
                },
                {
                    rolls = {1,4},
                    items = {
                        ["iron-ingot"]          = {1,4,10},
                        ["gold-ingot"]          = {1,4,5},
                        ["bread"]               = {1,1,20},
                        ["wheat"]               = {1,4,20},
                        ["bucket"]              = {1,1,10},
                        ["redstone"]            = {1,4,15},
                        ["coal"]                = {1,4,15},
                        ["melon-seeds"]         = {2,4,10},
                        ["pumpkin-seeds"]       = {2,4,10},
                        ["beetroot-seeds"]      = {2,4,10},
                    }
                },
                {
                    rolls = {3,3},
                    items = {
                        ["bone"]                = {1,8,10},
                        ["gunpowder"]           = {1,8,10},
                        ["rotten-flesh"]        = {1,8,10},
                        ["string"]              = {1,8,10},
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["mineshaft"] = { -- abandoned_mineshaft.json
            chest_type = "minecart with chest",
            header = "[[폐광]]",
            link   = "[[폐광]]",
            structure = "폐광",
            container = "",
            structID = "abandoned-mineshaft",
            poolsJava = {
                {
                    rolls = {1,1},
                    items = {
                        ["golden-apple"]        = {1,1,20},
                        ["enchanted-golden-apple"] = {1,1,1},
                        ["name-tag"]            = {1,1,30},
                        ["enchanted-book-rnd"]  = {1,1,10},
                        ["iron-pickaxe"]        = {1,1,5},
                        ["empty"]               = {1,1,5},
                    }
                },
                {
                    rolls = {2,4},
                    items = {
                        ["iron-ingot"]          = {1,5,10},
                        ["gold-ingot"]          = {1,3,5},
                        ["redstone"]            = {4,9,5},
                        ["lapis-lazuli"]        = {4,9,5},
                        ["diamond"]             = {1,2,3},
                        ["coal"]                = {3,8,10},
                        ["bread"]               = {1,3,15},
                        ["melon-seeds"]         = {2,4,10},
                        ["pumpkin-seeds"]       = {2,4,10},
                        ["beetroot-seeds"]      = {2,4,10},
                    }
                },
                {
                    rolls = {3,3},
                    items = {
                        ["rail"]                = {4,8,20},
                        ["powered-rail"]        = {1,4,5},
                        ["detector-rail"]       = {1,4,5},
                        ["activator-rail"]      = {1,4,5},
                        ["torch"]               = {1,16,15},
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["nether-fortress"] = { -- nether_bridge.json
            header = "[[네더 요새|요새]]",
            link   = "[[네더 요새|요새]]",
            structure = "네더 요새",
            container = "",
            structID = "nether-fortress",
            poolsJava = {
                {
                    rolls = {2,4},
                    items = {
                        ["diamond"]             = {1,3,5},
                        ["iron-ingot"]          = {1,5,5},
                        ["gold-ingot"]          = {1,3,15},
                        ["golden-sword"]        = {1,1,5},
                        ["golden-chestplate"]   = {1,1,5},
                        ["flint-and-steel"]     = {1,1,5},
                        ["nether-wart"]         = {3,7,5},
                        ["saddle"]              = {1,1,10},
                        ["golden-horse-armor"]    = {1,1,8},
                        ["iron-horse-armor"]    = {1,1,5},
                        ["diamond-horse-armor"] = {1,1,3},
                        ["obsidian"]            = {2,4,2},
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["desert-temple"] = { -- desert_pyramid.json
            header = "[[사막 사원]]",
            link   = "[[사막 사원]]",
            structure = "사막 사원",
            container = "",
            structID = "desert-temple",
            poolsJava = {
                {
                    rolls = {2,4},
                    items = {
                        ["diamond"]             = {1,3,5},
                        ["iron-ingot"]          = {1,5,15},
                        ["gold-ingot"]          = {2,7,15},
                        ["emerald"]             = {1,3,15},
                        ["bone"]                = {4,6,25},
                        ["spider-eye"]          = {1,3,25},
                        ["rotten-flesh"]        = {3,7,25},
                        ["saddle"]              = {1,1,20},
                        ["iron-horse-armor"]    = {1,1,15},
                        ["golden-horse-armor"]  = {1,1,10},
                        ["diamond-horse-armor"] = {1,1,5},
                        ["enchanted-book-rnd"]  = {1,1,20},
                        ["golden-apple"]        = {1,1,20},
                        ["enchanted-golden-apple"] = {1,1,2},
                        ["empty"]               = {1,1,15},
                    }
                },
                {
                    rolls = {4,4},
                    items = {
                        ["bone"]                = {1,8,10},
                        ["gunpowder"]           = {1,8,10},
                        ["rotten-flesh"]        = {1,8,10},
                        ["string"]              = {1,8,10},
                        ["sand"]                = {1,8,10},
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["jungle-temple"] = { -- jungle_temple.json
            header = "[[정글 사원]]",
            link   = "[[정글 사원]]",
            structure = "정글 사원",
            container = "상자",
            structID = "jungle-temple",
            poolsJava = {
                {
                    rolls = {2,6},
                    items = {
                        ["diamond"]             = {1,3,3},
                        ["iron-ingot"]          = {1,5,10},
                        ["gold-ingot"]          = {2,7,15},
                        ["emerald"]             = {1,3,2},
                        ["bone"]                = {4,6,20},
                        ["bamboo"]              = {1,3,15},
                        ["rotten-flesh"]        = {3,7,16},
                        ["saddle"]              = {1,1,3},
                        ["iron-horse-armor"]    = {1,1,1},
                        ["golden-horse-armor"]  = {1,1,1},
                        ["diamond-horse-armor"] = {1,1,1},
                        ["enchanted-book"]      = {1,1,1}
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {
                {
                    rolls = {2,6},
                    items = {
                        ["diamond"]             = {1,3,15},
                        ["iron-ingot"]          = {1,5,50},
                        ["gold-ingot"]          = {2,7,75},
                        ["emerald"]             = {1,3,10},
                        ["bone"]                = {4,6,100},
                        ["rotten-flesh"]        = {3,7,80},
                        ["bamboo"]              = {1,3,75},
                        ["saddle"]              = {1,1,15},
                        ["iron-horse-armor"]    = {1,1,5},
                        ["golden-horse-armor"]  = {1,1,5},
                        ["diamond-horse-armor"] = {1,1,5},
                        ["enchanted-book"]      = {1,1,6}
                    }
                },
            },
            poolsBedrockUpcoming = {},
        },
        ["jungle-temple-dispenser"] = { -- jungle_temple_dispenser.json
            chest_type = "dispenser",
            link   = "[[정글 사원]]",
            structure = "정글 사원",
            container = "발사기",
            structID = "jungle-temple",
            poolsJava = {
                {
                    rolls = {1,2},
                    items = {
                        ["arrow"] = {2,7,30}
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {
                {
                    rolls = {2,2},
                    items = {
                        ["arrow"] = {2,7,30}
                    }
                },
            },
            poolsBedrockUpcoming = {}
        },
        ["end-city"] = { -- end_city_treasure.json
            header = "[[엔드 시티]]",
            link   = "[[엔드 시티]]",
            structure = "엔드 시티",
            container = "",
            structID = "end-city",
            poolsJava = {
                {
                    rolls = {2,6},
                    items = {
                        ["diamond"]             = {2,7,5},
                        ["iron-ingot"]          = {4,8,10},
                        ["gold-ingot"]          = {2,7,15},
                        ["emerald"]             = {2,6,2},
                        ["beetroot-seeds"]      = {1,10,5},
                        ["saddle"]              = {1,1,3},
                        ["iron-horse-armor"]    = {1,1,1},
                        ["golden-horse-armor"]  = {1,1,1},
                        ["diamond-horse-armor"] = {1,1,1},
                        ["level-enchanted-diamond-sword"]      = {1,1,3},
                        ["level-enchanted-diamond-boots"]      = {1,1,3},
                        ["level-enchanted-diamond-chestplate"] = {1,1,3},
                        ["level-enchanted-diamond-leggings"]   = {1,1,3},
                        ["level-enchanted-diamond-helmet"]     = {1,1,3},
                        ["level-enchanted-diamond-pickaxe"]    = {1,1,3},
                        ["level-enchanted-diamond-shovel"]     = {1,1,3},
                        ["level-enchanted-iron-sword"]         = {1,1,3},
                        ["level-enchanted-iron-boots"]         = {1,1,3},
                        ["level-enchanted-iron-chestplate"]    = {1,1,3},
                        ["level-enchanted-iron-leggings"]      = {1,1,3},
                        ["level-enchanted-iron-helmet"]        = {1,1,3},
                        ["level-enchanted-iron-pickaxe"]       = {1,1,3},
                        ["level-enchanted-iron-shovel"]        = {1,1,3},
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["igloo"] = {
            header = "[[이글루]]",
            link   = "[[이글루]]",
            structure = "이글루",
            container = "",
            structID = "igloo",
            poolsJava = {
                {
                    rolls = {2,8},
                    items = {
                        ["apple"]               = {1,3,15},
                        ["coal"]                = {1,4,15},
                        ["gold-nugget"]         = {1,3,10},
                        ["stone-axe"]           = {1,1,2},
                        ["rotten-flesh"]        = {1,1,10},
                        ["emerald"]             = {1,1,1},
                        ["wheat"]               = {2,3,10}
                    }
                },
                {
                    rolls = {1,1},
                    items = {
                        ["golden-apple"]        = {1,1,1},
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
        ["pillager-outpost"] = {
            header = "[[약탈자 전초기지]]",
            link   = "[[약탈자 전초기지]]",
            structure = "약탈자 전초기지",
            container = "",
            structID = "pillager-outpost",
            poolsJava = {           
                {
                    rolls = {0,1},
                    items = {
                        ["crossbow"]             = {1,1,1},
                    }
                },
                {
                    rolls = {2,3},
                    items = {
                        ["wheat"]                = {3,5,7},
                        ["potato"]               = {2,5,5},
                        ["carrot"]               = {3,5,5}
                    }
                },
                {
                    rolls = {1,3},
                    items = {
                        ["dark-oak-log"]         = {2,3,1}
                    }
                },
                {
                    rolls = {2,3},
                    items = {
                        ["bottle-o'-enchanting"] = {1,1,7},
                        ["string"]               = {1,6,4},
                        ["arrow"]                = {2,7,4},
                        ["tripwire-hook"]        = {1,3,3},
                        ["iron-ingot"]           = {1,3,3},
                        ["enchanted-book-rnd"]   = {1,1,1}
                    }
                }
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {},
            poolsBedrockUpcoming = {}
        },
		["bastion-bridge"] = { -- bastion_bridge.json
			header = "[[보루]] 다리",
			link = "[[보루 잔해|보루 잔해 다리]]",
			structure = "보루 잔해",
			container = "다리 상자",
			structID = "bastion-remnant",
			poolsJava = {
				{
					rolls = {1,1},
					items = {
						["lodestone"] = {1,1,1},
					}
				},
				{
					rolls = {1,2},
					items = {
						["damaged-random-enchanted-crossbow"] = {1,1,1},
						["spectral-arrow"] = {2,12,1},
						["gilded-blackstone"] = {5,8,1},
						["crying-obsidian"] = {3,8,1},
						["block-of-gold"] = {1,1,1},
						["gold-ingot"] = {2,8,1},
						["iron-ingot"] = {2,8,1},
						["golden-sword"] = {1,1,1},
						["random-enchanted-golden-chestplate"] = {1,1,1},
						["random-enchanted-golden-helmet"] = {1,1,1},
						["random-enchanted-golden-leggings"] = {1,1,1},
						["random-enchanted-golden-boots"] = {1,1,1},
					}
				},
				{
					rolls = {2,4},
					items = {
						["string"] = {1,6,1},
						["leather"] = {1,3,1},
						["arrow"] = {5,17,1},
						["iron-nugget"] = {2,6,1},
						["gold-nugget"] = {2,6,1},
					}
				}
			},
			poolsJavaUpcoming = {},
			poolsBedrock = {
				{
					rolls = {1,1},
					items = {
						["lodestone"] = {1,1,1},
					}
				},
				{
					rolls = {1,2},
					items = {
						["damaged-random-enchanted-crossbow"] = {1,1,1},
						["arrow"] = {2,12,1},
						["gilded-blackstone"] = {5,8,1},
						["crying-obsidian"] = {3,8,1},
						["block-of-gold"] = {1,1,1},
						["gold-ingot"] = {2,8,1},
						["iron-ingot"] = {2,8,1},
						["golden-sword"] = {1,1,1},
						["random-enchanted-golden-chestplate"] = {1,1,1},
						["random-enchanted-golden-helmet"] = {1,1,1},
						["random-enchanted-golden-leggings"] = {1,1,1},
						["random-enchanted-golden-boots"] = {1,1,1},
					}
				},
				{
					rolls = {2,4},
					items = {
						["string"] = {1,6,1},
						["leather"] = {1,3,1},
						["arrow"] = {5,17,1},
						["iron-nugget"] = {2,6,1},
						["gold-nugget"] = {2,6,1}
					}
				}
			},
			poolsBedrockUpcoming = {}
		},
		["bastion-hoglin-stable"] = { -- bastion_hoglin_stable.json
			header = "[[보루]] 호글린 마구간",
			link = "[[보루 잔해|보루 잔해 호글린 마구간]]",
			structure = "보루 잔해",
			container = "호글린 마구간 상자",
			structID = "bastion-remnant",
			poolsJava = {
				{
					rolls = {1,1},
					items = {
						["damaged-random-enchanted-diamond-shovel"] = {1,1,5},
						["netherite-scrap"] = {1,1,2},
						["ancient-debris"] = {1,1,3},
						["saddle"] = {1,1,10},
						["block-of-gold"] = {2,4,25},
						["random-enchanted-golden-hoe"] = {1,1,15},
						["empty"] = {1,1,45},
					}
				},
				{
					rolls = {3,4},
					items = {
						["glowstone"] = {1,5,1},
						["gilded-blackstone"] = {1,5,1},
						["soul-sand"] = {2,7,1},
						["crimson-nylium"] = {2,7,1},
						["gold-nugget"] = {2,8,1},
						["leather"] = {1,3,1},
						["arrow"] = {5,17,1},
						["string"] = {3,8,1},
						["raw-porkchop"] = {2,5,1},
						["cooked-porkchop"] = {2,5,1},
						["crimson-fungus"] = {2,7,1},
						["crimson-roots"] = {2,7,1},
					}
				}
			},
			poolsJavaUpcoming = {},
			poolsBedrock = {
				{
					rolls = {1,1},
					items = {
						["damaged-random-enchanted-diamond-shovel"] = {1,1,5},
						["netherite-scrap"] = {1,1,2},
						["ancient-debris"] = {1,1,3},
						["saddle"] = {1,1,10},
						["block-of-gold"] = {2,4,25},
						["random-enchanted-golden-hoe"] = {1,1,15},
						["empty"] = {1,1,45}
					}
				},
				{
					rolls = {3,4},
					items = {
						["glowstone"] = {1,5,1},
						["gilded-blackstone"] = {1,5,1},
						["soul-sand"] = {2,7,1},
						["crimson-nylium"] = {2,7,1},
						["gold-nugget"] = {2,8,1},
						["leather"] = {1,3,1},
						["arrow"] = {5,17,1},
						["string"] = {3,8,1},
						["raw-porkchop"] = {2,5,1},
						["cooked-porkchop"] = {2,5,1},
						["crimson-fungus"] = {2,7,1},
						["crimson-roots"] = {2,7,1}
					}
				}
			},
			poolsBedrockUpcoming = {}
		},
		["bastion-generic"] = { -- bastion_other.json
			header = "[[보루]]",
			link = "[[보루 잔해|보루 잔해]]",
			structure = "보루 잔해",
			container = "일반 상자",
			structID = "bastion-remnant",
			poolsJava = {
				{
					rolls = {1,1},
					items = {
						["damaged-random-enchanted-crossbow"] = {1,1,12},
						["ancient-debris"] = {1,1,2},
						["netherite-scrap"] = {1,1,2},
						["spectral-arrow"] = {2,15,6},
						["snout-banner-pattern"] = {1,1,5},
						["disc-pigstep"] = {1,1,3},
						["enchanted-book-rnd-soul-speed"] = {1,1,10},
						["empty"] = {1,1,50},
					}
				},
				{
					rolls = {2,2},
					items = {
						["soul-speed-enchanted-golden-boots"] = {1,1,1},
						["block-of-gold"] = {1,1,1},
						["crossbow"] = {1,1,1},
						["gold-ingot"] = {1,6,1},
						["iron-ingot"] = {1,6,1},
						["golden-sword"] = {1,1,1},
						["golden-chestplate"] = {1,1,1},
						["golden-helmet"] = {1,1,1},
						["golden-leggings"] = {1,1,1},
						["golden-boots"] = {1,1,1},
						["empty"] = {1,1,2},
					}
				},
				{
					rolls = {3,5},
					items = {
						["crying-obsidian"] = {1,5,1},
						["gilded-blackstone"] = {1,5,1},
						["chain"] = {2,10,1},
						["magma-cream"] = {2,6,1},
						["bone-block"] = {3,6,1},
						["iron-nugget"] = {2,8,1},
						["obsidian"] = {4,6,1},
						["gold-nugget"] = {2,8,1},
						["string"] = {4,6,1},
						["arrow"] = {5,17,2},
					}
				}
			},
			poolsJavaUpcoming = {},
			poolsBedrock = {
				{
					rolls = {1,1},
					items = {
						["damaged-random-enchanted-crossbow"] = {1,1,12},
						["ancient-debris"] = {1,1,2},
						["netherite-scrap"] = {1,1,2},
						["arrow"] = {2,15,16},
						["snout-banner-pattern"] = {1,1,5},
						["disc-pigstep"] = {1,1,3},
						["enchanted-book-rnd-soul-speed"] = {1,1,10},
						["empty"] = {1,1,50},
					}
				},
				{
					rolls = {2,2},
					items = {
						["soul-speed-enchanted-golden-boots"] = {1,1,1},
						["block-of-gold"] = {1,1,1},
						["crossbow"] = {1,1,1},
						["gold-ingot"] = {1,6,1},
						["iron-ingot"] = {1,6,1},
						["golden-sword"] = {1,1,1},
						["golden-chestplate"] = {1,1,1},
						["golden-helmet"] = {1,1,1},
						["golden-leggings"] = {1,1,1},
						["golden-boots"] = {1,1,1},
						["empty"] = {1,1,2},
					}
				},
				{
					rolls = {3,5},
					items = {
						["crying-obsidian"] = {1,5,1},
						["gilded-blackstone"] = {1,5,1},
						["chain"] = {2,10,1},
						["magma-cream"] = {2,6,1},
						["bone-block"] = {3,6,1},
						["iron-nugget"] = {2,8,1},
						["obsidian"] = {4,6,1},
						["gold-nugget"] = {2,8,1},
						["string"] = {4,6,1},
						["arrow"] = {5,17,2},
					}
				}
			},
			poolsBedrockUpcoming = {}
		},
		["bastion-treasure"] = { -- bastion_treasure.json
			header = "[[보루]] 보물",
			link = "[[보루 잔해|보루 잔해 보물]]",
			structure = "보루 잔해",
			container = "보물 상자",
			structID = "bastion-remnant",
			poolsJava = {
				{
					rolls = {1,2},
					items = {
						["netherite-ingot"] = {1,1,10},
						["ancient-debris"] = {1,1,14},
						["netherite-scrap"] = {1,1,10},
						["ancient-debris"] = {2,2,1},
						["damaged-random-enchanted-diamond-sword"] = {1,1,10},
						["damaged-random-enchanted-diamond-chestplate"] = {1,1,6},
						["damaged-random-enchanted-diamond-helmet"] = {1,1,6},
						["damaged-random-enchanted-diamond-leggings"] = {1,1,6},
						["damaged-random-enchanted-diamond-boots"] = {1,1,6},
						["damaged-diamond-sword"] = {1,1,6}, 
						["damaged-diamond-chestplate"] = {1,1,5},
						["damaged-diamond-helmet"] = {1,1,5},
						["damaged-diamond-leggings"] = {1,1,5},
						["damaged-diamond-boots"] = {1,1,5},
						["diamond"] = {1,3,5},
					}
				},
				{
					rolls = {2,4},
					items = {
						["spectral-arrow"] = {5,21,1},
						["block-of-gold"] = {2,5,1},
						["gold-ingot"] = {3,9,1},
						["iron-ingot"] = {3,9,1},
						["crying-obsidian"] = {1,5,1},
						["nether-quartz"] = {8,23,1},
						["gilded-blackstone"] = {1,5,1},
						["magma-cream"] = {2,8,1},
						["iron-nugget"] = {8,16,1},
					}
				}
			},
			poolsJavaUpcoming = {},
			poolsBedrock = {
				{
					rolls = {1,2},
					items = {
						["netherite-ingot"] = {1,1,10},
						["ancient-debris"] = {1,1,14},
						["netherite-scrap"] = {1,1,10},
						["ancient-debris"] = {2,2,1},
						["damaged-random-enchanted-diamond-sword"] = {1,1,10},
						["damaged-random-enchanted-diamond-chestplate"] = {1,1,6},
						["damaged-random-enchanted-diamond-helmet"] = {1,1,6},
						["damaged-random-enchanted-diamond-leggings"] = {1,1,6},
						["damaged-random-enchanted-diamond-boots"] = {1,1,6},
						["damaged-diamond-sword"] = {1,1,6},
						["damaged-diamond-chestplate"] = {1,1,5},
						["damaged-diamond-helmet"] = {1,1,5},
						["damaged-diamond-boots"] = {1,1,5},
						["damaged-diamond-leggings"] = {1,1,5},
						["diamond"] = {1,3,5},
					}
				},
				{
					rolls = {2,4},
					items = {
						["arrow"] = {5,21,1},
						["block-of-gold"] = {2,5,1},
						["gold-ingot"] = {3,9,1},
						["iron-ingot"] = {3,9,1},
						["crying-obsidian"] = {1,5,1},
						["nether-quartz"] = {8,23,1},
						["gilded-blackstone"] = {1,5,1},
						["magma-cream"] = {2,8,1},
						["iron-nugget"] = {8,16,1},
					}
				}
			},
			poolsBedrockUpcoming = {}
		},
		["ruined-portal"] = { --ruined_portal.json
			header = "[[무너진 차원문]]",
			link   = "[[무너진 차원문]]",
			structure = "무너진 차원문",
			container = "",
			structID = "ruined-portal",
			poolsJava = {
				{
					rolls = {4,8},
					items = {
						["obsidian"] = {1,2,40},
						["flint"] = {1,4,40},
						["iron-nugget"] = {9,18,40},
						["flint-and-steel"] = {1,1,40},
						["fire-charge"] = {1,1,40},
						["golden-apple"] = {1,1,15},
						["gold-nugget"] = {4,24,15},
						["random-enchanted-golden-sword"] = {1,1,15},
						["random-enchanted-golden-axe"] = {1,1,15},
						["random-enchanted-golden-hoe"] = {1,1,15},
						["random-enchanted-golden-pickaxe"] = {1,1,15},
						["random-enchanted-golden-shovel"] = {1,1,15},
						["random-enchanted-golden-helmet"] = {1,1,15},
						["random-enchanted-golden-chestplate"] = {1,1,15},
						["random-enchanted-golden-leggings"] = {1,1,15},
						["random-enchanted-golden-boots"] = {1,1,15},
						["glistering-melon-slice"] = {4,12,5},
						["golden-horse-armor"] = {1,1,5},
						["light-weighted-pressure-plate"] = {1,1,5},
						["golden-carrot"] = {4,12,5},
						["clock"] = {1,1,5},
						["gold-ingot"] = {2,8,5},
						["bell"] = {1,1,1},
						["enchanted-golden-apple"] = {1,1,1},
						["block-of-gold"] = {1,2,1},
					}
				}
			},
			poolsJavaUpcoming = {},
			poolsBedrock = {
				{
					rolls = {4,8},
					items = {
						["obsidian"] = {1,2,40},
						["flint"] = {1,4,40},
						["iron-nugget"] = {9,18,40},
						["flint-and-steel"] = {1,1,40},
						["fire-charge"] = {1,1,40},
						["golden-apple"] = {1,1,15},
						["gold-nugget"] = {4,24,15},
						["random-enchanted-golden-sword"] = {1,1,15},
						["random-enchanted-golden-axe"] = {1,1,15},
						["random-enchanted-golden-hoe"] = {1,1,15},
						["random-enchanted-golden-shovel"] = {1,1,15},
						["random-enchanted-golden-pickaxe"] = {1,1,15},
						["random-enchanted-golden-boots"] = {1,1,15},
						["random-enchanted-golden-chestplate"] = {1,1,15},
						["random-enchanted-golden-helmet"] = {1,1,15},
						["random-enchanted-golden-leggings"] = {1,1,15},
						["glistering-melon-slice"] = {1,1,5},
						["golden-horse-armor"] = {1,1,5},
						["light-weighted-pressure-plate"] = {1,1,5},
						["golden-carrot"] = {4,12,5},
						["clock"] = {1,1,5},
						["gold-ingot"] = {2,8,5},
						["bell"] = {1,1,1},
						["enchanted-golden-apple"] = {1,1,1},
						["block-of-gold"] = {1,2,1},
					}
				}
			},
			poolsBedrockUpcoming = {}
		},
        ["woodland-mansion"] = { -- woodland_mansion.json
            header = "[[삼림 대저택]]",
            link   = "[[삼림 대저택]]",
            structure = "삼림 대저택",
            container = "",
            structID = "woodland-mansion",
            poolsJava = {
                {
                    rolls = {1,3},
                    items = {
                        ["lead"]                  = {1,1,20},
                        ["golden-apple"]          = {1,1,15},
                        ["enchanted-golden-apple"] = {1,1,2},
                        ["disc-13"]               = {1,1,15},
                        ["disc-cat"]              = {1,1,15},
                        ["name-tag"]              = {1,1,20},
                        ["chainmail-chestplate"]  = {1,1,10},
                        ["diamond-hoe"]           = {1,1,15},
                        ["diamond-chestplate"]    = {1,1,5},
                        ["enchanted-book-rnd"]    = {1,1,10},
                    }
                },
                {
                    rolls = {1,4},
                    items = {
                        ["iron-ingot"]            = {1,4,10},
                        ["gold-ingot"]            = {1,4,5},
                        ["bread"]                 = {1,1,20},
                        ["wheat"]                 = {1,4,20},
                        ["bucket"]                = {1,1,10},
                        ["redstone"]              = {1,4,15},
                        ["coal"]                  = {1,4,15},
                        ["melon-seeds"]           = {2,4,10},
                        ["pumpkin-seeds"]         = {2,4,10},
                        ["beetroot-seeds"]        = {2,4,10},
                    }
                },
                {
                    rolls = {3,3},
                    items = {
                        ["bone"]                  = {1,8,10},
                        ["gunpowder"]             = {1,8,10},
                        ["rotten-flesh"]          = {1,8,10},
                        ["string"]                = {1,8,10},
                    }
                },
            },
            poolsJavaUpcoming = {},
            poolsBedrock = {
                {
                    rolls = {1,3},
                    items = {
                        ["lead"]                  = {1,1,100},
                        ["golden-apple"]          = {1,1,75},
                        ["enchanted-golden-apple"] = {1,1,10},
                        ["disc-13"]               = {1,1,75},
                        ["disc-cat"]              = {1,1,75},
                        ["name-tag"]              = {1,1,100},
                        ["chainmail-chestplate"]  = {1,1,50},
                        ["diamond-hoe"]           = {1,1,75},
                        ["diamond-chestplate"]    = {1,1,25},
                        ["enchanted-book-rnd-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},
                    }
                },
            },
            poolsBedrockUpcoming = {}
        },
    },

    -- these values are used:
    -- * in place of the keys, when the key is used as a parameter
    
    -- chest-param -> internally-valid-chest-param
    
    synonyms = {
        ["desert"] = "desert-temple",
        ["jungle"] = "jungle-temple",
        ["nether"] = "nether-fortress",
        ["fortress"] = "nether-fortress",
        
        ["armorer"]       = "village-armorer",
        ["butcher"]       = "village-butcher",
        ["cartographer"]  = "village-cartographer",
        ["fisherman"]     = "village-fisherman",
        ["fletcher"]      = "village-fletcher",
        ["mason"]         = "village-mason",
        ["shepherd"]      = "village-shepherd",
        ["tannery"]       = "village-tannery",
        ["temple"]        = "village-temple",
        ["toolsmith"]     = "village-toolsmith",
        ["weaponsmith"]   = "village-weaponsmith",

        ["desert-house"]  = "village-desert-house",
        ["plains-house"]  = "village-plains-house",
        ["savanna-house"] = "village-savanna-house",
        ["snowy-house"]   = "village-snowy-house",
        ["taiga-house"]   = "village-taiga-house",
        
        ["altar"] = "stronghold-altar",
        ["storeroom"] = "stronghold-storeroom",
        ["library"] = "stronghold-library",
        ["outpost"] = "pillager-outpost",
        ["mansion"] = "woodland-mansion"
    },

    -- these values are used:
    -- * in the header-description of a table showing only a single chest
    -- * if the key is not here, but it is a valid chest parameter,
    --   that header-description will default to use the key string from p.chests,
    --   e.g. "nether-fortress"
    
    -- chest-param -> description-string
    
    display_names = {
        ["nether-fortress"] = "네더 요새",
        ["nether"] = "네더 요새",
        ["fortress"] = "네더 요새",
        ["desert"] = "사막 사원",
        ["jungle"] = "정글 사원",
        ["desert-temple"] = "사막 사원",
        ["jungle-temple"] = "정글 사원",
    },
    
    -- these descriptions are used:
    -- * in column <abbr> titles,
    -- * and above the table when only a single column-type is chosen
    
    columns = {
        ["stacksize"] = '이 아이템의 묶음의 수 (쌓기가 안되는 경우, 그냥 갯수).',
        ["weight"] = '이 종류에서 다른 아이템에 비한 이 아이템의 가중치.',
        ["chance"] = '하나의 상자에서 이 아이템이 존재할 확률.',
        ["items"] = '상자당 기대되는 아이템의 수. 많은 상자를 평균한 값임.',
        ["chests"] = '이 아이템을 찾으려면 평균 몇개의 상자를 찾아야 할까?'
    },
    
    current_frame = nil
}

p.base = function( ... )

    p.current_frame = mw.getCurrentFrame()

    local args = { ... }
    if args[1] == p.current_frame then 
        args = require( '모듈: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;'>모듈:LootChest: no valid arguments</span>"
    end

    q.fill_in_chest_derivative_data( chests )
    
    -- construct an ordered list dictating the order of the rows
    
    local ordered_item_rows_java = {}
    local ordered_item_rows_java_upcoming = {}
    local ordered_item_rows_bedrock = {}
    local ordered_item_rows_bedrock_upcoming = {}

    local ret = {}
    
    local java_specified             = args.java                and args.java ~= '0';
    local java_upcoming_specified    = args['java-upcoming']    and args['java-upcoming'] ~= '0';
    local bedrock_specified          = args.bedrock             and args.bedrock ~= '0';
    local bedrock_upcoming_specified = args['bedrock-upcoming'] and args['bedrock-upcoming'] ~= '0';
    
    local any_specified = java_specified or java_upcoming_specified or bedrock_specified or bedrock_upcoming_specified
    
    if any_specified then
    
        if java_specified then
            ordered_item_rows_java = q.construct_ordered_item_rows( chests, 'Java' )
        end 
        if java_upcoming_specified then
            ordered_item_rows_java_upcoming = q.construct_ordered_item_rows( chests, 'JavaUpcoming' )
        end 
        if bedrock_specified then
            ordered_item_rows_bedrock = q.construct_ordered_item_rows( chests, 'Bedrock' )
        end 
        if bedrock_upcoming_specified then
            ordered_item_rows_bedrock_upcoming = q.construct_ordered_item_rows( chests, 'BedrockUpcoming' )
        end
    
    else
    
        local java_excluded             = args.java                and args.java == '0';
        local java_upcoming_excluded    = args['java-upcoming']    and args['java-upcoming'] == '0';
        local bedrock_excluded          = args.bedrock             and args.bedrock == '0';
        local bedrock_upcoming_excluded = args['bedrock-upcoming'] and args['bedrock-upcoming'] == '0';
        
        if not java_excluded then
            ordered_item_rows_java = q.construct_ordered_item_rows( chests, 'Java' )
        end 
        if not java_upcoming_excluded then
            ordered_item_rows_java_upcoming = q.construct_ordered_item_rows( chests, 'JavaUpcoming' )
        end 
        if not bedrock_excluded then
            ordered_item_rows_bedrock = q.construct_ordered_item_rows( chests, 'Bedrock' )
        end 
        if not bedrock_upcoming_excluded then
            ordered_item_rows_bedrock_upcoming = q.construct_ordered_item_rows( chests, 'BedrockUpcoming' )
        end
    
    end
    
    if q.tablelength( ordered_item_rows_java ) > 0 then
        table.insert( ret, q.print_table( chests, columns, ordered_item_rows_java, 'Java' ) )
    end
    if q.tablelength( ordered_item_rows_java_upcoming ) > 0 and q.compare_tables( ordered_item_rows_java, ordered_item_rows_java_upcoming ) then
        table.insert( ret, p.current_frame:preprocess( p['java-upcoming'] ) .. '에서는 ' .. q.lcfirst( q.print_table( chests, columns, ordered_item_rows_java_upcoming, 'JavaUpcoming' ) ) )
    end
    if q.tablelength( ordered_item_rows_bedrock ) > 0 and q.compare_tables( ordered_item_rows_java, ordered_item_rows_bedrock ) then
        table.insert( ret, p.current_frame:preprocess( p.bedrock ) .. '에서는 ' .. q.lcfirst( q.print_table( chests, columns, ordered_item_rows_bedrock, 'Bedrock' ) ) .. '[[분류:베드락 에디션 관련 정보]]' )
    end
    if q.tablelength( ordered_item_rows_bedrock_upcoming ) > 0 and q.compare_tables( ordered_item_rows, ordered_item_rows_bedrock_upcoming ) then
        table.insert( ret, p.current_frame:preprocess( p['bedrock-upcoming'] ) .. '에서는 ' .. q.lcfirst( q.print_table( chests, columns, ordered_item_rows_bedrock_upcoming, 'BedrockUpcoming' ) ) .. '[[분류:베드락 에디션 관련 정보]]' )
    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( '모듈: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
        javaChances = q.single_item_find_values( itemname, 'poolsJava' )
        javaUpcomingChances = {}
        bedrockChances = {}
        bedrockUpcomingChances = {}
    else
        if args['java-upcoming'] and args['java-upcoming'] ~= '0' then
            javaChances = q.single_item_find_values( itemname, 'poolsJavaUpcoming' )
            javaUpcomingChances = {}
            bedrockChances = {}
            bedrockUpcomingChances = {}
        else
            if args.bedrock and args.bedrock ~= '0' then
                javaChances = q.single_item_find_values( itemname, 'poolsBedrock' )
                javaUpcomingChances = {}
                bedrockChances = {}
                bedrockUpcomingChances = {}
            else
                if args['bedrock-upcoming'] and args['bedrock-upcoming'] ~= '0' then
                    javaChances = q.single_item_find_values( itemname, 'poolsBedrockUpcoming' )
                    javaUpcomingChances = {}
                    bedrockChances = {}
                    bedrockUpcomingChances = {}
                else
                    javaChances = q.single_item_find_values( itemname, 'poolsJava' )
                    javaUpcomingChances = q.single_item_find_values( itemname, 'poolsJavaUpcoming', javaChances )
                    bedrockChances = q.single_item_find_values( itemname, 'poolsBedrock', javaChances )
                    bedrockUpcomingChances = q.single_item_find_values( itemname, 'poolsBedrockUpcoming', javaChances, bedrockChances )
                end
            end
        end
    end
    
    local html = {}
    
    local any_current = q.tablelength( javaChances ) > 0
    local any_changes_upcoming = q.tablelength( javaUpcomingChances ) > 0 and q.compare_tables( javaChances, javaUpcomingChances )
    local any_standard = any_current or any_changes_upcoming
    
    local any_bedrock_current = q.tablelength( bedrockChances ) > 0
    local any_bedrock_upcoming = q.tablelength( bedrockUpcomingChances ) > 0 and q.compare_tables( bedrockChances, bedrockUpcomingChances )
    local any_bedrock = any_bedrock_current or any_bedrock_upcoming
    
    local change_case = p.items[itemname].preserve_case == nil or p.items[itemname].preserve_case ~= true

    if any_current then
        table.insert( html, p.base2_sub( itemname, javaChances ) )
    end
    if any_changes_upcoming then
        table.insert( html, p.current_frame:preprocess( p['java-upcoming']  ) .. '에서는 ' .. ( change_case and q.lcfirst( p.base2_sub( itemname, javaUpcomingChances, any_current ) ) or p.base2_sub( itemname, javaUpcomingChances, any_current ) ) )
    end
    if any_bedrock_current then
        table.insert( html, ( any_standard and '\n\n' or '' ) .. p.current_frame:preprocess( p.bedrock ) .. '에서는 ' .. ( change_case and q.lcfirst( p.base2_sub( itemname, bedrockChances, any_standard ) ) or p.base2_sub( itemname, bedrockChances, any_standard ) ) )
    end
    if any_bedrock_upcoming then
        table.insert( html, ( any_standard and not any_bedrock_current and '\n\n' or '' ) .. p.current_frame:preprocess( p['bedrock-upcoming'] ) .. '에서는 ' .. ( change_case and q.lcfirst( p.base2_sub( itemname, bedrockUpcomingChances, any_bedrock_current or any_standard ) ) or p.base2_sub( itemname, bedrockUpcomingChances, any_bedrock_current or any_standard ) ) )
    end

    if args.nocat then
    else
        table.insert( html, '[[분류:전리품 상자 항목 틀이 있는 페이지]]' )
        if p.items[itemname].category ~= nil and p.items[itemname].category ~= false then
            table.insert( html, '[[분류:특정 전리품 상자 항목이 있는 페이지]]' )
        end
        if any_bedrock then
            table.insert( html, '[[분류:베드락 에디션 관련 정보]]' )
        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.
    

    -- use_they가 참일 경우는 "베드락 에디션에서는 이들은 ~~의 확률로"를 출력할 때 뿐인데,
    -- 한국어판에서는 "베드락 에디션에서는 ~~의 확률로"로 출력하도록 텍스트를 간소화한다.
    if not use_they then
        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( '모듈:Autolink' )
        item_display_name = Autolink.invlink(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
    if not use_they then -- use_they에 관한 주석은 위를 볼 것
        local josa = require('모듈:Josa').josa
        if (name_without_ref) then
            table.insert( html, josa(name_without_ref, '은/는')..' ' )
        else
            table.insert( html, josa(item_display_name, '은/는')..' ' )
        end
    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 > 1 and ', ' or ' ' ) -- 영어에서는 항목 열거 시 마지막 항목 앞에 반점을 없애고 'and'를 쓰기 때문에 조건 값이 2지만, 한국어는 그렇지 않기 때문에 조건 값이 1이다
        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 -- 확률 100%
                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.remove( html_per_stack )
            table.insert( html_per_stack, ' 모두 ' ) -- 예: 모두 nn%의 확률로
        end
        table.insert( html_per_stack, stacksize)

        -- ~개 묶음으로 앞에 오는 반점 제거. 또 스택을 직접 건드린다.
        if html_per_stack[#html_per_stack - 1] == ', ' then
            html_per_stack[#html_per_stack - 1] = ' ' -- 공백은 필요하다
        end

        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( '모듈:ProcessArgs' ).merge( true )
    else
        args = args[1]
    end
    
    local z = args[1]
    
    local html_java = {}
    local html_java_u = {}
    local html_bedrock = {}
    local html_bedrock_u = {}
    
    local rErr = ""
    
    local zT = {}
    if args[1] == "!!!ALL!!!" then
        for item_name, v in pairs( p.items ) do
            table.insert( zT, item_name )
            table.sort( zT )
        end
    else
        zT = mw.text.split( args[1], ',' )
    end
    
    for x, itemname in pairs( zT ) do
    
        if p.items[itemname] == nil then
            rErr = rErr .. "<span class='error'>Unknown item " .. itemname .. ".</span>\n"
        else
            
            local javaChances, javaUpcomingChances, bedrockChances, bedrockUpcomingChances
            
            if args.java and args.java ~= '0' then
                javaChances = q.single_item_find_values( itemname, 'poolsJava' )
                javaUpcomingChances = {}
                bedrockChances = {}
                bedrockUpcomingChances = {}
            else
                if args['java-upcoming'] and args['java-upcoming'] ~= '0' then
                    javaChances = q.single_item_find_values( itemname, 'poolsJavaUpcoming' )
                    javaUpcomingChances = {}
                    bedrockChances = {}
                    bedrockUpcomingChances = {}
                else
                    if args.bedrock and args.bedrock ~= '0' then
                        javaChances = q.single_item_find_values( itemname, 'poolsBedrock' )
                        javaUpcomingChances = {}
                        bedrockChances = {}
                        bedrockUpcomingChances = {}
                    else
                        if args['bedrock-upcoming'] and args['bedrock-upcoming'] ~= '0' then
                            javaChances = q.single_item_find_values( itemname, 'poolsBedrockUpcoming' )
                            javaUpcomingChances = {}
                            bedrockChances = {}
                            bedrockUpcomingChances = {}
                        else
                            javaChances = q.single_item_find_values( itemname, 'poolsJava' )
                            javaUpcomingChances = q.single_item_find_values( itemname, 'poolsJavaUpcoming', javaChances )
                            bedrockChances = q.single_item_find_values( itemname, 'poolsBedrock', javaChances )
                            bedrockUpcomingChances = q.single_item_find_values( itemname, 'poolsBedrockUpcoming', javaChances, bedrockChances )
                        end
                    end
                end
            end
            
            local any_current = q.tablelength( javaChances ) > 0
            local any_changes_upcoming = q.tablelength( javaUpcomingChances ) > 0 and q.compare_tables( javaChances, javaUpcomingChances )
            local any_standard = any_current or any_changes_upcoming
            
            local any_bedrock_current = q.tablelength( bedrockChances ) > 0
            local any_bedrock_upcoming = q.tablelength( bedrockUpcomingChances ) > 0 and q.compare_tables( bedrockChances, bedrockUpcomingChances )
            local any_bedrock = any_bedrock_current or any_bedrock_upcoming
            
            if any_current then
                table.insert( html_java, p.base3_sub( itemname, javaChances ) )
            end
            if any_changes_upcoming then
                table.insert( html_java_u, p.base3_sub( itemname, javaUpcomingChances ) )
            end
            if any_bedrock_current then
                table.insert( html_bedrock, p.base3_sub( itemname, bedrockChances ) )
            end
            if any_bedrock_upcoming then
                table.insert( html_bedrock_u, p.base3_sub( itemname, bedrockUpcomingChances ) )
            end
            
        end 
    end
    
    local output = rErr .. '{| class="wikitable sortable" \n! 아이템 \n! 구조물 \n! 상자 \n! 수량 \n! 확률 \n' .. table.concat( html_java )
    if q.tablelength( html_java_u ) > 0 then
        output = output .. '|-\n!colspan=5|' .. p['java-upcoming'] .. ' \n' .. table.concat( html_java_u ) 
    end
    if q.tablelength( html_bedrock ) > 0 then
        output = output .. '|-\n!colspan=5|' .. p.bedrock .. ' \n' .. table.concat( html_bedrock ) 
    end
    if q.tablelength( html_bedrock_u ) > 0 then
        output = output .. '|-\n!colspan=5|' .. p['bedrock-upcoming'] .. ' \n' .. table.concat( html_bedrock_u ) 
    end
    output = output .. '|}' .. p.current_frame:extensionTag( 'references', "", { group="note" } )
    
    return output
end

p.base3_sub = function( itemname, chances )
    local html = {}
    local item_display_name = ''
    local output = ""
    lang = mw.getContentLanguage()
    
    if p.items[itemname].title ~= nil then
        item_display_name = p.items[itemname].title
    else
        item_display_name = q.titlecase( string.gsub( itemname, '-', ' ' ) )
    end
    
    local objectList = {}
    local ns = q.tablelength( chances )
    local s = 0
    local m = 0
    
    local rn = 0

    for stacksize, chest_details in pairs( chances ) do
        s = s + 1
        
        local nc = q.tablelength( chest_details )
        local c = 0
        for k, chest in pairs( chest_details ) do
            c = c + 1
            rn = rn + 1
            local 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.notes[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.poolsJava 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.allRollsJava = {}
            chest.itemDataJava = {}
            for k, pool in pairs( chest.poolsJava or {} ) do
                table.insert( chest.allRollsJava, ( pool.rolls[1] == pool.rolls[2] and pool.rolls[1] or pool.rolls[1]..'–'..pool.rolls[2] ) )

                local total_weight = 0
                for itemname, item in pairs(pool.items) do
                    total_weight = total_weight + item[3]
                end
                pool.totalweight = total_weight

                q.fill_in_chest_item_details( chest.itemDataJava, pool, #chest.allRollsJava )
            end

            chest.allRollsJavaUpcoming = {}
            chest.itemDataJavaUpcoming = {}
            for k, pool in pairs( chest.poolsJavaUpcoming or chest.poolsJava or {} ) do
                table.insert( chest.allRollsJavaUpcoming, ( pool.rolls[1] == pool.rolls[2] and pool.rolls[1] or pool.rolls[1]..'–'..pool.rolls[2] ) )

                local total_weight = 0
                for itemname, item in pairs(pool.items) do
                    total_weight = total_weight + item[3]
                end
                pool.totalweight = total_weight

                q.fill_in_chest_item_details( chest.itemDataJavaUpcoming, pool, #chest.allRollsJavaUpcoming )
            end

            chest.allRollsBedrock = {}
            chest.itemDataBedrock = {}
            for k, pool in pairs( chest.poolsBedrock or chest.poolsJava or {} ) do
                table.insert( chest.allRollsBedrock, ( pool.rolls[1] == pool.rolls[2] and pool.rolls[1] or pool.rolls[1]..'–'..pool.rolls[2] ) )

                local total_weight = 0
                for itemname, item in pairs(pool.items) do
                    total_weight = total_weight + item[3]
                end
                pool.totalweight = total_weight

                q.fill_in_chest_item_details( chest.itemDataBedrock, pool, #chest.allRollsBedrock )
            end

            chest.allRollsBedrockUpcoming = {}
            chest.itemDataBedrockUpcoming = {}
            for k, pool in pairs( chest.poolsBedrockUpcoming or chest.poolsJava or {} ) do
                table.insert( chest.allRollsBedrockUpcoming, ( pool.rolls[1] == pool.rolls[2] and pool.rolls[1] or pool.rolls[1]..'–'..pool.rolls[2] ) )

                local total_weight = 0
                for itemname, item in pairs(pool.items) do
                    total_weight = total_weight + item[3]
                end
                pool.totalweight = total_weight

                q.fill_in_chest_item_details( chest.itemDataBedrockUpcoming, pool, #chest.allRollsBedrockUpcoming )
            end
        end
    end,

    fill_in_chest_item_details = function( data, pool, ct )
        for item_name, item in pairs(pool.items) do
            if p.items[item_name] then
                local min_stacksize = item[1]
                local max_stacksize = item[2]
                local min_pool_rolls = pool.rolls[1]
                local max_pool_rolls = pool.rolls[2]
                local item_weight = item[3]
            
                if data[item_name] == nil then
                    data[item_name] = {
                        avgamount = 0,
                        chanceany = 0,
                        itemname = item_name,
                        sortsize = {},
                        sortweight = {},
                        sizes = {},
                        weights = {},
                    }
                    for i = 1, ct-1 do
                        data[item_name].sortsize[i] = 0
                        data[item_name].sortweight[i] = 0
                        data[item_name].sizes[i] = '—'
                        data[item_name].weights[i] = '—'
                    end
                end

                data[item_name].avgamount = data[item_name].avgamount + p.calc_average_amount_this_item_per_pool( 
                    min_stacksize, max_stacksize, 
                    min_pool_rolls, max_pool_rolls, 
                    item_weight, pool.totalweight )
                    
                data[item_name].chanceany = data[item_name].chanceany + (1 - data[item_name].chanceany) * p.calc_chance_any_of_this_item_per_pool(
                    min_pool_rolls, max_pool_rolls, 
                    item_weight, pool.totalweight )

                data[item_name].sortsize[ct] = ( min_stacksize + max_stacksize ) / 2
                data[item_name].sortweight[ct] = item_weight;
                data[item_name].sizes[ct] = ( min_stacksize == max_stacksize and min_stacksize or min_stacksize .. '–' .. max_stacksize )
                data[item_name].weights[ct] = p.current_frame:expandTemplate{ title = 'frac', args = { item_weight, pool.totalweight } }
            end
        end

        for item_name, d in pairs(data) do
            if not d.sizes[ct] then
                d.sortsize[ct] = 0
                d.sortweight[ct] = 0
                d.sizes[ct] = '—'
                d.weights[ct] = '—'
            end
        end
    end,

    construct_ordered_items_from_first_chest = function( chest_names, suffix )
        local items_from_first_table = {}
        local item_chests = {}
        local item_names_ordered = {}
        for item_name, item in pairs( p.chests[chest_names[1]]['itemData'..suffix] ) do
            table.insert( items_from_first_table, item )
        end
        
        table.sort( items_from_first_table, q.sort_items )
        
        for k, item in pairs( items_from_first_table ) do
            table.insert( item_names_ordered, item.itemname )
            item_chests[item.itemname] = true
        end
        
        return item_names_ordered, item_chests
    end,

    get_ordered_items_from_other_chests = function( chest_names, item_chests, suffix )
        local items_not_from_first_table = {}
        
        for chest_idx = 2, #chest_names do
            for item_name, item in pairs( p.chests[chest_names[chest_idx]]['itemData'..suffix] ) do
                if item_chests[item_name] == nil then
                    p.items[item_name].itemname = item_name
                    table.insert( items_not_from_first_table, p.chests[chest_names[chest_idx]]['itemData'..suffix][item_name] )
                    item_chests[item_name] = true
                end
            end
        end

        table.sort( items_not_from_first_table, q.sort_items )
        
        return items_not_from_first_table
    end,

    add_other_items_to_first_list = function( chest_names, item_names_ordered, item_chests, items_not_from_first_table )
        for k, item in pairs( items_not_from_first_table ) do
            table.insert( item_names_ordered, item.itemname )
        end
        
        return item_names_ordered
    end,

    set_up_ordered_item_rows = function( chest_names, item_names_ordered, suffix )
        for k, itemname in pairs(item_names_ordered) do
            item_names_ordered[k] = {itemname}
            for chest_idx = 1, #chest_names do
                if suffix == 'JavaUpcoming' or p.chests[chest_names[chest_idx]]['pools'..suffix] ~= nil then
                    local item_data = p.chests[chest_names[chest_idx]]['itemData'..suffix][itemname]
                    if item_data == nil then
                        table.insert( item_names_ordered[k], false )
                    else
                        table.insert( item_names_ordered[k], item_data )
                    end             
                end
            end
        end

        return item_names_ordered
    end,

    construct_ordered_item_rows = function( chest_names, suffix )
        -- for the first chest, sort its by chance desc, then by avg amount desc, then alphabetically asc
        local item_names_ordered, item_chests = q.construct_ordered_items_from_first_chest( chest_names, suffix )
        
        if #chest_names > 1 then
            -- after that, sort all the remaining items in list order
            local items_not_from_first_table = q.get_ordered_items_from_other_chests( chest_names, item_chests, suffix )
            item_names_ordered = q.add_other_items_to_first_list( chest_names, item_names_ordered, item_chests, items_not_from_first_table )
        end

        -- set up item_names_ordered so that each is a row, representing chest values
        item_names_ordered = q.set_up_ordered_item_rows( chest_names, item_names_ordered, suffix )
        
        return item_names_ordered
    end,

    print_table = function( chest_names, columns, ordered_item_rows, suffix )

        local html = {}
        
        local use_roll_row = false
        local use_superheader = false
        local superheader_sizes = {}
        for i = 1, #chest_names do
            sh = p.chests[chest_names[i]].superheader
            if sh ~= nil then
                if superheader_sizes[sh] == nil then
                    superheader_sizes[sh] = 0
                end
                superheader_sizes[sh] = superheader_sizes[sh] + 1
                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, "Each " )
            table.insert( html, display_name or chest_name )
            if chest_type ~= 'chest' and chest_type ~= 'minecart with chest' then
                table.insert( html, " contains " )
            else
                table.insert( html, " chest contains " )
            end
            if #allRolls == 1 then
                table.insert( html, allRolls[1] )
                table.insert( html, " item stacks, " )
            else
                table.insert( html, ' items drawn from ' )
                table.insert( html, #allRolls )
                table.insert( html, ' pools, ' )
            end
            table.insert( html, " with the following distribution: \n" )
        end
        
        table.insert( html, '<div style="overflow:auto">\n' )
        table.insert( html, "<table class='wikitable sortable jquery-tablesorter'>\n" )
        table.insert( html, "<tr>\n" )
        table.insert( html, "<th rowspan=" )
        table.insert( html, ( rowspan - ( hide_col_description and 1 or 0 ) ) )
        table.insert( html, "></th>\n" )
        
        local superheader_cols_used = {}
        
        if #chest_names > 1 then
            local row1, row2 = {}, {}

            for i = 1, #chest_names do
            
                if suffix == 'JavaUpcoming' or p.chests[chest_names[i]]['pools'..suffix] ~= nil then
                    local allRolls = p.chests[chest_names[i]]['allRolls'..suffix]
                    local colspan = q.tablelength(columns)
                    local allRollsSpan = #allRolls == 0 and 1 or #allRolls
                    if columns['stacksize'] ~= nil then
                        colspan = colspan - 1 + allRollsSpan
                    end
                    if columns['weight'] ~= nil then
                        colspan = colspan - 1 + allRollsSpan
                    end
                    local row = row1
                    
                    rowspan = 1
                    if use_superheader then
                        sh = p.chests[chest_names[i]].superheader
                        if sh ~= nil then
                            if superheader_cols_used[sh] == nil then
                                table.insert( row, "<th colspan=" )
                                table.insert( row, ( colspan * superheader_sizes[sh] ) )
                                table.insert( row, ">" )
                                table.insert( row, sh )
                                table.insert( row, "</th>\n" )
                                superheader_cols_used[sh] = 0
                            end
                            row = row2
                        else
                            rowspan = rowspan + 1
                        end
                    end
                    if use_roll_row and hide_col_description and #allRolls < 2 then
                        rowspan = rowspan + 1
                    end

                    table.insert( row, "<th colspan=" )
                    table.insert( row, colspan )
                    if rowspan > 1 then
                        table.insert( row, " rowspan=" )
                        table.insert( row, rowspan )
                    end
                    table.insert( row, ">" )
                    table.insert( row, p.chests[ chest_names[i] ].header )
                    if #allRolls > 0 then
                        table.insert( row, ' <br><span style="font-weight:normal; font-style:italic; font-size:11px;">(' )
                        if #allRolls == 1 then
                            table.insert( row, allRolls[1] )
                        else
                            local s = ( #allRolls > 2 and ', ' or ' ' )
                            for i = 1, #allRolls-1 do
                                table.insert( row, allRolls[i] )
                                table.insert( row, s )
                            end
                            table.insert( row, 'and ' )
                            table.insert( row, allRolls[#allRolls] )
                        end
                        table.insert( row, ' stacks)</span>' )
                    end
                    table.insert( row, "</th>\n" )
                end
            end
            
            table.insert( html, table.concat( row1 ) )
            table.insert( html, "</tr><tr>\n" )
            if #row2 then
                table.insert( html, table.concat( row2 ) )
                table.insert( html, "</tr><tr>\n" )
            end
        end

        if not hide_col_description then
            local headersort_th_open
            if use_roll_row then
                headersort_th_open = "<th rowspan='2' class='headersort' role='columnheader button' data-sort-type='number'> <abbr title='"
            else
                headersort_th_open = "<th class='headersort' role='columnheader button' data-sort-type='number'> <abbr title='"
            end
            for i = 1, #chest_names do
                if suffix == 'JavaUpcoming' or p.chests[chest_names[i]]['pools'..suffix] ~= nil then
                    local allRolls = p.chests[chest_names[i]]['allRolls'..suffix]
                    local allRollsSpan = #allRolls == 0 and 1 or #allRolls
                    local headersort_th_colspan_open
                    if #allRolls > 1 then
                        headersort_th_colspan_open = "<th colspan='" .. allRollsSpan .. "' role='columnheader'> <abbr title='"
                    else
                        headersort_th_colspan_open = headersort_th_open
                    end

                    if columns['stacksize'] ~= nil then
                        table.insert( html, headersort_th_colspan_open )
                        table.insert( html, p.columns['stacksize'] )
                        table.insert( html, "'> Stack Size </abbr></th>\n" )
                    end
                    if columns['weight'] ~= nil then
                        table.insert( html, headersort_th_colspan_open )
                        table.insert( html, p.columns['weight'] )
                        table.insert( html, "'> Weight" )
                        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, "'> # Items </abbr></th>\n" )
                    end
                    if columns['chance'] ~= nil then
                        table.insert( html, headersort_th_open )
                        table.insert( html, p.columns['chance'] )
                        table.insert( html, "'> Chance </abbr></th>\n" )
                    end
                    if columns['chests'] ~= nil then
                        table.insert( html, headersort_th_open )
                        table.insert( html, p.columns['chests'] )
                        table.insert( html, "'> # Chests </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='The chest will draw " )
                            table.insert( html, allRolls[k] )
                            table.insert( html, " stack(s) randomly from this pool.'>" )
                            table.insert( html, allRolls[k] )
                            table.insert( html, "×</abbr></th>\n" )
                        end
                    end
                end
            end
            table.insert( html, "</tr><tr>\n" )
        end

        for i = 1, #ordered_item_rows do
            if type( ordered_item_rows[i] ) == "table" then
                for j = 1, #ordered_item_rows[i] do

                    local chest_item = ordered_item_rows[i][j]
                    
                    if type( chest_item ) == "table" then
                    
                        local avg_amount = string.format("%.3f", chest_item.avgamount)
                        local chance_any = string.format("%.1f", chest_item.chanceany*100) .. "%"
                        local num_chests = string.format("%.1f", 1/chest_item.chanceany)
                        
                        table.insert( html, "\n" )
                        if columns['stacksize'] ~= nil then
                            for k = 1, #chest_item.sizes do
                                table.insert( html, "<td style='text-align:center;' data-sort-value='" )
                                table.insert( html, ( chest_item.sortsize[k] == 0 and "9e99" or chest_item.sortsize[k] ) )
                                table.insert( html, "'>" )
                                table.insert( html, chest_item.sizes[k] )
                                table.insert( html, "</td>" )
                            end
                        end
                        if columns['weight'] ~= nil then
                            for k = 1, #chest_item.sizes do
                                table.insert( html, "<td style='text-align:center;' data-sort-value='" )
                                table.insert( html, ( chest_item.sortweight[k] == 0 and "9e99" or chest_item.sortweight[k] ) )
                                table.insert( html, "'>" )
                                table.insert( html, chest_item.weights[k] )
                                table.insert( html, "</td>" )
                            end
                        end
                        if columns['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:center;'>" )
                            table.insert( html, chance_any )
                            table.insert( html, "</td>" )
                        end
                        if columns['chests'] ~= nil then
                            table.insert( html, "<td style='text-align:center;'>" )
                            table.insert( html, num_chests )
                            table.insert( html, "</td>" )
                        end
                            
                    elseif type( chest_item ) == "boolean" then
                        local allRolls = p.chests[chest_names[j-1]]['allRolls'..suffix]
                        local allRollsSpan = #allRolls == 0 and 1 or #allRolls

                        table.insert( html, "\n" )
                        if columns['stacksize'] ~= nil then
                            for k = 1, allRollsSpan do
                                table.insert( html, "<td data-sort-value='9e99' style='text-align:center;'>—</td>" )
                            end
                        end
                        if columns['weight'] ~= nil then
                            for k = 1, allRollsSpan do
                                table.insert( html, "<td data-sort-value='9e99' style='text-align:center;'>—</td>" )
                            end
                        end
                        if columns['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:center;'>—</td>" )
                        end
                        if columns['chests'] ~= nil then
                            table.insert( html, "<td data-sort-value='9e99' style='text-align:center;'>—</td>" )
                        end
                    else
                        if i > 1 then
                            table.insert( html, "</tr><tr>" )
                        end
                        
                        local item = p.items[chest_item]
                        
                        local s = require( '모듈: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:extensionTag( 'ref', p.notes[item.note], { group='note', name=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