Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

La documentation pour ce module peut être créée à Module:Case inventaire/Alias/doc

local coloredDyes = {
	'Teinture orange', 'Teinture magenta', 'Teinture bleu clair', 'Teinture jaune', 'Teinture vert clair',
	'Teinture rose', 'Teinture grise', 'Teinture gris clair', 'Teinture cyan', 'Teinture violette',
	'Teinture bleue', 'Teinture marron', 'Teinture verte', 'Teinture rouge', 'Teinture noire',
}
local aliases = {
	-- Common fuel types for furnace --
	['Tout combustible'] = { 'Charbon', 'Charbon de bois', { title = 'Bûche', name = 'Bûche de chêne' }, { title = 'Planches', name = 'Planches de chêne' }, 'Bloc de charbon' },
	
	-- All tool and armor --
	['Tout outil en or'] = { 'Pioche en or', 'Hache en or', 'Pelle en or', 'Houe en or' },
	['Tout outil en bois'] = { 'Pioche en bois', 'Hache en bois', 'Pelle en bois', 'Houe en bois' },
	['Tout outil en pierre'] = { 'Pioche en pierre', 'Hache en pierre', 'Pelle en pierre', 'Houe en pierre' },
	['Tout outil en cuivre'] = { 'Pioche en cuivre', 'Hache en cuivre', 'Pelle en cuivre', 'Houe en cuivre' },
	['Tout outil en fer'] = { 'Pioche en fer', 'Hache en fer', 'Pelle en fer', 'Houe en fer' },
	['Tout outil en diamant'] = { 'Pioche en diamant', 'Hache en diamant', 'Pelle en diamant', 'Houe en diamant' },
	['Tout outil en Netherite'] = { 'Pioche en Netherite', 'Hache en Netherite', 'Pelle en Netherite', 'Houe en Netherite' },
	['Toute armure en cuir'] = { 'Chapeau en cuir', 'Tunique en cuir', 'Pantalon en cuir', 'Bottes en cuir' },
	['Toute armure en or'] = { 'Casque en or', 'Plastron en or', 'Jambières en or', 'Bottes en or' },
	['Toute armure en cotte de mailles'] = { 'Casque de mailles', 'Cotte de mailles', 'Jambières de mailles', 'Bottes de mailles' },
	['Toute armure en cuivre'] = { 'Casque en cuivre', 'Plastron en cuivre', 'Jambières en cuivre', 'Bottes en cuivre' },
	['Toute armure en fer'] = { 'Casque en fer', 'Plastron en fer', 'Jambières en fer', 'Bottes en fer' },
	['Toute armure en diamant'] = { 'Casque en diamant', 'Plastron en diamant', 'Jambières en diamant', 'Bottes en diamant' },
	['Toute armure en Netherite'] = { 'Casque en Netherite', 'Plastron en Netherite', 'Jambières en Netherite', 'Bottes en Netherite' },
   
	-- stones --
	['Tout bloc du tier pierre'] = { 'Pierres', 'Roche noire', 'Pierres des abîmes' },
	['Toute pierres ou roche noire'] = { 'Pierres', 'Roche noire' },
	
	-- Miscellaeous collections --
	['Toutes feuilles'] = { 'Feuilles de chêne', 'Feuilles de sapin', 'Feuilles de bouleau', 'Feuilles d\'acacia', 'Feuilles d\'acajou', 'Feuilles de chêne noir', 'Feuilles de palétuvier', 'Feuilles de cerisier', 'Feuilles de chêne pâle', 'Feuilles d\'azalée', 'Feuilles d\'azalée fleurie' };
	['Tout oeuf'] = { 'Oeuf', 'Oeuf bleu', 'Oeuf brun' };
	['Toute chaîne'] = { 'Chaîne en fer', 'Chaîne en cuivre', 'Chaîne en cuivre exposé', 'Chaîne en cuivre érodé', 'Chaîne en cuivre oxydé', 'Chaîne en cuivre ciré', 'Chaîne en cuivre exposé ciré', 'Chaîne en cuivre érodé ciré', 'Chaîne en cuivre oxydé ciré'};

	-- Display names --
	['Cadre de portail de l\'End'] = { title = 'Portail de l\'End', name = 'Cadre de portail de l\'End' },
	['Poisson-globe'] = { title = 'Poisson-globe', name = 'Poisson-globe (objet)'},
	['Poisson tropical'] = { title = 'Poisson tropical', name = 'Poisson tropical (objet)'},
    ['Élytres cassées'] = { title = '&eÉlytres', name = 'Élytres cassées' },

	['Sac à moitié plein'] = { title = 'Sac', name = 'Sac à moitié plein' },
	['Sac plein'] = { title = 'Sac', name = 'Sac plein' },

    -- Armes --
    ["Élytres"] = { title = "&e", name = "Élytres" },
	["Élytres endommagées"] = { title = "&eÉlytres", name = "Élytres endommagées" },
    ['Trident'] = { title = '&bTrident', name = 'Trident', text = '/&7 Dans la main principale :/ &2 9 en points d\'attaque/ &2 1.1 en vitesse d\'attaque'},
    ['Trident endommagé'] = { title = '&bTrident', name = 'Trident endommagé', text = '/&7 Dans la main principale :/ &2 9 en points d\'attaque/ &2 1.1 en vitesse d\'attaque'},
    ['Masse'] = { title = '&dMasse', name = 'Masse', text = '/&7 Dans la main principale :/ &2 6 en points d\'attaque/ &2 0.6 en vitesse d\'attaque'},
    ['Masse endommagée'] = { title = '&dMasse', name = 'Masse endommagée', text = '/&7 Dans la main principale :/ &2 6 en points d\'attaque/ &2 0.5 en vitesse d\'attaque'},
    
	-- Fioles funestes --
    ['Fiole funeste'] = { title = '&eFiole funeste', name = 'Fiole funeste', text = '&9Mauvais présage (01:40:00)'},
    ['Fiole funeste II'] = { title = '&eFiole funeste', name = 'Fiole funeste', text = '&9Mauvais présage II (01:40:00)'},
    ['Fiole funeste III'] = { title = '&eFiole funeste', name = 'Fiole funeste', text = '&9Mauvais présage III (01:40:00)'},
    ['Fiole funeste IV'] = { title = '&eFiole funeste', name = 'Fiole funeste', text = '&9Mauvais présage IV (01:40:00)'},
    ['Fiole funeste V'] = { title = '&eFiole funeste', name = 'Fiole funeste', text = '&9Mauvais présage V (01:40:00)'},
    
    -- Noms Bedrock et Education --
    ['Carte d\'exploration des bois BE'] = { title = 'Carte d\'exploration des bois', name = 'Carte d\'exploration des bois BE' },
    ['Carte au trésor BE'] = { title = 'Carte au trésor', name = 'Carte au trésor BE' },
    ['Carte d\'exploration des marais BE'] = { title = 'Carte d\'exploration des marais', name = 'Carte d\'exploration des marais BE' },
    
    -- Chimie --
    ['Eau (corps composé)'] = { title = 'Eau', name = 'Eau (corps composé)' },
}

