Module:Inventory slot/Aliases

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 = 'Log', name = 'Oak Log' }, { title = 'Overworld Planks', 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 = '&eElytra', name = 'Broken Elytra' }, ['Clay (block)'] = { title = 'Clay', name = 'Clay (block)' }, --remove on Nether Update's release if bedrock also changes the item name ['Clay (ball)'] = { title = 'Clay', name = 'Clay (ball)' }, --remove on Nether Update's release if bedrock also changes the item name ['Banner Pattern Flower'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Flower Charge'}, ['Banner Pattern Flower Charge'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Flower Charge'}, ['Banner Pattern Creeper Charge'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Creeper Charge'}, ['Banner Pattern Creeper'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Creeper Charge'}, ['Banner Pattern Bordure Indented'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Bordure Indented'}, ['Banner Pattern Field Masoned'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Field Masoned'}, ['Banner Pattern Skull Charge'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Skull Charge'}, ['Banner Pattern Skull'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Skull Charge'}, ['Banner Pattern Thing'] = { title = '&dBanner Pattern', name = 'Banner Pattern', text = '&7Thing'}, ['Banner Pattern Mojang'] = { title = '&dBanner Pattern', name = 'Banner Pattern', text = '&7Thing'}, ['Banner Pattern Globe'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Globe'}, ['Banner Pattern Snout'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Snout'}, ['Banner Pattern Piglin'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Snout'}, ['Button'] = { title = 'Button', name = 'Stone Button'}, ['Wooden Button'] = { title = 'Button', name = 'Oak Button'}, ['Arrow Loaded Crossbow'] = { title = 'Crossbow', name = 'Arrow Loaded Crossbow' }, ['Damaged Arrow Loaded Crossbow'] = { title = 'Crossbow', name = 'Damaged Arrow Loaded Crossbow' }, ['Firework Loaded Crossbow'] = { title = 'Crossbow', name = 'Firework Loaded Crossbow' }, ['Damaged Firework Loaded Crossbow'] = { title = 'Crossbow', name = 'Damaged Firework Loaded Crossbow' }, ['Illager Banner'] = { title = '&6&oIllager Banner', name = 'Illager Banner', text = '&7Cyan Lozenge/&7Light Gray Base/&7Gray Pale/&7Light Gray Bordure/&7Black Fess/&7Light Gray Per Fess'}, ['Jigsaw Block'] = { title = '&dJigsaw Block', name = 'Jigsaw Block' }, ['Half Filled Bundle'] = { title = 'Bundle', name = 'Half Filled Bundle' }, ['Filled Bundle'] = { title = 'Bundle', name = 'Filled Bundle' },

-- Weapons -- ['Trident'] = { name = 'Trident', text = '/&7 When in main hand:/&#160;&21.1 Attack Speed/&#160;&29 Attack Damage'}, ['Trident BE'] = { name = 'Trident', text = '/&9 +8 Attack Damage'},

-- Bedrock and Education Edition display names -- ['Elytra Wings'] = { title = 'Elytra Wings', name = 'Elytra' }, ['Cooked Beef'] = { title = 'Cooked Beef', name = 'Steak' }, ['Map (no markers)'] = { title = 'Map', name = 'Map', text = 'Display Markers: &cNo' }, ['Locator Map'] = { title = 'Map', name = 'Map', text = 'Display Markers: &aYes' },

-- Chemistry -- ['Lead (element)'] = { title = 'Lead', name = 'Lead (element)' }, ['Water (compound)'] = { title = 'Water', 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' }, }

-- 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', name = name } end

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

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

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

-- Animated icons -- local animatedIcons = { 'Blue Key', 'Bubble Column', 'Compass', 'Clock', 'Crimson Hyphae', 'Crimson Stem', 'Debug Stick', 'Fire', 'Gear', 'Heat Block', 'Lava', 'Lodestone Compass', 'Magma Block', 'Magma Block BE', 'Nether Portal', 'Prismarine', 'Prismarine Slab', 'Prismarine Stairs', 'Prismarine Wall', '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 = { 'Enchanted Book', 'Nether Star', 'Bottle o\' Enchanting', } 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] local damagedName = 'Damaged ' .. aliasName local text = '/&7When in main hand:/&#160;&2' .. toolProps[3] .. ' Attack Speed/&#160;&2' .. toolProps[4] .. ' Attack Damage' aliases[aliasName] = { title = aliasName, name = aliasName, text = text } -- add damaged here as well so it gets the proper tooltip aliases[damagedName] = { title = aliasName, name = damagedName, text = text } 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

-- Tools and weapons in Bedrock Edition -- local toolsBE = { {'Wooden', 'Sword', 4 }, {'Stone', 'Sword', 5 }, {'Iron', 'Sword', 6 }, {'Golden', 'Sword', 4 }, {'Diamond', 'Sword', 7 }, {'Netherite', 'Sword', 8 }, {'Wooden', 'Pickaxe', 2 }, {'Stone', 'Pickaxe', 3 }, {'Iron', 'Pickaxe', 4 }, {'Golden', 'Pickaxe', 2 }, {'Diamond', 'Pickaxe', 5 }, {'Netherite', 'Pickaxe', 6 }, {'Wooden', 'Axe', 3 }, {'Stone', 'Axe', 4 }, {'Iron', 'Axe', 5 }, {'Golden', 'Axe', 3 }, {'Diamond', 'Axe', 6 }, {'Netherite', 'Axe', 7 }, {'Wooden', 'Shovel', 1 }, {'Stone', 'Shovel', 2 }, {'Iron', 'Shovel', 3 }, {'Golden', 'Shovel', 1 }, {'Diamond', 'Shovel', 4 }, {'Netherite', 'Shovel', 5 }, {'Wooden', 'Hoe', 2 }, {'Stone', 'Hoe', 3 }, {'Iron', 'Hoe', 4 }, {'Golden', 'Hoe', 2 }, {'Diamond', 'Hoe', 5 }, {'Netherite', 'Hoe', 6 } }

for _, toolProps in ipairs( toolsBE ) do local aliasName = toolProps[1] .. ' ' .. toolProps[2] aliases[aliasName .. ' BE'] = { title = aliasName, name = aliasName, text = '/&9+' .. toolProps[3] .. ' Attack Damage'} 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', 'Cobbled Deepslate Slab', 'Deepslate Brick Slab', 'Deepslate Tile Slab', 'Polished Deepslate 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', 'Cobbled Deepslate Stairs', 'Deepslate Brick Stairs', 'Deepslate Tile Stairs', 'Polished Deepslate 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', 'Deepslate Coal Ore', 'Deepslate Copper Ore', 'Deepslate Emerald Ore', 'Deepslate Iron Ore', 'Deepslate Gold Ore', 'Deepslate Lapis Lazuli Ore', 'Deepslate Redstone Ore', 'Deepslate Diamond 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', 'Cobbled Deepslate Wall', 'Deepslate Brick Wall', 'Deepslate Tile Wall', 'Polished Deepslate 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' }, ['Nether Wood Pressure Plate'] = { 'Crimson Pressure Plate', 'Warped Pressure Plate' }, ['Nether Wood Fence'] = { 'Crimson Fence', 'Warped Fence' }, ['Nether Wood Trapdoor'] = { 'Crimson Trapdoor', 'Warped Trapdoor' }, ['Nether Wood Fence Gate'] = { 'Crimson Fence Gate', 'Warped Fence Gate' }, ['Nether Wood Stairs'] = { 'Crimson Stairs', 'Warped Stairs' }, ['Nether Wood Door'] = { 'Crimson Door', 'Warped Door' }, ['Nether Wood Sign'] = { 'Crimson Sign', 'Warped Sign' }, ['Candle'] = { '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' }, ['Copper Block'] = { 'Copper Block', 'Exposed Copper Block', 'Weathered Copper Block', 'Oxidized Copper Block', 'Waxed Copper Block', 'Waxed Exposed Copper Block', 'Waxed Weathered Copper Block' }, ['Cut Copper'] = { 'Cut Copper', 'Exposed Cut Copper', 'Weathered Cut Copper', 'Oxidized Cut Copper', 'Waxed Cut Copper', 'Waxed Exposed Cut Copper', 'Waxed Weathered Cut Copper' }, ['Cut Copper Stairs'] = { 'Cut Copper Stairs', 'Exposed Cut Copper Stairs', 'Weathered Cut Copper Stairs', 'Oxidized Cut Copper Stairs', 'Waxed Cut Copper Stairs', 'Waxed Exposed Cut Copper Stairs', 'Waxed Weathered Cut Copper Stairs' }, ['Cut Copper Slab'] = { 'Cut Copper Slab', 'Exposed Cut Copper Slab', 'Weathered Cut Copper Slab', 'Oxidized Cut Copper Slab', 'Waxed Cut Copper Slab', 'Waxed Exposed Cut Copper Slab', 'Waxed Weathered Cut Copper Slab' }, } table.insert( itemVariants['Dye'], 1, 'White Dye' ) for aliasName, aliasItems in pairs( itemVariants ) do aliases['Any ' .. aliasName] = aliasItems aliases['Matching ' .. aliasName] = aliasItems end

-- Copper -- local copperstuff = { ['Matching (Weathered) Copper Block'] = {'Copper Block', 'Lightly Weathered Copper Block', 'Semi-Weathered Copper Block', 'Weathered Copper BlocK'}, ['Matching (Weathered) Cut Copper'] = {'Cut Copper', 'Lightly Weathered Cut Copper', 'Semi-Weathered Cut Copper', 'Weathered Cut Copper'}, ['Matching Waxed (Weathered) Copper Block'] = {'Waxed Copper Block', 'Waxed Lightly Weathered Copper Block', 'Waxed Semi-Weathered Copper Block'}, ['Matching Waxed (Weathered) Cut Copper'] = {'Waxed Cut Copper', 'Waxed Lightly Weathered Cut Copper', 'Waxed Semi-Weathered Cut Copper'}, } local function map(tbl, f)   local t = {} for k,v in pairs(tbl) do       t[k] = f(v) end return t end for k, v in pairs(copperstuff) do	aliases[k] = v	local k1 = k:gsub(' Block$', '') local v1 = map(v, function(s) return s:gsub(' Block$', '') end) aliases[k1 .. 'Slab'] = map(v1, function(s) return s .. 'Slab' end) aliases[k1 .. 'Stairs'] = map(v1, function(s) return s .. 'Stairs' end) 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',          }, } 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 = '&bMusic Disc', name = name, text = '&7' .. artist .. ' - ' .. trackname } end

-- Damaged armor, note it skips tools and weapons as they are handled above to add the damage tooltip -- local damagedItems = { 'Bow', 'Carrot on a Stick', 'Chainmail Boots', 'Chainmail Chestplate', 'Chainmail Helmet', 'Chainmail Leggings', 'Crossbow', 'Diamond Boots', 'Diamond Chestplate', 'Diamond Helmet', 'Diamond Leggings', 'Elytra', 'Fishing Rod', 'Flint and Steel', 'Golden Boots', 'Golden Chestplate', 'Golden Helmet', 'Golden Leggings', 'Iron Boots', 'Iron Chestplate', 'Iron Helmet', 'Iron Leggings', 'Leather Boots', 'Leather Tunic', 'Leather Cap', 'Leather Pants', 'Netherite Boots', 'Netherite Chestplate', 'Netherite Helmet', 'Netherite Leggings', 'Shears', 'Shield' } for _, item in ipairs( damagedItems ) do local name = 'Damaged ' .. item aliases[name] = { title = item, 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', 'Globe', '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', 'Piglin', 'Snout', 'Roundel', 'Saltire', 'Skull Charge' } local colors = { 'White', 'Orange', 'Magenta', 'Light Blue', 'Yellow', 'Lime', 'Pink', 'Gray', 'Light Gray', 'Cyan', 'Purple', 'Blue', 'Brown', 'Green', 'Red', 'Black' }

-- Firework Stars -- local fireworkStar = {} for _, color in ipairs( colors ) do local name = color .. ' Firework Star' aliases[name] = { title = 'Firework Star', name = name, text = '&7' .. color } table.insert( fireworkStar, aliases[name] ) for _, pattern in ipairs( patterns ) do name = color .. ' ' .. pattern .. ' Banner' aliases[name] = { title = 'Banner', name = name, text = '&7' .. color .. ' ' .. pattern } end end aliases['Any Firework Star'] = fireworkStar aliases['Matching Firework Star'] = fireworkStar

-- Items that use the sixteen colors -- local coloredItems = { 'Balloon', 'Banner', 'Bed', '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 = '&7No effects' } 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'], aliases['Tipped Arrow'], aliases['Tipped Arrow'], aliases['Tipped Arrow'], }, }

