模块:Inventory slot/Aliases

来自The Land of StarLight
Kesager留言 | 贡献2022年10月3日 (一) 10:31的版本 (导入2个版本)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

此模块的文档可以在模块:Inventory slot/Aliases/doc创建

local coloredDyes = {
	'Orange Dye', 'Magenta Dye', 'Light Blue Dye', 'Yellow Dye', 'Lime Dye',
	'Pink Dye', 'Gray Dye', 'Light Gray Dye', 'Cyan Dye', 'Purple Dye',
	'Blue Dye', 'Brown Dye', 'Green Dye',
	'Red Dye', 'Black Dye',
}
local aliases = {
	-- Common fuel types for furnace --
	['Any fuel'] = { 'Coal', 'Charcoal', { title = '原木', name = 'Oak Log' }, { title = '主世界木板', name = 'Oak Planks' }, 'Block of Coal' },
	['Any leather armor'] = { 'Leather Cap', 'Leather Tunic', 'Leather Pants', 'Leather Boots' },
	['Any golden armor'] = { 'Golden Helmet', 'Golden Chestplate', 'Golden Leggings', 'Golden Boots' },
	['Any chainmail armor'] = { 'Chainmail Helmet', 'Chainmail Chestplate', 'Chainmail Leggings', 'Chainmail Boots' },
	['Any iron armor'] = { 'Iron Helmet', 'Iron Chestplate', 'Iron Leggings', 'Iron Boots' },
	['Any diamond armor'] = { 'Diamond Helmet', 'Diamond Chestplate', 'Diamond Leggings', 'Diamond Boots' },
	['Any netherite armor'] = { 'Netherite Helmet', 'Netherite Chestplate', 'Netherite Leggings', 'Netherite Boots' },

	-- stones --
	['Any Cobblestone or Blackstone'] = { 'Cobblestone', 'Blackstone' },
	['Any stone-tier block'] = { 'Cobblestone', 'Blackstone', 'Cobbled Deepslate' },

	-- Display names --
	['Broken Elytra'] = { title = '&e鞘翅', name = 'Broken Elytra' },
	['Banner Pattern Flower'] = { title = '旗帜图案', name = 'Banner Pattern', text = '&7花朵盾徽'},
	['Banner Pattern Flower Charge'] = { title = '旗帜图案', name = 'Banner Pattern', text = '&7花朵盾徽'},
	['Banner Pattern Creeper'] = { title = '&e旗帜图案', name = 'Banner Pattern', text = '&7苦力怕盾徽'},
	['Banner Pattern Creeper Charge'] = { title = '&e旗帜图案', name = 'Banner Pattern', text = '&7苦力怕盾徽'},
	['Banner Pattern Bordure Indented'] = { title = '旗帜图案', name = 'Banner Pattern', text = '&7波纹边'},
	['Banner Pattern Field Masoned'] = { title = '旗帜图案', name = 'Banner Pattern', text = '&7砖纹'},
	['Banner Pattern Skull'] = { title = '&e旗帜图案', name = 'Banner Pattern', text = '&7头颅盾徽'},
	['Banner Pattern Skull Charge'] = { title = '&e旗帜图案', name = 'Banner Pattern', text = '&7头颅盾徽'},
	['Banner Pattern Thing'] = { title = '&d旗帜图案', name = 'Banner Pattern', text = '&7Mojang徽标'},
	['Banner Pattern Globe'] = { title = '旗帜图案', name = 'Banner Pattern', text = '&7地球'},
	['Banner Pattern Snout'] = { title = '旗帜图案', name = 'Banner Pattern', text = '&7猪鼻'},
	['Banner Pattern Piglin'] = { title = '旗帜图案', name = 'Banner Pattern', text = '&7猪鼻'},
	['Button'] = { title = '按钮', name = 'Stone Button' },
	['Wooden Button'] = { title = '按钮', name = 'Oak Button' },
	['Arrow Loaded Crossbow'] = { title = '弩', name = 'Arrow Loaded Crossbow' },
	['Firework Loaded Crossbow'] = { title = '弩', name = 'Firework Loaded Crossbow' },
	['Illager Banner'] = { title = '&6&o灾厄旗帜', name = 'Illager Banner', text = 
		'&7青色棱形/&7底淡灰横条/&7中灰竖条/&7淡灰色方框边/&7中黑横条/&7淡灰色上半方形'},
	['Jigsaw Block'] = { title = '&d拼图方块', name = 'Jigsaw Block' },
	['Half Filled Bundle'] = { title = '收纳袋', name = 'Half Filled Bundle' },
	['Filled Bundle'] = { title = '收纳袋', name = 'Filled Bundle' },

	-- Weapons --
	['Trident'] = { title = '三叉戟', name = 'Trident', text = '/&7 在主手时:/ &21.1 攻击速度/ &29 攻击伤害'},
	['Trident BE'] = { name = 'Trident', text = '/&9 +8 攻击伤害'},

	-- Bedrock and Education Edition display names --
	['Elytra Wings'] = { title = '鞘翅', name = 'Elytra' },
	['Cooked Beef'] = { title = '熟牛肉', name = 'Steak' },
	['Map (no markers)'] = { title = '地图', name = 'Map', text = '显示标记:&c否' },
	['Locator Map'] = { title = '地图', name = 'Map', text = '显示标记:&a是' },
	
	-- Earth display names --
	['Rainbow Bed'] = { title = '彩虹床', name = 'Rainbow Bed' },
	['Rainbow Carpet'] = { title = '彩虹地毯', name = 'Rainbow Carpet' },
	['Rainbow Wool'] = { title = '彩虹羊毛', name = 'Rainbow Wool' },

	-- Chemistry --
	['Lead (element)'] = { title = '铅', name = 'Lead (element)' },
	['Water (compound)'] = { title = '水', name = 'Water (compound)' },
	['Chloride'] = { 'Calcium Chloride', 'Cerium Chloride', 'Mercuric Chloride', 'Potassium Chloride', 'Tungsten Chloride' },
	['Sparkler'] = { 'Orange Sparkler', 'Blue Sparkler', 'Red Sparkler', 'Purple Sparkler', 'Green Sparkler' },
	['Matching Chloride'] = { 'Cerium Chloride', 'Mercuric Chloride', 'Potassium Chloride', 'Tungsten Chloride' },
	['Matching Colored Torch'] = { 'Blue Torch', 'Red Torch', 'Purple Torch', 'Green Torch' },
	['Matching Glow Stick'] = { 'White Glow Stick', 'Orange Glow Stick', 'Magenta Glow Stick', 'Light Blue Glow Stick',
		'Yellow Glow Stick', 'Lime Glow Stick', 'Pink Glow Stick', 'Gray Glow Stick', 'Cyan Glow Stick',
		'Purple Glow Stick', 'Blue Glow Stick', 'Brown Glow Stick', 'Green Glow Stick', 'Red Glow Stick' },
}