-- Disques--
local discs = { 
	{ '13',                  'C418',           '',          '&e' },
	{ 'cat',                 'C418',           'cat',       '&e' },
	{ 'blocks',              'C418',           'blocks',    '&e' },
	{ 'chirp',               'C418',           'chirp',     '&e' },
	{ 'far',                 'C418',           'far',       '&e' },
	{ 'mall',                'C418',           'mall',      '&e' },
	{ 'mellohi',             'C418',           'mellohi',   '&e' },
	{ 'stal',                'C418',           'stal',      '&e' },
	{ 'strad',               'C418',           'strad',     '&e' },
	{ 'ward',                'C418',           'ward',      '&e' },
	{ '11',                  'C418',           '',          '&e' },
	{ 'wait',                'C418',           'wait',      '&e' },
	{ '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 (boîte à musique)', 'Lena Raine',     '',          '&e' },
	{ 'Tears',               'Amos Roddy',     '',          '&e' },
	{ 'Lava Chicken',        'Hyper Potions',  '',          '&b' },
}
for _, disc in ipairs( discs ) do
	local rarityColor = disc[4]
	local name = 'Disque ' .. disc[1]
	local artist = disc[2]
	local trackname = disc[1]
	if disc[3] ~= '' then
		trackname = disc[3]
	end
	aliases[name] = { title = rarityColor .. 'Disque', name = name, text = '&7' .. artist .. ' - ' .. trackname }
end

-- Fragment de disque --
local disc_fragments = { 
	{ '5',    },
}
for _, disc_fragment in ipairs( disc_fragments ) do
	local name = 'Fragment de disque ' .. disc_fragment[1]
	local trackname = disc_fragment[1]
	if disc_fragment[2] ~= nil then
		trackname = disc_fragment[2]
	end
	aliases[name] = { title = '&eFragment de disque', name = name, text = '&7Disque de musique - ' .. trackname }
end

-- Tableaux --
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 = 'Tableau ' .. painting[1]
	local artist = painting[2]
	local artwork = painting[1]
	local size = painting[3]
	aliases[name] = { title = 'Tableau', name = 'Tableau', text = '&e' .. artwork .. '/&7' .. artist .. '/' .. '&f' .. size }
end

-- Lumière --

for niveau = 0, 15 do
aliases["Lumière " .. niveau] = {title = "&d", name = "Lumière " .. niveau}
end


-- Outils et armes --
local tools = {
	{'en bois', 'Épée', 1.6, 4 },
	{'en pierre', 'Épée', 1.6, 5 },
	{'en cuivre', 'Épée', 1.6, 5 },
	{'en fer', 'Épée', 1.6, 6 },
	{'en or', 'Épée', 1.6, 4 },
	{'en diamant', 'Épée', 1.6, 7 },
	{'en Netherite', 'Épée', 1.6, 8 },
	
	{'en bois', 'Pioche', 1.2, 2 },
	{'en pierre', 'Pioche', 1.2, 3 },
	{'en cuivre', 'Pioche', 1.2, 3 },
	{'en fer', 'Pioche', 1.2, 4 },
	{'en or', 'Pioche', 1.2, 2 },
	{'en diamant', 'Pioche', 1.2, 5 },
	{'en Netherite', 'Pioche', 1.2, 6 },
	
	{'en bois', 'Hache', 0.8, 7 },
	{'en pierre', 'Hache', 0.8, 9 },
	{'en cuivre', 'Hache', 0.8, 9 },
	{'en fer', 'Hache', 0.9, 9 },
	{'en or', 'Hache', 1, 7 },
	{'en diamant', 'Hache', 1, 9 },
	{'en Netherite', 'Hache', 1, 10 },
	
	{'en bois', 'Pelle', 1, 2.5 },
	{'en pierre', 'Pelle', 1, 3.5 },
	{'en cuivre', 'Pelle', 1, 3.5 },
	{'en fer', 'Pelle', 1, 4.5 },
	{'en or', 'Pelle', 1, 2.5 },
	{'en diamant', 'Pelle', 1, 5.5 },
	{'en Netherite', 'Pelle', 1, 6.5 },
	
	{'en bois', 'Houe', 1, 1 },
	{'en pierre', 'Houe', 2, 1 },
	{'en cuivre', 'Houe', 2, 1 },
	{'en fer', 'Houe', 3, 1 },
	{'en or', 'Houe', 1, 1 },
	{'en diamant', 'Houe', 4, 1 },
	{'en Netherite', 'Houe', 4, 1 },
}

local materialGroups = {}
local toolGroups = {}

for _, toolProps in ipairs( tools ) do
	local aliasName = toolProps[2] .. ' ' .. toolProps[1]
	local damagedName = aliasName .. ' endommagée'
	local text = '/&7Dans la main principale :/ &2' .. toolProps[4] .. ' en points d\'attaque/ &2' .. toolProps[3] .. ' en vitesse d\'attaque'
	aliases[aliasName] = { title = aliasName, name = aliasName, text = text }
	aliases[damagedName] = { title = aliasName, name = damagedName, text = text }
	
	local materialGroup = toolProps[1]:lower()
	local toolGroup = toolProps[2]:lower()
	
	if toolProps[2] ~= 'Épée' 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['Tout outil ' .. materialGroup] = items
end

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

-- Armures --
local head = {
	{'Chapeau en cuir', 1 },
	{'Casque de mailles', 2 },
	{'Casque en cuivre', 2 },
	{'Casque en fer', 2 },
	{'Casque en or', 2 },
	{'Casque en diamant', 3, 2 },
	{'Casque en Netherite', 3, 3, 1 },
	{'Carapace de tortue', 2 , terminaison = 'e' },
}

local body = {
	{'Tunique en cuir', 3 , terminaison = 'e' },
	{'Cotte de mailles', 5 , terminaison = 'e' },
	{'Plastron en cuivre', 4 },
	{'Plastron en fer', 6 },
	{'Plastron en or', 5 },
	{'Plastron en diamant', 8, 2 },
	{'Plastron en Netherite', 8, 3, 1 },
}

local legs = {
	{'Pantalon en cuir', 2 },
	{'Jambières de mailles', 4 , terminaison = 'es' },
	{'Jambières en cuivre', 3 , terminaison = 'es' },
	{'Jambières en fer', 5 , terminaison = 'es' },
	{'Jambières en or', 3 , terminaison = 'es' },
	{'Jambières en diamant', 6, 2 , terminaison = 'es' },
	{'Jambières en Netherite', 6, 3, 1 , terminaison = 'es' },
}

local feet = {
	{'Bottes en cuir', 1 , terminaison = 'es' },
	{'Bottes de mailles', 1 , terminaison = 'es' },
	{'Bottes en cuivre', 1 , terminaison = 'es' },
	{'Bottes en fer', 2 , terminaison = 'es' },
	{'Bottes en or', 1 , terminaison = 'es' },
	{'Bottes en diamant', 3, 2 , terminaison = 'es' },
	{'Bottes en Netherite', 3, 3, 1 , terminaison = 'es' },
}

local equipped = {
	{'Armure en cuir pour cheval', 3 },
	{'Armure en cuivre pour cheval', 4 },
	{'Armure en fer pour cheval', 5 },
	{'Armure en or pour cheval', 7 },
	{'Armure en diamant pour cheval', 11, 2 },
	{'Armure pour loup', 11, terminaison = 'e' },
	{'Armure en cuivre pour nautile', 4 },
	{'Armure en fer pour nautile', 5 },
	{'Armure en or pour nautile', 7 },
	{'Armure en diamant pour nautile', 11, 2 },
	{'Armure en Netherite pour nautile', 19, 3, 1 },
}

