Module:Inventory slot/Aliases: Difference between revisions

From Modded Wiki
Jump to navigation Jump to search
Let's see just how much I mess up (reasoning is that the light gray and black glow sticks don't exist)
m 522 revisions imported
 
(343 intermediate revisions by 53 users not shown)
Line 1: Line 1:
local coloredDyes = {
'Orange Dye', 'Magenta Dye', 'Light Blue Dye', 'Dandelion Yellow', 'Lime Dye',
'Pink Dye', 'Gray Dye', 'Light Gray Dye', 'Cyan Dye', 'Purple Dye',
'Lapis Lazuli', 'Cocoa Beans', 'Cactus Green', 'Rose Red', 'Ink Sac',
}
local aliases = {
local aliases = {
-- Common fuel types for furnace --
-- Common fuel types for furnace --
['Any fuel'] = { 'Coal', 'Charcoal', { title = 'Log', name = 'Oak Log' }, { title = 'Wood Planks', name = 'Oak Planks' }, 'Block of Coal' },
['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 leather armor'] = { 'Leather Cap', 'Leather Tunic', 'Leather Pants', 'Leather Boots' },
['Any golden armor'] = { 'Golden Helmet', 'Golden Chestplate', 'Golden Leggings', 'Golden Boots' },
['Any golden armor'] = { 'Golden Helmet', 'Golden Chestplate', 'Golden Leggings', 'Golden Boots' },
['Any chain armor'] = { 'Chain Helmet', 'Chain Chestplate', 'Chain Leggings', 'Chain Boots' },
['Any chainmail armor'] = { 'Chainmail Helmet', 'Chainmail Chestplate', 'Chainmail Leggings', 'Chainmail Boots' },
['Any iron armor'] = { 'Iron Helmet', 'Iron Chestplate', 'Iron Leggings', 'Iron Boots' },
['Any iron armor'] = { 'Iron Helmet', 'Iron Chestplate', 'Iron Leggings', 'Iron Boots' },
['Any diamond armor'] = { 'Diamond Helmet', 'Diamond Chestplate', 'Diamond Leggings', 'Diamond Boots' },
['Any diamond armor'] = { 'Diamond Helmet', 'Diamond Chestplate', 'Diamond Leggings', 'Diamond Boots' },
['Any netherite armor'] = { 'Netherite Helmet', 'Netherite Chestplate', 'Netherite Leggings', 'Netherite Boots' },
['Any Pottery Sherd'] = { 'Angler Pottery Sherd', 'Arms Up Pottery Sherd', 'Archer Pottery Sherd', 'Blade Pottery Sherd', 'Brewer Pottery Sherd', 'Burn Pottery Sherd', 'Danger Pottery Sherd', 'Explorer Pottery Sherd', 'Flow Pottery Sherd', 'Friend Pottery Sherd', 'Guster Pottery Sherd', 'Heart Pottery Sherd', 'Heartbreak Pottery Sherd', 'Howl Pottery Sherd', 'Miner Pottery Sherd', 'Mourner Pottery Sherd', 'Plenty Pottery Sherd', 'Prize Pottery Sherd', 'Scrape Pottery Sherd', 'Sheaf Pottery Sherd', 'Shelter Pottery Sherd', 'Skull Pottery Sherd', 'Snort Pottery Sherd', 'Brick' },
    -- Stones --
['Any Cobblestone or Blackstone'] = { 'Cobblestone', 'Blackstone' },
['Any stone-tier block'] = { 'Cobblestone', 'Blackstone', 'Cobbled Deepslate' },
-- Display names --
-- Display names --
['Broken Elytra'] = { title = '&eElytra', name = 'Broken Elytra' },
['Broken Elytra'] = { title = '&eElytra', name = 'Broken Elytra' },
['Brown Mushroom'] = { title = 'Mushroom', name = 'Brown Mushroom' },
['Button'] = { title = 'Button', name = 'Stone Button'},
['Brown Mushroom (block)'] = { title = 'Brown Mushroom Block', name = 'Brown Mushroom (block)' },
['Wooden Button'] = { title = 'Button', name = 'Oak Button'},
['Clay (block)'] = { title = 'Clay', name = 'Clay (block)' },
['Arrow Loaded Crossbow'] = { title = 'Crossbow', name = 'Arrow Loaded Crossbow' },
['Enchanted Golden Apple'] = { title = '&d', name = 'Golden Apple' },
['Damaged Arrow Loaded Crossbow'] = { title = 'Crossbow', name = 'Damaged Arrow Loaded Crossbow' },
['End Portal (block)'] = { title = 'End Portal', name = 'End Portal (block)' },
['Firework Loaded Crossbow'] = { title = 'Crossbow', name = 'Firework Loaded Crossbow' },
['Melon (block)'] = { title = 'Melon', name = 'Melon (block)' },
['Damaged Firework Loaded Crossbow'] = { title = 'Crossbow', name = 'Damaged Firework Loaded Crossbow' },
['Nether Brick (item)'] = { title = 'Nether Brick', name = 'Nether Brick (item)' },
['Illager Banner'] = { title = '&6&oIllager Banner', name = 'Illager Banner', text =
['Red Mushroom'] = { title = 'Mushroom', name = 'Red Mushroom' },
'&7Cyan Lozenge/&7Light Gray Base/&7Gray Pale/&7Light Gray Bordure/&7Black Fess/&7Light Gray Per Fess'},
['Red Mushroom (block)'] = { title = 'Red Mushroom Block', name = 'Red Mushroom (block)' },
['Half Filled Bundle'] = { title = 'Bundle', name = 'Half Filled Bundle' },
['Snow (layer)'] = { title = 'Snow', name = 'Snow (layer)' },
['Filled Bundle'] = { title = 'Bundle', name = 'Filled Bundle' },
['Stone Button'] = { title = 'Button', name = 'Stone Button' },
['Flower Charge Banner Pattern'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Flower Charge'},
['Wooden Button'] = { title = 'Button', name = 'Wooden Button'},
['Flower Banner Pattern'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Flower Charge'},
['Creeper Charge Banner Pattern'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Creeper Charge'},
['Creeper Banner Pattern'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Creeper Charge'},
['Bordure Indented Banner Pattern'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Bordure Indented'},
['Field Masoned Banner Pattern'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Field Masoned'},
['Skull Charge Banner Pattern'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Skull Charge'},
['Skull Banner Pattern'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Skull Charge'},
['Thing Banner Pattern'] = { title = '&dBanner Pattern', name = 'Banner Pattern', text = '&7Thing'},
['Mojang Banner Pattern'] = { title = '&dBanner Pattern', name = 'Banner Pattern', text = '&7Thing'},
['Globe Banner Pattern'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Globe'},
['Snout Banner Pattern'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Snout'},
['Piglin Banner Pattern'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Snout'},
['New Thing Banner Pattern'] = { title = '&dBanner Pattern', name = 'Banner Pattern', text = '&7New Thing'},
['New Mojang Banner Pattern'] = { title = '&dBanner Pattern', name = 'Banner Pattern', text = '&7New Thing'},
['Flow Banner Pattern'] = { title = '&bBanner Pattern', name = 'Banner Pattern', text = '&7Flow'},
['Guster Banner Pattern'] = { title = '&bBanner Pattern', name = 'Banner Pattern', text = '&7Guster'},
-- Empty display name --
['debug_fourj_item'] = { title = '\226\128\140', name = 'debug_fourj_item' },
-- Weapons --
-- Weapons --
['Trident'] = { name = 'Trident', text = '/&7 When in main hand:/ &2 1.1 Attack Speed/ &2 9 Attack Damage'},
['Trident'] = { title = '&dTrident', name = 'Trident', text = '/&7 When in Main Hand:/ &29 Attack Damage/ &21.1 Attack Speed'},
['Damaged Trident'] = { title = '&dTrident', name = 'Damaged Trident', text = '/&7 When in Main Hand:/ &29 Attack Damage/ &21.1 Attack Speed'},
['Trident BE'] = { name = '&dTrident', text = '/&9 +8 Attack Damage'},
['Mace'] = { title = '&dMace', name = 'Mace', text = '/&7 When in Main Hand:/ &26 Attack Damage/ &20.6 Attack Speed'},
['Damaged Mace'] = { title = '&dMace', name = 'Damaged Mace', text = '/&7 When in Main Hand:/ &26 Attack Damage/ &20.6 Attack Speed'},
['Mace BE'] = { title = '&dMace', name = 'Mace', text = '/&9 +7 Attack Damage'},
-- Ominous Bottles --
    ['Ominous Bottle'] = { name = 'Ominous Bottle', text = '&9Bad Omen (01:40:00)'},
    ['Ominous Bottle II'] = { name = 'Ominous Bottle', text = '&9Bad Omen II (01:40:00)'},
    ['Ominous Bottle III'] = { name = 'Ominous Bottle', text = '&9Bad Omen III (01:40:00)'},
    ['Ominous Bottle IV'] = { name = 'Ominous Bottle', text = '&9Bad Omen IV (01:40:00)'},
    ['Ominous Bottle V'] = { name = 'Ominous Bottle', text = '&9Bad Omen V (01:40:00)'},


-- Bedrock and Education Edition display names --
-- Bedrock and Education Edition display names --
['Elytra Wings'] = { title = 'Elytra Wings', name = 'Elytra' },
['Elytra Wings'] = { title = 'Elytra Wings', name = 'Elytra' },
['Cooked Beef'] = { title = 'Cooked Beef', name = 'Steak' },
['Cooked Beef'] = { title = 'Cooked Beef', name = 'Steak' },
['Map PE'] = { title = 'Map', name = 'Map', text = 'Display Markers: &cNo' },
['Map (no markers)'] = { title = 'Map', name = 'Map', text = 'Display Markers: &cNo' },
['Locator Map PE'] = { title = 'Map', name = 'Map', text = 'Display Markers: &aYes' },
['Locator Map'] = { title = 'Map', name = 'Map', text = 'Display Markers: &aYes' },
['Shrub BE'] = { title = 'Fern', name = 'Short Grass' },
['Unknown'] = { title = 'Unknown', name = 'Missing Tile' },
['info_update'] = { title = 'tile.info_update.name', name = 'Missing Tile' },
['info_update2'] = { title = 'tile.info_update2.name', name = 'Missing Tile' },
['reserved6'] = { title = 'tile.reserved6.name', name = 'Missing Tile' },


-- Chemistry --
-- Chemistry --
['Gold'] = { title = 'Gold', name = 'Gold (element)' },
['Gold (element)'] = { title = 'Gold', name = 'Gold (element)' },
['Iron'] = { title = 'Iron', name = 'Iron (element)' },
['Iron (element)'] = { title = 'Iron', name = 'Iron (element)' },
['Lead (element)'] = { title = 'Lead', name = 'Lead (element)' },
['Lead (element)'] = { title = 'Lead', name = 'Lead (element)' },
['Water (compound)'] = { title = 'Water', name = 'Water (compound)' },
['Water (compound)'] = { title = 'Water', name = 'Water (compound)' },
Line 48: Line 81:
['Matching Colored Torch'] = { 'Blue Torch', 'Red Torch', 'Purple Torch', 'Green Torch' },
['Matching Colored Torch'] = { 'Blue Torch', 'Red Torch', 'Purple Torch', 'Green Torch' },
-- Potions --
-- Potato peels from 24w14 potato --
['Awkward Potion'] = { name = 'Awkward Potion', text = '&7No effects' },
-- Note: These can't use this module's default color handling because potato peels have no white variant but do include the uncolored variant in recipes --
['Water Bottle'] = { name = 'Water Bottle', text = '&7No effects' },
['Any Potato Peels'] = { 'Potato Peels', 'Light Gray Potato Peels', 'Gray Potato Peels', 'Black Potato Peels', 'Brown Potato Peels', 'Red Potato Peels', 'Orange Potato Peels', 'Yellow Potato Peels', 'Lime Potato Peels', 'Green Potato Peels', 'Cyan Potato Peels', 'Light Blue Potato Peels', 'Blue Potato Peels', 'Purple Potato Peels', 'Magenta Potato Peels', 'Pink Potato Peels' },
['Thick Potion'] = { name = 'Thick Potion', text = '&7No effects' },
['Mundane Potion'] = { name = 'Mundane Potion', text = '&7No effects' },
['Uncraftable Potion'] = { name = 'Uncraftable Potion', text = '&7No effects' },
['Awkward Splash Potion'] = { name = 'Awkward Splash Potion', text = '&7No effects' },
['Splash Water Bottle'] = { name = 'Splash Water Bottle', text = '&7No effects' },
['Thick Splash Potion'] = { name = 'Thick Splash Potion', text = '&7No effects' },
['Mundane Splash Potion'] = { name = 'Mundane Splash Potion', text = '&7No effects' },
['Uncraftable Splash Potion'] = { name = 'Uncraftable Splash Potion', text = '&7No effects' },
['Awkward Lingering Potion'] = { name = 'Awkward Lingering Potion', text = '&7No effects' },
['Lingering Water Bottle'] = { name = 'Lingering Water Bottle', text = '&7No effects' },
['Thick Lingering Potion'] = { name = 'Thick Lingering Potion', text = '&7No effects' },
['Mundane Lingering Potion'] = { name = 'Mundane Lingering Potion', text = '&7No effects' },
['Uncraftable Lingering Potion'] = { name = 'Uncraftable Lingering Potion', text = '&7No effects' },
['Tipped Arrow'] = { name = 'Tipped Arrow', text = '&7No effects' },
['Arrow of Splashing'] = { name = 'Arrow of Splashing', text = '&7No effects' },
['Uncraftable Tipped Arrow'] = { name = 'Uncraftable Tipped Arrow', text = '&7No effects' },
 
['Potion of the Turtle Master'] = { name = 'Potion of the Turtle Master', text = '&cSlowness IV (1:00)/&9Resistance III (1:00)' },
['Potion of the Turtle Master Extended'] = { name = 'Potion of the Turtle Master', text = '&cSlowness IV (3:00)/&9Resistance III (3:00)' },
['Potion of the Turtle Master Enhanced'] = { name = 'Potion of the Turtle Master', text = '&cSlowness VI (1:00)/&9Resistance IV (1:00)' },
['Splash Potion of the Turtle Master'] = { name = 'Splash Potion of the Turtle Master', text = '&cSlowness IV (1:00)/&9Resistance IIIV (1:00)' },
['Splash Potion of the Turtle Master Extended'] = { name = 'Splash Potion of the Turtle Master', text = '&cSlowness IV (3:00)/&9Resistance III (3:00)' },
['Splash Potion of the Turtle Master Enhanced'] = { name = 'Splash Potion of the Turtle Master', text = '&cSlowness VI (1:00)/&9Resistance IV (1:00)' },
['Lingering Potion of the Turtle Master'] = { name = 'Lingering Potion of the Turtle Master', text = '&cSlowness IV (0:15)/&9Resistance III (0:15)' },
['Lingering Potion of the Turtle Master Extended'] = { name = 'Lingering Potion of the Turtle Master', text = '&cSlowness IV (0:45)/&9Resistance III (0:45)' },
['Lingering Potion of the Turtle Master Enhanced'] = { name = 'Lingering Potion of the Turtle Master', text = '&cSlowness VI (45:15)/&9Resistance IV (0:15)' },
['Arrow of the Turtle Master'] = { name = 'Arrow of the Turtle Master', text = '&cSlowness IV (0:07)/&9Resistance III (0:07)' },
['Arrow of the Turtle Master Extended'] = { name = 'Arrow of the Turtle Master', text = '&cSlowness IV (0:22)/&9Resistance III (0:22)' },
['Arrow of the Turtle Master Enhanced'] = { name = 'Arrow Potion of the Turtle Master', text = '&cSlowness VI (0:07)/&9Resistance IV (0:07)' },
}
}


Line 94: Line 98:
'Heart of the Sea',
'Heart of the Sea',
'Nether Star',
'Nether Star',
'Piglin Head',
'Player Head',
'Skeleton Skull',
'Skeleton Skull',
'Totem of Undying',
'Totem of Undying',
Line 114: Line 120:


local lightPurpleTooltips = {
local lightPurpleTooltips = {
'Command Block',
'Chain Command Block',
'Chain Command Block',
'Command Block',
'Repeating Command Block',
'Dragon Egg',
'Dragon Egg',
'Repeating Command Block',
'Enchanted Golden Apple',
'Structure Block',
'Structure Block',
'Structure Void',
    'Jigsaw Block',
    'Barrier',
    'Heavy Core',
}
}
for _, name in ipairs( lightPurpleTooltips ) do
for _, name in ipairs( lightPurpleTooltips ) do
aliases[name] = { title = '&d', name = name }
aliases[name] = { title = '&d', name = name }
end
local orangeTooltips = {
'Ominous Banner',
}
for _, name in ipairs( orangeTooltips ) do
aliases[name] = { title = '&6', name = name }
end
end


-- Tools and weapons --
-- Tools and weapons --
local tools = {
local tools = {
{'Wooden', 'Sword', 1.6, 4 },
{'Wooden', 'Sword', 4, 1.6 },
{'Stone', 'Sword', 1.6, 5 },
{'Stone', 'Sword', 5, 1.6 },
{'Iron', 'Sword', 1.6, 4 },
{'Iron', 'Sword', 6, 1.6 },
{'Golden', 'Sword', 1.6, 7 },
{'Golden', 'Sword', 4, 1.6 },
{'Diamond', 'Sword', 1.6, 6 },
{'Diamond', 'Sword', 7, 1.6 },
{'Netherite', 'Sword', 8, 1.6 },
{'Wooden', 'Pickaxe', 1.2, 2 },
{'Wooden', 'Pickaxe', 2, 1.2 },
{'Stone', 'Pickaxe', 1.2, 3 },
{'Stone', 'Pickaxe', 3, 1.2 },
{'Iron', 'Pickaxe', 1.2, 4 },
{'Iron', 'Pickaxe', 4, 1.2 },
{'Golden', 'Pickaxe', 1.2, 2 },
{'Golden', 'Pickaxe', 2, 1.2 },
{'Diamond', 'Pickaxe', 1.2, 5 },
{'Diamond', 'Pickaxe', 5, 1.2 },
{'Netherite', 'Pickaxe', 6, 1.2 },
{'Wooden', 'Axe', 0.8, 7 },
{'Wooden', 'Axe', 7, 0.8 },
{'Stone', 'Axe', 0.8, 9 },
{'Stone', 'Axe', 9, 0.8 },
{'Iron', 'Axe', 0.9, 9 },
{'Iron', 'Axe', 9, 0.9 },
{'Golden', 'Axe', 1, 7 },
{'Golden', 'Axe', 7, 1 },
{'Diamond', 'Axe', 1, 9 },
{'Diamond', 'Axe', 9, 1 },
{'Netherite', 'Axe', 10, 1 },
{'Wooden', 'Shovel', 1, 2.5 },
{'Wooden', 'Shovel', 2.5, 1 },
{'Stone', 'Shovel', 1, 3.5 },
{'Stone', 'Shovel', 3.5, 1 },
{'Iron', 'Shovel', 1, 4.5 },
{'Iron', 'Shovel', 4.5, 1 },
{'Golden', 'Shovel', 1, 2.5 },
{'Golden', 'Shovel', 2.5, 1 },
{'Diamond', 'Shovel', 1, 5.5 },
{'Diamond', 'Shovel', 5.5, 1 },
{'Netherite', 'Shovel', 6.5, 1 },
{'Wooden', 'Hoe', 1, 1 },
{'Wooden', 'Hoe', 1, 1 },
{'Stone', 'Hoe', 2, 1 },
{'Stone', 'Hoe', 1, 2 },
{'Iron', 'Hoe', 3, 1 },
{'Iron', 'Hoe', 1, 3 },
{'Golden', 'Hoe', 1, 1 },
{'Golden', 'Hoe', 1, 1 },
{'Diamond', 'Hoe', 4, 1 }
{'Diamond', 'Hoe', 1, 4 },
{'Netherite', 'Hoe', 1, 4 }
}
}


Line 162: Line 185:
for _, toolProps in ipairs( tools ) do
for _, toolProps in ipairs( tools ) do
local aliasName = toolProps[1] .. ' ' .. toolProps[2]
local aliasName = toolProps[1] .. ' ' .. toolProps[2]
aliases[aliasName] = { title = aliasName, name = aliasName, text = '/&7When in main hand:/ &2' .. toolProps[3] .. ' Attack Speed/ &2' .. toolProps[4] .. ' Attack Damage' }
local damagedName = 'Damaged ' .. aliasName
local text = '/&7When in Main Hand:/ &2' .. toolProps[3] .. ' Attack Damage/ &2' .. toolProps[4] .. ' Attack Speed'
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 materialGroup = toolProps[1]:lower()
local toolGroup = toolProps[2]:lower();
local toolGroup = toolProps[2]:lower()
if toolProps[2] ~= 'Sword' then
if toolProps[2] ~= 'Sword' then
Line 181: Line 208:
for toolGroup, items in pairs( toolGroups ) do
for toolGroup, items in pairs( toolGroups ) do
aliases['Any ' .. toolGroup] = items
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
-- Armor tooltips --
local head = {
{'Leather Cap', 1 },
{'Chainmail Helmet', 2 },
{'Iron Helmet', 2 },
{'Golden Helmet', 2 },
{'Diamond Helmet', 3, 2 },
{'Netherite Helmet', 3, 3, 1 },
{'Turtle Shell', 2 },
}
local body = {
{'Leather Tunic', 3 },
{'Chainmail Chestplate', 5 },
{'Iron Chestplate', 6 },
{'Golden Chestplate', 5 },
{'Diamond Chestplate', 8, 2 },
{'Netherite Chestplate', 8, 3, 1 },
}
local legs = {
{'Leather Pants', 2 },
{'Chainmail Leggings', 4 },
{'Iron Leggings', 5 },
{'Golden Leggings', 3 },
{'Diamond Leggings', 6, 2 },
{'Netherite Leggings', 6, 3, 1 },
}
local feet = {
{'Leather Boots', 1 },
{'Chainmail Boots', 1 },
{'Iron Boots', 2 },
{'Golden Boots', 1 },
{'Diamond Boots', 3, 2 },
{'Netherite Boots', 3, 3, 1 },
}
local equipped = {
{'Leather Horse Armor', 3 },
{'Iron Horse Armor', 5 },
{'Golden Horse Armor', 7 },
{'Diamond Horse Armor', 11, 2 },
{'Wolf Armor', 11 },
}
local bodyParts = {
    {head, "on Head"},
    {body, "on Body"},
    {legs, "on Legs"},
    {feet, "on Feet"},
    {equipped, "equipped"}
}
local allItems = {}
for _, bodyPart in ipairs(bodyParts) do
    local items = bodyPart[1]
    local bodyPartName = bodyPart[2]
   
    for _, toolProps in ipairs(items) do
        local aliasName = toolProps[1]
        local text = '/&7When ' .. bodyPartName .. ':/&9+' .. toolProps[2] .. ' Armor/'
        if toolProps[3] then
            text = text .. '+' .. toolProps[3] .. ' Armor Toughness/'
        end
        if toolProps[4] then
            text = text .. '+' .. toolProps[4] .. ' Knockback Resistance'
        end
        aliases[aliasName] = { title = aliasName, name = aliasName, text = text }
        allItems[aliasName] = {title = aliasName, name = aliasName, text = text}
    end
end
end


-- Lists of item variants --
-- Lists of item variants --
local itemVariants = {
local itemVariants = {
['Dye'] = mw.clone( coloredDyes ),
['Small 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', 'Torchflower' },
['Colored Dye'] = coloredDyes,
['Mushroom'] = { 'Red Mushroom', 'Brown Mushroom' },
['Dyed Wool'] = {
['Quartz Block'] = { 'Block of Quartz', 'Chiseled Quartz Block', 'Quartz Pillar' },
'Orange Wool', 'Magenta Wool', 'Light Blue Wool', 'Yellow Wool', 'Lime Wool',
['Red Sandstone'] = { 'Red Sandstone', 'Cut Red Sandstone', 'Chiseled Red Sandstone', 'Smooth Red Sandstone' },
'Pink Wool', 'Gray Wool', 'Light Gray Wool', 'Cyan Wool', 'Purple Wool',
['Sandstone'] = { 'Sandstone', 'Cut Sandstone', 'Chiseled Sandstone', 'Smooth Sandstone' },
'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',
},
['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', 'Light Gray Glow Stick', 'Cyan Glow Stick',
'Purple Glow Stick', 'Blue Glow Stick', 'Brown Glow Stick', 'Green Glow Stick', 'Red Glow Stick', 'Black Glow Stick',
},
['Mushroom'] = { { title = 'Mushroom', name = 'Red Mushroom' }, { title = 'Mushroom', name = 'Brown Mushroom' } },
['Quartz Block'] = { 'Block of Quartz', 'Chiseled Quartz Block', 'Pillar Quartz Block' },
['Red Sandstone'] = { 'Red Sandstone', 'Chiseled Red Sandstone', 'Smooth Red Sandstone' },
['Sandstone'] = { 'Sandstone', 'Chiseled Sandstone', 'Smooth Sandstone' },
['Stone Bricks'] = { 'Stone Bricks', 'Mossy Stone Bricks', 'Cracked Stone Bricks', 'Chiseled Stone Bricks' },
['Stone Bricks'] = { 'Stone Bricks', 'Mossy Stone Bricks', 'Cracked Stone Bricks', 'Chiseled Stone Bricks' },
['Stone Slab'] = { 'Stone Slab', 'Sandstone Slab', 'Cobblestone Slab', 'Bricks Slab', 'Stone Bricks Slab', 'Nether Brick Slab', 'Quartz Slab' },
['Stone Slab'] = { 'Stone Slab', 'Cobblestone Slab', 'Mossy Cobblestone Slab', 'Smooth Stone Slab', 'Stone Brick Slab', 'Mossy Stone Brick Slab',  
'Granite Slab', 'Polished Granite Slab', 'Diorite Slab', 'Polished Diorite Slab', 'Andesite Slab', 'Polished Andesite Slab',
'Cobbled Deepslate Slab', 'Polished Deepslate Slab', 'Deepslate Brick Slab', 'Deepslate Tile Slab', 'Brick Slab', 'Mud Brick Slab',
'Sandstone Slab', 'Smooth Sandstone Slab', 'Cut Sandstone Slab', 'Red Sandstone Slab', 'Smooth Red Sandstone Slab', 'Cut Red Sandstone Slab', 'Prismarine Slab', 'Prismarine Brick Slab', 'Dark Prismarine Slab',
'Nether Brick Slab', 'Red Nether Brick Slab', 'Blackstone Slab', 'Polished Blackstone Slab', 'Polished Blackstone Brick Slab', 'End Stone Brick Slab', 'Purpur Slab', 'Quartz Slab', 'Smooth Quartz Slab', 'Petrified Oak Slab' },
['Stone Stairs'] = { 'Stone Stairs', 'Cobblestone Stairs', 'Mossy Cobblestone Stairs', 'Stone Brick Stairs', 'Mossy Stone Brick Stairs',
'Granite Stairs', 'Polished Granite Stairs', 'Diorite Stairs', 'Polished Diorite Stairs', 'Andesite Stairs', 'Polished Andesite Stairs',
'Cobbled Deepslate Stairs', 'Polished Deepslate Stairs', 'Deepslate Brick Stairs', 'Deepslate Tile Stairs', 'Brick Stairs', 'Mud Brick Stairs',
'Sandstone Stairs', 'Smooth Sandstone Stairs', 'Red Sandstone Stairs', 'Smooth Red Sandstone Stairs', 'Prismarine Stairs', 'Prismarine Brick Stairs', 'Dark Prismarine Stairs',
'Nether Brick Stairs', 'Red Nether Brick Stairs', 'Blackstone Stairs', 'Polished Blackstone Stairs', 'Polished Blackstone Brick Stairs', 'End Stone Brick Stairs', 'Purpur Stairs', 'Quartz Stairs', 'Smooth Quartz Stairs' },
['Wall'] = { 'Cobblestone Wall', 'Mossy Cobblestone Wall', 'Stone Brick Wall', 'Mossy Stone Brick Wall', 'Granite Wall', 'Diorite Wall', 'Andesite Wall',
'Cobbled Deepslate Wall', 'Polished Deepslate Wall', 'Deepslate Brick Wall', 'Deepslate Tile Wall', 'Brick Wall', 'Mud Brick Wall', 'Sandstone Wall', 'Red Sandstone Wall', 'Prismarine Wall',
'Nether Brick Wall', 'Red Nether Brick Wall', 'Blackstone Wall', 'Polished Blackstone Wall', 'Polished Blackstone Brick Wall', 'End Stone Brick Wall' },
['Purpur Block'] = { 'Purpur Block', 'Purpur Pillar' },
['Purpur Block'] = { 'Purpur Block', 'Purpur Pillar' },
['Stone'] = { 'Stone', 'Andesite', 'Granite', 'Diorite', 'Polished Andesite', 'Polished Granite', 'Polished Diorite' },
['Stone'] = { 'Stone', 'Andesite', 'Granite', 'Diorite', 'Polished Andesite', 'Polished Granite', 'Polished Diorite' },
['Tulip'] = { 'Red Tulip', 'Orange Tulip', 'White Tulip', 'Pink Tulip' },
['Prismarine'] = { 'Prismarine', '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' },
['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, 'Bone Meal' )
 
-- Copper --
local copperstuff = {
'Block of Copper',
'Cut Copper',
'Cut Copper Stairs',
'Cut Copper Slab',
'Chiseled Copper',
'Copper Grate',
'Copper Bulb',
'Copper Door',
'Copper Trapdoor',
}
local coppervariants = { '', 'Exposed ', 'Weathered ', 'Oxidized ' }
for _, copper in ipairs( copperstuff ) do
itemVariants['Unwaxed ' .. copper] = {}
itemVariants['Waxed ' .. copper] = {}
for _, coppervariant in ipairs( coppervariants ) do
local name = coppervariant .. copper
if copper == 'Block of Copper' and coppervariant ~= '' then
name = coppervariant .. 'Copper'
end
table.insert( itemVariants['Unwaxed ' .. copper], name )
table.insert( itemVariants['Waxed ' .. copper], 'Waxed ' .. name )
end
itemVariants[copper] = {}
for _, copperitem in ipairs( itemVariants['Unwaxed ' .. copper] ) do
table.insert( itemVariants[copper], copperitem )
end
for _, copperitem in ipairs( itemVariants['Waxed ' .. copper] ) do
table.insert( itemVariants[copper], copperitem )
end
end
 
for aliasName, aliasItems in pairs( itemVariants ) do
for aliasName, aliasItems in pairs( itemVariants ) do
aliases['Any ' .. aliasName] = aliasItems
aliases['Any ' .. aliasName] = aliasItems
Line 227: Line 411:
end
end


-- Animated icons --
-- Discs --
local animatedIcons = {
local discs = {  
'Command Block',
{ '13',        'C418',                    },
'Chain Command Block',
{ 'Cat',      'C418',        'cat'      },
'Repeating Command Block',
{ 'Blocks',    'C418',        'blocks'    },
'Fire',
{ 'Chirp',    'C418',        'chirp'    },
'Heat Block',
{ 'Far',      'C418',        'far'      },
'Magma Block',
{ 'Mall',      'C418',        'mall'      },
'Prismarine',
{ 'Mellohi',  'C418',        'mellohi'  },
'Sea Lantern',
{ 'Stal',      'C418',        'stal'      },
{ 'Strad',    'C418',        'strad'    },
{ 'Ward',      'C418',        'ward'      },
{ '11',        'C418',                    },
{ 'Wait',      'C418',        'wait'      },
{ 'Otherside', 'Lena Raine',  'otherside' },
{ 'Pigstep',  'Lena Raine',              },
{ '5',        'Samuel Åberg',            },
{ 'Relic',    'Aaron Cherof',            },
{ 'Precipice',          'Aaron Cherof',            },
{ 'Creator',            'Lena Raine',            },
{ 'Creator (Music Box)', '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
 
-- Disc Fragments --
local disc_fragments = {
{ '5',    },
}
}
for _, icon in ipairs( animatedIcons ) do
for _, disc_fragment in ipairs( disc_fragments ) do
aliases[icon] = icon .. '.gif'
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 = '&fDisc Fragment', name = name, text = '&7Music Disc - ' .. trackname }
end
end


-- Discs --
-- Paintings --
local discs = { '13', 'cat', 'blocks', 'chirp', 'far', 'mall', 'mellohi', 'stal', 'strad', 'ward', '11', 'wait' }
local paintings = {
for _, disc in ipairs( discs ) do
{ 'Kebab med tre pepperoni ',  'Kristoffer Zetterstrand', '1x1'},
local name = disc .. ' Disc'
{ 'de_aztec',                  'Kristoffer Zetterstrand', '1x1'},
aliases[name] = { title = '&bMusic Disc', name = name, text = '&7C418 - ' .. disc }
{ 'Albanian',                  'Kristoffer Zetterstrand', '1x1'},
{ 'Target Successfully Bombed', 'Kristoffer Zetterstrand', '1x1'},
{ 'Paradisträd',               'Kristoffer Zetterstrand', '1x1'},
{ 'Wasteland',                 'Kristoffer Zetterstrand', '1x1'},
{ 'Meditative',                 'Sarah Boeving',           '1x1'},
{ 'Wanderer',                  'Kristoffer Zetterstrand', '1x2'},
{ 'Graham',                    'Kristoffer Zetterstrand', '1x2'},
{ 'Prairie Ride',              'Sarah Boeving',          '1x2'},
{ 'The Pool',                  'Kristoffer Zetterstrand', '2x1'},
{ 'Bonjour Monsieur Courbet ',  'Kristoffer Zetterstrand', '2x1'},
{ 'sunset_dense',              'Kristoffer Zetterstrand', '2x1'},
{ 'Seaside',                    'Kristoffer Zetterstrand', '2x1'},
{ 'Creebet',                    'Kristoffer Zetterstrand', '2x1'},
{ 'Match',                      'Kristoffer Zetterstrand', '2x2'},
{ 'Bust',                      'Kristoffer Zetterstrand', '2x2'},
{ 'The Stage Is Set',          'Kristoffer Zetterstrand', '2x2'},
{ 'The void',                  'Kristoffer Zetterstrand', '2x2'},
{ 'Skull and Roses',            'Kristoffer Zetterstrand', '2x2'},
{ 'Wither',                    'Mojang',                  '2x2'},
{ 'Baroque',                    'Sarah Boeving',          '2x2'},
{ 'Humble',                    'Sarah Boeving',          '2x2'},
{ 'Bouquet',                    'Kristoffer Zetterstrand', '3x3'},
{ 'Cavebird',                  'Kristoffer Zetterstrand', '3x3'},
{ 'Cotán',                      'Kristoffer Zetterstrand', '3x3'},
{ 'Endboss',                    'Kristoffer Zetterstrand', '3x3'},
{ 'Fern',                      'Kristoffer Zetterstrand', '3x3'},
{ 'Owlemons',                  'Kristoffer Zetterstrand', '3x3'},
{ 'Sunflowers',                'Kristoffer Zetterstrand', '3x3'},
{ 'Tides',                      'Kristoffer Zetterstrand', '3x3'},
{ 'Backyard',                  'Kristoffer Zetterstrand', '3x4'},
{ 'Pond',                      'Kristoffer Zetterstrand', '3x4'},
{ 'Fighters',                  'Kristoffer Zetterstrand', '4x2'},
{ 'Changing',                  'Kristoffer Zetterstrand', '4x2'},
{ 'Finding',                    'Kristoffer Zetterstrand', '4x2'},
{ 'Lowmist',                    'Kristoffer Zetterstrand', '4x2'},
{ 'Passage',                    'Kristoffer Zetterstrand', '4x2'},
{ 'Mortal Coil',                'Kristoffer Zetterstrand', '4x3'},
{ 'Kong',                      'Kristoffer Zetterstrand', '4x3'},
{ 'Pointer',                    'Kristoffer Zetterstrand', '4x4'},
{ 'Pigscene',                  'Kristoffer Zetterstrand', '4x4'},
{ 'Skull On Fire',              'Kristoffer Zetterstrand', '4x4'},
{ 'Unpacked',                  'Sarah Boeving',          '4x4'},
{ 'Orb',                        'Kristoffer Zetterstrand', '4x4'},
{ 'Earth',                      'Mojang',                  '2x2'},
{ 'Wind',                      'Mojang',                  '2x2'},
{ 'Fire',                      'Mojang',                  '2x2'},
{ 'Water',                      'Mojang',                  '2x2'}
}
for _, painting in ipairs( paintings ) do
local name = 'Painting ' .. painting[1]
local artist = painting[2]
local artwork = painting[1]
local size = painting[3]
aliases[name] = { title = 'Painting', name = 'Painting', text = '&e' .. artwork .. '/&7' .. artist .. '/' .. '&f' .. size }
end
end


-- Damaged armor, tools and weapons --
-- Damaged armor, note it skips tools and weapons as they are handled above to add the damage tooltip --
local damagedItems = {
local damagedItems = {
'Bow',
'Bow',
'Brush',
'Carrot on a Stick',
'Carrot on a Stick',
'Chain Boots',
'Chainmail Boots',
'Chain Chestplate',
'Chainmail Chestplate',
'Chain Helmet',
'Chainmail Helmet',
'Chain Leggings',
'Chainmail Leggings',
'Diamond Axe',
'Crossbow',
'Diamond Boots',
'Diamond Boots',
'Diamond Chestplate',
'Diamond Chestplate',
'Diamond Helmet',
'Diamond Helmet',
'Diamond Hoe',
'Diamond Leggings',
'Diamond Leggings',
'Diamond Pickaxe',
'Diamond Shovel',
'Diamond Sword',
'Elytra',
'Elytra',
'Fishing Rod',
'Fishing Rod',
'Flint and Steel',
'Flint and Steel',
'Golden Axe',
'Golden Boots',
'Golden Boots',
'Golden Chestplate',
'Golden Chestplate',
'Golden Helmet',
'Golden Helmet',
'Golden Hoe',
'Golden Leggings',
'Golden Leggings',
'Golden Pickaxe',
'Golden Shovel',
'Golden Sword',
'Iron Axe',
'Iron Boots',
'Iron Boots',
'Iron Chestplate',
'Iron Chestplate',
'Iron Helmet',
'Iron Helmet',
'Iron Hoe',
'Iron Leggings',
'Iron Leggings',
'Iron Pickaxe',
'Iron Shovel',
'Iron Sword',
'Leather Boots',
'Leather Boots',
'Leather Tunic',
'Leather Tunic',
'Leather Cap',
'Leather Cap',
'Leather Pants',
'Leather Pants',
'Netherite Boots',
'Netherite Chestplate',
'Netherite Helmet',
'Netherite Leggings',
'Shears',
'Shears',
'Shield',
'Shield'
'Stone Axe',
'Stone Hoe',
'Stone Pickaxe',
'Stone Shovel',
'Stone Sword',
'Wooden Axe',
'Wooden Hoe',
'Wooden Pickaxe',
'Wooden Shovel',
'Wooden Sword'
}
}
for _, item in ipairs( damagedItems ) do
for _, item in ipairs( damagedItems ) do
Line 329: Line 577:
'Fess',
'Fess',
'Field Masoned',
'Field Masoned',
'Flow',
'Flower Charge',
'Flower Charge',
'Globe',
'Gradient',
'Gradient',
'Guster',
'Inverted Chevron',
'Inverted Chevron',
'Lozenge',
'Lozenge',
Line 346: Line 597:
'Per Pale',
'Per Pale',
'Per Pale Inverted',
'Per Pale Inverted',
'Piglin',
'Snout',
'Roundel',
'Roundel',
'Saltire',
'Saltire',
Line 352: Line 605:
local colors = {
local colors = {
'White',
'White',
'Light Gray',
'Gray',
'Black',
'Brown',
'Red',
'Orange',
'Orange',
'Magenta',
'Light Blue',
'Yellow',
'Yellow',
'Lime',
'Lime',
'Pink',
'Green',
'Gray',
'Light Gray',
'Cyan',
'Cyan',
'Light Blue',
'Blue',
'Purple',
'Purple',
'Blue',
'Magenta',
'Brown',
'Pink'
'Green',
'Red',
'Black'
}
}


Line 385: Line 638:
-- Items that use the sixteen colors --
-- Items that use the sixteen colors --
local coloredItems = {
local coloredItems = {
'Balloon',
withWhite = {
'Banner',
'Balloon',
'Bed',
'Banner',
'Carpet',
'Bed',
'Concrete',
'Carpet',
'Concrete Powder',
'Concrete',
'Glazed Terracotta',
'Concrete Powder',
'Hardened $1 Stained Glass',
'Glazed Terracotta',
'Hardened $1 Stained Glass Pane',
'Glow Stick',
'Shield',
'Hardened $1 Stained Glass',
'Shulker Box',
'Hardened $1 Stained Glass Pane',
'Stained Glass',
'Shield',
'Stained Glass Pane',
'Shulker Box',
'Wool'
'Stained Glass',
'Stained Glass Pane',
'Wool',
 
'$Dyed Terracotta',
'$Dyed Candle',
},
noWhite = {
'$Dyed Wool',
'$Dyed Bed',
'$Dyed Carpet',
'$Colored Dye',
}
}
 
local coloredBadItems = {
['Light Gray Glow Stick'] = 1,
['Black Glow Stick'] = 1,
}
}
for _, item in ipairs( coloredItems ) do
 
local itemParts = item:match( '%$1' ) and mw.text.split( item, '%$1' )
for type, items in pairs( coloredItems ) do
if itemParts then
for _, item in ipairs( items ) do
local coloredItemAliases = {}
local defaultItemAliases
 
if item:find( '%$[^1]' ) then
defaultItemAliases = {}
local itemName
if type == 'noWhite' then
itemName = item:gsub( '%$%w+', 'White' )
else
itemName = item:gsub( '%$%w+ ', '' )
end
table.insert( defaultItemAliases, itemName )
end
 
for _, color in ipairs( colors ) do
local itemName
if type ~= 'noWhite' or color ~= 'White' then
if item:find( '%$1' ) then
itemName = item:gsub( '%$1', color )
elseif item:find( '%$' ) then
itemName = item:gsub( '%$%w+', color )
else
itemName = color .. ' ' .. item
end
end
 
if not coloredBadItems[itemName] then
if defaultItemAliases then
table.insert( defaultItemAliases, itemName )
end
 
table.insert( coloredItemAliases, itemName )
end
end
 
if defaultItemAliases then
local defaultItem = item:gsub( '%$%w+ ', '' )
aliases['Any ' .. defaultItem] = defaultItemAliases
aliases['Matching ' .. defaultItem] = defaultItemAliases
end
item = item:gsub( '%$1 ', '' )
item = item:gsub( '%$1 ', '' )
item = item:gsub( '%$', '' )
aliases['Any ' .. item] = coloredItemAliases
aliases['Matching ' .. item] = coloredItemAliases
end
end
local coloredItemAliases = {}
for _, color in ipairs( colors ) do
if itemParts then
table.insert( coloredItemAliases, itemParts[1] .. color .. itemParts[2] )
else
table.insert( coloredItemAliases, color .. ' ' .. item )
end
end
aliases['Any ' .. item] = coloredItemAliases
aliases['Matching ' .. item] = coloredItemAliases
end
end
 
-- list of all potions with no effects
-- Potions --
local noEffects = {
local status = {
'Water Bottle',
{'Regeneration', '&9Regeneration', 'II', '0:45', '1:30', '0:22', '0:11', '0:22', '0:05', '0:05', '0:11', '0:02' },
'Awkward Potion',
{'Swiftness', '&9Speed', 'II', '3:00', '8:00', '1:30', '0:45', '2:00', '0:22', '0:22', '1:00', '0:11' },
'Thick Potion',
{'Fire Resistance', '&9Fire Resistance', '', '3:00', '8:00', '', '0:45', '2:00', '', '0:22', '1:00', '' },
'Mundane Potion',
{'Poison', '&cPoison', 'II', '0:45', '1:30', '0:21', '0:11', '0:22', '0:05', '0:05', '0:11', '0:02' },
'Uncraftable Potion',
{'Healing', '&9Instant Health', 'II', '', '', '', '', '', '', '', '', '' },
'Splash Water Bottle',
{'Night Vision', '&9Night Vision', '', '3:00', '8:00', '', '0:45', '2:00', '', '0:22', '1:00', '' },
'Awkward Splash Potion',
{'Weakness', '&cWeakness', '', '1:30', '4:00', '', '0:22', '1:00', '', '0:11', '0:30', '' },
'Thick Splash Potion',
{'Strength', '&9Strength', 'II', '3:00', '8:00', '1:30', '0:45', '2:00', '0:22', '0:22', '1:00', '0:11' },
'Mundane Splash Potion',
{'Slowness', '&cSlowness', 'IV', '1:30', '4:00', '0:20', '0:22', '1:00', '0:05', '0:11', '0:30', '0:02' },
'Uncraftable Splash Potion',
{'Leaping', '&9Jump Boost', 'II', '3:00', '8:00', '1:30', '0:45', '2:00', '0:22', '0:22', '1:00', '0:11' },
'Lingering Water Bottle',
{'Harming', '&cInstant Damage', 'II', '', '', '', '', '', '', '', '', '' },
'Awkward Lingering Potion',
{'Water Breathing', '&9Water Breathing', '', '3:00', '8:00', '', '0:45', '2:00', '', '0:22', '1:00', '' },
'Thick Lingering Potion',
{'Invisibility', '&9Invisibility', '', '3:00', '8:00', '', '0:45', '2:00', '', '0:22', '1:00', '' },
'Mundane Lingering Potion',
{'Slow Falling', '&9Slow Falling', '', '1:30', '4:00', '', '0:22', '1:00', '', '0:11', '0:30', '' },
'Uncraftable Lingering Potion',
{'Luck', '&9Luck', '', '5:00', '', '', '1:15', '', '', '0:37', '', '' },
'Tipped Arrow',
{'Decay', '&cDecay', '', '0:40', '', '', '0:10', '', '', '0:05', '', '' },
'Arrow of Splashing',
  --{'potionName', 'potionStatus', 'enhancedLevel', 'duration', 'durationExtended', 'durationEnhanced', 'durationLingering',
'Uncraftable Tipped Arrow',
  -- 'durationLingerExtended', 'durationLingerEnhanced', 'durationArrow', 'durationArrowExtended', 'durationArrowEnhanced' },
}
}
 
for _, name in ipairs(noEffects) do
for _, statusProps in ipairs( status ) do
aliases[name] = { name = name, text = '&7No effects' }
if statusProps[4] ~= '' then
local aliasName = 'Potion of ' .. statusProps[1]
aliases[aliasName] = { title = aliasName, name = aliasName, text = statusProps[2] .. ' (' .. statusProps[4] .. ')'}
local aliasName = 'Potion of ' .. statusProps[1] .. ' Extended'
aliases[aliasName] = { title = 'Potion of ' .. statusProps[1], name = 'Potion of ' .. statusProps[1], text = statusProps[2] .. ' (' .. statusProps[5] .. ')'}
local aliasName = 'Potion of ' .. statusProps[1] .. ' Enhanced'
aliases[aliasName] = { title = 'Potion of ' .. statusProps[1], name = 'Potion of ' .. statusProps[1], text = statusProps[2] .. ' ' .. statusProps[3] .. ' (' .. statusProps[6] .. ')'}
local aliasName = 'Splash Potion of ' .. statusProps[1]
aliases[aliasName] = { title = aliasName, name = aliasName, text = statusProps[2] .. ' (' .. statusProps[4] .. ')'}
local aliasName = 'Splash Potion of ' .. statusProps[1] .. ' Extended'
aliases[aliasName] = { title = 'Splash Potion of ' .. statusProps[1], name = 'Splash Potion of ' .. statusProps[1], text = statusProps[2] .. ' (' .. statusProps[5] .. ')'}
local aliasName = 'Splash Potion of ' .. statusProps[1] .. ' Enhanced'
aliases[aliasName] = { title = 'Splash Potion of ' .. statusProps[1], name = 'Splash Potion of ' .. statusProps[1], text = statusProps[2] .. ' ' .. statusProps[3] .. ' (' .. statusProps[6] .. ')'}
local aliasName = 'Lingering Potion of ' .. statusProps[1]
aliases[aliasName] = { title = aliasName, name = aliasName, text = statusProps[2] .. ' (' .. statusProps[7] .. ')'}
local aliasName = 'Lingering Potion of ' .. statusProps[1] .. ' Extended'
aliases[aliasName] = { title = 'Lingering Potion of ' .. statusProps[1], name = 'Lingering Potion of ' .. statusProps[1], text = statusProps[2] .. ' (' .. statusProps[8] .. ')'}
local aliasName = 'Lingering Potion of ' .. statusProps[1] .. ' Enhanced'
aliases[aliasName] = { title = 'Lingering Potion of ' .. statusProps[1], name = 'Lingering Potion of ' .. statusProps[1], text = statusProps[2] .. ' ' .. statusProps[3] .. ' (' .. statusProps[9] .. ')'}
local aliasName = 'Arrow of ' .. statusProps[1]
aliases[aliasName] = { title = aliasName, name = aliasName, text = statusProps[2] .. ' (' .. statusProps[10] .. ')'}
local aliasName = 'Arrow of ' .. statusProps[1] .. ' Extended'
aliases[aliasName] = { title = 'Arrow of ' .. statusProps[1], name = 'Arrow of ' .. statusProps[1], text = statusProps[2] .. ' (' .. statusProps[11] .. ')'}
local aliasName = 'Arrow of ' .. statusProps[1] .. ' Enhanced'
aliases[aliasName] = { title = 'Arrow of ' .. statusProps[1], name = 'Arrow of ' .. statusProps[1], text = statusProps[2] .. ' ' .. statusProps[3] .. ' (' .. statusProps[12] .. ')'}
else
local aliasName = 'Potion of ' .. statusProps[1]
aliases[aliasName] = { title = aliasName, name = aliasName, text = statusProps[2] }
local aliasName = 'Potion of ' .. statusProps[1] .. ' Enhanced'
aliases[aliasName] = { title = 'Potion of ' .. statusProps[1], name = 'Potion of ' .. statusProps[1], text = statusProps[2] .. ' ' .. statusProps[3] }
local aliasName = 'Splash Potion of ' .. statusProps[1]
aliases[aliasName] = { title = aliasName, name = aliasName, text = statusProps[2] }
local aliasName = 'Splash Potion of ' .. statusProps[1] .. ' Enhanced'
aliases[aliasName] = { title = 'Splash Potion of ' .. statusProps[1], name = 'Splash Potion of ' .. statusProps[1], text = statusProps[2] .. ' ' .. statusProps[3] }
local aliasName = 'Lingering Potion of ' .. statusProps[1]
aliases[aliasName] = { title = aliasName, name = aliasName, text = statusProps[2] }
local aliasName = 'Lingering Potion of ' .. statusProps[1] .. ' Enhanced'
aliases[aliasName] = { title = 'Lingering Potion of ' .. statusProps[1], name = 'Lingering Potion of ' .. statusProps[1], text = statusProps[2] .. ' ' .. statusProps[3] }
local aliasName = 'Arrow of ' .. statusProps[1]
aliases[aliasName] = { title = aliasName, name = aliasName, text = statusProps[2] }
local aliasName = 'Arrow of ' .. statusProps[1] .. ' Enhanced'
aliases[aliasName] = { title = 'Arrow of ' .. statusProps[1], name = 'Arrow of ' .. statusProps[1], text = statusProps[2] .. ' ' .. statusProps[3] }
end
end
end


local effects = {
-- start these lists with the no effect items as names are not normal
'Regeneration',
'Swiftness',
'Fire Resistance',
'Poison',
'Healing',
'Night Vision',
'Weakness',
'Strength',
'Slowness',
'Leaping',
'Harming',
'Water Breathing',
'Invisibility',
'Luck',
'Decay',
'the Turtle Master',
}
local potionItems = {
local potionItems = {
['Potion'] = {
['Potion'] = {
'Water Bottle',
aliases['Water Bottle'],
'Awkward Potion',
aliases['Awkward Potion'],
'Thick Potion',
aliases['Thick Potion'],
'Mundane Potion',
aliases['Mundane Potion'],
},
},
['Splash Potion'] = {
['Splash Potion'] = {
'Splash Water Bottle',
aliases['Splash Water Bottle'],
'Awkward Splash Potion',
aliases['Awkward Splash Potion'],
'Thick Splash Potion',
aliases['Thick Splash Potion'],
'Mundane Splash Potion',
aliases['Mundane Splash Potion'],
},
},
['Lingering Potion'] = {
['Lingering Potion'] = {
'Lingering Water Bottle',
aliases['Lingering Water Bottle'],
'Awkward Lingering Potion',
aliases['Awkward Lingering Potion'],
'Thick Lingering Potion',
aliases['Thick Lingering Potion'],
'Mundane Lingering Potion',
aliases['Mundane Lingering Potion'],
},
},
['Tipped Arrow'] = {
['Tipped Arrow'] = {
'Arrow of Splashing',
aliases['Arrow of Splashing'],
'Tipped Arrow',
aliases['Tipped Arrow'],
'Tipped Arrow',
aliases['Tipped Arrow'],
'Tipped Arrow',
aliases['Tipped Arrow'],
},
},
}
}
for _, effect in ipairs( effects ) do
 
table.insert( potionItems['Splash Potion'], 'Splash Potion of ' .. effect )
-- Potions --
table.insert( potionItems['Lingering Potion'], 'Lingering Potion of ' .. effect )
local effects = {
table.insert( potionItems['Tipped Arrow'], 'Arrow of ' .. effect )
-- 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' }}},
{ name = 'Oozing',  effect = '&cOozing', durations = { normal = { '3:00' }, lingering = { '0:45' }, arrow = { '0:22' }}},
{ name = 'Infestation',  effect = '&cInfested', durations = { normal = { '3:00' }, lingering = { '0:45' }, arrow = { '0:22' }}},
{ name = 'Weaving',  effect = '&cWeaving', durations = { normal = { '3:00' }, lingering = { '0:45' }, arrow = { '0:22' }}},
{ name = 'Wind Charging',  effect = '&cWind Charged', durations = { normal = { '3:00' }, lingering = { '0:45' }, arrow = { '0:22' }}}
}
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
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
end
-- build the any lists
for item, potionAliases in pairs( potionItems ) do
for item, potionAliases in pairs( potionItems ) do
aliases['Any ' .. item] = potionAliases
aliases['Any ' .. item] = potionAliases
Line 541: Line 863:


-- Wood --
-- Wood --
local woods = {
local woodTypes = {
'Oak',
    overworld = {
'Spruce',
        'Oak',
'Birch',
    'Spruce',
'Jungle',
    'Birch',
'Acacia',
    'Jungle',
'Dark Oak'
    'Acacia',
        'Dark Oak',
        'Mangrove',
        'Cherry',
        'Bamboo',
    },
    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 = {
local woodItems = {
'Fence Gate',
    overworld = {
'Wood',
        'Log',
'Log',
        'Wood',
'Bark',
        'Stripped $1 Log',
'Boat',
        'Stripped $1 Wood',
'wood Door',
        'Boat',
'wood Fence',
        'Boat with Chest',
'Wood Planks',
        'Sapling',
'Planks',
    },
'Wood Slab',
    nether = {
'Wood Stairs',
        'Stem',
'wood Button',
        'Hyphae',
'wood Pressure Plate',
        'Stripped $1 Stem',
'wood Trapdoor',
        'Stripped $1 Hyphae',
'wood Slab',
    },
'wood Stairs',
    both = {
-- Any/Matching X or Y
        '${Log,Stem}',
        '${Wood,Hyphae}',
        'Stripped $1 ${Wood,Hyphae}',
        'Stripped $1 ${Log,Stem}',
 
-- Dimensional prefixes
        '$world Planks',
        '$world $wood Stairs',
        '$world $wood Slab',
        '$world $wood Fence',
        '$world $wood Fence Gate',
        '$world $wood Door',
        '$world $wood Trapdoor',
        '$world $wood Pressure Plate',
        '$world $wood Button',
        '$world $wood Sign',
        '$world $wood Hanging Sign',
 
-- Both dimensions
-- Items with non-wood variants include $wood
        'Planks',
        '$wood Stairs',
        '$wood Slab',
        '$wood Fence',
        'Fence Gate',
        '$wood Door',
        '$wood Trapdoor',
        '$wood Pressure Plate',
        '$wood Button',
        'Sign',
        'Hanging 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'
else
woodItemWorld[item] = world
end
    end
end
 
local woodBadItems = {
['Bamboo Sapling'] = 1,
['Bamboo Wood'] = 1,
['Bamboo Log'] = 1,
['Stripped Bamboo Wood'] = 1,
['Stripped Bamboo Log'] = 1,
}
}
-- used if the items use a different name than the alias
 
local woodNames = {
local woodNameMapping = {
['wood Door'] = 'Door',
['Mangrove Sapling'] = 'Mangrove Propagule',
['wood Fence'] = 'Fence',
['Bamboo Boat'] = 'Bamboo Raft',
['wood Button'] = 'Button',
['Bamboo Boat with Chest'] = 'Bamboo Raft with Chest',
['wood Pressure Plate'] = 'Pressure Plate',
['wood Trapdoor'] = 'Trapdoor',
['wood Slab'] = 'Slab',
['wood Stairs'] = 'Stairs',
}
}
for _, item in ipairs( woodItems ) do
 
local itemName = woodNames[item] or item
for item, world in pairs(woodItemWorld) do
local itemName = ''
local woodAliases = {}
local woodAliases = {}
for _, wood in ipairs( woods ) do
 
table.insert( woodAliases, wood .. ' ' .. itemName )
-- 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
-- special handling
if woodNameMapping[itemName] then
itemName = woodNameMapping[itemName]
end
 
if not woodBadItems[itemName] then
table.insert(woodAliases, itemName)
end
end
end
aliases['Any ' .. item] = woodAliases
 
-- Parse ${,} (world-select) syntax
item = item:gsub("%${(.-),(.-)}", "%1 or %2")
    item = item:gsub('%$wood', 'Wooden')
    item = item:gsub('%$1 ', '')
    aliases['Any ' .. item] = woodAliases
aliases['Matching ' .. item] = woodAliases
aliases['Matching ' .. item] = woodAliases
end
end
-- Bedrock Edition Items --
local editionItems = {
BE = {
'Acacia Fence Gate',
'Andesite Wall',
'Beacon',
'Birch Fence Gate',
'Black Stained Glass Pane',
'Blackstone Wall',
'Blue Ice',
'Blue Stained Glass Pane',
'Bow',
'Brick Wall',
'Brown Stained Glass Pane',
'Bucket of Pufferfish',
'Bucket of Tropical Fish',
'Buried Treasure Map',
'Cat Spawn Egg',
'Chest',
'Cobbled Deepslate Wall',
'Cobblestone Wall',
'Conduit',
'Creeper Head',
'Crimson Fence Gate',
'Crying Obsidian',
'Cyan Stained Glass Pane',
'Dark Oak Fence Gate',
'Deepslate Brick Wall',
'Deepslate Tile Wall',
'Desert Village Map',
'Diorite Wall',
'Dragon Egg',
'Dragon Head',
'Enchanting Table',
'End Gateway',
'End Portal Frame',
'End Portal',
'End Rod',
'End Stone Brick Wall',
'Ender Chest',
'Flowing Lava',
'Glass Pane',
'Glowstone',
'Granite Wall',
'Gray Stained Glass Pane',
'Green Stained Glass Pane',
'Head',
'Honey Block',
'Horn Coral Block',
'Iron Bars',
'Jack o\'Lantern',
'Jungle Explorer Map',
'Jungle Fence Gate',
'Jungle Leaves',
'Lava',
'Leather Horse Armor',
'Light Blue Stained Glass Pane',
'Light Gray Stained Glass Pane',
'Lime Stained Glass Pane',
        'Lodestone Compass',
'Magenta Stained Glass Pane',
'Magma Block',
'Map',
'Minecart with Command Block',
'Monster Spawner',
'Mossy Cobblestone Wall',
'Mossy Stone Brick Wall',
'Mud Brick Wall',
'Nether Brick Wall',
'Oak Fence Gate',
'Observer',
'Ocean Explorer Map',
'Orange Stained Glass Pane',
'Panda Spawn Egg',
'Peony',
'Pink Stained Glass Pane',
'Plains Village Map',
'Polished Blackstone Wall',
'Polished Blackstone Brick Wall',
'Polished Deepslate Wall',
'Prismarine Wall',
'Purple Stained Glass Pane',
'Red Nether Brick Wall',
'Red Sandstone Wall',
'Red Stained Glass Pane',
'Rose Bush',
'Sandstone Wall',
'Savanna Village Map',
'Scaffolding',
'Sea Lantern',
'Shroomlight',
'Skeleton Skull',
'Snowy Village Map',
'Spawn Cat',
'Spawn Panda',
'Spawn Wandering Trader',
'Spawner',
'Spruce Fence Gate',
'Stone Brick Wall',
'Stonecutter',
'Structure Void',
'Swamp Explorer Map',
'Taiga Village Map',
'Trapped Chest',
'Trial Explorer Map',
'Wandering Trader Spawn Egg',
'Warped Fence Gate',
'White Stained Glass Pane',
'Wither Skeleton Skull',
'Woodland Explorer Map',
'Yellow Stained Glass Pane',
'Zombie Head',
},
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 = "&dLight", name = "Light " .. level}
end
aliases["Light Negative"] = {title = "&dLight", name = "Light Negative"}
-- Smithing Template
local smithing_templates = {
{ 'Netherite Upgrade',    'Diamond Equipment', 'Netherite Ingot'  },
{ 'Bolt Armor Trim',      'Armor',            'Ingot & Crystals' },
{ 'Coast Armor Trim',    'Armor',            'Ingot & Crystals' },
{ 'Dune Armor Trim',      'Armor',            'Ingot & Crystals' },
{ 'Eye Armor Trim',      'Armor',            'Ingot & Crystals' },
{ 'Flow Armor Trim',      'Armor',            'Ingot & Crystals' },
{ 'Host Armor Trim',      'Armor',            'Ingot & Crystals' },
{ 'Raiser Armor Trim',    'Armor',            'Ingot & Crystals' },
{ 'Rib Armor Trim',      'Armor',            'Ingot & Crystals' },
{ 'Sentry Armor Trim',    'Armor',            'Ingot & Crystals' },
{ 'Shaper Armor Trim',    'Armor',            'Ingot & Crystals' },
{ 'Silence Armor Trim',  'Armor',            'Ingot & Crystals' },
{ 'Snout Armor Trim',    'Armor',            'Ingot & Crystals' },
{ 'Spire Armor Trim',    'Armor',            'Ingot & Crystals' },
{ 'Tide Armor Trim',      'Armor',            'Ingot & Crystals' },
{ 'Vex Armor Trim',      'Armor',            'Ingot & Crystals' },
{ 'Ward Armor Trim',      'Armor',            'Ingot & Crystals' },
{ 'Wayfinder Armor Trim', 'Armor',            'Ingot & Crystals' },
{ 'Wild Armor Trim',      'Armor',            'Ingot & Crystals' },
}
local smithing_template_array = {}
local armor_trims_array = {}
for _,smithing_template in pairs(smithing_templates) do
local current_alias = {
title = 'Smithing Template',
name = smithing_template[1] .. ' Smithing Template',
text = '&7' .. smithing_template[1] .. '//Applies to:/ &9' .. smithing_template[2] .. '/&7Ingredients:/ &9' .. smithing_template[3],
}
aliases[smithing_template[1]] = current_alias
aliases[smithing_template[1] .. ' Smithing Template'] = current_alias
table.insert(smithing_template_array,current_alias)
if string.find(smithing_template[1],' Armor Trim$') then
table.insert(armor_trims_array,current_alias)
end
end
aliases['Matching Smithing Template'] = smithing_template_array
aliases['Any Smithing Template'] = smithing_template_array
aliases['Matching Armor Trim'] = armor_trims_array
aliases['Any Armor Trim'] = armor_trims_array
aliases['Matching Armor Trim Smithing Template'] = armor_trims_array
aliases['Any Armor Trim Smithing Template'] = armor_trims_array


return aliases
return aliases

Latest revision as of 08:10, 4 July 2024

This table defines the aliases used in Module:Inventory slot.


de:Modul:Inventar slot/Aliases es:Módulo:Inventory slot/Aliases fr:Module:Case inventaire/Alias ja:モジュール:Inventory slot/Aliases ko:모듈:Inventory slot/Aliases pt:Módulo:Inventory slot/Aliases ru:Модуль:Инвентарный слот/Псевдонимы uk:Модуль:Інвентарний слот/Псевдоніми zh:模块:Inventory slot/Aliases



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' },
	['Any Pottery Sherd'] = { 'Angler Pottery Sherd', 'Arms Up Pottery Sherd', 'Archer Pottery Sherd', 'Blade Pottery Sherd', 'Brewer Pottery Sherd', 'Burn Pottery Sherd', 'Danger Pottery Sherd', 'Explorer Pottery Sherd', 'Flow Pottery Sherd', 'Friend Pottery Sherd', 'Guster Pottery Sherd', 'Heart Pottery Sherd', 'Heartbreak Pottery Sherd', 'Howl Pottery Sherd', 'Miner Pottery Sherd', 'Mourner Pottery Sherd', 'Plenty Pottery Sherd', 'Prize Pottery Sherd', 'Scrape Pottery Sherd', 'Sheaf Pottery Sherd', 'Shelter Pottery Sherd', 'Skull Pottery Sherd', 'Snort Pottery Sherd', 'Brick' },
	
    -- Stones --
	['Any Cobblestone or Blackstone'] = { 'Cobblestone', 'Blackstone' },
	['Any stone-tier block'] = { 'Cobblestone', 'Blackstone', 'Cobbled Deepslate' },

	-- Display names --
	['Broken Elytra'] = { title = '&eElytra', name = 'Broken Elytra' },
	['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'},
	['Half Filled Bundle'] = { title = 'Bundle', name = 'Half Filled Bundle' },
	['Filled Bundle'] = { title = 'Bundle', name = 'Filled Bundle' },
	['Flower Charge Banner Pattern'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Flower Charge'},
	['Flower Banner Pattern'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Flower Charge'},
	['Creeper Charge Banner Pattern'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Creeper Charge'},
	['Creeper Banner Pattern'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Creeper Charge'},
	['Bordure Indented Banner Pattern'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Bordure Indented'},
	['Field Masoned Banner Pattern'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Field Masoned'},
	['Skull Charge Banner Pattern'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Skull Charge'},
	['Skull Banner Pattern'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Skull Charge'},
	['Thing Banner Pattern'] = { title = '&dBanner Pattern', name = 'Banner Pattern', text = '&7Thing'},
	['Mojang Banner Pattern'] = { title = '&dBanner Pattern', name = 'Banner Pattern', text = '&7Thing'},
	['Globe Banner Pattern'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Globe'},
	['Snout Banner Pattern'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Snout'},
	['Piglin Banner Pattern'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Snout'},
	['New Thing Banner Pattern'] = { title = '&dBanner Pattern', name = 'Banner Pattern', text = '&7New Thing'},
	['New Mojang Banner Pattern'] = { title = '&dBanner Pattern', name = 'Banner Pattern', text = '&7New Thing'},
	['Flow Banner Pattern'] = { title = '&bBanner Pattern', name = 'Banner Pattern', text = '&7Flow'},
	['Guster Banner Pattern'] = { title = '&bBanner Pattern', name = 'Banner Pattern', text = '&7Guster'},
	
	-- Empty display name --
	['debug_fourj_item'] = { title = '\226\128\140', name = 'debug_fourj_item' },

	-- Weapons --
	['Trident'] = { title = '&dTrident', name = 'Trident', text = '/&7 When in Main Hand:/ &29 Attack Damage/ &21.1 Attack Speed'},
	['Damaged Trident'] = { title = '&dTrident', name = 'Damaged Trident', text = '/&7 When in Main Hand:/ &29 Attack Damage/ &21.1 Attack Speed'},
	['Trident BE'] = { name = '&dTrident', text = '/&9 +8 Attack Damage'},
	['Mace'] = { title = '&dMace', name = 'Mace', text = '/&7 When in Main Hand:/ &26 Attack Damage/ &20.6 Attack Speed'},
	['Damaged Mace'] = { title = '&dMace', name = 'Damaged Mace', text = '/&7 When in Main Hand:/ &26 Attack Damage/ &20.6 Attack Speed'},
	['Mace BE'] = { title = '&dMace', name = 'Mace', text = '/&9 +7 Attack Damage'},
	
	-- Ominous Bottles --
    ['Ominous Bottle'] = { name = 'Ominous Bottle', text = '&9Bad Omen (01:40:00)'},
    ['Ominous Bottle II'] = { name = 'Ominous Bottle', text = '&9Bad Omen II (01:40:00)'},
    ['Ominous Bottle III'] = { name = 'Ominous Bottle', text = '&9Bad Omen III (01:40:00)'},
    ['Ominous Bottle IV'] = { name = 'Ominous Bottle', text = '&9Bad Omen IV (01:40:00)'},
    ['Ominous Bottle V'] = { name = 'Ominous Bottle', text = '&9Bad Omen V (01:40:00)'},

	-- 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' },
	['Shrub BE'] = { title = 'Fern', name = 'Short Grass' },
	['Unknown'] = { title = 'Unknown', name = 'Missing Tile' },
	['info_update'] = { title = 'tile.info_update.name', name = 'Missing Tile' },
	['info_update2'] = { title = 'tile.info_update2.name', name = 'Missing Tile' },
	['reserved6'] = { title = 'tile.reserved6.name', name = 'Missing Tile' },

	-- 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' },
	
	-- Potato peels from 24w14 potato --
	-- Note: These can't use this module's default color handling because potato peels have no white variant but do include the uncolored variant in recipes --
	['Any Potato Peels'] = { 'Potato Peels', 'Light Gray Potato Peels', 'Gray Potato Peels', 'Black Potato Peels', 'Brown Potato Peels', 'Red Potato Peels', 'Orange Potato Peels', 'Yellow Potato Peels', 'Lime Potato Peels', 'Green Potato Peels', 'Cyan Potato Peels', 'Light Blue Potato Peels', 'Blue Potato Peels', 'Purple Potato Peels', 'Magenta Potato Peels', 'Pink Potato Peels' },
}

-- Tooltip colors --
local yellowTooltips = {
	'Bottle o\' Enchanting',
	'Creeper Head',
	'Damaged Elytra',
	'Dragon Head',
	'Dragon\'s Breath',
	'Elytra',
	'Enchanted Book',
	'Head',
	'Heart of the Sea',
	'Nether Star',
	'Piglin Head',
	'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',
	'End Crystal',
	'Golden Apple',
}
for _, name in ipairs( aquaTooltips ) do
	aliases[name] = { title = '&b', name = name }
end

local lightPurpleTooltips = {
	'Command Block',
	'Chain Command Block',
	'Repeating Command Block',
	'Dragon Egg',
	'Enchanted Golden Apple',
	'Structure Block',
	'Structure Void',
    'Jigsaw Block',
    'Barrier',
    'Heavy Core',
}
for _, name in ipairs( lightPurpleTooltips ) do
	aliases[name] = { title = '&d', name = name }
end

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

-- Tools and weapons --
local tools = {
	{'Wooden', 'Sword', 4, 1.6 },
	{'Stone', 'Sword', 5, 1.6 },
	{'Iron', 'Sword', 6, 1.6 },
	{'Golden', 'Sword', 4, 1.6 },
	{'Diamond', 'Sword', 7, 1.6 },
	{'Netherite', 'Sword', 8, 1.6 },
	
	{'Wooden', 'Pickaxe', 2, 1.2 },
	{'Stone', 'Pickaxe', 3, 1.2 },
	{'Iron', 'Pickaxe', 4, 1.2 },
	{'Golden', 'Pickaxe', 2, 1.2 },
	{'Diamond', 'Pickaxe', 5, 1.2 },
	{'Netherite', 'Pickaxe', 6, 1.2 },
	
	{'Wooden', 'Axe', 7, 0.8 },
	{'Stone', 'Axe', 9, 0.8 },
	{'Iron', 'Axe', 9, 0.9 },
	{'Golden', 'Axe', 7, 1 },
	{'Diamond', 'Axe', 9, 1 },
	{'Netherite', 'Axe', 10, 1 },
	
	{'Wooden', 'Shovel', 2.5, 1 },
	{'Stone', 'Shovel', 3.5, 1 },
	{'Iron', 'Shovel', 4.5, 1 },
	{'Golden', 'Shovel', 2.5, 1 },
	{'Diamond', 'Shovel', 5.5, 1 },
	{'Netherite', 'Shovel', 6.5, 1 },
	
	{'Wooden', 'Hoe', 1, 1 },
	{'Stone', 'Hoe', 1, 2 },
	{'Iron', 'Hoe', 1, 3 },
	{'Golden', 'Hoe', 1, 1 },
	{'Diamond', 'Hoe', 1, 4 },
	{'Netherite', 'Hoe', 1, 4 }
}

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:/ &2' .. toolProps[3] .. ' Attack Damage/ &2' .. toolProps[4] .. ' Attack Speed'
	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

-- Armor tooltips --
local head = {
	{'Leather Cap', 1 },
	{'Chainmail Helmet', 2 },
	{'Iron Helmet', 2 },
	{'Golden Helmet', 2 },
	{'Diamond Helmet', 3, 2 },
	{'Netherite Helmet', 3, 3, 1 },
	{'Turtle Shell', 2 },
}

local body = {
	{'Leather Tunic', 3 },
	{'Chainmail Chestplate', 5 },
	{'Iron Chestplate', 6 },
	{'Golden Chestplate', 5 },
	{'Diamond Chestplate', 8, 2 },
	{'Netherite Chestplate', 8, 3, 1 },
}

local legs = {
	{'Leather Pants', 2 },
	{'Chainmail Leggings', 4 },
	{'Iron Leggings', 5 },
	{'Golden Leggings', 3 },
	{'Diamond Leggings', 6, 2 },
	{'Netherite Leggings', 6, 3, 1 },
}

local feet = {
	{'Leather Boots', 1 },
	{'Chainmail Boots', 1 },
	{'Iron Boots', 2 },
	{'Golden Boots', 1 },
	{'Diamond Boots', 3, 2 },
	{'Netherite Boots', 3, 3, 1 },
}

local equipped = {
	{'Leather Horse Armor', 3 },
	{'Iron Horse Armor', 5 },
	{'Golden Horse Armor', 7 },
	{'Diamond Horse Armor', 11, 2 },
	{'Wolf Armor', 11 },
}

local bodyParts = {
    {head, "on Head"},
    {body, "on Body"},
    {legs, "on Legs"},
    {feet, "on Feet"},
    {equipped, "equipped"}
}

local allItems = {}

for _, bodyPart in ipairs(bodyParts) do
    local items = bodyPart[1]
    local bodyPartName = bodyPart[2]
    
    for _, toolProps in ipairs(items) do
        local aliasName = toolProps[1]
        local text = '/&7When ' .. bodyPartName .. ':/&9+' .. toolProps[2] .. ' Armor/'
        if toolProps[3] then
            text = text .. '+' .. toolProps[3] .. ' Armor Toughness/'
        end
        if toolProps[4] then
            text = text .. '+' .. toolProps[4] .. ' Knockback Resistance'
        end
        aliases[aliasName] = { title = aliasName, name = aliasName, text = text }
        allItems[aliasName] = {title = aliasName, name = aliasName, text = text}
    end
end

-- Lists of item variants --
local itemVariants = {
	['Small 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', 'Torchflower' },
	['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', 'Cobblestone Slab', 'Mossy Cobblestone Slab', 'Smooth Stone Slab', 'Stone Brick Slab', 'Mossy Stone Brick Slab', 
		'Granite Slab', 'Polished Granite Slab', 'Diorite Slab', 'Polished Diorite Slab', 'Andesite Slab', 'Polished Andesite Slab', 
		'Cobbled Deepslate Slab', 'Polished Deepslate Slab', 'Deepslate Brick Slab', 'Deepslate Tile Slab', 'Brick Slab', 'Mud Brick Slab', 
		'Sandstone Slab', 'Smooth Sandstone Slab', 'Cut Sandstone Slab', 'Red Sandstone Slab', 'Smooth Red Sandstone Slab', 'Cut Red Sandstone Slab', 'Prismarine Slab', 'Prismarine Brick Slab', 'Dark Prismarine Slab', 
		'Nether Brick Slab', 'Red Nether Brick Slab', 'Blackstone Slab', 'Polished Blackstone Slab', 'Polished Blackstone Brick Slab', 'End Stone Brick Slab', 'Purpur Slab', 'Quartz Slab', 'Smooth Quartz Slab', 'Petrified Oak Slab' },
	['Stone Stairs'] = { 'Stone Stairs', 'Cobblestone Stairs', 'Mossy Cobblestone Stairs', 'Stone Brick Stairs', 'Mossy Stone Brick Stairs', 
		'Granite Stairs', 'Polished Granite Stairs', 'Diorite Stairs', 'Polished Diorite Stairs', 'Andesite Stairs', 'Polished Andesite Stairs', 
		'Cobbled Deepslate Stairs', 'Polished Deepslate Stairs', 'Deepslate Brick Stairs', 'Deepslate Tile Stairs', 'Brick Stairs', 'Mud Brick Stairs', 
		'Sandstone Stairs', 'Smooth Sandstone Stairs', 'Red Sandstone Stairs', 'Smooth Red Sandstone Stairs', 'Prismarine Stairs', 'Prismarine Brick Stairs', 'Dark Prismarine Stairs', 
		'Nether Brick Stairs', 'Red Nether Brick Stairs', 'Blackstone Stairs', 'Polished Blackstone Stairs', 'Polished Blackstone Brick Stairs', 'End Stone Brick Stairs', 'Purpur Stairs', 'Quartz Stairs', 'Smooth Quartz Stairs' },
	['Wall'] = { 'Cobblestone Wall', 'Mossy Cobblestone Wall', 'Stone Brick Wall', 'Mossy Stone Brick Wall', 'Granite Wall', 'Diorite Wall', 'Andesite Wall', 
		'Cobbled Deepslate Wall', 'Polished Deepslate Wall', 'Deepslate Brick Wall', 'Deepslate Tile Wall', 'Brick Wall', 'Mud Brick Wall', 'Sandstone Wall', 'Red Sandstone Wall', 'Prismarine Wall', 
		'Nether Brick Wall', 'Red Nether Brick Wall', 'Blackstone Wall', 'Polished Blackstone Wall', 'Polished Blackstone Brick Wall', 'End Stone Brick Wall' },
	['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'] = { 'Prismarine', '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' },
	['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' },
}

-- Copper --
local copperstuff = {
	'Block of Copper',
	'Cut Copper',
	'Cut Copper Stairs',
	'Cut Copper Slab',
	'Chiseled Copper',
	'Copper Grate',
	'Copper Bulb',
	'Copper Door',
	'Copper Trapdoor',
}
local coppervariants = { '', 'Exposed ', 'Weathered ', 'Oxidized ' }
for _, copper in ipairs( copperstuff ) do
	itemVariants['Unwaxed ' .. copper] = {}
	itemVariants['Waxed ' .. copper] = {}
	for _, coppervariant in ipairs( coppervariants ) do
		local name = coppervariant .. copper
		if copper == 'Block of Copper' and coppervariant ~= '' then
			name = coppervariant .. 'Copper'
		end
		table.insert( itemVariants['Unwaxed ' .. copper], name )
		table.insert( itemVariants['Waxed ' .. copper], 'Waxed ' .. name )
	end
	itemVariants[copper] = {}
	for _, copperitem in ipairs( itemVariants['Unwaxed ' .. copper] ) do
		table.insert( itemVariants[copper], copperitem )
	end
	for _, copperitem in ipairs( itemVariants['Waxed ' .. copper] ) do
		table.insert( itemVariants[copper], copperitem )
	end
end

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'      },
	{ 'Otherside', 'Lena Raine',   'otherside' },
	{ 'Pigstep',   'Lena Raine',               },
	{ '5',         'Samuel Åberg',             },
	{ 'Relic',     'Aaron Cherof',             },
	{ 'Precipice',           'Aaron Cherof',             },
	{ 'Creator',             'Lena Raine',             },
	{ 'Creator (Music Box)', '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

-- 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 = '&fDisc Fragment', name = name, text = '&7Music Disc - ' .. trackname }
end

-- Paintings --
local paintings = { 
	{ 'Kebab med tre pepperoni ',   'Kristoffer Zetterstrand', '1x1'},
	{ 'de_aztec',                   'Kristoffer Zetterstrand', '1x1'},
	{ 'Albanian',                   'Kristoffer Zetterstrand', '1x1'},
	{ 'Target Successfully Bombed', 'Kristoffer Zetterstrand', '1x1'},
	{ 'Paradisträd',                'Kristoffer Zetterstrand', '1x1'},
	{ 'Wasteland',                  'Kristoffer Zetterstrand', '1x1'},
	{ 'Meditative',                 'Sarah Boeving',           '1x1'},
	{ 'Wanderer',                   'Kristoffer Zetterstrand', '1x2'},
	{ 'Graham',                     'Kristoffer Zetterstrand', '1x2'},
	{ 'Prairie Ride',               'Sarah Boeving',           '1x2'},
	{ 'The Pool',                   'Kristoffer Zetterstrand', '2x1'},
	{ 'Bonjour Monsieur Courbet ',  'Kristoffer Zetterstrand', '2x1'},
	{ 'sunset_dense',               'Kristoffer Zetterstrand', '2x1'},
	{ 'Seaside',                    'Kristoffer Zetterstrand', '2x1'},
	{ 'Creebet',                    'Kristoffer Zetterstrand', '2x1'},
	{ 'Match',                      'Kristoffer Zetterstrand', '2x2'},
	{ 'Bust',                       'Kristoffer Zetterstrand', '2x2'},
	{ 'The Stage Is Set',           'Kristoffer Zetterstrand', '2x2'},
	{ 'The void',                   'Kristoffer Zetterstrand', '2x2'},
	{ 'Skull and Roses',            'Kristoffer Zetterstrand', '2x2'},
	{ 'Wither',                     'Mojang',                  '2x2'},
	{ 'Baroque',                    'Sarah Boeving',           '2x2'},
	{ 'Humble',                     'Sarah Boeving',           '2x2'},
	{ 'Bouquet',                    'Kristoffer Zetterstrand', '3x3'},
	{ 'Cavebird',                   'Kristoffer Zetterstrand', '3x3'},
	{ 'Cotán',                      'Kristoffer Zetterstrand', '3x3'},
	{ 'Endboss',                    'Kristoffer Zetterstrand', '3x3'},
	{ 'Fern',                       'Kristoffer Zetterstrand', '3x3'},
	{ 'Owlemons',                   'Kristoffer Zetterstrand', '3x3'},
	{ 'Sunflowers',                 'Kristoffer Zetterstrand', '3x3'},
	{ 'Tides',                      'Kristoffer Zetterstrand', '3x3'},
	{ 'Backyard',                   'Kristoffer Zetterstrand', '3x4'},
	{ 'Pond',                       'Kristoffer Zetterstrand', '3x4'},
	{ 'Fighters',                   'Kristoffer Zetterstrand', '4x2'},
	{ 'Changing',                   'Kristoffer Zetterstrand', '4x2'},
	{ 'Finding',                    'Kristoffer Zetterstrand', '4x2'},
	{ 'Lowmist',                    'Kristoffer Zetterstrand', '4x2'},
	{ 'Passage',                    'Kristoffer Zetterstrand', '4x2'},
	{ 'Mortal Coil',                'Kristoffer Zetterstrand', '4x3'},
	{ 'Kong',                       'Kristoffer Zetterstrand', '4x3'},
	{ 'Pointer',                    'Kristoffer Zetterstrand', '4x4'},
	{ 'Pigscene',                   'Kristoffer Zetterstrand', '4x4'},
	{ 'Skull On Fire',              'Kristoffer Zetterstrand', '4x4'},
	{ 'Unpacked',                   'Sarah Boeving',           '4x4'},
	{ 'Orb',                        'Kristoffer Zetterstrand', '4x4'},
	{ 'Earth',                      'Mojang',                  '2x2'},
	{ 'Wind',                       'Mojang',                  '2x2'},
	{ 'Fire',                       'Mojang',                  '2x2'},
	{ 'Water',                      'Mojang',                  '2x2'}
}
for _, painting in ipairs( paintings ) do
	local name = 'Painting ' .. painting[1]
	local artist = painting[2]
	local artwork = painting[1]
	local size = painting[3]
	aliases[name] = { title = 'Painting', name = 'Painting', text = '&e' .. artwork .. '/&7' .. artist .. '/' .. '&f' .. size }
end

-- Damaged armor, note it skips tools and weapons as they are handled above to add the damage tooltip --
local damagedItems = {
	'Bow',
	'Brush',
	'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',
	'Flow',
	'Flower Charge',
	'Globe',
	'Gradient',
	'Guster',
	'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',
	'Light Gray',
	'Gray',
	'Black',
	'Brown',
	'Red',
	'Orange',
	'Yellow',
	'Lime',
	'Green',
	'Cyan',
	'Light Blue',
	'Blue',
	'Purple',
	'Magenta',
	'Pink'
}

-- 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 = {
	withWhite = {
		'Balloon',
		'Banner',
		'Bed',
		'Carpet',
		'Concrete',
		'Concrete Powder',
		'Glazed Terracotta',
		'Glow Stick',
		'Hardened $1 Stained Glass',
		'Hardened $1 Stained Glass Pane',
		'Shield',
		'Shulker Box',
		'Stained Glass',
		'Stained Glass Pane',
		'Wool',

		'$Dyed Terracotta',
		'$Dyed Candle',
	},
	noWhite = {
		'$Dyed Wool',
		'$Dyed Bed',
		'$Dyed Carpet',
		'$Colored Dye',
	}
}

local coloredBadItems = {
	['Light Gray Glow Stick'] = 1,
	['Black Glow Stick'] = 1,
}

for type, items in pairs( coloredItems ) do
	for _, item in ipairs( items ) do
		local coloredItemAliases = {}
		local defaultItemAliases

		if item:find( '%$[^1]' ) then
			defaultItemAliases = {}
			local itemName
			if type == 'noWhite' then
				itemName = item:gsub( '%$%w+', 'White' )
			else
				itemName = item:gsub( '%$%w+ ', '' )
			end
			table.insert( defaultItemAliases, itemName )
		end

		for _, color in ipairs( colors ) do
			local itemName
			if type ~= 'noWhite' or color ~= 'White' then
				if item:find( '%$1' ) then
					itemName = item:gsub( '%$1', color )
				elseif item:find( '%$' ) then
					itemName = item:gsub( '%$%w+', color )
				else
					itemName = color .. ' ' .. item
				end
			end

			if not coloredBadItems[itemName] then
				if defaultItemAliases then
					table.insert( defaultItemAliases, itemName )
				end

				table.insert( coloredItemAliases, itemName )
			end
		end

		if defaultItemAliases then
			local defaultItem = item:gsub( '%$%w+ ', '' )
			aliases['Any ' .. defaultItem] = defaultItemAliases
			aliases['Matching ' .. defaultItem] = defaultItemAliases
		end
		item = item:gsub( '%$1 ', '' )
		item = item:gsub( '%$', '' )
		aliases['Any ' .. item] = coloredItemAliases
		aliases['Matching ' .. item] = coloredItemAliases
	end
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' }}},
	{ name = 'Oozing',  effect = '&cOozing', durations = { normal = { '3:00' }, lingering = { '0:45' }, arrow = { '0:22' }}},
	{ name = 'Infestation',  effect = '&cInfested', durations = { normal = { '3:00' }, lingering = { '0:45' }, arrow = { '0:22' }}},
	{ name = 'Weaving',  effect = '&cWeaving', durations = { normal = { '3:00' }, lingering = { '0:45' }, arrow = { '0:22' }}},
	{ name = 'Wind Charging',  effect = '&cWind Charged', durations = { normal = { '3:00' }, lingering = { '0:45' }, arrow = { '0:22' }}}
}
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
		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',
        'Cherry',
        'Bamboo',
    },
    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 = {
        'Log',
        'Wood',
        'Stripped $1 Log',
        'Stripped $1 Wood',
        'Boat',
        'Boat with Chest',
        'Sapling',
    },
    nether = {
        'Stem',
        'Hyphae',
        'Stripped $1 Stem',
        'Stripped $1 Hyphae',
    },
    both = {
		-- Any/Matching X or Y
        '${Log,Stem}',
        '${Wood,Hyphae}',
        'Stripped $1 ${Wood,Hyphae}',
        'Stripped $1 ${Log,Stem}',

		-- Dimensional prefixes
        '$world Planks',
        '$world $wood Stairs',
        '$world $wood Slab',
        '$world $wood Fence',
        '$world $wood Fence Gate',
        '$world $wood Door',
        '$world $wood Trapdoor',
        '$world $wood Pressure Plate',
        '$world $wood Button',
        '$world $wood Sign',
        '$world $wood Hanging Sign',

		-- Both dimensions
		-- Items with non-wood variants include $wood
        'Planks',
        '$wood Stairs',
        '$wood Slab',
        '$wood Fence',
        'Fence Gate',
        '$wood Door',
        '$wood Trapdoor',
        '$wood Pressure Plate',
        '$wood Button',
        'Sign',
        'Hanging 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'
		else
			woodItemWorld[item] = world
		end
    end
end

local woodBadItems = {
	['Bamboo Sapling'] = 1,
	['Bamboo Wood'] = 1,
	['Bamboo Log'] = 1,
	['Stripped Bamboo Wood'] = 1,
	['Stripped Bamboo Log'] = 1,
}

local woodNameMapping = {
	['Mangrove Sapling'] = 'Mangrove Propagule',
	['Bamboo Boat'] = 'Bamboo Raft',
	['Bamboo Boat with Chest'] = 'Bamboo Raft with Chest',
}

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
		
		-- special handling
		if woodNameMapping[itemName] then
			itemName = woodNameMapping[itemName]
		end

		if not woodBadItems[itemName] then
			table.insert(woodAliases, itemName)
		end
	end

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

-- Bedrock Edition Items --
local editionItems = {
	BE = {
		'Acacia Fence Gate',
		'Andesite Wall',
		'Beacon',
		'Birch Fence Gate',
		'Black Stained Glass Pane',
		'Blackstone Wall',
		'Blue Ice',
		'Blue Stained Glass Pane',
		'Bow',
		'Brick Wall',
		'Brown Stained Glass Pane',
		'Bucket of Pufferfish',
		'Bucket of Tropical Fish',
		'Buried Treasure Map',
		'Cat Spawn Egg',
		'Chest',
		'Cobbled Deepslate Wall',
		'Cobblestone Wall',
		'Conduit',
		'Creeper Head',
		'Crimson Fence Gate',
		'Crying Obsidian',
		'Cyan Stained Glass Pane',
		'Dark Oak Fence Gate',
		'Deepslate Brick Wall',
		'Deepslate Tile Wall',
		'Desert Village Map',
		'Diorite Wall',
		'Dragon Egg',
		'Dragon Head',
		'Enchanting Table',
		'End Gateway',
		'End Portal Frame',
		'End Portal',
		'End Rod',
		'End Stone Brick Wall',
		'Ender Chest',
		'Flowing Lava',
		'Glass Pane',
		'Glowstone',
		'Granite Wall',
		'Gray Stained Glass Pane',
		'Green Stained Glass Pane',
		'Head',
		'Honey Block',
		'Horn Coral Block',
		'Iron Bars',
		'Jack o\'Lantern',
		'Jungle Explorer Map',
		'Jungle Fence Gate',
		'Jungle Leaves',
		'Lava',
		'Leather Horse Armor',
		'Light Blue Stained Glass Pane',
		'Light Gray Stained Glass Pane',
		'Lime Stained Glass Pane',
        'Lodestone Compass',
		'Magenta Stained Glass Pane',
		'Magma Block',
		'Map',
		'Minecart with Command Block',
		'Monster Spawner',
		'Mossy Cobblestone Wall',
		'Mossy Stone Brick Wall',
		'Mud Brick Wall',
		'Nether Brick Wall',
		'Oak Fence Gate',
		'Observer',
		'Ocean Explorer Map',
		'Orange Stained Glass Pane',
		'Panda Spawn Egg',
		'Peony',
		'Pink Stained Glass Pane',
		'Plains Village Map',
		'Polished Blackstone Wall',
		'Polished Blackstone Brick Wall',
		'Polished Deepslate Wall',
		'Prismarine Wall',
		'Purple Stained Glass Pane',
		'Red Nether Brick Wall',
		'Red Sandstone Wall',
		'Red Stained Glass Pane',
		'Rose Bush',
		'Sandstone Wall',
		'Savanna Village Map',
		'Scaffolding',
		'Sea Lantern',
		'Shroomlight',
		'Skeleton Skull',
		'Snowy Village Map',
		'Spawn Cat',
		'Spawn Panda',
		'Spawn Wandering Trader',
		'Spawner',
		'Spruce Fence Gate',
		'Stone Brick Wall',
		'Stonecutter',
		'Structure Void',
		'Swamp Explorer Map',
		'Taiga Village Map',
		'Trapped Chest',
		'Trial Explorer Map',
		'Wandering Trader Spawn Egg',
		'Warped Fence Gate',
		'White Stained Glass Pane',
		'Wither Skeleton Skull',
		'Woodland Explorer Map',
		'Yellow Stained Glass Pane',
		'Zombie Head',
	},
	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 = "&dLight", name = "Light " .. level}
end
aliases["Light Negative"] = {title = "&dLight", name = "Light Negative"}

-- Smithing Template
local smithing_templates = {
	{ 'Netherite Upgrade',    'Diamond Equipment', 'Netherite Ingot'  },
	{ 'Bolt Armor Trim',      'Armor',             'Ingot & Crystals' },
	{ 'Coast Armor Trim',     'Armor',             'Ingot & Crystals' },
	{ 'Dune Armor Trim',      'Armor',             'Ingot & Crystals' },
	{ 'Eye Armor Trim',       'Armor',             'Ingot & Crystals' },
	{ 'Flow Armor Trim',      'Armor',             'Ingot & Crystals' },
	{ 'Host Armor Trim',      'Armor',             'Ingot & Crystals' },
	{ 'Raiser Armor Trim',    'Armor',             'Ingot & Crystals' },
	{ 'Rib Armor Trim',       'Armor',             'Ingot & Crystals' },
	{ 'Sentry Armor Trim',    'Armor',             'Ingot & Crystals' },
	{ 'Shaper Armor Trim',    'Armor',             'Ingot & Crystals' },
	{ 'Silence Armor Trim',   'Armor',             'Ingot & Crystals' },
	{ 'Snout Armor Trim',     'Armor',             'Ingot & Crystals' },
	{ 'Spire Armor Trim',     'Armor',             'Ingot & Crystals' },
	{ 'Tide Armor Trim',      'Armor',             'Ingot & Crystals' },
	{ 'Vex Armor Trim',       'Armor',             'Ingot & Crystals' },
	{ 'Ward Armor Trim',      'Armor',             'Ingot & Crystals' },
	{ 'Wayfinder Armor Trim', 'Armor',             'Ingot & Crystals' },
	{ 'Wild Armor Trim',      'Armor',             'Ingot & Crystals' },

}
local smithing_template_array = {}
local armor_trims_array = {}
for _,smithing_template in pairs(smithing_templates) do
	local current_alias = {
		title = 'Smithing Template',
		name = smithing_template[1] .. ' Smithing Template',
		text = '&7' .. smithing_template[1] .. '//Applies to:/ &9' .. smithing_template[2] .. '/&7Ingredients:/ &9' .. smithing_template[3],
	}
	aliases[smithing_template[1]] = current_alias
	aliases[smithing_template[1] .. ' Smithing Template'] = current_alias
	table.insert(smithing_template_array,current_alias)
	if string.find(smithing_template[1],' Armor Trim$') then
		table.insert(armor_trims_array,current_alias)
	end
end
aliases['Matching Smithing Template'] = smithing_template_array
aliases['Any Smithing Template'] = smithing_template_array
aliases['Matching Armor Trim'] = armor_trims_array
aliases['Any Armor Trim'] = armor_trims_array
aliases['Matching Armor Trim Smithing Template'] = armor_trims_array
aliases['Any Armor Trim Smithing Template'] = armor_trims_array

return aliases