local Autolink = require('Module:Autolink')

-- Tooltip colors --
local yellowTooltips = {
	'Creeper Head',
	'Damaged Elytra',
	'Dragon Head',
	'Dragon\'s Breath',
	'Elytra',
	'Head',
	'Heart of the Sea',
	'Player Head',
	'Skeleton Skull',
	'Totem of Undying',
	'Wither Skeleton Skull',
	'Zombie Head',
}
for _, name in ipairs( yellowTooltips ) do
	aliases[name] = { title = '&e' .. Autolink.invlink(name, 'nolink'), name = name }
end

local aquaTooltips = {
	'Beacon',
	'Conduit',
	'Golden Apple',
}
for _, name in ipairs( aquaTooltips ) do
	aliases[name] = { title = '&b' .. Autolink.invlink(name, 'nolink'), name = name }
end

local lightPurpleTooltips = {
	'Dragon Egg',
	'Structure Block',
}
for _, name in ipairs( lightPurpleTooltips ) do
	aliases[name] = { title = '&d' .. Autolink.invlink(name, 'nolink'), name = name }
end

local orangeItalicTooltips = {
	'Ominous Banner',
}
for _, name in ipairs( orangeItalicTooltips ) do
	aliases[name] = { title = '&6&o' .. Autolink.invlink(name, 'nolink'), name = name }
end

-- Animated icons --
local animatedIcons = {
	'Blue Key',
	'Bubble Column',
	'Compass',
	'Clock',
	'Crimson Hyphae',
	'Crimson Stem',
	'Debug Stick',
	'Fire',
	'Heat Block',
	'Lava',
	'Lodestone Compass',
	'Magma Block',
	'Magma Block BE',
	'Nether Portal',
	'Prismarine',
	'Prismarine Slab',
	'Prismarine Stairs',
	'Prismarine Wall',
	'Recovery Compass',
	'Red Key',
	'Sea Lantern',
	'Stonecutter',
	'Soul Fire',
	'Sculk Sensor',
	'Sculk Sensor BE',
	'Warped Hyphae',
	'Warped Stem',
	'Water',
	'Written Book',
	'Yellow Key'
}
for _, icon in ipairs( animatedIcons ) do
	aliases[icon] = icon .. '.gif'
end

-- Some things are both animated and yellow --
local animatedIconsYellowTooltips = {
	'Bottle o\' Enchanting',
	'Enchanted Book',
	'Nether Star',
}
for _, name in ipairs( animatedIconsYellowTooltips ) do
	aliases[name] = { title = '&e', name = name .. '.gif' }
end

-- Some things are both animated and aqua --
local animatedIconsAquaTooltips = {
	'End Crystal',
}
for _, name in ipairs( animatedIconsAquaTooltips ) do
	aliases[name] = { title = '&b', name = name .. '.gif' }
end

-- Some things are both animated and purple --
local animatedIconsPurpleTooltips = {
	'Command Block',
	'Chain Command Block',
	'Repeating Command Block',
	'Enchanted Golden Apple',
}
for _, name in ipairs( animatedIconsPurpleTooltips ) do
	aliases[name] = { title = '&d', name = name .. '.gif' }
end

-- Bedrock Edition Items --
local animatedEditionItems = {
	BE = {
		'Lodestone Compass',
	},
	LCE = {
		
	}
}
for edition, items in pairs( animatedEditionItems ) do
	for _, item in ipairs( items ) do
		local name = item .. ' ' .. edition
		aliases[name] = { title = item, name = name .. '.gif' }
	end
end