local bodyParts = {
    {head, "Sur la tête"},
    {body, "Sur le torse"},
    {legs, "Aux jambes"},
    {feet, "Aux pieds"},
    {equipped, "À l'usage"}
}

local trimMaterial = {
	{'quartz', '&h'},
	{'fer', '&i'},
	{'Netherite', '&j'},
	{'redstone', '&y'},
	{'cuivre', '&z'},
	{'or', '&p'},
	{'émeraude', '&q'},
	{'diamant', '&s'},
	{'lapis', '&t', materialText = "lapis-lazuli"},
	{'améthyste', '&u'},
	{'ambre', '&6', materialText = "gemme d\'ambre"},
	{'résine', '&v'},
}

local allItems = {}

for _, bodyPart in ipairs(bodyParts) do
    local items = bodyPart[1]
    local bodyPartName = bodyPart[2]
    
    for _, toolProps in ipairs(items) do
    	local terminaison = toolProps.terminaison or ''
        local aliasName = toolProps[1]
        local damagedName
        if string.find(aliasName, "pour cheval") or string.find(aliasName, "pour nautile") then
            damagedName = aliasName 
        else
            damagedName = aliasName .. ' endommagé' .. terminaison
        end   
        local text = '/&7' .. bodyPartName .. ' :/&9+' .. toolProps[2] .. ' en points d\'armure/'
        if toolProps[3] then
            text = text .. '+' .. toolProps[3] .. ' en robustesse/'
        end
        if toolProps[4] then
            text = text .. '+' .. toolProps[4] .. ' en résistance au recul'
        end
        local rarityColor = string.find(aliasName, "mailles") and '&e' or ''

        aliases[aliasName] = { title = rarityColor .. aliasName, name = aliasName, text = text }
        aliases[damagedName] = {title = rarityColor .. aliasName, name = damagedName, text = text}
        if bodyPartName ~= "À l'usage" then
			for _, materialType in ipairs( trimMaterial ) do
                local preposition = materialType[1]:find('^[aeiouAEIOUéÉ]') and ' d\'' or ' de '
				local materialName = materialType.materialText or materialType[1]
	        	local trimName = aliasName .. ' orné' .. terminaison .. preposition .. materialType[1]
				local trimText = '&7Amélioration:/ ' .. materialType[2] .. "Ornement d'armure/ En " .. materialName .. "/"
				aliases[trimName] = { title = aliasName, name = trimName, text = trimText .. text }
			end
		end
    end
end

-- Lists of item variants --
local itemVariants = {
	['teinture'] = mw.clone( coloredDyes ),
	['teinture colorée'] = coloredDyes,
	['fleur'] = { 'Pissenlit', 'Coquelicot', 'Orchidée bleue', 'Allium', 'Houstonie bleue', 'Tulipe rouge', 'Tulipe orange', 'Tulipe blanche', 'Tulipe rose', 'Marguerite', 'Bleuet', 'Muguet', 'Rose de Wither', 'Tournesol', 'Pivoine', 'Lilas', 'Rosier', 'Torche-fleur', 'Planturne' },
	['petite fleur'] = { 'Pissenlit', 'Coquelicot', 'Orchidée bleue', 'Allium', 'Houstonie bleue', 'Tulipe rouge', 'Tulipe orange', 'Tulipe blanche', 'Tulipe rose', 'Marguerite', 'Bleuet', 'Muguet', 'Rose de Wither', 'Torche-fleur' },
	['tulipe'] = { 'Tulipe rouge', 'Tulipe orange', 'Tulipe blanche', 'Tulipe rose' },
	['grande fleur'] = { 'Tournesol', 'Pivoine', 'Lilas', 'Rosier', 'Planturne' },
	['champignons'] = { { title = 'Champignons', name = 'Champignon rouge' }, { title = 'Champignons', name = 'Champignon brun' } },
	['grès rouge'] = { 'Grès rouge', 'Grès rouge sculpté', 'Grès rouge taillé', 'Grès rouge lisse' },
	['grès'] = { 'Grès', 'Grès sculpté', 'Grès taillé', 'Grès lisse' },
	['pierre taillée'] = { 'Pierre taillée', 'Pierre taillée moussue', 'Pierre taillée craquelée', 'Pierre sculptée' },
	['escalier en pierre'] = { 'Escalier en roche', 'Escalier en pierre', 'Escalier en pierres moussues', 'Escalier en pierre taillée', 'Escalier en pierre taillée moussue', 
		'Escalier en granite', 'Escalier en granite poli', 'Escalier en diorite', 'Escalier en diorite polie', 'Escalier en andésite', 'Escalier en andésite polie', 
		'Escalier en pierres des abîmes', 'Escalier en ardoise des abîmes polie', 'Escalier en ardoise des abîmes taillée', 'Escalier en ardoise des abîmes carrelée', 
		'Escalier en tuf', 'Escalier en tuf poli', 'Escalier en tuf taillé', 'Escalier en briques', 'Escalier en briques de terre crue', 'Escalier en briques de résine', 
		'Escalier en grès', 'Escalier en grès lisse', 'Escalier en grès rouge', 'Escalier en grès rouge lisse', 'Escalier en prismarine', 'Escalier en briques de prismarine', 'Escalier en prismarine sombre', 
		'Escalier en briques du Nether', 'Escalier en briques rouges du Nether', 'Escalier en roche noire', 'Escalier en pierre noire', 'Escalier en pierre noire taillée', 'Escalier en pierre taillée de l\'End', 'Escalier en purpur', 'Escalier en quartz', 'Escalier en quartz lisse'},
	['dalle de pierre'] = { 'Dalle de roche', 'Dalle de pierres', 'Dalle de pierres moussues', 'Dalle de roche lisse', 'Dalle de pierre taillée', 'Dalle de pierre taillée moussue', 
		'Dalle de granite', 'Dalle de granite poli', 'Dalle de diorite', 'Dalle de diorite polie', 'Dalle d\'andésite', 'Dalle d\'andésite polie', 
		'Dalle de pierres des abîmes', 'Dalle d\'ardoise des abîmes polie', 'Dalle d\'ardoise des abîmes taillée', 'Dalle d\'ardoise des abîmes carrelée', 
		'Dalle de tuf', 'Dalle de tuf poli', 'Dalle de tuf taillé', 'Dalle de briques', 'Dalle de briques de terre crue', 'Dalle de briques de résine',
		'Dalle de grès', 'Dalle de grès lisse', 'Dalle de grès taillé', 'Dalle de grès rouge', 'Dalle de grès rouge lisse', 'Dalle de grès rouge taillé', 'Dalle de prismarine', 'Dalle de briques de prismarine', 'Dalle de prismarine sombre', 
		'Dalle de briques du Nether', 'Dalle de briques rouges du Nether', 'Dalle de roche noire', 'Dalle de pierre noire', 'Dalle de pierre noire taillée', 'Dalle de pierre taillée de l\'End', 'Dalle de purpur', 'Dalle de quartz', 'Dalle de quartz lisse', 'Dalle en chêne pétrifiée'},
	['muret'] = { 'Muret de pierres', 'Muret de pierres moussues', 'Muret de pierre taillée', 'Muret de pierre taillée moussue', 'Muret de granite', 'Muret de diorite', 'Muret d\'andésite', 
		'Muret de pierres des abîmes', 'Muret d\'ardoise des abîmes polie', 'Muret d\'ardoise des abîmes taillée', 'Muret d\'ardoise des abîmes carrelée', 'Muret de tuf', 'Muret de tuf poli', 'Muret de tuf taillé', 'Muret de briques', 'Muret de briques de terre crue', 'Muret de briques de résine', 
		'Muret de grès', 'Muret de grès rouge', 'Muret de prismarine', 'Muret de briques du Nether', 'Muret de briques rouges du Nether', 'Muret de roche noire', 'Muret de pierre noire', 'Muret de pierre noire taillée', 'Muret de pierre taillée de l\'End' },
    ['roche noire'] = { 'Roche noire', 'Pierre noire', 'Pierre noire sculptée', 'Pierre noire taillée', 'Pierre noire taillée craquelée' },
    ['bloc de quartz'] = { 'Bloc de quartz', 'Bloc de quartz sculpté', 'Pilier de quartz'},
    ['bloc de purpur'] = { 'Bloc de purpur', 'Pilier de purpur' },
    ['tapis coloré'] = {
		'Tapis orange', 'Tapis magenta', 'Tapis bleu clair', 'Tapis jaune',
		'Tapis vert clair', 'Tapis rose', 'Tapis gris', 'Tapis gris clair', 'Tapis cyan',
		'Tapis violet', 'Tapis bleu', 'Tapis marron', 'Tapis vert', 'Tapis rouge', 'Tapis noir',
	},
}