-- Potions -- local effects = { -- durations are in the order normal, extended, enhanced {name = 'Regeneration', effect = '&9Regeneration', 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 = '&9Speed', 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 = '&9Fire Resistance', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}}, { name = 'Poison', effect = '&cPoison', 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 = '&9Instant Health', enhanced = 'II' }, { name = 'Night Vision',   effect = '&9Night Vision',    durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}}, { name = 'Weakness',       effect = '&cWeakness',        durations = { normal = { '1:30', '4:00' }, lingering = { '0:22', '1:00' }, arrow = { '0:11', '0:30' }}}, { name = 'Strength', effect = '&9Strength', 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 = '&cSlowness', 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 = '&9Jump Boost', 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 = '&cInstant Damage', enhanced = 'II' }, { name = 'Water Breathing', effect = '&9Water Breathing', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}}, { name = 'Invisibility',   effect = '&9Invisibility',    durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}}, { name = 'Slow Falling',   effect = '&9Slow Falling',    durations = { normal = { '1:30', '4:00' }, lingering = { '0:22', '1:00' }, arrow = { '0:11', '0:30' }}}, { name = 'Luck', effect = '&9Luck',   durations = { normal = { '5:00' }, lingering = { '1:15' }, arrow = { '0:37' }}}, { name = 'Decay', effect = '&cWither', durations = { normal = { '0:40' }, lingering = { '0:10' }, arrow = { '0:05' }}}, { name = 'the Turtle Master', text = '&cSlowness IV ($1)/&9Resistance III ($1)', enhanced = '&cSlowness VI ($1)/&9Resistance 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', },   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', 'Stripped $1 Log', 'Stripped $1 Wood', 'Wood Planks', 'Wood Slab', 'Wood Stairs', 'Wood Pressure Plate', 'Wood Button', 'Wood Door', 'Wood Trapdoor', 'Wood Fence Gate', 'Wood Fence', 'Wood Sign', '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 Wood Fence', '$wood Fence', '$wood Door', '$wood Button', '$wood Pressure Plate', '$wood Trapdoor', '$world $wood Slab', '$wood Stairs', '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