-- Tools and weapons --
local tools = {
	{'Wooden', 'Sword', 1.6, 4, '木剑' },
	{'Stone', 'Sword', 1.6, 5, '石剑' },
	{'Iron', 'Sword', 1.6, 6, '铁剑' },
	{'Golden', 'Sword', 1.6, 4, '金剑' },
	{'Diamond', 'Sword', 1.6, 7, '钻石剑' },
	{'Netherite', 'Sword', 1.6, 8, '下界合金剑' },
	
	{'Wooden', 'Pickaxe', 1.2, 2, '木镐' },
	{'Stone', 'Pickaxe', 1.2, 3, '石镐' },
	{'Iron', 'Pickaxe', 1.2, 4, '铁镐' },
	{'Golden', 'Pickaxe', 1.2, 2, '金镐' },
	{'Diamond', 'Pickaxe', 1.2, 5, '钻石镐' },
	{'Netherite', 'Pickaxe', 1.2, 6, '下界合金镐' },
	
	{'Wooden', 'Axe', 0.8, 7, '木斧' },
	{'Stone', 'Axe', 0.8, 9, '石斧' },
	{'Iron', 'Axe', 0.9, 9, '铁斧' },
	{'Golden', 'Axe', 1, 7, '金斧' },
	{'Diamond', 'Axe', 1, 9, '钻石斧' },
	{'Netherite', 'Axe', 1, 10, '下界合金斧' },
	
	{'Wooden', 'Shovel', 1, 2.5, '木锹' },
	{'Stone', 'Shovel', 1, 3.5, '石锹' },
	{'Iron', 'Shovel', 1, 4.5, '铁锹' },
	{'Golden', 'Shovel', 1, 2.5, '金锹' },
	{'Diamond', 'Shovel', 1, 5.5, '钻石锹' },
	{'Netherite', 'Shovel', 1.6, 6.5, '下界合金锹' },
	
	{'Wooden', 'Hoe', 1, 1, '木锄' },
	{'Stone', 'Hoe', 2, 1, '石锄' },
	{'Iron', 'Hoe', 3, 1, '铁锄' },
	{'Golden', 'Hoe', 1, 1, '金锄' },
	{'Diamond', 'Hoe', 4, 1, '钻石锄' },
	{'Netherite', 'Hoe', 4, 1, '下界合金锄' }
}

local materialGroups = {}
local toolGroups = {}

for _, toolProps in ipairs( tools ) do
	local aliasName = toolProps[1] .. ' ' .. toolProps[2]
	aliases[aliasName] = { title = toolProps[5], name = aliasName, text = '/&7在主手时:/ &7' .. toolProps[3] .. ' 攻击速度/ &7' .. toolProps[4] .. ' 攻击伤害' }
	
	local materialGroup = toolProps[1]:lower();
	local toolGroup = toolProps[2]:lower();
	
	if toolProps[2] ~= 'Sword' then
		if materialGroups[materialGroup] == nil then materialGroups[materialGroup] = {} end
		table.insert( materialGroups[materialGroup], aliases[aliasName] )
	end
	if toolGroups[toolGroup] == nil then toolGroups[toolGroup] = {} end
	table.insert( toolGroups[toolGroup], aliases[aliasName] )
end

for materialGroup, items in pairs( materialGroups ) do
	aliases['Any ' .. materialGroup .. ' tools'] = items
end

for toolGroup, items in pairs( toolGroups ) do
	aliases['Any ' .. toolGroup] = items
end

