Module:Inventory slot/Aliases: Difference between revisions

mNo edit summary
m 1 revision imported
 
(191 intermediate revisions by 37 users not shown)
Line 1: Line 1:
local coloredDyes = {
'Orange Dye', 'Magenta Dye', 'Light Blue Dye', 'Yellow Dye', 'Lime Dye',
'Pink Dye', 'Gray Dye', 'Light Gray Dye', 'Cyan Dye', 'Purple Dye',
'Blue Dye', 'Brown Dye', 'Green Dye',
'Red Dye', 'Black Dye',
}
local aliases = {
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' }, 'Lava Bucket', 'Block of Coal' },
-- All armor --
['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' },
Line 14: Line 10:
['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 netherite armor'] = { 'Netherite Helmet', 'Netherite Chestplate', 'Netherite Leggings', 'Netherite Boots' },
-- Wood --
['Any Log'] = { 'Oak Log', 'Spruce Log', 'Birch Log', 'Jungle Log', 'Acacia Log', 'Dark Oak Log', 'Crimson Stem', 'Warped Stem' },
['Any Stripped Log'] = { 'Stripped Oak Log', 'Stripped Spruce Log', 'Stripped Birch Log', 'Stripped Jungle Log', 'Stripped Acacia Log', 'Stripped Dark Oak Log', 'Stripped Crimson Stem', 'Stripped Warped Stem' },
['Any Wood'] = { 'Oak Wood', 'Spruce Wood', 'Birch Wood', 'Jungle Wood', 'Acacia Wood', 'Dark Oak Wood', 'Crimson Hyphae', 'Warped Hyphae' },
['Any Stripped Wood'] = { 'Stripped Oak Wood', 'Stripped Spruce Wood', 'Stripped Birch Wood', 'Stripped Jungle Wood', 'Stripped Acacia Wood', 'Stripped Dark Oak Wood', 'Stripped Crimson Hyphae', 'Stripped Warped Hyphae' },
['Any Overworld Log'] = { 'Oak Log', 'Spruce Log', 'Birch Log', 'Jungle Log', 'Acacia Log', 'Dark Oak Log' },
['Any Overworld Stripped Log'] = { 'Stripped Oak Log', 'Stripped Spruce Log', 'Stripped Birch Log', 'Stripped Jungle Log', 'Stripped Acacia Log', 'Stripped Dark Oak Log' },
['Any Overworld Wood'] = { 'Oak Wood', 'Spruce Wood', 'Birch Wood', 'Jungle Wood', 'Acacia Wood', 'Dark Oak Wood' },
['Any Overworld Stripped Wood'] = { 'Stripped Oak Wood', 'Stripped Spruce Wood', 'Stripped Birch Wood', 'Stripped Jungle Wood', 'Stripped Acacia Wood', 'Stripped Dark Oak Wood' },
['Any Sapling'] = { 'Oak Sapling', 'Spruce Sapling', 'Birch Sapling', 'Jungle Sapling', 'Acacia Sapling', 'Dark Oak Sapling' },
['Any Planks'] = { 'Oak Planks', 'Spruce Planks', 'Birch Planks', 'Jungle Planks', 'Acacia Planks', 'Dark Oak Planks', 'Crimson Planks', 'Warped Planks' },
['Any wood Stairs'] = { 'Oak Stairs', 'Spruce Stairs', 'Birch Stairs', 'Jungle Stairs', 'Acacia Stairs', 'Dark Oak Stairs', 'Crimson Stairs', 'Warped Stairs' },
['Any wood Slab'] = { 'Oak Slab', 'Spruce Slab', 'Birch Slab', 'Jungle Slab', 'Acacia Slab', 'Dark Oak Slab', 'Crimson Slab', 'Warped Slab' },
['Any wood Trapdoor'] = { 'Oak Trapdoor', 'Spruce Trapdoor', 'Birch Trapdoor', 'Jungle Trapdoor', 'Acacia Trapdoor', 'Dark Oak Trapdoor', 'Crimson Trapdoor', 'Warped Trapdoor' },
['Any wood Button'] = { 'Oak Button', 'Spruce Button', 'Birch Button', 'Jungle Button', 'Acacia Button', 'Dark Oak Button', 'Crimson Button', 'Warped Button' },
['Any wood Pressure Plate'] = { 'Oak Pressure Plate', 'Spruce Pressure Plate', 'Birch Pressure Plate', 'Jungle Pressure Plate', 'Acacia Pressure Plate', 'Dark Oak Pressure Plate', 'Crimson Pressure Plate', 'Warped Pressure Plate' },
['Any wood Door'] = { 'Oak Door', 'Spruce Door', 'Birch Door', 'Jungle Door', 'Acacia Door', 'Dark Oak Door', 'Crimson Door', 'Warped Door' },
['Any wood Fence'] = { 'Oak Fence', 'Spruce Fence', 'Birch Fence', 'Jungle Fence', 'Acacia Fence', 'Dark Oak Fence', 'Crimson Fence', 'Warped Fence' },
['Any Fence Gate'] = { 'Oak Fence Gate', 'Spruce Fence Gate', 'Birch Fence Gate', 'Jungle Fence Gate', 'Acacia Fence Gate', 'Dark Oak Fence Gate', 'Crimson Fence Gate', 'Warped Fence Gate' },
['Any Sign'] = { 'Oak Sign', 'Spruce Sign', 'Birch Sign', 'Jungle Sign', 'Acacia Sign', 'Dark Oak Sign', 'Crimson Sign', 'Warped Sign' },
['Any Boat'] = { 'Oak Boat', 'Spruce Boat', 'Birch Boat', 'Jungle Boat', 'Acacia Boat', 'Dark Oak Boat' },


     -- stones --
     -- Stones --
['Any Cobblestone or Blackstone'] = { 'Cobblestone', 'Blackstone' },
['Any Cobblestone or Blackstone'] = { 'Cobblestone', 'Blackstone' },
['Any stone-tier block'] = { 'Cobblestone', 'Blackstone', 'Cobbled Deepslate' },
 
-- Miscellaeous collections --
['Any leaves'] = { 'Oak Leaves', 'Spruce Leaves', 'Birch Leaves', 'Acacia Leaves', 'Jungle Leaves', 'Dark Oak Leaves', 'Mangrove Leaves', 'Cherry Leaves', 'Pale Oak Leaves', 'Azalea Leaves', 'Flowering Azalea Leaves' };
['Any egg'] = { 'Egg', 'Blue Egg', 'Brown Egg'};
 
-- Display names --
-- Display names --
['Broken Elytra'] = { title = '&eElytra', name = 'Broken Elytra' },
['Broken Elytra'] = { title = '&dElytra', name = 'Broken Elytra' },
['Clay (block)'] = { title = 'Clay', name = 'Clay (block)' }, --remove on Nether Update's release if bedrock also changes the item name
['Clay (ball)'] = { title = 'Clay', name = 'Clay (ball)' }, --remove on Nether Update's release if bedrock also changes the item name
['Banner Pattern Flower'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Flower Charge'},
['Banner Pattern Flower Charge'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Flower Charge'},
['Banner Pattern Creeper Charge'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Creeper Charge'},
['Banner Pattern Creeper'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Creeper Charge'},
['Banner Pattern Bordure Indented'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Bordure Indented'},
['Banner Pattern Field Masoned'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Field Masoned'},
['Banner Pattern Skull Charge'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Skull Charge'},
['Banner Pattern Skull'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Skull Charge'},
['Banner Pattern Thing'] = { title = '&dBanner Pattern', name = 'Banner Pattern', text = '&7Thing'},
['Banner Pattern Globe'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Globe'},
['Banner Pattern Piglin'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Piglin'},
['Button'] = { title = 'Button', name = 'Stone Button'},
['Button'] = { title = 'Button', name = 'Stone Button'},
['Wooden Button'] = { title = 'Button', name = 'Oak Button'},
['Wooden Button'] = { title = 'Button', name = 'Oak Button'},
Line 61: Line 27:
['Firework Loaded Crossbow'] = { title = 'Crossbow', name = 'Firework Loaded Crossbow' },
['Firework Loaded Crossbow'] = { title = 'Crossbow', name = 'Firework Loaded Crossbow' },
['Damaged Firework Loaded Crossbow'] = { title = 'Crossbow', name = 'Damaged Firework Loaded Crossbow' },
['Damaged Firework Loaded Crossbow'] = { title = 'Crossbow', name = 'Damaged Firework Loaded Crossbow' },
['Illager Banner'] = { title = '&6&oIllager Banner', name = 'Illager Banner', text =  
['Ominous Banner'] = { title = '&6&oOminous Banner', name = 'Ominous Banner', text =  
'&7Cyan Lozenge/&7Light Gray Base/&7Gray Pale/&7Light Gray Bordure/&7Black Fess/&7Light Gray Per Fess'},
'&7Cyan Lozenge/&7Light Gray Base/&7Gray Pale/&7Light Gray Bordure/&7Black Fess/&7Light Gray Per Fess'},
['Jigsaw Block'] = { title = '&dJigsaw Block', name = 'Jigsaw Block' },
['Half Filled Bundle'] = { title = 'Bundle', name = 'Half Filled Bundle' },
['Filled Bundle'] = { title = 'Bundle', name = 'Filled Bundle' },


-- Weapons --
-- Empty display name --
['Trident'] = { name = 'Trident', text = '/&7 When in main hand:/ &2 1.1 Attack Speed/ &2 9 Attack Damage'},
['debug_fourj_item'] = { title = '\226\128\140', name = 'debug_fourj_item' },
 
-- Equipment with custom rarity --
['Trident'] = { title = '&bTrident', name = 'Trident', text = '/&7 When in Main Hand:/ &29 Attack Damage/ &21.1 Attack Speed'},
['Damaged Trident'] = { title = '&bTrident', name = 'Damaged Trident', text = '/&7 When in Main Hand:/ &29 Attack Damage/ &21.1 Attack Speed'},
['Trident BE'] = { title = '&bTrident', name = 'Trident', 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 +5 Attack Damage'},
["Damaged Elytra"] = { title = "&dElytra", name = "Damaged Elytra" },
["Damaged Chainmail Boots"] = { title = "&eChainmail Boots", name = "Damaged Chainmail Boots" },
["Damaged Chainmail Chestplate"] = { title = "&eChainmail Chestplate", name = "Damaged Chainmail Chestplate" },
["Damaged Chainmail Helmet"] = { title = "&eChainmail Helmet", name = "Damaged Chainmail Helmet" },
["Damaged Chainmail Leggings"] = { title = "&eChainmail Leggings", name = "Damaged Chainmail Leggings" },
-- Ominous Bottles --
    ['Ominous Bottle'] = { title = '&eOminous Bottle', name = 'Ominous Bottle', text = '&9Bad Omen (01:40:00)' },
    ['Ominous Bottle II'] = { title = '&eOminous Bottle', name = 'Ominous Bottle', text = '&9Bad Omen II (01:40:00)' },
    ['Ominous Bottle III'] = { title = '&eOminous Bottle', name = 'Ominous Bottle', text = '&9Bad Omen III (01:40:00)' },
    ['Ominous Bottle IV'] = { title = '&eOminous Bottle', name = 'Ominous Bottle', text = '&9Bad Omen IV (01:40:00)' },
    ['Ominous Bottle V'] = { title = '&eOminous Bottle', name = 'Ominous Bottle', text = '&9Bad Omen V (01:40:00)' },


-- Bedrock and Education Edition display names --
-- Bedrock and Education Edition display names --
['Buried Treasure Map BE'] = { title = 'Treasure Map', name = 'Buried Treasure Map BE' },
['Elytra Wings'] = { title = 'Elytra Wings', name = 'Elytra' },
['Elytra Wings'] = { title = 'Elytra Wings', name = 'Elytra' },
['Cooked Beef'] = { title = 'Cooked Beef', name = 'Steak' },
['Glowing Obsidian'] = { title = 'tile.glowingobsidian.name', name = 'Glowing Obsidian' },
['Map (no markers)'] = { title = 'Map', name = 'Map', text = 'Display Markers: &cNo' },
['Map (no markers)'] = { title = 'Map', name = 'Map', text = 'Display Markers: &cNo' },
['Locator Map'] = { 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' },
['Rose BE'] = { title = 'Rose', name = 'Rose BE' },
['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' },
['Smooth Purpur'] = { title = 'tile.deprecated_purpur_block_2.name', name = 'Smooth Purpur' },
['Beacon BE'] = { title = '&bBeacon', name = 'Beacon BE' },
['Conduit BE'] = { title = '&eConduit', name = 'Conduit BE' },
['Dragon Egg BE'] = { title = '&dDragon Egg', name = 'Dragon Egg BE' },
['Skeleton Skull BE'] = { title = '&eSkeleton Skull', name = 'Skeleton Skull BE' },
['Wither Skeleton Skull BE'] = { title = '&bWither Skeleton Skull', name = 'Wither Skeleton Skull BE' },
['Zombie Head BE'] = { title = '&eZombie Head', name = 'Zombie Head BE' },
['Player Head BE'] = { title = '&ePlayer Head', name = 'Player Head BE' },
['Creeper Head BE'] = { title = '&eCreeper Head', name = 'Creeper Head BE' },
['Dragon Head BE'] = { title = '&dDragon Head', name = 'Dragon Head BE' },


-- Chemistry --
-- Chemistry --
Line 81: Line 85:
['Matching Chloride'] = { 'Cerium Chloride', 'Mercuric Chloride', 'Potassium Chloride', 'Tungsten Chloride' },
['Matching Chloride'] = { 'Cerium Chloride', 'Mercuric Chloride', 'Potassium Chloride', 'Tungsten Chloride' },
['Matching Colored Torch'] = { 'Blue Torch', 'Red Torch', 'Purple Torch', 'Green Torch' },
['Matching Colored Torch'] = { 'Blue Torch', 'Red Torch', 'Purple Torch', 'Green Torch' },
['Matching Glow Stick'] = { 'White Glow Stick', 'Orange Glow Stick', 'Magenta Glow Stick', 'Light Blue Glow Stick',
'Yellow Glow Stick', 'Lime Glow Stick', 'Pink Glow Stick', 'Gray Glow Stick', 'Cyan Glow Stick',
-- April Fools' Day jokes --
'Purple Glow Stick', 'Blue Glow Stick', 'Brown Glow Stick', 'Green Glow Stick', 'Red Glow Stick' },
['New Thing Banner Pattern'] = { title = '&dBanner Pattern', name = 'New Thing Banner Pattern', text = '&7New Thing'},
-- 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' },
-- Old textures --
['Apple Revision 1'] = { title = 'Apple', name = 'Apple Revision 1' },
}
}


-- Tooltip colors --
-- Tooltip colors --
local yellowTooltips = {
local yellowTooltips = {
'Creeper Head',
    'Bottle o\' Enchanting',
'Damaged Elytra',
    'Chainmail Boots',
'Dragon Head',
    'Chainmail Chestplate',
'Dragon\'s Breath',
    'Chainmail Helmet',
'Elytra',
    'Chainmail Leggings',
'Head',
    'Conduit',
'Heart of the Sea',
    'Creeper Charge Banner Pattern',
'Player Head',
    'Creeper Head',
'Skeleton Skull',
    'Disc Fragment 5',
'Totem of Undying',
    'Dragon\'s Breath',
'Wither Skeleton Skull',
    'Echo Shard',
'Zombie Head',
    'Enchanted Book',
    'Goat Horn',
    'Heart of the Sea',
    'Nautilus Shell',
    'Ominous Banner',
    'Piglin Head',
    'Player Head',
    'Recovery Compass',
    'Skeleton Skull',
    'Sniffer Egg',
    'Snout Banner Pattern',
    'Totem of Undying',
    'Zombie Head',
}
}
for _, name in ipairs( yellowTooltips ) do
for _, name in ipairs( yellowTooltips ) do
Line 107: Line 128:
local aquaTooltips = {
local aquaTooltips = {
'Beacon',
'Beacon',
'Conduit',
'Enchanted Golden Apple',
'End Crystal',
    'Flow Banner Pattern',
'Golden Apple',
'Guster Banner Pattern',
'Nether Star',
    'Skull Charge Banner Pattern',
    'Thing Banner Pattern',
    'Wither Skeleton Skull',
}
}
for _, name in ipairs( aquaTooltips ) do
for _, name in ipairs( aquaTooltips ) do
Line 115: Line 140:
end
end


local lightPurpleTooltips = {
local magentaTooltips = {
'Barrier',
'Command Block',
'Chain Command Block',
'Debug Stick',
'Dragon Egg',
'Dragon Egg',
'Dragon Head',
'Elytra',
'Heavy Core',
'Jigsaw Block',
'Knowledge Book',
'Light',
'Repeating Command Block',
'Structure Block',
'Structure Block',
'Structure Void',
'Test Block',
'Test Instance Block',
}
}
for _, name in ipairs( lightPurpleTooltips ) do
for _, name in ipairs( magentaTooltips ) do
aliases[name] = { title = '&d', name = name }
aliases[name] = { title = '&d', name = name }
end
-- Animated icons --
local animatedIcons = {
'Bubble Column',
'Debug Stick',
'Fire',
'Heat Block',
'Lava',
'Lodestone Compass',
'Magma Block',
'Nether Portal',
'Prismarine',
'Prismarine Slab',
'Prismarine Stairs',
'Prismarine Wall',
'Sea Lantern',
'Stonecutter',
'Soul Fire',
'Water',
'Written Book'
}
for _, icon in ipairs( animatedIcons ) do
aliases[icon] = icon .. '.gif'
end
-- Some things are both animated and yellow --
local animatedIconsYellowTooltips = {
'Enchanted Book',
'Nether Star',
'Bottle o\' Enchanting',
}
for _, name in ipairs( animatedIconsYellowTooltips ) do
aliases[name] = { title = '&e', name = name .. '.gif' }
end
-- Some things are both animated and aqua --
local animatedIconsAquaTooltips = {
}
for _, name in ipairs( animatedIconsAquaTooltips ) do
aliases[name] = { title = '&b', name = name .. '.gif' }
end
-- Some things are both animated and purple --
local animatedIconsPurpleTooltips = {
'Command Block',
'Chain Command Block',
'Repeating Command Block',
'Enchanted Golden Apple',
}
for _, name in ipairs( animatedIconsPurpleTooltips ) do
aliases[name] = { title = '&d', name = name .. '.gif' }
end
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, 6 },
{'Iron', 'Sword', 6, 1.6 },
{'Golden', 'Sword', 1.6, 4 },
{'Golden', 'Sword', 4, 1.6 },
{'Diamond', 'Sword', 1.6, 7 },
{'Diamond', 'Sword', 7, 1.6 },
{'Netherite', 'Sword', 1.6, 8 },
{'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', 1.2, 6 },
{'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', 1, 9 },
{'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', 1.6, 6.5 },
{'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', 4, 1 }
{'Netherite', 'Hoe', 1, 4 }
}
}


Line 218: Line 205:
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 }
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 237: Line 227:
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 trimMaterial = {
{'Quartz', '&h'},
{'Iron', '&i'},
{'Netherite', '&j'},
{'Redstone', '&y'},
{'Copper', '&z'},
{'Gold', '&p'},
{'Emerald', '&q'},
{'Diamond', '&s'},
{'Lapis', '&t'},
{'Amethyst', '&u'},
{'Resin', '&v'},
{'Amber', '&6'},
}
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 damagedName
        if string.find(aliasName, "Horse Armor") then
            damagedName = aliasName
        else
            damagedName = 'Damaged ' .. aliasName
        end   
        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 }
        aliases[damagedName] = { title = aliasName, name = damagedName, text = text }
        if bodyPartName ~= "equipped" then
for _, materialType in ipairs( trimMaterial ) do
        local trimName = materialType[1] .. ' Trim ' .. aliasName
local trimText = '&7Upgrade:/ ' .. materialType[2] .. 'Armor Trim/ ' .. materialType[1] .. ' Material/'
aliases[trimName] = { title = aliasName, name = trimName, text = trimText .. text }
end
end
    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', 'Closed Eyeblossom', 'Open Eyeblossom' },
['Colored Dye'] = coloredDyes,
['Eyeblossom'] = { 'Closed Eyeblossom', 'Open Eyeblossom' },
['Dyed Wool'] = {
'Orange Wool', 'Magenta Wool', 'Light Blue Wool', 'Yellow Wool', 'Lime Wool',
'Pink Wool', 'Gray Wool', 'Light Gray Wool', 'Cyan Wool', 'Purple Wool',
'Blue Wool', 'Brown Wool', 'Green Wool', 'Red Wool', 'Black Wool',
},
['Dyed Bed'] = {
'Orange Bed', 'Magenta Bed', 'Light Blue Bed', 'Yellow Bed', 'Lime Bed',
'Pink Bed', 'Gray Bed', 'Light Gray Bed', 'Cyan Bed', 'Purple Bed',
'Blue Bed', 'Brown Bed', 'Green Bed', 'Red Bed', 'Black Bed',
},
['Dyed Carpet'] = {
'Orange Carpet', 'Magenta Carpet', 'Light Blue Carpet', 'Yellow Carpet', 'Lime Carpet',
'Pink Carpet', 'Gray Carpet', 'Light Gray Carpet', 'Cyan Carpet', 'Purple Carpet',
'Blue Carpet', 'Brown Carpet', 'Green Carpet', 'Red Carpet', 'Black Carpet',
},
['Dyed Terracotta'] = {
'White Terracotta', 'Orange Terracotta', 'Magenta Terracotta', 'Light Blue Terracotta',
'Yellow Terracotta', 'Lime Terracotta', 'Pink Terracotta', 'Gray Terracotta',
'Light Gray Terracotta', 'Cyan Terracotta', 'Purple Terracotta', 'Blue Terracotta',
'Brown Terracotta', 'Green Terracotta', 'Red Terracotta', 'Black Terracotta',
},
['Flower'] = { 'Oxeye Daisy', 'Cornflower', 'Lily of the Valley', 'Wither Rose', 'Red Tulip', 'Orange Tulip', 'White Tulip', 'Pink Tulip', 'Azure Bluet', 'Allium', 'Blue Orchid', 'Poppy', 'Dandelion' },
['Mushroom'] = { 'Red Mushroom', 'Brown Mushroom' },
['Mushroom'] = { 'Red Mushroom', 'Brown Mushroom' },
['Quartz Block'] = { 'Block of Quartz', 'Chiseled Quartz Block', 'Quartz Pillar' },
['Quartz Block'] = { 'Block of Quartz', 'Chiseled Quartz Block', 'Quartz Pillar' },
Line 270: Line 381:
['Sandstone'] = { 'Sandstone', 'Cut Sandstone', 'Chiseled Sandstone', 'Smooth Sandstone' },
['Sandstone'] = { 'Sandstone', 'Cut 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', 'Smooth Stone Slab', 'Cobblestone Slab', 'Mossy Cobblestone Slab', 'Stone Brick Slab', 'Mossy Stone Brick Slab', 'Andesite Slab', 'Polished Andesite Slab',
['Stone Slab'] = { 'Stone Slab', 'Cobblestone Slab', 'Mossy Cobblestone Slab', 'Smooth Stone Slab', 'Stone Brick Slab', 'Mossy Stone Brick Slab',
'Diorite Slab', 'Polished Diorite Slab', 'Granite Slab', 'Polished Granite Slab', 'Sandstone Slab', 'Cut Sandstone Slab', 'Smooth Sandstone Slab', 'Red Sandstone Slab', 'Cut Red Sandstone Slab',  
'Granite Slab', 'Polished Granite Slab', 'Diorite Slab', 'Polished Diorite Slab', 'Andesite Slab', 'Polished Andesite Slab',  
'Smooth Red Sandstone Slab', 'Brick Slab', 'Prismarine Slab', 'Prismarine Brick Slab', 'Dark Prismarine Slab', 'Nether Brick Slab', 'Red Nether Brick Slab', 'Quartz Slab',  
'Cobbled Deepslate Slab', 'Polished Deepslate Slab', 'Deepslate Brick Slab', 'Deepslate Tile Slab', 'Brick Slab', 'Mud Brick Slab', 'Resin Brick Slab',
'Smooth Quartz Slab', 'Purpur Slab', 'End Stone Brick Slab', 'Petrified Oak Slab', 'Blackstone Slab', 'Polished Blackstone Slab', 'Polished Blackstone 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',  
['Stone Stairs'] = { 'Stone Stairs', 'Cobblestone Stairs', 'Mossy Cobblestone Stairs', 'Stone Brick Stairs', 'Mossy Stone Brick Stairs', 'Andesite Stairs', 'Polished Andesite Stairs',  
'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' },
'Diorite Stairs', 'Polished Diorite Stairs', 'Granite Stairs', 'Polished Granite Stairs', 'Sandstone Stairs', 'Smooth Sandstone Stairs', 'Red Sandstone Stairs', 'Smooth Red Sandstone Stairs',
['Stone Stairs'] = { 'Stone Stairs', 'Cobblestone Stairs', 'Mossy Cobblestone Stairs', 'Stone Brick Stairs', 'Mossy Stone Brick Stairs',
'Brick Stairs', 'Prismarine Stairs', 'Prismarine Brick Stairs', 'Dark Prismarine Stairs', 'Nether Brick Stairs', 'Red Nether Brick Stairs', 'Quartz Stairs', 'Smooth Quartz Stairs', 'Purpur Stairs',  
'Granite Stairs', 'Polished Granite Stairs', 'Diorite Stairs', 'Polished Diorite Stairs', 'Andesite Stairs', 'Polished Andesite Stairs',  
'End Stone Brick Stairs', 'Blackstone Stairs', 'Polished Blackstone Stairs', 'Polished Blackstone Brick Stairs' },
'Cobbled Deepslate Stairs', 'Polished Deepslate Stairs', 'Deepslate Brick Stairs', 'Deepslate Tile Stairs', 'Brick Stairs', 'Mud Brick Stairs', 'Resin 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', 'Resin 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' },
['Resin Block'] = { 'Block of Resin', 'Resin Bricks', 'Chiseled Resin Bricks' },
['Tulip'] = { 'Red Tulip', 'Orange Tulip', 'White Tulip', 'Pink Tulip' },
['Tulip'] = { 'Red Tulip', 'Orange Tulip', 'White Tulip', 'Pink Tulip' },
['Prismarine'] = { 'Prismarine', 'Prismarine Bricks', 'Dark Prismarine' },
['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' },
['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' },
['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' },
['Coral Block'] = { 'Tube Coral Block', 'Brain Coral Block', 'Bubble Coral Block', 'Fire Coral Block', 'Horn Coral Block' },
Line 289: Line 407:
['Coral'] = { 'Tube Coral', 'Brain Coral', 'Bubble Coral', 'Fire Coral', 'Horn Coral' },
['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' },
['Coral Fan'] = { 'Tube Coral Fan', 'Brain Coral Fan', 'Bubble Coral Fan', 'Fire Coral Fan', 'Horn Coral Fan' },
['Wall'] = { 'Cobblestone Wall', 'Mossy Cobblestone Wall', 'Stone Brick Wall', 'Mossy Stone Brick Wall', 'Andesite Wall', 'Diorite Wall', 'Granite Wall', 'Sandstone Wall',
'Red Sandstone Wall', 'Brick Wall', 'Prismarine Wall', 'Nether Brick Wall', 'Red Nether Brick Wall', 'End Stone Brick Wall', 'Blackstone Wall', 'Polished Blackstone Wall',
'Polished Blackstone Brick Wall' },
['Torch'] = { 'Torch', 'Soul Torch' },
['Torch'] = { 'Torch', 'Soul Torch' },
['Lantern'] = { 'Lantern', 'Soul Lantern' },
['Lantern'] = { 'Lantern', 'Soul Lantern' },
['Fungus'] = { 'Crimson Fungus', 'Warped Fungus' },
['Fungus'] = { 'Crimson Fungus', 'Warped Fungus' },
['Fungi'] = { 'Crimson Fungus', 'Warped Fungus' },
['Roots'] = { 'Crimson Roots', 'Warped Roots' },
['Roots'] = { 'Crimson Roots', 'Warped Roots' },
['Nylium'] = { 'Crimson Nylium', 'Warped Nylium' },
['Nylium'] = { 'Crimson Nylium', 'Warped Nylium' },
['Nether Planks'] = { 'Crimson Planks', 'Warped Planks' },
['Stem'] = { 'Crimson Stem', 'Warped Stem' },
['Stripped Stem'] = { 'Stripped Crimson Stem', 'Stripped Warped Stem' },
['Hyphae'] = { 'Crimson Hyphae', 'Warped Hyphae' },
['Stripped Hyphae'] = { 'Stripped Crimson Hyphae', 'Stripped Warped Hyphae' },
['Nether Wood Button'] = { 'Crimson Button', 'Warped Button' },
['Nether Wood Pressure Plate'] = { 'Crimson Pressure Plate', 'Warped Pressure Plate' },
['Nether Wood Fence'] = { 'Crimson Fence', 'Warped Fence' },
['Nether Wood Trapdoor'] = { 'Crimson Trapdoor', 'Warped Trapdoor' },
['Nether Wood Fence Gate'] = { 'Crimson Fence Gate', 'Warped Fence Gate' },
['Nether Wood Stairs'] = { 'Crimson Stairs', 'Warped Stairs' },
['Nether Wood Door'] = { 'Crimson Door', 'Warped Door' },
['Nether Wood Sign'] = { 'Crimson Sign', 'Warped Sign' },
['Soul Sand'] = { 'Soul Sand', 'Soul Soil' },
['Soul Sand'] = { 'Soul Sand', 'Soul Soil' },
['Campfire'] = { 'Campfire', 'Soul Campfire' },
['Campfire'] = { 'Campfire', 'Soul Campfire' },
Line 315: Line 418:
['Stone Button'] = { 'Stone Button', 'Polished Blackstone Button' },
['Stone Button'] = { 'Stone Button', 'Polished Blackstone Button' },
['Stone Pressure Plate'] = { 'Stone Pressure Plate', 'Polished Blackstone Pressure Plate' },
['Stone Pressure Plate'] = { 'Stone Pressure Plate', 'Polished Blackstone Pressure Plate' },
}
}
table.insert( itemVariants['Dye'], 1, 'White Dye' )
 
-- 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 326: Line 460:
-- Discs --
-- Discs --
local discs = {  
local discs = {  
{ '13',     'C418',                 },
{ '13',                 'C418',         '',          '&e' },
{ 'Cat',     'C418',      'cat'     },
{ 'Cat',                 'C418',        'cat',      '&e' },
{ 'Blocks', 'C418',       'blocks' },
{ 'Blocks',             'C418',         'blocks',    '&e' },
{ 'Chirp',   'C418',       'chirp'   },
{ 'Chirp',               'C418',         'chirp',    '&e' },
{ 'Far',     'C418',      'far'     },
{ 'Far',                 'C418',        'far',      '&e' },
{ 'Mall',   'C418',       'mall'   },
{ 'Mall',               'C418',         'mall',      '&e' },
{ 'Mellohi', 'C418',       'mellohi' },
{ 'Mellohi',             'C418',         'mellohi',  '&e' },
{ 'Stal',   'C418',       'stal'   },
{ 'Stal',               'C418',         'stal',      '&e' },
{ 'Strad',   'C418',       'strad'   },
{ 'Strad',               'C418',         'strad',    '&e' },
{ 'Ward',   'C418',       'ward'   },
{ 'Ward',               'C418',         'ward',      '&e' },
{ '11',     'C418',                 },
{ '11',                 'C418',         '',          '&e' },
{ 'Wait',   'C418',       'wait'   },
{ 'Wait',               'C418',         'wait',      '&e' },
{ 'Pigstep', 'Lena Raine',          },
{ 'Otherside',          'Lena Raine',  'otherside', '&b' },
{ 'Pigstep',             'Lena Raine',  '',          '&b' },
{ '5',                  'Samuel Åberg', '',          '&e' },
{ 'Relic',              'Aaron Cherof', '',          '&e' },
{ 'Precipice',          'Aaron Cherof', '',          '&e' },
{ 'Creator',            'Lena Raine',  '',          '&b' },
{ 'Creator (Music Box)', 'Lena Raine',  '',          '&e' },
}
}
for _, disc in ipairs( discs ) do
for _, disc in ipairs( discs ) do
    local rarityColor = disc[4]
local name = 'Music Disc ' .. disc[1]
local name = 'Music Disc ' .. disc[1]
local artist = disc[2]
local artist = disc[2]
local trackname = disc[1]
local trackname = disc[1]
if disc[3] ~= nil then
if disc[3] ~= '' then
trackname = disc[3]
trackname = disc[3]
end
end
aliases[name] = { title = '&bMusic Disc', name = name, text = '&7' .. artist .. ' - ' .. trackname }
aliases[name] = { title = rarityColor .. 'Music 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 = '&eDisc 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
end


-- Damaged armor, tools and weapons --
-- Damaged items, note it skips tools, weapons, and armor as they are handled above to add the damage tooltip. --
-- Items with rarity (such as Mace and Elytra) are hard-coded in the module's beginning.
local damagedItems = {
local damagedItems = {
'Bow',
'Bow',
'Brush',
'Carrot on a Stick',
'Carrot on a Stick',
'Chainmail Boots',
'Chainmail Chestplate',
'Chainmail Helmet',
'Chainmail Leggings',
'Crossbow',
'Crossbow',
'Diamond Axe',
'Diamond Boots',
'Diamond Chestplate',
'Diamond Helmet',
'Diamond Hoe',
'Diamond Leggings',
'Diamond Pickaxe',
'Diamond Shovel',
'Diamond Sword',
'Elytra',
'Fishing Rod',
'Fishing Rod',
'Flint and Steel',
'Flint and Steel',
'Golden Axe',
'Golden Boots',
'Golden Chestplate',
'Golden Helmet',
'Golden Hoe',
'Golden Leggings',
'Golden Pickaxe',
'Golden Shovel',
'Golden Sword',
'Iron Axe',
'Iron Boots',
'Iron Chestplate',
'Iron Helmet',
'Iron Hoe',
'Iron Leggings',
'Iron Pickaxe',
'Iron Shovel',
'Iron Sword',
'Leather Boots',
'Leather Tunic',
'Leather Cap',
'Leather Pants',
'Netherite Axe',
'Netherite Boots',
'Netherite Chestplate',
'Netherite Helmet',
'Netherite Hoe',
'Netherite Leggings',
'Netherite Pickaxe',
'Netherite Shovel',
'Netherite Sword',
'Shears',
'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 440: Line 601:
'Fess',
'Fess',
'Field Masoned',
'Field Masoned',
'Flow',
'Flower Charge',
'Flower Charge',
'Globe',
'Globe',
'Gradient',
'Gradient',
'Guster',
'Inverted Chevron',
'Inverted Chevron',
'Lozenge',
'Lozenge',
Line 458: Line 621:
'Per Pale',
'Per Pale',
'Per Pale Inverted',
'Per Pale Inverted',
'Piglin',
'Snout',
'Roundel',
'Roundel',
'Saltire',
'Saltire',
Line 464: Line 629:
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 497: Line 662:
-- 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 Bundle',
'$Dyed Candle',
'$Dyed Terracotta',
},
noWhite = {
'$Dyed Wool',
'$Dyed Bed',
'$Dyed Carpet',
'$Colored Dye',
}
}
}
for _, item in ipairs( coloredItems ) do
 
local coloredItemAliases = {}
local coloredBadItems = {
local itemName = ''
['Light Gray Glow Stick'] = 1,
['Black Glow Stick'] = 1,
for _, color in ipairs( colors ) do
}
if item:find( '%$1' ) then
 
itemName = string.gsub( item, '%$1', color )
for type, items in pairs( coloredItems ) do
else
for _, item in ipairs( items ) do
itemName = color .. ' ' .. item
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
end
table.insert( coloredItemAliases, itemName )
item = item:gsub( '%$1 ', '' )
item = item:gsub( '%$', '' )
aliases['Any ' .. item] = coloredItemAliases
aliases['Matching ' .. item] = coloredItemAliases
end
end
item = item:gsub( '%$1 ', '')
aliases['Any ' .. item] = coloredItemAliases
aliases['Matching ' .. item] = coloredItemAliases
end
end
-- list of all potions with no effects
-- list of all potions with no effects
Line 535: Line 750:
'Thick Potion',
'Thick Potion',
'Mundane Potion',
'Mundane Potion',
'Long Mundane Potion',
'Uncraftable Potion',
'Uncraftable Potion',
'Splash Water Bottle',
'Splash Water Bottle',
Line 540: Line 756:
'Thick Splash Potion',
'Thick Splash Potion',
'Mundane Splash Potion',
'Mundane Splash Potion',
'Splash Long Mundane Potion',
'Uncraftable Splash Potion',
'Uncraftable Splash Potion',
'Lingering Water Bottle',
'Lingering Water Bottle',
Line 545: Line 762:
'Thick Lingering Potion',
'Thick Lingering Potion',
'Mundane Lingering Potion',
'Mundane Lingering Potion',
'Lingering Long Mundane Potion',
'Uncraftable Lingering Potion',
'Uncraftable Lingering Potion',
'Tipped Arrow',
'Tipped Arrow',
Line 551: Line 769:
}
}
for _, name in ipairs(noEffects) do
for _, name in ipairs(noEffects) do
aliases[name] = { name = name, text = '&7No effects' }
aliases[name] = { name = name, text = '&7No Effects' }
end
end


Line 586: Line 804:
-- durations are in the order normal, extended, enhanced
-- durations are in the order normal, extended, enhanced
{name = 'Regeneration', effect = '&9Regeneration', enhanced = 'II',
{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' }}},
durations = { normal = { '00:45', '01:30', '00:22' }, lingering = { '00:11', '00:22', '00:05' }, arrow = { '00:05', '00:11', '00:02' }}},
{ name = 'Swiftness', effect = '&9Speed', enhanced = 'II',  
{ name = 'Swiftness', effect = '&9Speed', enhanced = 'II', applied = {'&9+20% Speed', '&9+40% Speed'},  
durations = { normal = { '3:00', '8:00', '1:30' }, lingering = { '0:45', '2:00', '0:22' }, arrow = { '0:22', '1:00', '0:11' }}},
durations = { normal = { '03:00', '08:00', '01:30' }, lingering = { '00:45', '02:00', '00:22' }, arrow = { '00:22', '01:00', '00:11' }}},
{ name = 'Fire Resistance', effect = '&9Fire Resistance', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}},
{ name = 'Fire Resistance', effect = '&9Fire Resistance', durations = { normal = { '03:00', '08:00' }, lingering = { '00:45', '02:00' }, arrow = { '00:22', '01:00' }}},
{ name = 'Poison', effect = '&cPoison', enhanced = 'II',  
{ 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' }}},
durations = { normal = { '00:45', '01:30', '00:21' }, lingering = { '00:11', '00:22', '00:05' }, arrow = { '00:05', '00:11', '00:02' }}},
{ name = 'Healing', effect = '&9Instant Health', enhanced = 'II' },
{ 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 = 'Night Vision', effect = '&9Night Vision', durations = { normal = { '03:00', '08:00' }, lingering = { '00:45', '02:00' }, arrow = { '00:22', '01:00' }}},
{ name = 'Weakness',       effect = '&cWeakness',       durations = { normal = { '1:30', '4:00' }, lingering = { '0:22', '1:00' }, arrow = { '0:11', '0:30' }}},
{ name = 'Weakness', effect = '&cWeakness', applied = {'&c-4 Attack Damage'},
{ name = 'Strength', effect = '&9Strength', enhanced = 'II',  
durations = { normal = { '01:30', '04:00' }, lingering = { '00:22', '01:00' }, arrow = { '00:11', '00:30' }}},
durations = { normal = { '3:00', '8:00', '1:30'}, lingering = {'0:45', '2:00', '0:22'}, arrow = { '0:22', '1:00', '0:11' }}},
{ name = 'Strength', effect = '&9Strength', enhanced = 'II', applied = {'&9+3 Attack Damage', '&9+6 Attack Damage'},  
{ name = 'Slowness', effect = '&cSlowness', enhanced = 'IV',  
durations = { normal = { '03:00', '08:00', '01:30'}, lingering = {'00:45', '02:00', '00:22'}, arrow = { '00:22', '01:00', '00:11' }}},
durations = { normal = { '1:30', '4:00', '0:20'}, lingering = {'0:22', '1:00', '0:05'}, arrow = { '0:11', '0:30', '0:02' }}},
{ name = 'Slowness', effect = '&cSlowness', enhanced = 'IV', applied = {'&c-15% Speed', '&c-60% Speed'},  
{ name = 'Leaping', effect = '&9Jump Boost', enhanced = 'II',  
durations = { normal = { '01:30', '04:00', '00:20'}, lingering = {'00:22', '01:00', '00:05'}, arrow = { '00:11', '00:30', '00:02' }}},
durations = { normal = { '3:00', '8:00', '1:30' }, lingering = {'0:45', '2:00', '0:22'}, arrow = { '0:22', '1:00', '0:11' }}},
{ name = 'Leaping', effect = '&9Jump Boost', enhanced = 'II', applied = {'&9+1 Safe Fall Distance', '&9+2 Safe Fall Distance'},
durations = { normal = { '03:00', '08:00', '01:30' }, lingering = {'00:45', '02:00', '00:22'}, arrow = { '00:22', '01:00', '00:11' }}},
{ name = 'Harming', effect = '&cInstant Damage', enhanced = 'II' },
{ 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 = 'Water Breathing', effect = '&9Water Breathing', durations = { normal = { '03:00', '08:00' }, lingering = { '00:45', '02:00' }, arrow = { '00:22', '01:00' }}},
{ name = 'Invisibility',   effect = '&9Invisibility',   durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}},
{ name = 'Invisibility', effect = '&9Invisibility', durations = { normal = { '03:00', '08:00' }, lingering = { '00:45', '02:00' }, arrow = { '00:22', '01:00' }}},
{ name = 'Slow Falling',   effect = '&9Slow Falling',   durations = { normal = { '1:30', '4:00' }, lingering = { '0:22', '1:00' }, arrow = { '0:11', '0:30' }}},
{ name = 'Slow Falling', effect = '&9Slow Falling', durations = { normal = { '01:30', '04:00' }, lingering = { '00:22', '01:00' }, arrow = { '00:11', '00:30' }}},
{ name = 'Luck', effect = '&9Luck',   durations = { normal = { '5:00' }, lingering = { '1:15' }, arrow = { '0:37' }}},
{ name = 'Luck', effect = '&9Luck', applied = {'&9+1 Luck'}, durations = { normal = { '05:00' }, lingering = { '01:15' }, arrow = { '00:37' }}},
{ name = 'Decay', effect = '&cWither', durations = { normal = { '0:40' }, lingering = { '0:10' }, arrow = { '0:05' }}},
{ name = 'Decay', effect = '&cWither II', durations = { normal = { '00:40' }, lingering = { '00:10' }, arrow = { '00:05' }}},
{ name = 'the Turtle Master', text = '&cSlowness IV ($1)/&9Resistance III ($1)', enhanced = '&cSlowness VI ($1)/&9Resistance IV ($1)',
{ name = 'the Turtle Master', text = '&cSlowness IV ($1)/&9Resistance III ($1)//&5When Applied:/&c-60% Speed',
durations = { normal = { '0:20', '0:40', '0:20' }, lingering = { '0:15', '0:45', '0:15' }, arrow = { '0:07', '0:22', '0:07' }}}
enhanced = '&cSlowness VI ($1)/&9Resistance IV ($1)//&5When Applied:/&c-90% Speed',
durations = { normal = { '00:20', '00:40', '00:20' }, lingering = { '00:05', '00:10', '00:05' }, arrow = {  '00:02', '00:05', '' }}},
{ name = 'Oozing', effect = '&cOozing', durations = { normal = { '03:00' }, lingering = { '00:45' }, arrow = { '00:22' }}},
{ name = 'Infestation', effect = '&cInfested', durations = { normal = { '03:00' }, lingering = { '00:45' }, arrow = { '00:22' }}},
{ name = 'Weaving', effect = '&cWeaving', durations = { normal = { '03:00' }, lingering = { '00:45' }, arrow = { '00:22' }}},
{ name = 'Wind Charging', effect = '&cWind Charged', durations = { normal = { '03:00' }, lingering = { '00:45' }, arrow = { '00:22' }}}
}
}
local types = {
local types = {
Line 620: Line 844:
for _, type in ipairs(types) do
for _, type in ipairs(types) do
-- form name, it will be reused
-- form name, it will be reused
local name = type.text .. effect.name
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 we have durations, add times
Line 628: Line 858:
-- turtle master is weird, so just do a fancy string replacement
-- turtle master is weird, so just do a fancy string replacement
if effect.text then
if effect.text then
aliases[name] = { name = name, text = string.gsub( effect.text, '%$1', durations[1] ) }
aliases[name] = { name = potionName, text = effect.text:gsub( '%$1', durations[1] ) }
aliases[name .. ' Extended'] = { name = name, text = string.gsub( effect.text, '%$1', durations[2] ) }
aliases[name .. ' Extended'] = { name = potionName, text = effect.text:gsub( '%$1', durations[2] ) .. '/&8Extended' }
aliases[name .. ' Enhanced'] = { name = name, text = string.gsub( effect.enhanced, '%$1', durations[3] ) }
aliases[name .. ' Enhanced'] = { name = potionName, text = effect.enhanced:gsub( '%$1', durations[3] ) .. '/&8Enhanced' }
elseif effect.applied then
-- attribute changes by the effect
local applied = effect.applied
-- we always have normal
aliases[name] = { name = potionName, text = string.format( '%s (%s)//&5When Applied:/%s', effect.effect, durations[1], applied[1] ) }
-- ensure we have extended
if durations[2] then
aliases[name .. ' Extended'] = { name = potionName, text = string.format( '%s (%s)//&5When Applied:/%s', effect.effect, durations[2], applied[1] ) .. '/&8Extended' }
-- and enhanced
if effect.enhanced then
aliases[name .. ' Enhanced'] = { name = potionName, text = string.format( '%s %s (%s)//&5When Applied:/%s', effect.effect, effect.enhanced, durations[3], applied[2] ) .. '/&8Enhanced' }
end
end
else
else
-- we always have normal
-- we always have normal
aliases[name] = { name = name, text = string.format( '%s (%s)', effect.effect, durations[1] ) }
aliases[name] = { name = potionName, text = string.format( '%s (%s)', effect.effect, durations[1] ) }
-- ensure we have extended
-- ensure we have extended
if durations[2] then
if durations[2] then
aliases[name .. ' Extended'] = { name = name, text = string.format( '%s (%s)', effect.effect, durations[2] ) }
aliases[name .. ' Extended'] = { name = potionName, text = string.format( '%s (%s)', effect.effect, durations[2] ) .. '/&8Extended' }
-- and enhanced, currently there is nothing with a duration that can be extended but not enhanced
-- and enhanced
if effect.enhanced then
if effect.enhanced then
aliases[name .. ' Enhanced'] = { name = name, text = string.format( '%s %s (%s)', effect.effect, effect.enhanced, durations[3] ) }
aliases[name .. ' Enhanced'] = { name = potionName, text = string.format( '%s %s (%s)', effect.effect, effect.enhanced, durations[3] ) .. '/&8Enhanced' }
end
end
end
end
Line 647: Line 893:
else
else
-- otherwise its just effect, currently every potion with no duration can be enhanced
-- otherwise its just effect, currently every potion with no duration can be enhanced
aliases[name] = { name = name, text = effect.effect}
aliases[name] = { name = potionName, text = effect.effect}
aliases[name .. ' Enhanced'] = { name = name, text = effect.effect .. ' ' .. effect.enhanced }
aliases[name .. ' Enhanced'] = { name = potionName, text = effect.effect .. ' ' .. effect.enhanced .. '/&8Enhanced' }
end
end
Line 663: Line 909:


-- Wood --
-- Wood --
local logs = {
local woodTypes = {
'Oak',
    overworld = {
'Spruce',
        'Oak',
'Birch',
    'Spruce',
'Jungle',
    'Birch',
'Acacia',
    'Jungle',
'Dark Oak',
    'Acacia',
        'Dark Oak',
        'Mangrove',
        'Cherry',
        'Pale Oak',
        '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 = {
'Wood',
    overworld = {
'Log',
        'Log',
'Planks',
        'Wood',
'Fence Gate',
        'Stripped $1 Log',
'Boat',
        'Stripped $1 Wood',
'wood Door',
        'Boat',
'wood Fence',
        'Boat with Chest',
'wood Button',
        'Sapling',
'wood Pressure Plate',
    },
'wood Trapdoor',
    nether = {
'wood Slab',
        'Stem',
'wood Stairs',
        'Hyphae',
'Stripped $1 Log',
        'Stripped $1 Stem',
'Stripped $1 Wood',
        'Stripped $1 Hyphae',
'Wood Planks',
    },
'Wood Slab',
    both = {
'Wood Stairs',
-- Any/Matching X or Y
'Sign',
        '${Log,Stem}',
'Sapling',
        '${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,
}
}


for _, item in ipairs( woodItems ) do
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 itemName = ''
local woodAliases = {}
local woodAliases = {}
 
for _, wood in ipairs( logs ) do
-- real "linkable" name
if item:find('wood') then
    local realItem = item:gsub('^Overworld ', '')
itemName = string.gsub( item, 'wood', wood )
    realItem = realItem:gsub('^Nether ', '')
elseif item:find('%$1') then
 
itemName = string.gsub( item, '%$1', wood )
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
else
itemName = wood .. ' ' .. item
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
table.insert( woodAliases, itemName )
end
end
 
item = string.gsub( item, '%$1 ', '' )
-- 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
Line 715: Line 1,057:
local editionItems = {
local editionItems = {
BE = {
BE = {
'Acacia Fence Gate',
'Andesite Wall',
'Birch Fence Gate',
'Black Bed',
'Black Stained Glass Pane',
'Blackstone Wall',
'Blue Bed',
'Blue Ice',
'Blue Stained Glass Pane',
'Bow',
'Bow',
'Brick Wall',
'Brown Bed',
'Brown Stained Glass Pane',
'Bucket of Pufferfish',
'Bucket of Pufferfish',
'Bucket of Tropical Fish',
'Bucket of Tropical Fish',
'Spawn Cat',
'Cat Spawn Egg',
'Chest',
'Chest',
'Cobbled Deepslate Wall',
'Cobblestone Wall',
'Cobblestone Wall',
'Crimson Fence Gate',
'Crying Obsidian',
'Cyan Bed',
'Cyan Stained Glass Pane',
'Dark Oak Fence Gate',
'Deepslate Brick Wall',
'Deepslate Tile Wall',
'Desert Village Map',
'Diorite Wall',
'Enchanting Table',
'End Gateway',
'End Portal Frame',
'End Portal',
'End Rod',
'End Stone Brick Wall',
'Ender Chest',
'Ender Chest',
'Glass Pane',
'Glass Pane',
'Glowstone',
'Granite Wall',
'Gray Bed',
'Gray Stained Glass Pane',
'Green Bed',
'Green Stained Glass Pane',
'Honey Block',
'Horn Coral Block',
'Horn Coral Block',
'Iron Bars',
'Iron Bars',
'Jigsaw Block',
'Jack o\'Lantern',
'Jungle Explorer Map',
'Jungle Fence Gate',
'Jungle Leaves',
'Lava',
'Lava',
'Flowing Lava',
'Leather Horse Armor',
'Light',
'Light Blue Bed',
'Light Blue Stained Glass Pane',
'Light Gray Bed',
'Light Gray Stained Glass Pane',
'Lime Bed',
'Lime Stained Glass Pane',
        'Lodestone Compass',
        'Magenta Bed',
'Magenta Stained Glass Pane',
'Magma Block',
'Map',
'Minecart with Command Block',
'Minecart with Command Block',
'Monster Spawner',
'Mossy Cobblestone Wall',
'Mossy Cobblestone Wall',
'Mossy Stone Brick Wall',
'Mud Brick Wall',
'Nether Brick Wall',
'Oak Fence Gate',
'Oak Fence Gate',
'Observer',
'Observer',
'Spawn Panda',
'Ocean Explorer Map',
'Peony',
'Ochre Froglight',
'Rose Bush',
'Orange Bed',
'Orange Stained Glass Pane',
'Panda Spawn Egg',
'Pearlescent Froglight',
'Pink Bed',
'Pink Stained Glass Pane',
'Plains Village Map',
'Polished Blackstone Wall',
'Polished Blackstone Brick Wall',
'Polished Deepslate Wall',
'Polished Tuff Wall',
'Prismarine Wall',
'Purple Bed',
'Purple Stained Glass Pane',
'Red Bed',
'Red Nether Brick Wall',
'Red Sandstone Wall',
'Red Stained Glass Pane',
'Resin Brick Wall',
'Redstone Torch',
'Sandstone Wall',
'Savanna Village Map',
'Scaffolding',
'Scaffolding',
'Sea Lantern',
'Shroomlight',
'Snowy Village Map',
'Spruce Fence Gate',
'Stone Brick Wall',
'Stonecutter',
'Stonecutter',
'Honey Block',
'Structure Void',
'Skeleton Skull',
'Swamp Explorer Map',
'Wither Skeleton Skull',
'Taiga Village Map',
'Zombie Head',
'Trapped Chest',
'Head',
'Trial Explorer Map',
'Creeper Head',
'Tuff Wall',
'Dragon Head',
'Tuff Brick Wall',
'Verdant Froglight',
'Wandering Trader Spawn Egg',
'Warped Fence Gate',
'White Bed',
'White Stained Glass Pane',
'Woodland Explorer Map',
'Yellow Bed',
'Yellow Stained Glass Pane',
},
},
LCE = {
LCE = {
'Peony',
'Rose Bush',
'Shrub'
'Shrub'
}
},
    SM = {
    'Compass',
    'Diamond Axe',
    'Diamond Hoe',
    'Diamond Pickaxe',
    'Diamond Shovel',
    'Diamond Sword',
    'Flint and Steel',
    'Potion of Invisibility',
    'Potion of Leaping',
    'Potion of Swiftness',
    'TNT'
    }
}
}
for edition, items in pairs(editionItems) do
for edition, items in pairs(editionItems) do
Line 758: Line 1,199:
end
end


-- Bedrock Light blocks
-- Light blocks --
for level = 0, 15 do
for level = 0, 15 do
aliases["Light Block " .. level] = {title = "Light Block", name = "Light Block " .. level}
aliases["Light " .. level] = { title = "&dLight", name = "Light " .. level }
aliases["Light " .. level .. " BE"] = { title = "Light", name = "Light " .. level .. " BE" }
end
end
-- Pottery Sherds --
local pottery_sherds = {
{ 'Angler' },
{ 'Arms Up' },
{ 'Archer' },
{ 'Blade' },
{ 'Brewer' },
{ 'Burn' },
{ 'Danger' },
{ 'Explorer' },
{ 'Flow' },
{ 'Friend' },
{ 'Guster' },
{ 'Heart' },
{ 'Heartbreak' },
{ 'Howl' },
{ 'Miner' },
{ 'Mourner' },
{ 'Plenty' },
{ 'Prize' },
{ 'Scrape' },
{ 'Sheaf' },
{ 'Shelter' },
{ 'Skull' },
{ 'Snort' },
}
local potterySherdAliases = {}
for _, pottery_sherd in ipairs(pottery_sherds) do
local name = pottery_sherd[1] .. ' Pottery Sherd'
aliases[name] = { title = '&e' .. name , name = name }
table.insert(potterySherdAliases, aliases[name])
end
table.insert(potterySherdAliases, 'Brick')
aliases['Any Pottery Sherd'] = potterySherdAliases
-- Smithing Templates --
local smithing_templates = {
{ 'Netherite Upgrade',    'Diamond Equipment', 'Netherite Ingot',  '&e' },
{ 'Bolt Armor Trim',      'Armor',            'Ingot & Crystals', '&e' },
{ 'Coast Armor Trim',    'Armor',            'Ingot & Crystals', '&e' },
{ 'Dune Armor Trim',      'Armor',            'Ingot & Crystals', '&e' },
{ 'Eye Armor Trim',      'Armor',            'Ingot & Crystals', '&b' },
{ 'Flow Armor Trim',      'Armor',            'Ingot & Crystals', '&e' },
{ 'Host Armor Trim',      'Armor',            'Ingot & Crystals', '&e' },
{ 'Raiser Armor Trim',    'Armor',            'Ingot & Crystals', '&e' },
{ 'Rib Armor Trim',      'Armor',            'Ingot & Crystals', '&e' },
{ 'Sentry Armor Trim',    'Armor',            'Ingot & Crystals', '&e' },
{ 'Shaper Armor Trim',    'Armor',            'Ingot & Crystals', '&e' },
{ 'Silence Armor Trim',  'Armor',            'Ingot & Crystals', '&d' },
{ 'Snout Armor Trim',    'Armor',            'Ingot & Crystals', '&e' },
{ 'Spire Armor Trim',    'Armor',            'Ingot & Crystals', '&b' },
{ 'Tide Armor Trim',      'Armor',            'Ingot & Crystals', '&e' },
{ 'Vex Armor Trim',      'Armor',            'Ingot & Crystals', '&b' },
{ 'Ward Armor Trim',      'Armor',            'Ingot & Crystals', '&b' },
{ 'Wayfinder Armor Trim', 'Armor',            'Ingot & Crystals', '&e' },
{ 'Wild Armor Trim',      'Armor',            'Ingot & Crystals', '&e' },
}
local smithing_template_array = {}
local armor_trims_array = {}
for _,smithing_template in pairs(smithing_templates) do
    local rarityColor = smithing_template[4]
local current_alias = {
title = rarityColor .. smithing_template[1],
name = smithing_template[1] .. ' Smithing Template',
text = '&7' .. 'Smithing Template' .. '//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