-- Bedrock Edition Items -- local editionItems = { BE = { 'Acacia Fence Gate', 'Birch Fence Gate', 'Bow', 'Bucket of Pufferfish', 'Bucket of Tropical Fish', 'Chest', 'Creeper Head', 'Crimson Fence Gate', 'Dark Oak Fence Gate', 'Dragon Head', 'End Gateway', 'End Portal', 'Ender Chest', 'Flowing Lava', 'Glass Pane', 'Head', 'Honey Block', 'Horn Coral Block', 'Iron Bars', 'Jigsaw Block', 'Jungle Fence Gate', 'Lava', 'Map', 'Minecart with Command Block', 'Oak Fence Gate', 'Observer', 'Ocean Explorer Map', 'Peony', 'Rose Bush', 'Scaffolding', 'Skeleton Skull', 'Spawn Cat', 'Spawn Panda', 'Spawn Wandering Trader', 'Spruce Fence Gate', 'Stonecutter', 'Structure Void', 'Warped Fence Gate', 'Wither Skeleton Skull', 'Woodland Explorer Map', 'Zombie Head', 'Conduit', 'Jungle Leaves', 'Blue Ice', 'Beacon', 'Crying Obsidian', 'End Portal Frame', 'Dragon Egg', 'Enchanting Table', 'End Rod', 'Glowstone', 'Jack o\'Lantern', 'Magma Block', 'Spawner', 'Sea Lantern', 'Shroomlight', 'Trapped Chest', 'Leather Horse Armor', },	LCE = { 'Peony', 'Rose Bush', 'Shrub' } } for edition, items in pairs(editionItems) do	for _, item in ipairs(items) do local name = item .. ' ' .. edition aliases[name] = { title = item, name = name } end end

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