-- Lists of item variants --
local itemVariants = {
	['Dye'] = mw.clone( coloredDyes ),
	['Colored Dye'] = coloredDyes,
	['Dyed Wool'] = {
		'Orange Wool', 'Magenta Wool', 'Light Blue Wool', 'Yellow Wool', 'Lime Wool',
		'Pink Wool', 'Gray Wool', 'Light Gray Wool', 'Cyan Wool', 'Purple Wool',
		'Blue Wool', 'Brown Wool', 'Green Wool', 'Red Wool', 'Black Wool',
	},
	['Dyed Bed'] = {
		'Orange Bed', 'Magenta Bed', 'Light Blue Bed', 'Yellow Bed', 'Lime Bed',
		'Pink Bed', 'Gray Bed', 'Light Gray Bed', 'Cyan Bed', 'Purple Bed',
		'Blue Bed', 'Brown Bed', 'Green Bed', 'Red Bed', 'Black Bed',
	},
	['Dyed Carpet'] = {
		'Orange Carpet', 'Magenta Carpet', 'Light Blue Carpet', 'Yellow Carpet', 'Lime Carpet',
		'Pink Carpet', 'Gray Carpet', 'Light Gray Carpet', 'Cyan Carpet', 'Purple Carpet',
		'Blue Carpet', 'Brown Carpet', 'Green Carpet', 'Red Carpet', 'Black Carpet',
	},
	['Dyed Terracotta'] = {
		'White Terracotta', 'Orange Terracotta', 'Magenta Terracotta', 'Light Blue Terracotta',
		'Yellow Terracotta', 'Lime Terracotta', 'Pink Terracotta', 'Gray Terracotta',
		'Light Gray Terracotta', 'Cyan Terracotta', 'Purple Terracotta', 'Blue Terracotta',
		'Brown Terracotta', 'Green Terracotta', 'Red Terracotta', 'Black Terracotta',
	},
	['Dyed Candle'] = {
		'White Candle', 'Orange Candle', 'Magenta Candle', 'Light Blue Candle',
		'Yellow Candle', 'Lime Candle', 'Pink Candle', 'Gray Candle',
		'Light Gray Candle', 'Cyan Candle', 'Purple Candle', 'Blue Candle',
		'Brown Candle', 'Green Candle', 'Red Candle', 'Black Candle',
	},
	['Flower'] = { 'Oxeye Daisy', 'Cornflower', 'Lily of the Valley', 'Wither Rose', 'Red Tulip', 'Orange Tulip', 'White Tulip', 'Pink Tulip', 'Azure Bluet', 'Allium', 'Blue Orchid', 'Poppy', 'Dandelion' },
	['Mushroom'] = { 'Red Mushroom', 'Brown Mushroom' },
	['Quartz Block'] = { 'Block of Quartz', 'Chiseled Quartz Block', 'Quartz Pillar' },
	['Red Sandstone'] = { 'Red Sandstone', 'Cut Red Sandstone', 'Chiseled Red Sandstone', 'Smooth Red Sandstone' },
	['Sandstone'] = { 'Sandstone', 'Cut Sandstone', 'Chiseled Sandstone', 'Smooth Sandstone' },
	['Stone Bricks'] = { 'Stone Bricks', 'Mossy Stone Bricks', 'Cracked Stone Bricks', 'Chiseled Stone Bricks' },
	['Stone Slab'] = { 'Stone Slab', 'Smooth Stone Slab', 'Cobblestone Slab', 'Mossy Cobblestone Slab', 'Stone Brick Slab', 'Mossy Stone Brick Slab', 'Andesite Slab', 'Polished Andesite Slab',
		'Diorite Slab', 'Polished Diorite Slab', 'Granite Slab', 'Polished Granite Slab', 'Sandstone Slab', 'Cut Sandstone Slab', 'Smooth Sandstone Slab', 'Red Sandstone Slab', 'Cut Red Sandstone Slab', 
		'Smooth Red Sandstone Slab', 'Brick Slab', { title = 'Prismarine Slab', name = 'Prismarine Slab.gif' }, 'Prismarine Brick Slab', 'Dark Prismarine Slab', 'Nether Brick Slab', 'Red Nether Brick Slab', 'Quartz Slab', 
		'Smooth Quartz Slab', 'Purpur Slab', 'End Stone Brick Slab', 'Petrified Oak Slab', 'Blackstone Slab', 'Polished Blackstone Slab', 'Polished Blackstone Brick Slab' },
	['Stone Stairs'] = { 'Stone Stairs', 'Cobblestone Stairs', 'Mossy Cobblestone Stairs', 'Stone Brick Stairs', 'Mossy Stone Brick Stairs', 'Andesite Stairs', 'Polished Andesite Stairs', 
		'Diorite Stairs', 'Polished Diorite Stairs', 'Granite Stairs', 'Polished Granite Stairs', 'Sandstone Stairs', 'Smooth Sandstone Stairs', 'Red Sandstone Stairs', 'Smooth Red Sandstone Stairs', 
		'Brick Stairs', { title = 'Prismarine Stairs', name = 'Prismarine Stairs.gif' }, 'Prismarine Brick Stairs', 'Dark Prismarine Stairs', 'Nether Brick Stairs', 'Red Nether Brick Stairs', 'Quartz Stairs', 'Smooth Quartz Stairs', 'Purpur Stairs', 
		'End Stone Brick Stairs', 'Blackstone Stairs', 'Polished Blackstone Stairs', 'Polished Blackstone Brick Stairs' },
	['Purpur Block'] = { 'Purpur Block', 'Purpur Pillar' },
	['Stone'] = { 'Stone', 'Andesite', 'Granite', 'Diorite', 'Polished Andesite', 'Polished Granite', 'Polished Diorite' },
	['Tulip'] = { 'Red Tulip', 'Orange Tulip', 'White Tulip', 'Pink Tulip' },
	['Prismarine'] = { { title = 'Prismarine', name = 'Prismarine.gif' }, 'Prismarine Bricks', 'Dark Prismarine' },
	['Ore'] = { 'Coal Ore', 'Iron Ore', 'Gold Ore', 'Lapis Lazuli Ore', 'Redstone Ore', 'Emerald Ore', 'Diamond Ore', 'Nether Quartz Ore', 'Nether Gold Ore' },
	['Dead Coral Block'] = { 'Dead Tube Coral Block', 'Dead Brain Coral Block', 'Dead Bubble Coral Block', 'Dead Fire Coral Block', 'Dead Horn Coral Block' },
	['Coral Block'] = { 'Tube Coral Block', 'Brain Coral Block', 'Bubble Coral Block', 'Fire Coral Block', 'Horn Coral Block' },
	['Dead Coral'] = { 'Dead Tube Coral', 'Dead Brain Coral', 'Dead Bubble Coral', 'Dead Fire Coral', 'Dead Horn Coral' },
	['Dead Coral Fan'] = { 'Dead Tube Coral Fan', 'Dead Brain Coral Fan', 'Dead Bubble Coral Fan', 'Dead Fire Coral Fan', 'Dead Horn Coral Fan' },
	['Coral'] = { 'Tube Coral', 'Brain Coral', 'Bubble Coral', 'Fire Coral', 'Horn Coral' },
	['Coral Fan'] = { 'Tube Coral Fan', 'Brain Coral Fan', 'Bubble Coral Fan', 'Fire Coral Fan', 'Horn Coral Fan' },
	['Wall'] = { 'Cobblestone Wall', 'Mossy Cobblestone Wall', 'Stone Brick Wall', 'Mossy Stone Brick Wall', 'Andesite Wall', 'Diorite Wall', 'Granite Wall', 'Sandstone Wall', 
		'Red Sandstone Wall', 'Brick Wall', { title = 'Prismarine Wall', name = 'Prismarine Wall.gif' }, 'Nether Brick Wall', 'Red Nether Brick Wall', 'End Stone Brick Wall', 'Blackstone Wall', 'Polished Blackstone Wall', 
		'Polished Blackstone Brick Wall' },
	['Torch'] = { 'Torch', 'Soul Torch' },
	['Lantern'] = { 'Lantern', 'Soul Lantern' },
	['Fungus'] = { 'Crimson Fungus', 'Warped Fungus' },
	['Fungi'] = { 'Crimson Fungus', 'Warped Fungus' },
	['Roots'] = { 'Crimson Roots', 'Warped Roots' },
	['Nylium'] = { 'Crimson Nylium', 'Warped Nylium' },
	['Soul Sand'] = { 'Soul Sand', 'Soul Soil' },
	['Campfire'] = { 'Campfire', 'Soul Campfire' },
	['Blackstone'] = { 'Blackstone', 'Polished Blackstone', 'Chiseled Polished Blackstone', 'Polished Blackstone Bricks', 'Cracked Polished Blackstone Bricks' },
	['Stone Button'] = { 'Stone Button', 'Polished Blackstone Button' },
	['Stone Pressure Plate'] = { 'Stone Pressure Plate', 'Polished Blackstone Pressure Plate' },
}
table.insert( itemVariants['Dye'], 1, 'White Dye' )
for aliasName, aliasItems in pairs( itemVariants ) do
	aliases['Any ' .. aliasName] = aliasItems
	aliases['Matching ' .. aliasName] = aliasItems