-- Cuivre --
local copperstuff = {
	'bloc de cuivre',
	'cuivre taillé',
	'escalier en cuivre taillé',
	'dalle de cuivre taillé',
	'cuivre sculpté',
	'grille en cuivre',
	'ampoule en cuivre',
	'paratonnerre',
	'porte en cuivre',
	'trappe en cuivre',
	'coffre en cuivre',
	'statue de golem de cuivre',
	'barreaux de cuivre',
	'lanterne en cuivre',
	'chaîne en cuivre',
}

local coppervariants = { '', ' exposé', ' érodé', ' oxydé' }
for _, copper in ipairs(copperstuff) do
	
	itemVariants[copper .. ' non ciré'] = {}
	itemVariants[copper .. ' ciré'] = {}

	for _, coppervariant in ipairs(coppervariants) do
		local name = mw.ustring.gsub( copper .. coppervariant, '^%a', mw.ustring.upper )
		if copper == 'bloc de cuivre' and coppervariant ~= '' then
			name = 'Cuivre' .. coppervariant
		end

		table.insert(itemVariants[copper .. ' non ciré'], name)
		table.insert(itemVariants[copper .. ' ciré'], name .. ' ciré')
	end

	itemVariants[copper] = {}
	for _, copperitem in ipairs(itemVariants[copper .. ' non ciré']) do
		table.insert(itemVariants[copper], copperitem)
	end
	for _, copperitem in ipairs(itemVariants[copper .. ' ciré']) do
		table.insert(itemVariants[copper], copperitem)
	end
end

-- "Tout" accordé différemment dans certains cas
local tout = {
	['champignons'] = 'Tous',
	['barreaux de cuivre'] = 'Tous',
	['pierre taillée'] = 'Toute',
	['tulipe'] = 'Toute',
	['fleur'] = 'Toute',
	['petite fleur'] = 'Toute',
	['grande fleur'] = 'Toute',
	['dalle de pierre'] = 'Toute',
	['dalle de cuivre taillé'] = 'Toute',
	['roche noire'] = 'Toute',
	['grille en cuivre'] = 'Toute',
	['ampoule en cuivre'] = 'Toute',
	['porte en cuivre'] = 'Toute',
	['trappe en cuivre'] = 'Toute',
	['statue de golem de cuivre'] = 'Toute',
	['chaîne en cuivre'] = 'Toute',
	['lanterne en cuivre'] = 'Toute',
}
-- "Même" accordé différemment dans certains cas
local meme = {
	['champignons'] = 'Mêmes',
	['barreaux de cuivre'] = 'Mêmes',
}
table.insert( itemVariants['teinture'], 1, 'Teinture blanche' )
local function getBaseName(name)
	return name:gsub(' non ciré$', ''):gsub(' ciré$', '')
end
for aliasName, aliasItems in pairs( itemVariants ) do
	local baseName = getBaseName(aliasName)
	aliases[(tout[baseName] or 'Tout') .. ' ' .. aliasName] = aliasItems
	aliases[(meme[baseName] or 'Même') .. ' ' .. aliasName] = aliasItems
end

-- Couleurs de l'info-bulle --
local yellowTooltips = {
	'Coeur de la mer',
	'Cœur de la mer',
	'Crâne de squelette',
	'Livre enchanté',
	'Souffle de dragon',
	'Totem d\'immortalité',
	'Tête de Creeper',
	'Tête de joueur',
	'Tête de Piglin',
	'Tête de zombie',
	'Tête',
	'Étoile du Nether',
    "Fiole d'expérience",
    "Oeuf de renifleur",
	'Boussole de récupération',
	'Fragment de disque 5',
	'Coquille de nautile',
	'Éclat d\'écho',
	'Corne de chèvre',
    "Fiole d'expérience",
    "Oeuf de renifleur",
	'Boussole de récupération',
	'Coquille de nautile',
	'Éclat d\'écho',
	'Corne de chèvre',
    'Bannière funeste',
	'Motif de Creeper pour bannière',
	'Motif de face de Creeper pour bannière',
	'Motif de groin pour bannière',
}
for _, name in ipairs( yellowTooltips ) do
	aliases[name] = { title = '&e', name = name }
end

local aquaTooltips = {
	'Balise',
	'Conduit',
	'Crâne de Wither squelette',
    'Étoile du Nether',
    'Pomme dorée enchantée',
    'Motif de tourbillon pour bannière',
    'Motif de rafaleur pour bannière',
    'Motif de crâne pour bannière',
    'Motif de symbole pour bannière',
}
for _, name in ipairs( aquaTooltips ) do
	aliases[name] = { title = '&b', name = name }
end

local magentaTooltips = {
	'Barrière invisible',
	'Bâton de débogage',
	'Bloc de commande en chaîne',
	'Bloc de commande à répétition',
	'Bloc de commande',
	'Bloc de puzzle',
	'Bloc de structure',
	'Bloc de test',
	'Bloc d\'instance de test',
	'Livre des connaissances',
	'Noyau lourd',
	'Oeuf de dragon',
	'Tête de dragon',
	'Vide de structure',
}
for _, name in ipairs( magentaTooltips ) do
	aliases[name] = { title = '&d', name = name }
end

-- 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 = {
	{ nom = 'Arc' },
	{ nom = 'Bouclier' },
	{ nom = 'Briquet' },
	{ nom = 'Canne à pêche', terminaison = 'e' },
	{ nom = 'Carotte sur un bâton', terminaison = 'e' }, -- terminaison = truc à ajouter après "endommagé" pour l'accord
	{ nom = 'Cisailles', terminaison = 'es' },
}
for _, item in ipairs( damagedItems ) do
	local terminaison = item.terminaison or ''
	local name = item.nom .. ' endommagé' .. terminaison
	aliases[name] = { title = item.nom .. ' endommagé' .. terminaison, name = name }
end