end

-- Discs --
local discs = { 
	{ '13',        'C418',                     },
	{ 'Cat',       'C418',         'cat'       },
	{ 'Blocks',    'C418',         'blocks'    },
	{ 'Chirp',     'C418',         'chirp'     },
	{ 'Far',       'C418',         'far'       },
	{ 'Mall',      'C418',         'mall'      },
	{ 'Mellohi',   'C418',         'mellohi'   },
	{ 'Stal',      'C418',         'stal'      },
	{ 'Strad',     'C418',         'strad'     },
	{ 'Ward',      'C418',         'ward'      },
	{ '11',        'C418',                     },
	{ 'Wait',      'C418',         'wait'      },
	{ 'Pigstep',   'Lena Raine',               },
	{ 'Otherside', 'Lena Raine',   'otherside' },
	{ '5',         'Samuel Åberg',             },
}
for _, disc in ipairs( discs ) do
	local name = 'Music Disc ' .. disc[1]
	local artist = disc[2]
	local trackname = disc[1]
	if disc[3] ~= nil then
		trackname = disc[3]
	end
	aliases[name] = { title = '&b音乐唱片', name = name, text = '&7' .. artist .. ' - ' .. trackname }
end

-- Disc Fragments --
local disc_fragments = { 
	{ '5',    },
}
for _, disc_fragment in ipairs( disc_fragments ) do
	local name = 'Disc Fragment ' .. disc_fragment[1]
	local trackname = disc_fragment[1]
	if disc_fragment[2] ~= nil then
		trackname = disc_fragment[2]
	end
	aliases[name] = { title = '&f唱片残片', name = name, text = '&7音乐唱片 - ' .. trackname }
end

-- Damaged armor, tools and weapons --
local damagedItems = {
	'Arrow Loaded Crossbow',
	'Bow',
	'Carrot on a Stick',
	'Chainmail Boots',
	'Chainmail Chestplate',
	'Chainmail Helmet',
	'Chainmail Leggings',
	'Crossbow',
	'Diamond Axe',
	'Diamond Boots',
	'Diamond Chestplate',
	'Diamond Helmet',
	'Diamond Hoe',
	'Diamond Leggings',
	'Diamond Pickaxe',
	'Diamond Shovel',
	'Diamond Sword',
	'Elytra',
	'Firework Loaded Crossbow',
	'Fishing Rod',
	'Flint and Steel',
	'Warped Fungus on a Stick',
	'Golden Axe',
	'Golden Boots',
	'Golden Chestplate',
	'Golden Helmet',
	'Golden Hoe',
	'Golden Leggings',
	'Golden Pickaxe',
	'Golden Shovel',
	'Golden Sword',
	'Iron Axe',
	'Iron Boots',
	'Iron Chestplate',
	'Iron Helmet',
	'Iron Hoe',
	'Iron Leggings',
	'Iron Pickaxe',
	'Iron Shovel',
	'Iron Sword',
	'Leather Boots',
	'Leather Tunic',
	'Leather Cap',
	'Leather Pants',
	'Netherite Axe',
	'Netherite Boots',
	'Netherite Chestplate',
	'Netherite Helmet',
	'Netherite Hoe',
	'Netherite Leggings',
	'Netherite Pickaxe',
	'Netherite Shovel',
	'Netherite Sword',
	'Shears',
	'Shield',
	'Stone Axe',
	'Stone Hoe',
	'Stone Pickaxe',
	'Stone Shovel',
	'Stone Sword',
	'Turtle Shell',
	'Trident',
	'Wooden Axe',
	'Wooden Hoe',
	'Wooden Pickaxe',
	'Wooden Shovel',
	'Wooden Sword'
}
local damagedItemc = {
	'装填箭的弩',
	'弓',
	'胡萝卜钓竿',
	'锁链靴子',
	'锁链胸甲',
	'锁链头盔',
	'锁链护腿',
	'弩',
	'钻石斧',
	'钻石靴子',
	'钻石胸甲',
	'钻石头盔',
	'钻石锄',
	'钻石护腿',
	'钻石镐',
	'钻石锹',
	'钻石剑',
	'鞘翅',
	'装填烟花的弩',
	'钓鱼竿',
	'打火石',
	'诡异菌钓竿',
	'金斧',
	'金靴子',
	'金胸甲',
	'金头盔',
	'金锄',
	'金护腿',
	'金镐',
	'金锹',
	'金剑',
	'铁斧',
	'铁靴子',
	'铁胸甲',
	'铁头盔',
	'铁锄',
	'铁护腿',
	'铁镐',
	'铁锹',
	'铁剑',
	'皮革靴子',
	'皮革外套',
	'皮革帽子',
	'皮革裤子',
	'下界合金斧',
	'下界合金靴子',
	'下界合金胸甲',
	'下界合金头盔',
	'下界合金锄',
	'下界合金护腿',
	'下界合金镐',
	'下界合金锹',
	'下界合金剑',
	'剪刀',
	'盾牌',
	'石斧',
	'石锄',
	'石镐',
	'石锹',
	'石剑',
	'海龟壳',
	'三叉戟',
	'木斧',
	'木锄',
	'木镐',
	'木锹',
	'木剑'
}
for i, item in ipairs( damagedItems ) do
	local name = 'Damaged ' .. item
	aliases[name] = { title = damagedItemc[i], name = name }
end

-- Banners and colored items --
local patterns = {
	'Base Dexter Canton',
	'Base',
	'Base Gradient',
	'Base Indented',
	'Base Sinister Canton',
	'Bend',
	'Bend Sinister',
	'Bordure',
	'Bordure Indented',
	'Chevron',
	'Chief Dexter Canton',
	'Chief',
	'Chief Indented',
	'Chief Sinister Canton',
	'Creeper Charge',
	'Cross',
	'Fess',
	'Field Masoned',
	'Flower Charge',
	'Gradient',
	'Inverted Chevron',
	'Lozenge',
	'Thing',
	'Pale',
	'Pale Dexter',
	'Pale Sinister',
	'Paly',
	'Per Bend',
	'Per Bend Inverted',
	'Per Bend Sinister',
	'Per Bend Sinister Inverted',
	'Per Fess',
	'Per Fess Inverted',
	'Per Pale',
	'Per Pale Inverted',
	'Roundel',
	'Saltire',
	'Skull Charge'
}
local patterna = {
	'右底',
	'底',
	'',
	'',
	'左底',
	'右',

	'左',
	'',
	'',
	'底',
	'右顶',

	'顶',
	'',
	'左顶',
	'',
	'',

	'中',
	'',
	'',
	'',
	'顶',

	'',
	'',
	'中',
	'右',
	'左',

	'',
	'',
	'',
	'',
	'',

	'',
	'',
	'',
	'',
	'',

	'',
	'',
	'',
	'底',
	'顶'
}
local patternb = {
	'方',
	'横条',
	'色自下渐淡',
	'色底波纹',
	'方',

	'斜条',
	'斜条',
	'色方框边',
	'色波纹边',
	'三角',

	'方',
	'横条',
	'色顶波纹',
	'方',
	'色苦力怕盾徽',

	'正十字',
	'横条',
	'色砖纹',
	'色花朵盾徽',
	'色自上渐淡',

	'三角',
	'色菱形',
	'色Mojang徽标',
	'竖条',
	'竖条',

	'竖条',
	'竖条纹',
	'色左上三角',
	'色右下三角',
	'色右上三角',

	'色左下三角',
	'色上半方形',
	'色下半方形',
	'色右半方形',
	'色左半方形',

	'色圆形',
	'斜十字',
	'色头颅盾徽'
}
local colors = {
	'White',
	'Orange',
	'Magenta',
	'Light Blue',
	'Yellow',
	'Lime',
	'Pink',
	'Gray',
	'Light Gray',
	'Cyan',
	'Purple',
	'Blue',
	'Brown',
	'Green',
	'Red',
	'Black',
}
local colora = {
	'白',
	'橙',
	'品红',
	'淡蓝',
	'黄',
	'黄绿',
	'粉红',
	'灰',
	'淡灰',
	'青',
	'紫',
	'蓝',
	'棕',
	'绿',
	'红',
	'黑',
}
local colorc = {
	'白色',
	'橙色',
	'品红色',
	'淡蓝色',
	'黄色',
	'黄绿色',
	'粉红色',
	'灰色',
	'淡灰色',
	'青色',
	'紫色',
	'蓝色',
	'棕色',
	'绿色',
	'红色',
	'黑色',
}

-- Firework Stars --
local fireworkStar = {}
for i, color in ipairs( colors ) do
	local name = color .. ' Firework Star'
	aliases[name] = { title = '烟火之星', name = name, text = '&7' .. colorc[i] }
	table.insert( fireworkStar, aliases[name] )
	for j, pattern in ipairs( patterns ) do
		name = color .. ' ' .. pattern .. ' Banner'
		aliases[name] = { title = '旗帜', name = name, text = '&7' .. patterna[j] .. '' .. colora[i] .. '' .. patternb[j] }
	end
end
aliases['Any Firework Star'] = fireworkStar
aliases['Matching Firework Star'] = fireworkStar

-- Items that use the sixteen colors --
local coloredItems = {
	'Balloon',
	'Banner',
	'Bed',
	'Candle',
	'Carpet',
	'Concrete',
	'Concrete Powder',
	'Glazed Terracotta',
	'Hardened $1 Stained Glass',
	'Hardened $1 Stained Glass Pane',
	'Shield',
	'Shulker Box',
	'Stained Glass',
	'Stained Glass Pane',
	'Wool'
}
for _, item in ipairs( coloredItems ) do
	local coloredItemAliases = {}
	local itemName = ''
	
	for _, color in ipairs( colors ) do
		if item:find( '%$1' ) then
			itemName = item:gsub( '%$1', color )
		else
			itemName = color .. ' ' .. item
		end
		table.insert( coloredItemAliases, itemName )
	end
	
	item = item:gsub( '%$1 ', '')
	aliases['Any ' .. item] = coloredItemAliases
	aliases['Matching ' .. item] = coloredItemAliases