-- Banners and colored items --
local patterns = {
	'Bande #couleur#',
	'Barre #couleur# à sénestre',
	'Bordure #couleur#',
	'Bordure cannelée #couleur#',
	'Canton #couleur# en chef à dextre',
	'Canton #couleur# en chef à sénestre',
	'Canton #couleur# en pointe à dextre',
	'Canton #couleur# en pointe à sénestre',
	'Champ maçonné #couleur#',
	'Coupé au premier #couleur#',
	'Coupé au second #couleur#',
	'Crâne #couleur#',
	'Croix #couleur#',
	'Dégradé #couleur#',
	'Dégradé #couleur# en pointe',
	'Émanchures #couleur# en chef',
	'Émanchures #couleur# en pointe',
	'Face de Creeper #couleur#',
	'Fasce #couleur#',
	'Fasce #couleur# en chef',
	'Fasce #couleur# en pointe',
	'Fleur #couleur#',
	'Losange #couleur#',
	'Mantelé #couleur#',
	'Mantelé renversé #couleur#',
	'Pal #couleur#',
	'Pal #couleur# à dextre',
	'Pal #couleur# à sénestre',
	'Parti au premier #couleur#',
	'Parti au second #couleur#',
	'Quatre pals #couleur#',
	'Sautoir #couleur#',
	'Symbole #couleur#',
	'Taillé au premier #couleur#',
	'Taillé au second #couleur#',
	'Tourteau #couleur#',
	'Tranché au premier #couleur#',
	'Tranché au second #couleur#',
    'Groin #couleur#',
    'Globe #couleur#',
    'Tourbillon #couleur#',
    'Rafaleur #couleur#'
}
local couleursBannieres = {
	'd\'argent',
	'd\'orangé',
	'de pourpre',
	'de bleu céleste',
	'd\'or',
	'de sinople clair',
	'de carnation',
	'd\'acier',
	'd\'argent grisé',
	'de cyan',
	'de mûre',
	'd\'azur',
	'de tanné',
	'de sinople',
	'de gueules',
	'de sable'
}
local colors = {
	'blanc',
	'orange',
	'magenta',
	'bleu clair',
	'jaune',
	'vert clair',
	'rose',
	'gris',
	'gris clair',
	'cyan',
	'violet',
	'bleu',
	'marron',
	'vert',
	'rouge',
	'noir'
}
local colorsfem = {
	'blanche',
	'orange',
	'magenta',
	'bleu clair',
	'jaune',
	'vert clair',
	'rose',
	'grise',
	'gris clair',
	'cyan',
	'violette',
	'bleue',
	'marron',
	'verte',
	'rouge',
	'noire'
}

-- Firework Stars --
local fireworkStar = {}
for _, color in ipairs( colorsfem ) do
	local name = 'Étoile de feu d\'artifice' .. ' ' .. color
	aliases[name] = { title = 'Étoile de feu d\'artifice', name = name, text = '&7' .. color }
	table.insert( fireworkStar, aliases[name] )
end
aliases['Toute étoile de feu d\'artifice'] = fireworkStar
aliases['Même étoile de feu d\'artifice'] = fireworkStar

-- Bannières --
for _, color in ipairs( couleursBannieres ) do
	for _, pattern in ipairs( patterns ) do
		name = 'Bannière ' .. pattern:gsub( '#couleur#', color )
		aliases[name] = { title = 'Bannière', name = name, text = '&7' .. pattern:gsub( '#couleur#', color ) }
	end
end

-- Création d'alias du type "Tout <bloc>" pour les objets se déclinant en 16 couleurs --
local coloredItems = {
	'tapis',
	'ballon',
	'bouclier',
	'sac coloré',
	'verre coloré',
    'béton',
    'béton $1 en poudre',
    'lit',
    'harnais',
}
for _, item in ipairs( coloredItems ) do
	local coloredItemAliases = {}
	for _, color in ipairs( colors ) do
		local itemName
		if item:find( '%$1' ) then
			itemName = mw.ustring.gsub( item:gsub( '%$1', color ), '^%a', mw.ustring.upper )
		else
			itemName = mw.ustring.gsub( item:gsub(' coloré', ''), '^%a', mw.ustring.upper )  .. ' ' .. color
		end
		table.insert( coloredItemAliases, itemName)
	end
    item = item:gsub( '%$1 ', '' )
	aliases['Tout ' .. item] = coloredItemAliases
	aliases['Même ' .. item] = coloredItemAliases
end
local coloredItemsFem = {
	'bannière',
	'boîte de Shulker colorée',
	'laine',
	'terre cuite colorée',
 	'terre cuite émaillée',
	'vitre colorée',
	'bougie colorée'
}   
for _, item in ipairs( coloredItemsFem ) do
	local coloredItemAliases = {}
	for _, color in ipairs( colorsfem ) do
		table.insert( coloredItemAliases, mw.ustring.gsub( item:gsub(' colorée', ''), '^%a', mw.ustring.upper ) .. ' ' .. color)
	end
	aliases['Toute ' .. item] = coloredItemAliases
	aliases['Même ' .. item] = coloredItemAliases
end

-- list of all potions with no effects
local noEffects = {
	'Fiole d\'eau',
	'Potion étrange',
	'Potion épaisse',
	'Potion banale',
	'Potion banale prolongée',
	'Potion non fabricable',
	'Fiole d\'eau jetable',
	'Potion étrange jetable',
	'Potion épaisse jetable',
	'Potion banale jetable',
	'Potion volatile banale prolongée',
	'Potion jetable non fabricable',
	'Fiole d\'eau persistante',
	'Potion étrange persistante',
	'Potion épaisse persistante',
	'Potion banale persistante',
	'Potion persistante banale prolongée',
	'Potion persistante non fabricable',
	'Flèche à effet',
	'Flèche à eau',
	'Flèche à effet non fabricable',
}
for _, name in ipairs(noEffects) do
	aliases[name] = { name = name, text = '&7Sans effet' }
end

-- start these lists with the no effect items as names are not normal
local potionItems = {
	['potion'] = {
	    aliases["Fiole d'eau"],
        aliases['Potion étrange'],
        aliases['Potion épaisse'],
        aliases['Potion banale'],
	},
	['potion jetable'] = {
	    aliases["Fiole d'eau jetable"],
        aliases['Potion étrange jetable'],
        aliases['Potion épaisse jetable'],
        aliases['Potion banale jetable'],
	},
	['potion persistante'] = {
	    aliases["Fiole d'eau persistante"],
        aliases['Potion étrange persistante'],
        aliases['Potion épaisse persistante'],
        aliases['Potion banale persistante'],
	},
	['flèche à effet'] = {
		aliases['Flèche à eau'],
		aliases['Flèche à effet'],
		aliases['Flèche à effet'],
		aliases['Flèche à effet'],
	},
}