end

-- list of all potions with no effects
local noEffects = {
	'Water Bottle',
	'Awkward Potion',
	'Thick Potion',
	'Mundane Potion',
	'Uncraftable Potion',
	'Splash Water Bottle',
	'Awkward Splash Potion',
	'Thick Splash Potion',
	'Mundane Splash Potion',
	'Uncraftable Splash Potion',
	'Lingering Water Bottle',
	'Awkward Lingering Potion',
	'Thick Lingering Potion',
	'Mundane Lingering Potion',
	'Uncraftable Lingering Potion',
	'Tipped Arrow',
	'Arrow of Splashing',
	'Uncraftable Tipped Arrow',
}
for _, name in ipairs(noEffects) do
	aliases[name] = { name = name, text = '&7无效果' }
end

-- start these lists with the no effect items as names are not normal
local potionItems = {
	['Potion'] = {
		aliases['Water Bottle'],
		aliases['Awkward Potion'],
		aliases['Thick Potion'],
		aliases['Mundane Potion'],
	},
	['Splash Potion'] = {
		aliases['Splash Water Bottle'],
		aliases['Awkward Splash Potion'],
		aliases['Thick Splash Potion'],
		aliases['Mundane Splash Potion'],
	},
	['Lingering Potion'] = {
		aliases['Lingering Water Bottle'],
		aliases['Awkward Lingering Potion'],
		aliases['Thick Lingering Potion'],
		aliases['Mundane Lingering Potion'],
	},
	['Tipped Arrow'] = {
		aliases['Arrow of Splashing'],
	},
}

-- Potions --
local effects = {
	-- durations are in the order normal, extended, enhanced
	{name = 'Regeneration', effect = '&9生命恢复', enhanced = 'II',
		durations = { normal = { '0:45', '1:30', '0:22' }, lingering = { '0:11', '0:22', '0:05' }, arrow = { '0:05', '0:11', '0:02' }}},
	{ name = 'Swiftness', effect = '&9速度', enhanced = 'II', 
		durations = { normal = { '3:00', '8:00', '1:30' }, lingering = { '0:45', '2:00', '0:22' }, arrow = { '0:22', '1:00', '0:11' }}},
	{ name = 'Fire Resistance', effect = '&9防火', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}},
	{ name = 'Poison', effect = '&c中毒', enhanced = 'II', 
		durations = { normal = { '0:45', '1:30', '0:21' }, lingering = { '0:11', '0:22', '0:05' }, arrow = { '0:05', '0:11', '0:02' }}},
	{ name = 'Healing', effect = '&9瞬间治疗', enhanced = 'II' },
	{ name = 'Night Vision',    effect = '&9夜视',    durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}},
	{ name = 'Weakness',        effect = '&c虚弱',    durations = { normal = { '1:30', '4:00' }, lingering = { '0:22', '1:00' }, arrow = { '0:11', '0:30' }}},
	{ name = 'Strength', effect = '&9力量', enhanced = 'II', 
		durations = { normal = { '3:00', '8:00', '1:30'}, lingering = {'0:45', '2:00', '0:22'}, arrow = { '0:22', '1:00', '0:11' }}},
	{ name = 'Slowness', effect = '&c缓慢', enhanced = 'IV', 
		durations = { normal = { '1:30', '4:00', '0:20'}, lingering = {'0:22', '1:00', '0:05'}, arrow = { '0:11', '0:30', '0:02' }}},
	{ name = 'Leaping', effect = '&9跳跃提升', enhanced = 'II', 
		durations = { normal = { '3:00', '8:00', '1:30' }, lingering = {'0:45', '2:00', '0:22'}, arrow = { '0:22', '1:00', '0:11' }}},
	{ name = 'Harming', effect = '&c瞬间伤害', enhanced = 'II' },
	{ name = 'Water Breathing', effect = '&9水下呼吸', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}},
	{ name = 'Invisibility',    effect = '&9隐身',    durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}},
	{ name = 'Slow Falling',    effect = '&9缓降',    durations = { normal = { '1:30', '4:00' }, lingering = { '0:22', '1:00' }, arrow = { '0:11', '0:30' }}},
	{ name = 'Luck',  effect = '&9幸运',   durations = { normal = { '5:00' }, lingering = { '1:15' }, arrow = { '0:37' }}},
	{ name = 'Decay', effect = '&c凋零', durations = { normal = { '0:40' }, lingering = { '0:10' }, arrow = { '0:05' }}},
	{ name = 'the Turtle Master', text = '&c缓慢 IV($1)/&9抗性提升 III($1)', enhanced = '&c缓慢 VI($1)/&9抗性提升 IV($1)',
		durations = { normal = { '0:20', '0:40', '0:20' }, lingering = { '0:15', '0:45', '0:15' }, arrow = {  '0:07', '0:22', '0:07' }}}
}
local types = {
	{name = 'Potion',           durations = 'normal',    text = 'Potion of '},
	{name = 'Splash Potion',    durations = 'normal',    text = 'Splash Potion of '},
	{name = 'Lingering Potion', durations = 'lingering', text = 'Lingering Potion of '},
	{name = 'Tipped Arrow',     durations = 'arrow',     text = 'Arrow of '},
}

for _, effect in ipairs(effects) do
	for _, type in ipairs(types) do
		-- form name, it will be reused
		local name =  type.text .. effect.name
		local potionName = {}
		if type.name == 'Tipped Arrow' then
		potionName = type.text .. effect.name
		else
		potionName = type.text .. effect.name .. '.gif'
		end
		
		-- if we have durations, add times
		if effect.durations then
			local durations = effect.durations[type.durations]
			
			-- turtle master is weird, so just do a fancy string replacement
			if effect.text then
				aliases[name] = { name = potionName, text = effect.text:gsub( '%$1', durations[1] ) }
				aliases[name .. ' Extended'] = { name = potionName, text = effect.text:gsub( '%$1', durations[2] ) }
				aliases[name .. ' Enhanced'] = { name = potionName, text = effect.enhanced:gsub( '%$1', durations[3] ) }
			else
				-- we always have normal
				aliases[name] = { name = potionName, text = string.format( '%s (%s)', effect.effect, durations[1] ) }
			
				-- ensure we have extended
				if durations[2] then
					aliases[name .. ' Extended'] = { name = potionName, text = string.format( '%s(%s)', effect.effect, durations[2] ) }
					
					-- and enhanced, currently there is nothing with a duration that can be extended but not enhanced
					if effect.enhanced then
						aliases[name .. ' Enhanced'] = { name = potionName, text = string.format( '%s %s (%s)', effect.effect, effect.enhanced, durations[3] ) }
					end
				end
			end
		else
			-- otherwise its just effect, currently every potion with no duration can be enhanced
			aliases[name] = { name = potionName, text = effect.effect }
			aliases[name .. ' Enhanced'] = { name = potionName, text = effect.effect .. ' ' .. effect.enhanced }
		end
		
		-- add the base potion to the any list
		table.insert(potionItems[type.name], aliases[name])
	end
end

-- build the any lists
for item, potionAliases in pairs( potionItems ) do
	aliases['Any ' .. item] = potionAliases
	aliases['Matching ' .. item] = potionAliases
end

-- Wood --
local woodTypes = {
	overworld = {
		'Oak',
		'Spruce',
		'Birch',
		'Jungle',
		'Acacia',
		'Dark Oak',
		'Mangrove',
	},
	nether = {
		'Crimson',
		'Warped'
	},
	both = {},
}
local woodTypeWorld = {}
for _, world in ipairs({'overworld', 'nether'}) do
	local woods = woodTypes[world]
	for _, type in ipairs(woods) do
		woodTypeWorld[type] = world
		table.insert(woodTypes.both, type)
	end
end
local woodItems = {
	overworld = {
		'Wood',
		'Log',
		'Boat',
		'Boat with Chest',
		'Stripped $1 Log',
		'Stripped $1 Wood',
		'Sapling',
	},
	nether = {
		'Stem',
		'Hyphae',
		'Stripped $1 Stem',
		'Stripped $1 Hyphae',
	},
	both = {
		'$world Planks',
		'${Wood,Hyphae}',
		'${Log,Stem}',
		'Stripped $1 ${Wood,Hyphae}',
		'Stripped $1 ${Log,Stem}',
		'Fence Gate',
		'$world Fence Gate',
		'$wood Fence',
		'$world $wood Fence',
		'$wood Door',
		'$world $wood Door',
		'$wood Button',
		'$world $wood Button',
		'$wood Pressure Plate',
		'$world $wood Pressure Plate',
		'$wood Trapdoor',
		'$world $wood Trapdoor',
		'$wood Slab',
		'$world $wood Slab',
		'$wood Stairs',
		'$world $wood Stairs',
		'Sign',
		'$world Sign',
	}
}
local woodItemWorld = {}
for world, items in pairs(woodItems) do
	for _, item in ipairs(items) do
		-- expand $world (should only happen in "both")
		if (item:find('%$world')) and world == 'both' then
			item = item:gsub('%$world ', '')
			woodItemWorld['Overworld ' .. item] = 'overworld'
			woodItemWorld['Nether ' .. item] = 'nether'
		end
		woodItemWorld[item] = world
	end
end

for item, world in pairs(woodItemWorld) do
	local itemName = ''
	local woodAliases = {}

	-- real "linkable" name
	local realItem = item:gsub('^Overworld ', '')
	realItem = realItem:gsub('^Nether ', '')

	for _, wood in ipairs(woodTypes[world]) do
		-- Parse ${,} (world-select) syntax
		local selector = (woodTypeWorld[wood] == 'overworld') and "%1" or "%2"
		itemName = realItem:gsub("%${(.-),(.-)}", selector)

		if itemName:find('%$wood') then
			itemName = itemName:gsub('%$wood', wood)
		elseif itemName:find('%$1') then
			itemName = itemName:gsub( '%$1', wood)
		else
			itemName = wood .. ' ' .. itemName
		end
		table.insert(woodAliases, itemName)
	end

	-- Parse ${,} (world-select) syntax
	item = item:gsub("%${(.-),(.-)}", "%1 or %2")
	item = item:gsub('%$wood ', 'wood ')
	item = item:gsub('%$1 ', '')
	aliases['Any ' .. item] = woodAliases
	aliases['Matching ' .. item] = woodAliases
end

-- Light blocks
for level = 0, 15 do
	aliases["Light Block " .. level] = {title = "光源方块", name = "Light Block " .. level}
	aliases["Light " .. level] = {title = "光源方块", name = "Light " .. level}
end
aliases["Light Negative"] = {title = "光源方块", name = "Light Negative"}

return aliases