-- Potions --
local effects = {
	-- durations are in the order normal, extended, enhanced
	{name = 'de régénération', effect = '&9Régénération', enhanced = 'II',
		durations = { normal = { '00:45', '01:30', '00:22' }, lingering = { '00:11', '00:22', '00:05' }, arrow = { '00:05', '00:11', '00:02' }}},
	{ name = 'de rapidité', effect = '&9Rapidité', enhanced = 'II', applied = {'&9+20 % en rapidité', '&9+40 % en rapidité'},  
		durations = { normal = { '03:00', '08:00', '01:30' }, lingering = { '00:45', '02:00', '00:22' }, arrow = { '00:22', '01:00', '00:11' }}},
	{ name = 'de résistance au feu', effect = '&9Résistance au feu', durations = { normal = { '03:00', '08:00' }, lingering = { '00:45', '02:00' }, arrow = { '00:22', '01:00' }}},
	{ name = 'de poison', effect = '&cPoison', enhanced = 'II', 
		durations = { normal = { '00:45', '01:30', '00:21' }, lingering = { '00:11', '00:22', '00:05' }, arrow = { '00:05', '00:11', '00:02' }}},
	{ name = 'de soin', effect = '&9Soin instantané', enhanced = 'II' },
	{ name = 'de vision nocturne', effect = '&9Vision nocturne', durations = { normal = { '03:00', '08:00' }, lingering = { '00:45', '02:00' }, arrow = { '00:22', '01:00' }}},
	{ name = 'de faiblesse', effect = '&cFaiblesse', applied = {'&c-4 en points d\'attaque'}, 
		durations = { normal = { '01:30', '04:00' }, lingering = { '00:22', '01:00' }, arrow = { '00:11', '00:30' }}},
	{ name = 'de force', effect = '&9Force', enhanced = 'II', applied = {'&9+3 en points d\'attaque', '&9+6 en points d\'attaque'}, 
		durations = { normal = { '03:00', '08:00', '01:30'}, lingering = {'00:45', '02:00', '00:22'}, arrow = { '00:22', '01:00', '00:11' }}},
	{ name = 'de lenteur', effect = '&cLenteur', enhanced = 'IV', applied = {'&c-15 % en rapidité', '&c-60 % en rapidité'},  
		durations = { normal = { '01:30', '04:00', '00:20'}, lingering = {'00:22', '01:00', '00:05'}, arrow = { '00:11', '00:30', '00:02' }}},
	{ name = 'de saut', effect = '&9Sauts améliorés', enhanced = 'II', applied = {'&9+1 en distance de chute sûre', '&9+2 en distance de chute sûre'}, 
		durations = { normal = { '03:00', '08:00', '01:30' }, lingering = {'00:45', '02:00', '00:22'}, arrow = { '00:22', '01:00', '00:11' }}},
	{ name = 'de dégâts', effect = '&cDégâts instantanés', enhanced = 'II' },
	{ name = 'de respiration aquatique', effect = '&9Respiration aquatique', durations = { normal = { '03:00', '08:00' }, lingering = { '00:45', '02:00' }, arrow = { '00:22', '01:00' }}},
	{ name = 'd\'invisibilité', effect = '&9Invisibilité', durations = { normal = { '03:00', '08:00' }, lingering = { '00:45', '02:00' }, arrow = { '00:22', '01:00' }}},
	{ name = 'de chute lente', effect = '&9Chute lente', durations = { normal = { '01:30', '04:00' }, lingering = { '00:22', '01:00' }, arrow = { '00:11', '00:30' }}},
	{ name = 'de chance', applied = {'&9+1 en chance'}, effect = '&9Chance',   durations = { normal = { '05:00' }, lingering = { '01:15' }, arrow = { '00:37' }}},
	{ name = 'du Maître Tortue', text = '&cLenteur IV ($1)/&9Résistance III ($1)//&5Effet appliqué :/&c-60 % en rapidité', 
		enhanced = '&cLenteur VI ($1)/&9Résistance IV ($1)//&5Effet appliqué :/&c-90 % en rapidité',
		durations = { normal = { '00:20', '00:40', '00:20' }, lingering = { '00:05', '00:10', '00:05' }, arrow = {  '00:02', '00:05', '00:02' }}},
	{ name = 'de viscosité', effect = '&cViscosité', durations = { normal = { '03:00' }, lingering = { '00:45' }, arrow = { '00:22' }}},
	{ name = 'd\'infestation', effect = '&cInfestation', durations = { normal = { '03:00' }, lingering = { '00:45' }, arrow = { '00:22' }}},
	{ name = 'de tissage', effect = '&cTissage', durations = { normal = { '03:00' }, lingering = { '00:45' }, arrow = { '00:22' }}},
	{ name = 'de souffle', effect = '&cSouffle', durations = { normal = { '03:00' }, lingering = { '00:45' }, arrow = { '00:22' }}},
	{ name = 'de flétrissure', effect = '&cDécomposition', durations = { normal = { '00:40' }, lingering = { '00:10' }, arrow = { '00:05' }}}
}
local types = {
	{name = 'potion',             durations = 'normal',    text = 'Potion ',   form = ''},
	{name = 'potion jetable',     durations = 'normal',    text = 'Potion ',   form = ' jetable'},
	{name = 'potion persistante', durations = 'lingering', text = 'Potion ',   form = ' persistante'},
	{name = 'flèche à effet',     durations = 'arrow',     text = 'Flèche ',   form = ''},
}

for _, effect in ipairs(effects) do
	for _, type in ipairs(types) do
		-- form name, it will be reused
		local name =  type.text .. effect.name .. type.form
		local potionName = {}
		if type.name == 'Flèche à effet' then
		potionName = type.text .. effect.name
		else
		potionName = type.text .. effect.name .. type.form
		end
		
        if effect.name == 'de flétrissure' then
            -- Update type.form based on the type of potion
            if type.form == ' jetable' then
                type.form = 'volatile '
            elseif type.form == ' persistante' then
                type.form = 'persistante '
            end

            name = type.text .. type.form .. effect.name
            potionName = type.text .. type.form .. 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 .. ' prolongée'] = { name = potionName, text = effect.text:gsub( '%$1', durations[2] ) .. '/&8Prolongée' }
				aliases[name .. ' renforcée'] = { name = potionName, text = effect.enhanced:gsub( '%$1', durations[3] ) .. '/&8Renforcée' }
			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)//&5Effet appliqué :/%s', effect.effect, durations[1], applied[1] ) }
			
				-- ensure we have extended
				if durations[2] then
					aliases[name .. ' prolongée'] = { name = potionName, text = string.format( '%s (%s)//&5Effet appliqué :/%s', effect.effect, durations[2], applied[1] ) .. '/&8Prolongée' }
					
					-- and enhanced
					if effect.enhanced then
						aliases[name .. ' renforcée'] = { name = potionName, text = string.format( '%s %s (%s)//&5Effet appliqué :/%s', effect.effect, effect.enhanced, durations[3], applied[2] ) .. '/&8Renforcée' }
					end
				end
			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 .. ' prolongée'] = { name = potionName, text = string.format( '%s (%s)', effect.effect, durations[2] ) .. '/&8Prolongée' }
					
					-- and enhanced, currently there is nothing with a duration that can be extended but not enhanced
					if effect.enhanced then
						aliases[name .. ' renforcée'] = { name = potionName, text = string.format( '%s %s (%s)', effect.effect, effect.enhanced, durations[3] ) .. '/&8Renforcée' }
					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 .. ' renforcée'] = { name = potionName, text = effect.effect .. ' ' .. effect.enhanced .. '/&8Renforcée' }
		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['Toute ' .. item] = potionAliases
	aliases['Même ' .. item] = potionAliases
end

-- Wood --

local woodTypes = {
    overworld = {
	     'chêne',
	     'sapin',
	     'bouleau',
	     'acajou',
	     'acacia',
	     'chêne noir',
         'palétuvier',
         'cerisier',
         'chêne pâle',
         'bambou',
    },
    nether = {
        'carmin',
        'biscornue',
    },
    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 = {
        'bois',
        'bûche',
        'bateau',
        'bateau de stockage',
        'bûche $1 écorcée',
        'bois $1 écorcé',
        'pousse',
    },
    nether = {
        'tige',
        'hyphes',
        'tige $1 dénudée',
        'hyphes $1 dénudées',
    },
    both = {
		-- Any/Matching X or Y
        '${bois,hyphes}',
        '${bûche,tige}',
        '${bois $1 écorcé,hyphes $1 dénudées}',
        '${bûche $1 écorcée,tige $1 dénudée}',

		-- Dimensional prefixes
        'planches $world',
        'barrière $wood $world',
        'portillon $wood $world',
        'porte $wood $world',
        'bouton $wood $world',
        'plaque de pression $wood $world',
        'trappe $wood $world',
        'dalle $wood $world',
        'escalier $wood $world',
        'pancarte $wood $world',
        'pancarte suspendue $wood $world',
        'étagère $wood $world',

		-- Both dimensions
		-- Items with non-wood variants include $wood
        'planches',
        'barrière $wood',
        'portillon',
        'porte $wood',
        'bouton $wood',
        'plaque de pression $wood',
        'trappe $wood',
        'dalle $wood',
        'escalier $wood',
        'pancarte',
        'pancarte suspendue',
        'étagère',
    }
}
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[item .. ' de la Surface'] = 'overworld'
			woodItemWorld[item .. ' du Nether'] = 'nether'
		end
		woodItemWorld[item] = world
    end
end

local woodBadItems = {
	['Pousse de bambou'] = 1,
	['Bois de bambou'] = 1,
	['Bûche de bambou'] = 1,
	['Bois de bambou écorcé'] = 1,
	['Bûche de bambou écorcée'] = 1,
}

local woodNameMapping = {
	['Pousse de palétuvier'] = 'Propagule de palétuvier',
	['Bateau en bambou'] = 'Radeau en bambou',
	['Bateau de stockage en bambou'] = 'Radeau de stockage en bambou',
    ['Hyphes biscornue'] = 'Hyphes biscornues',
    ['Hyphes biscornue dénudées'] = 'Hyphes biscornues dénudées',
    ['Planches biscornue'] = 'Planches biscornues',
    ['Portillon biscornue'] = 'Portillon biscornu',
    ['Bouton biscornue'] = 'Bouton biscornu',
    ['Escalier biscornue'] = 'Escalier biscornu',
}

-- "En" remplacé par "De" dans certains cas
local function pronoun(wood)
    return wood:find('^[aeiouAEIOU]') and 'd\'' or 'de '
end

local de = {
    ['planches'] = pronoun,
    ['planches en bois'] = pronoun,
    ['planches du Nether'] = pronoun,
    ['planches de la Surface'] = pronoun,
    ['bois'] = pronoun,
    ['bûche'] = pronoun,
    ['tige'] = pronoun,
    ['hyphes'] = pronoun,
    ['tige $1 dénudée'] = pronoun,
    ['hyphes $1 dénudées'] = pronoun,
    ['bûche $1 écorcée'] = pronoun,
    ['bois $1 écorcé'] = pronoun,
    ['${bois,hyphes}'] = pronoun,
    ['${bûche,tige}'] = pronoun,
    ['${bois $1 écorcé,hyphes $1 dénudées}'] = pronoun,
    ['${bûche $1 écorcée,tige $1 dénudée}'] = pronoun,
    ['pousse'] = pronoun,
}

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

    -- real "linkable" name
    local realItem = item:gsub(' de la Surface', '')
    realItem = realItem:gsub(' du 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)

        local pronoun
        if wood == "carmin" or wood == "biscornue" then
            pronoun = ''
        else
            pronoun = de[item] and de[item](wood) or 'en '
        end

        if itemName:find('%$wood') then
            itemName = mw.ustring.gsub( itemName:gsub('%$wood', pronoun .. '' .. wood), '^%a', mw.ustring.upper )
        elseif itemName:find('%$1') then
            itemName = mw.ustring.gsub( itemName:gsub( '%$1', pronoun .. '' .. wood), '^%a', mw.ustring.upper )
        else
            itemName = mw.ustring.gsub( itemName .. ' ' .. pronoun .. '' .. wood, '^%a', mw.ustring.upper )
        end

        -- special handling
        if woodNameMapping[itemName] then
            itemName = woodNameMapping[itemName]
        end

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

-- "Tout" accordé différemment dans certains cas
local tout = {
	['barrière en bois'] = 'Toute',
	['bûche'] = 'Toute',
	['${bûche,tige}'] = 'Toute',
	['bûche écorcée'] = 'Toute',
	['${bûche $1 écorcée,tige $1 dénudée}'] = 'Toute',
    ['bûche écorcée ou tige dénudée'] = 'Toute',
    ['bûche ou tige'] = 'Toute',
	['hyphes'] = 'Toutes',
	['hyphes dénudées'] = 'Toutes',
	['tige'] = 'Toute',
	['tige dénudée'] = 'Toute',
	['dalle en bois'] = 'Toute',
    ['dalle en bois du Nether'] = 'Toute',
    ['dalle en bois de la Surface'] = 'Toute',
	['pancarte'] = 'Toute',
	['pancarte en bois du Nether'] = 'Toute',
    ['pancarte en bois de la Surface'] = 'Toute',
	['pancarte suspendue'] = 'Toute',
	['pancarte suspendue en bois du Nether'] = 'Toute',
    ['pancarte suspendue en bois de la Surface'] = 'Toute',
	['planches'] = 'Toutes',
    ['planches de la Surface'] = 'Toutes',
    ['planches du Nether'] = 'Toutes',
	['planches en bois'] = 'Toutes',
	['plaque de pression en bois'] = 'Toute',
	['plaque de pression en bois du Nether'] = 'Toute',
    ['plaque de pression en bois de la Surface'] = 'Toute',
	['porte en bois'] = 'Toute',
	['porte en bois du Nether'] = 'Toute',
    ['porte en bois de la Surface'] = 'Toute',
	['trappe en bois'] = 'Toute',
	['trappe en bois du Nether'] = 'Toute',
    ['trappe en bois de la Surface'] = 'Toute',

}
-- "Même" accordé différemment dans certains cas
local meme = {
	['planches'] = 'Mêmes',
    ['planches en bois'] = 'Mêmes',
    ['planches de la Surface'] = 'Mêmes',
    ['planches du Nether'] = 'Mêmes',
	['hyphes'] = 'Mêmes',
    ['hyphes dénudées'] = 'Mêmes',
}

	-- Parse ${,} (world-select) syntax
	item = item:gsub("%${(.-),(.-)}", "%1 ou %2")
    item = item:gsub(' %$wood', ' en bois')
    item = item:gsub(' %$1', '')
    aliases[(tout[item] or 'Tout') .. ' ' .. item] = woodAliases
	aliases[(meme[item] or 'Même') .. ' ' .. item] = woodAliases
end
-- Bedrock Edition Items --
local editionItems = {
	BE = {
		'Portillon en acacia',
		'Muret d\'andésite',
		'Portillon en bouleau',
		'Lit noir',
		'Vitre noire',
		'Muret de roche noire',
		'Lit bleu',
		'Glace bleue',
		'Vitre bleue',
		'Arc',
		'Muret de briques',
		'Lit marron',
		'Vitre marron',
		'Poisson-globe dans un seau',
		'Poisson tropical dans un seau',
		'Oeuf d\'apparition de chat',
		'Coffre',
		'Muret de pierres des abîmes',
		'Muret de pierres',
		'Portillon carmin',
		'Obsidienne pleureuse',
		'Lit cyan',
		'Vitre cyan',
		'Portillon en chêne noir',
		'Muret d\'ardoise des abîmes taillée',
		'Muret d\'ardoise des abîmes carrelée',
		'Carte du village du désert',
		'Muret de diorite',
		'Table d\'enchantement',
		'Passerelle de l\'End',
		'Cadre de Portail de l\'End',
		'Portail de l\'End',
		'Barre de l\'End',
		'Muret de pierre taillée de l\'End',
		'Coffre de l\'Ender',
		'Vitre',
		'Pierre lumineuse',
		'Muret de granite',
		'Lit gris',
		'Vitre grise',
		'Lit vert',
		'Vitre verte',
		'Bloc de miel',
		'Bloc de corail corné',
		'Barreaux de fer',
		'Citrouille-lanterne',
		'Carte d\'exploration de la Jungle',
		'Portillon en acajou',
		'Feuilles d\'acajou',
		'Lave',
		'Armure en cuir pour cheval',
		'Lumière',
		'Lit bleu clair',
		'Vitre bleu clair',
		'Lit gris clair',
		'Vitre gris clair',
		'Lit vert clair',
		'Vitre vert clair',
        'Boussole magnétisée',
        'Lit magenta',
		'Vitre magenta',
		'Bloc de magma',
		'Carte',
		'Wagonnet à bloc de commande',
		'Générateur de créatures',
		'Muret de pierres moussues',
		'Muret de pierre taillée moussue',
		'Muret de briques de terre crue',
		'Muret de briques du Nether',
		'Portillon en chêne',
		'Observateur',
		'Carte d\'exploration de l\'océan',
		'Lit orange',
		'Vitre orange',
		'Oeuf d\'apparition de panda',
		'Lit rose',
		'Vitre rose',
		'Carte du village des plaines',
		'Muret de pierre noire',
		'Muret de pierre noire taillée',
		'Muret d\'ardoise des abîmes polie',
		'Muret de tuf poli',
		'Muret de prismarine',
		'Lit violet',
		'Vitre violette',
		'Lit violet',
		'Muret de briques rouges du Nether',
		'Muret de grès rouge',
		'Vitre rouge',
		'Muret de briques de résine',
		'Muret de grès',
		'Carte du village de la savane',
		'Échafaudage',
		'Lanterne aquatique',
		'Champilampe',
		'Carte du village enneigé',
		'Portillon en sapin',
		'Muret de pierre taillée',
		'Tailleur de pierre',
		'Vide de structure',
		'Carte d\'exploration des marais',
		'Carte du village de la taïga',
		'Coffre piégé',
		'Carte de chambres des épreuves',
		'Muret de tuf',
		'Muret de tuf taillé',
		'Oeuf d\'apparition de marchand ambulant',
		'Portillon biscornu',
		'Lit blanc',
		'Vitre blanche',
		'Carte d\'exploration des bois',
		'Lit jaune',
		'Vitre jaune',
	},
	LCE = {
		'Arbuste mort'
	}
}
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

-- Tessons de poterie --
local pottery_sherds = { 
	{ 'd\'archer' },
	{ 'de figure' },
	{ 'de joyau' },
	{ 'de crâne' },
	{ 'de pêcheur' },
	{ 'de lame' },
	{ 'd\'alchimiste' },
	{ 'de feu' },
	{ 'de danger' },
	{ 'd\'explorateur' },
	{ 'd\'ami' },
	{ 'de coeur' },
	{ 'de coeur brisé' },
	{ 'de loup' },
	{ 'de mineur' },
	{ 'de pleureur' },
	{ 'de richesse' },
	{ 'd\'épis' },
	{ 'd\'abri' },
	{ 'de renifleur' },
	{ 'de tourbillon' },
	{ 'de rafaleur' },
	{ 'de hache' },
}

local potterySherdAliases = {}
for _, pottery_sherd in ipairs(pottery_sherds) do
	local name  = 'Tesson de poterie ' .. pottery_sherd[1]
	aliases[name] = {title = '&e' .. name , name = name }
	table.insert(potterySherdAliases, aliases[name])
end
table.insert(potterySherdAliases, 'Brique')

aliases['Tout tesson de poterie'] = potterySherdAliases

-- Modèles de forge
local smithing_templates = {
	{ '&e', 'Amélioration en Netherite', 'Équipement en diamant', 'Lingot de Netherite' },
	{ '&e', 'Ornement des littoraux',    'Armure',                'Lingots et cristaux' },
	{ '&e', 'Ornement des dunes',        'Armure',                'Lingots et cristaux' },
	{ '&e', 'Ornement des hôtes',        'Armure',                'Lingots et cristaux' },
	{ '&e', 'Ornement des éleveurs',     'Armure',                'Lingots et cristaux' },
	{ '&e', 'Ornement des côtes',        'Armure',                'Lingots et cristaux' },
	{ '&e', 'Ornement des sentinelles',  'Armure',                'Lingots et cristaux' },
	{ '&e', 'Ornement des modeleurs',    'Armure',                'Lingots et cristaux' },
	{ '&e', 'Ornement des groins',       'Armure',                'Lingots et cristaux' },
	{ '&e', 'Ornement des marées',       'Armure',                'Lingots et cristaux' },
	{ '&e', 'Ornement des éclaireurs',   'Armure',                'Lingots et cristaux' },
	{ '&e', 'Ornement des jungles',      'Armure',                'Lingots et cristaux' },
	{ '&e', 'Ornement des boulons',      'Armure',                'Lingots et cristaux' },
	{ '&e', 'Ornement des tourbillons',  'Armure',                'Lingots et cristaux' },
	
	{ '&b', 'Ornement des abîmes',       'Armure',                'Lingots et cristaux' },
	{ '&b', 'Ornement de l\'oeil',         'Armure',                'Lingots et cristaux' },
	{ '&b', 'Ornement des Vex',          'Armure',                'Lingots et cristaux' },
	{ '&b', 'Ornement des tours',        'Armure',                'Lingots et cristaux' },
	
	{ '&d', 'Ornement du silence',       'Armure',                'Lingots et cristaux' },
}
local smithing_template_array = {}
local armor_trims_array = {}
for _,smithing_template in pairs(smithing_templates) do
	local rarityColor = smithing_template[1]
	local template = smithing_template[2]
	local apply_to = smithing_template[3]
	local ingredients = smithing_template[4]
	
	local current_alias = {
		title = rarityColor .. template,
		name = template,
		text = '&7Modèle de forge' .. '//S\'applique à :/&#160;&9' .. apply_to .. '/&7Ingrédients :/&#160;&9' .. ingredients,
	}
	aliases[template] = current_alias
	table.insert(smithing_template_array,current_alias)
    if string.find(template, 'Ornement') then
		table.insert(armor_trims_array,current_alias)
	end
end
aliases['Même modèle de forge'] = smithing_template_array
aliases['Tout modèle de forge'] = smithing_template_array
aliases['Même ornement'] = armor_trims_array
aliases['Tout ornement'] = armor_trims_array
aliases['Même modèle d\'ornement'] = armor_trims_array
aliases['Tout modèle d\'ornement'] = armor_trims_array

return aliases