Minecraft Wiki
k (Verdere optimalisatie)
k (+ steenachtig blok)
 
(25 tussenliggende versies door dezelfde gebruiker niet weergegeven)
Regel 1: Regel 1:
  +
-- Ga door een tabel in de volgorde zoals gegeven (http://lua-users.org/wiki/MakingLuaLikePhp)
local kleurstoffen = {
 
  +
function functioning_table( ... )
'Oranje kleurstof', 'Magenta kleurstof', 'Lichtblauwe kleurstof', 'Paardenbloemgeel', 'Lichtgroene kleurstof',
 
  +
local newTable,keys,values={},{},{}
'Roze kleurstof', 'Grijze kleurstof', 'Lichtgrijze kleurstof', 'Turquoise kleurstof', 'Paarse kleurstof',
 
  +
newTable.pairs=function(self) -- pairs iterator
'Lapis Lazuli', 'Cacaobonen', 'Cactusgroen', 'Rozenrood', 'Inktzak',
 
  +
local count=0
}
 
  +
return function()
  +
count=count+1
  +
return keys[count],values[keys[count]]
  +
end
  +
end
  +
setmetatable(newTable,{
  +
__newindex=function(self,key,value)
  +
if not self[key] then table.insert(keys,key)
  +
elseif value==nil then -- Handle item delete
  +
local count=1
  +
while keys[count]~=key do count = count + 1 end
  +
table.remove(keys,count)
  +
end
  +
values[key]=value -- replace/create
  +
end,
  +
__index=function(self,key) return values[key] end
  +
})
  +
for x=1,table.getn(arg) do -- door #args vervangen als dit werkt
  +
for k,v in pairs(arg[x]) do newTable[k]=v end
  +
end
  +
return newTable
  +
end
  +
  +
-- Hoofdletters (houdt ook rekening met 'ij')
  +
function hoofdletter( str )
  +
local pstr = '' -- pstr = Parsed STRing
  +
if str:match('^%l%l') == 'ij' then
  +
pstr = str:gsub('^ij', 'IJ')
  +
else
  +
pstr = str:gsub('^%l', string.upper)
  +
end
  +
return pstr
  +
end
   
 
local aliases = {
 
local aliases = {
-- Veelvoorkomende brandstoftypen --
+
-- Veelvoorkomende branstof --
['Elke brandstof'] = { 'Steenkool', 'Houtskool', { title = 'Hout', name = 'Eikenhout' }, { title = 'Houten planken', name = 'Eikenhouten planken' }, 'Steenkoolblok' },
+
['Elke brandstof'] = { 'Steenkool', 'Houtskool', { title = 'Stam', name = 'Eikenstam' }, { title = 'Houten planken', name = 'Eikenhouten planken' }, 'Steenkoolblok', 'Gedroogd kelpblok' },
  +
 
-- Harnas --
 
-- Harnas --
 
['Leren harnas'] = { 'Leren kap', 'Leren tuniek', 'Leren broek', 'Leren laarzen' },
 
['Leren harnas'] = { 'Leren kap', 'Leren tuniek', 'Leren broek', 'Leren laarzen' },
Regel 14: Regel 48:
 
['IJzeren harnas'] = { 'IJzeren helm', 'IJzeren borstplaat', 'IJzeren beenstukken', 'IJzeren laarzen' },
 
['IJzeren harnas'] = { 'IJzeren helm', 'IJzeren borstplaat', 'IJzeren beenstukken', 'IJzeren laarzen' },
 
['Diamanten harnas'] = { 'Diamanten helm', 'Diamanten borstplaat', 'Diamanten beenstukken', 'Diamanten laarzen' },
 
['Diamanten harnas'] = { 'Diamanten helm', 'Diamanten borstplaat', 'Diamanten beenstukken', 'Diamanten laarzen' },
  +
['Netherieten harnas'] = { 'Netherieten helm', 'Netherieten borstplaat', 'Netherieten beenstukken', 'Netherieten laarzen' },
-- Toon namen --
 
  +
  +
-- Overige namen --
 
['Gebroken dekschild'] = { title = 'Dekschild', name = 'Gebroken dekschild' },
 
['Gebroken dekschild'] = { title = 'Dekschild', name = 'Gebroken dekschild' },
  +
-- Klei (blok) -> Klei
['Bruine paddenstoel'] = { title = 'Paddenstoel', name = 'Bruine paddenstoel' },
 
  +
-- Klei -> Kleibal
['Bruine paddenstoel (blok)'] = { title = 'Paddenstoel', name = 'Bruine paddenstoel (blok)' },
 
['Klei (blok)'] = { title = 'Klei', name = 'Klei (blok)' },
+
['Bloemwapenbanierpatroon'] = { title = 'Banierpatroon', name = 'Banierpatroon', text = '&7Bloem' },
['Betoverd boek'] = { title = '&e', name = 'Betoverd boek' },
+
['Creeperwapenbanierpatroon'] = { title = '&eBanierpatroon', name = 'Banierpatroon', text = '&7Creeper' },
['Betoverde gouden appel'] = { title = '&d', name = 'Gouden appel' },
+
['Ingesprongen zoom-banierpatroon'] = { title = 'Banierpatroon', name = 'Banierpatroon', text = '&Ingesprongen zoom' },
['Bruine paddenstoel'] = { title = 'Paddenstoel', name = 'Bruine paddenstoel' },
+
['Metselwerkbanierpatroon'] = { title = 'Banierpatroon', name = 'Banierpatroon', text = '&7Metselwerk' },
['Gouden appel'] = { title = '&b', name = 'Gouden appel' },
+
['Schedelwapenbanierpatroon'] = { title = '&eBanierpatroon', name = 'Banierpatroon', text = '&7Schedel' },
['Netherbaksteen (voorwerp)'] = { title = 'Netherbaksteen', name = 'Netherbaksteen (voorwerp)' },
+
['Mojanglogobanierpatroon'] = { title = '&dBanierpatroon', name = 'Banierpatroon', text = '&7Mojanglogo' },
['Rode paddenstoel'] = { title = 'Paddenstoel', name = 'Rode paddenstoel' },
+
['Globebanierpatroon'] = { title = 'Banierpatroon', name = 'Banierpatroon', text = '&7Globe' },
['Rode paddenstoel (blok)'] = { title = 'Paddenstoel', name = 'Rode paddenstoel (blok)' },
+
['Snuitbanierpatroon'] = { title = 'Banierpatroon', name = 'Banierpatroon', text = '&7Snuit' },
['Sneeuw (laag)'] = { title = 'Sneeuw', name = 'Sneeuw (laag)' },
+
['Knop'] = { title = 'Knop', name = 'Stenen knop' },
['Stenen knop'] = { title = 'Knop', name = 'Stenen knop' },
+
['Houten knop'] = { title = 'Houten knop', name = 'Eikenhouten knop' },
['Houten knop'] = { title = 'Knop', name = 'Houten knop' },
+
['Kruisboog geladen met pijl'] = { title = 'Kruisboog', name = 'Kruisboog geladen met pijl' },
  +
['Beschadigde kruisboog geladen met pijl'] = { title = 'Kruisboog', name = 'Beschadigde kruisboog geladen met pijl' },
-- Toon namen (Bedrockeditie) --
 
['Dekschildvleugels'] = { title = 'Dekschildvleugels', name = 'Dekschild' },
+
['Kruisboog geladen met vuurpijl'] = { title = 'Kruisboog', name = 'Kruisboog geladen met vuurpijl' },
  +
['Beschadigde kruisboog geladen met vuurpijl'] = { title = 'Kruisboog', name = 'Beschadigde kruisboog geladen met vuurpijl' },
  +
['Illagerbanier'] = { title = '&6&oIllagerbanier', name = 'Illagerbanier', text =
  +
'&7Turquoise lozanje/&7Lichtgrijs schildvoet/&7Grijze paal/&7Lichtgrijze zoom/&7Zwarte dwarsbalk/&7Lichtgrijsgebalkt'
  +
},
  +
['Puzzelblok'] = { title = '&dPuzzelblok', name = 'Puzzelblok' },
  +
['Halfvolle bundel'] = { title = 'Bundel', name = 'Halfvolle bundel' },
  +
['Volle bundel'] = { title = 'Bundel', name = 'Volle bundel' },
  +
  +
-- Wapens --
  +
['Drietand'] = { name = 'Drietand', text = '/&7 Wanneer hoofdhand:/ &21,1 aanvalssnelheid/ &29 aanvalsschade' },
  +
['Drietand (BE)'] = { name = 'Drietand', text = '/&9 +8 aanvalsschade' },
  +
  +
-- Bedrock- en Educationedities --
 
['Gebakken rundvlees'] = { title = 'Gebakken rundvlees', name = 'Biefstuk' },
 
['Gebakken rundvlees'] = { title = 'Gebakken rundvlees', name = 'Biefstuk' },
 
['Kaart (BE)'] = { title = 'Kaart', name = 'Kaart', text = 'Toon markeerders: &cNee' },
 
['Kaart (BE)'] = { title = 'Kaart', name = 'Kaart', text = 'Toon markeerders: &cNee' },
  +
['Kompas wijzend naar zeilsteen (BE)'] = { title = 'Kompas wijzend naar zeilsteen', name = 'Kompas wijzend naar zeilsteen (BE).gif' },
 
['Locatiekaart (BE)'] = { title = 'Kaart', name = 'Kaart', text = 'Toon markeerders: &aJa' },
 
['Locatiekaart (BE)'] = { title = 'Kaart', name = 'Kaart', text = 'Toon markeerders: &aJa' },
  +
['Sculksensor (BE)'] = { title = 'Sculksensor', name = 'Sculksensor (BE).gif' },
   
-- Drankjes --
+
-- Chemie --
['Vreemde drank'] = { name = 'Vreemde drank', text = '&7Geen effecten' },
+
['Water (stof)'] = { title = 'Water', name = 'Water (stof)' },
['Waterfles'] = { name = 'Waterfles', text = '&7Geen effecten' },
+
['Chloride'] = { 'Calciumchloride', 'Ceriumchloride', 'Kaliumchloride', 'Kwikchloride', 'Wolfraamchloride' },
['Dikke drank'] = { name = 'Dikke drank', text = '&7Geen effecten' },
+
['Sterretjes'] = { 'Oranje sterretje', 'Blauw sterretje', 'Rood sterretje', 'Paars sterretje', 'Groen sterretje' },
  +
['Overeenkomende chloride'] = { 'Calciumchloride', 'Ceriumchloride', 'Kaliumchloride', 'Kwikchloride', 'Wolfraamchloride' },
['Triviale drank'] = { name = 'Triviale drank', text = '&7Geen effecten' },
 
  +
['Overeenkomende gekleurde fakkel'] = { 'Blauwe fakkel', 'Rode fakkel', 'Paarse fakkel', 'Groene fakkel' },
  +
['Overeenkomende gloeistaaf'] = { 'Witte gloeistaaf', 'Oranje gloeistaaf', 'Magenta gloeistaaf', 'Lichtblauwe gloeistaaf',
  +
'Gele gloeistaaf', 'Lichtgroene gloeistaaf', 'Roze gloeistaaf', 'Grijze gloeistaaf', 'Lichtgrijze gloeistaaf', 'Turquoise gloeistaaf',
  +
'Paarse gloeistaaf', 'Blauwe gloeistaaf', 'Bruine gloeistaaf', 'Groene gloeistaaf', 'Rode gloeistaaf'
  +
},
  +
}
   
  +
-- Tekstwolkkleuren & animatie --
['Vreemde spattende drank'] = { name = 'Vreemde spattende drank', text = '&7Geen effecten' },
 
  +
-- Geen speciale tekstkleur (dus wit)
['Spattende waterfles'] = { name = 'Spattende waterfles', text = '&7Geen effecten' },
 
  +
local geanimeerdeSprites = {
['Dikke spattende drank'] = { name = 'Dikke spattende drank', text = '&7Geen effecten' },
 
  +
'Blauwe sleutel', 'Bellenkolom',
['Triviale spattende drank'] = { name = 'Triviale spattende drank', text = '&7Geen effecten' },
 
  +
'Debugstok',
  +
'Gele sleutel', 'Geschreven boek',
  +
'Helrode schimmeldraden', 'Helrode stam',
  +
'Klok', 'Kompas', 'Kompas wijzend naar zeilsteen',
  +
'Lava',
  +
'Magmablok',
  +
'Netherportaal',
  +
'Prismarien', 'Prismarienmuur', 'Prismarienplaat', 'Prismarientrap',
  +
'Rode sleutel',
  +
'Sculksensor', 'Spookachtige schimmeldraden', 'Spookachtige stam', 'Steenzaag',
  +
'Vuur',
  +
'Warmteblok', 'Water',
  +
'Zeelantaarn', 'Zielenvuur',
  +
}
   
  +
for _, sprite in ipairs ( geanimeerdeSprites ) do
['Vreemde aanhoudende drank'] = { name = 'Vreemde aanhoudende drank', text = '&7Geen effecten' },
 
  +
aliases[sprite] = sprite .. '.gif'
['Aanhoudende waterfles'] = { name = 'Aanhoudende waterfles', text = '&7Geen effecten' },
 
  +
end
['Dikke aanhoudende drank'] = { name = 'Dikke aanhoudende drank', text = '&7Geen effecten' },
 
['Triviale aanhoudende drank'] = { name = 'Triviale aanhoudende drank', text = '&7Geen effecten' },
 
   
  +
-- Gele tekst in tekstwolk en/of geanimeerd
['Getipte pijl'] = { name = 'Getipte pijl', text = '&7Geen effecten' },
 
  +
local geleTekstwolken = {
['Pijl der spatting'] = { name = 'Pijl der spatting', text = '&7Geen effecten' },
 
  +
{ naam = 'Beschadigd dekschild', geanimeerd = false },
['Onmaakbare getipte pijl'] = { name = 'Onmaakbare getipte pijl', text = '&7Geen effecten' },
 
  +
{ naam = 'Betoverd boek', geanimeerd = true },
  +
{ naam = 'Creeperhoofd', geanimeerd = false },
  +
{ naam = 'Drakenhoofd', geanimeerd = false },
  +
{ naam = 'Drakenadem', geanimeerd = false },
  +
{ naam = 'Dekschild', geanimeerd = false },
  +
{ naam = 'Hoofd', geanimeerd = false },
  +
{ naam = 'Hart van de zee', geanimeerd = false },
  +
{ naam = 'Magiërsextract', geanimeerd = true },
  +
{ naam = 'Netherster', geanimeerd = true },
  +
{ naam = 'Skelettenschedel', geanimeerd = false },
  +
{ naam = 'Totem der onsterfelijkheid', geanimeerd = false },
  +
{ naam = 'Witherskelettenschedel', geanimeerd = false },
  +
{ naam = 'Zombiehoofd', geanimeerd = false }
  +
}
   
  +
for _, eigenschap in ipairs( geleTekstwolken ) do
['Drank des nachtzichts - verlengd'] = { name = 'Drank des nachtzichts', text = '&9Nachtzicht (8:00)' },
 
  +
local naam = eigenschap.naam
['Spattende drank des nachtzichts - verlengd'] = { name = 'Spattende drank des nachtzichts', text = '&9Nachtzicht (8:00)' },
 
  +
if eigenschap.geanimeerd == true then
['Aanhoudende drank des nachtzichts - verlengd'] = { name = 'Aanhoudende drank des nachtzichts', text = '&9Nachtzicht (2:00)' },
 
['Pijl des nachtzichts - verlengd'] = { name = 'Pijl des nachtzichts', text = '&9Nachtzicht (1:00)' },
+
aliases[naam] = { title = '&e', name = naam .. '.gif' }
  +
else
['Drank des nachtzichts'] = { name = 'Drank des nachtzichts', text = '&9Nachtzicht (3:00)' },
 
['Spattende drank des nachtzichts'] = { name = 'Drank des nachtzichts', text = '&9Nachtzicht (3:00)' },
+
aliases[naam] = { title = '&e', name = naam }
  +
end
['Aanhoudende drank des nachtzichts'] = { name = 'Drank des nachtzichts', text = '&9Nachtzicht (0:45)' },
 
  +
end
['Pijl des nachtzichts'] = { name = 'Drank des nachtzichts', text = '&9Nachtzicht (0:22)' },
 
   
  +
-- Aqua tekst in tekstwolk en/of geanimeerd
['Drank der verval'] = { name = 'Drank der verval', text = '&cVerschrompeling II (0:40)' },
 
  +
local aquaTekstwolken = {
['Spattende drank der verval'] = { name = 'Spattende drank der verval', text = '&cVerschrompeling II (0:30)' },
 
  +
{ naam = 'Baken', geanimeerd = false },
['Aanhoudende drank der verval'] = { name = 'Aanhoudende drank der verval', text = '&cVerschrompeling II (0:10)' },
 
  +
{ naam = 'Endkristal', geanimeerd = true },
['Pijl der verval'] = { name = 'Pijl der verval', text = '&cVerschrompeling II (0:05)' },
 
  +
{ naam = 'Gouden appel', geanimeerd = false },
  +
{ naam = 'Kracht van de zee', geanimeerd = false }
 
}
 
}
   
  +
for _, eigenschap in ipairs( aquaTekstwolken ) do
-- Gereedschap en wapens --
 
local gereedschap = {
+
local naam = eigenschap.naam
  +
if eigenschap.geanimeerd == true then
{ 'Houten', 'Zwaard', '1,6', 4 },
 
{ 'Stenen', 'Zwaard', '1,6', 5 },
+
aliases[naam] = { title = '&b', name = naam .. '.gif' }
  +
else
{ 'IJzeren', 'Zwaard', '1,6', 6 },
 
  +
aliases[naam] = { title = '&b', name = naam }
{ 'Diamanten', 'Zwaard', '1,6', 7 },
 
  +
end
{ 'Gouden', 'Zwaard', '1,6', 4 },
 
  +
end
   
  +
-- Lichtpaarse tekst in tekstwolk en/of geanimeerd
{ 'Houten', 'Houweel', '1,2', 2 },
 
  +
local lichtpaarseTekstwolken = {
{ 'Stenen', 'Houweel', '1,2', 3 },
 
{ 'IJzeren', 'Houweel', '1,2', 4 },
+
{ naam = 'Betoverde gouden appel', geanimeerd = true },
{ 'Diamanten', 'Houweel', '1,2', 5 },
+
{ naam = 'Constructieblok', geanimeerd = false },
{ 'Gouden', 'Houweel', '1,2', 2 },
+
{ naam = 'Drakenei', geanimeerd = false },
  +
{ naam = 'Gekoppeld opdrachtblok', geanimeerd = true },
  +
{ naam = 'Herhalend opdrachtblok', geanimeerd = true },
  +
{ naam = 'Opdrachtblok', geanimeerd = true },
  +
{ naam = 'Kracht van de zee', geanimeerd = false }
  +
}
   
  +
for _, eigenschap in ipairs( lichtpaarseTekstwolken ) do
{ 'Houten', 'Bijl', '0,8', 7 },
 
  +
local naam = eigenschap.naam
{ 'Stenen', 'Bijl', '0,8', 9 },
 
  +
if eigenschap.geanimeerd == true then
{ 'IJzeren', 'Bijl', '0,9', 9 },
 
{ 'Diamanten', 'Bijl', '1,0', 9 },
+
aliases[naam] = { title = '&b', name = naam .. '.gif' }
  +
else
{ 'Gouden', 'Bijl', '1,0', 7 },
 
  +
aliases[naam] = { title = '&b', name = naam }
  +
end
  +
end
   
  +
local oranjeEnSchuingedrukteTekstwolken = {
{ 'Houten', 'Schep', '1,0', '2,5' },
 
{ 'Stenen', 'Schep', '1,0', '3,5' },
+
{ naam = 'Onheilspellende banier', geanimeerd = false },
  +
}
{ 'IJzeren', 'Schep', '1,0', '4,5' },
 
{ 'Diamanten', 'Schep', '1,0', '5,5' },
 
{ 'Gouden', 'Schep', '1,0', '2,5' },
 
   
  +
for _, eigenschap in ipairs( oranjeEnSchuingedrukteTekstwolken ) do
{ 'Houten', 'Schoffel', '1,0', '1,0' },
 
  +
local naam = eigenschap.naam
{ 'Stenen', 'Schoffel', '2,0', '1,0' },
 
  +
if eigenschap.geanimeerd == true then
{ 'IJzeren', 'Schoffel', '3,0', '1,0' },
 
  +
aliases[naam] = { title = '&6&o', name = naam .. '.gif' }
{ 'Diamanten', 'Schoffel', '4,0', '1,0' },
 
  +
else
{ 'Gouden', 'Schoffel', '1,0', '1,0' },
 
  +
aliases[naam] = { title = '&6&o', name = naam }
  +
end
  +
end
  +
  +
-- Gereedschap en wapens --
  +
local gereedschapsvormen = {
  +
["zwaard"] = { vorm = 'onverbogen' },
  +
["houweel"] = { vorm = 'verbogen' },
  +
["bijl"] = { vorm = 'verbogen' },
  +
["schep"] = { vorm = 'verbogen' },
  +
["schoffel"] = { vorm = 'verbogen' },
 
}
 
}
   
  +
-- Merk op dat deze gereedschapstabel geen normale tabel is. Hierom zijn de
local materiaalGroepen = {}
 
  +
-- verschillende materiaalsoorten opgesplitst in een eigen tabel. Zie ook de
local gereedschapGroepen = {}
 
  +
-- functie die bovenaan staat.
  +
local gereedschap = functioning_table({
  +
['hout'] = {
  +
{ gereedschap = 'zwaard', aanvalssnelheid = '1,6', aanvalsschade = 4, bedrock_aanvalsschade = 4 },
  +
{ gereedschap = 'houweel', aanvalssnelheid = '1,2', aanvalsschade = 2, bedrock_aanvalsschade = 2 },
  +
{ gereedschap = 'bijl', aanvalssnelheid = '0,8', aanvalsschade = 7, bedrock_aanvalsschade = 3 },
  +
{ gereedschap = 'schep', aanvalssnelheid = 1, aanvalsschade = '2,5', bedrock_aanvalsschade = 1 },
  +
{ gereedschap = 'schoffel', aanvalssnelheid = 1, aanvalsschade = 1, bedrock_aanvalsschade = 2 },
  +
}},{
  +
['steen'] = {
  +
{ gereedschap = 'zwaard', aanvalssnelheid = '1,6', aanvalsschade = 5, bedrock_aanvalsschade = 5 },
  +
{ gereedschap = 'houweel', aanvalssnelheid = '1,2', aanvalsschade = 3, bedrock_aanvalsschade = 3 },
  +
{ gereedschap = 'bijl', aanvalssnelheid = '0,8', aanvalsschade = 9, bedrock_aanvalsschade = 4 },
  +
{ gereedschap = 'schep', aanvalssnelheid = 1, aanvalsschade = '3,5', bedrock_aanvalsschade = 2 },
  +
{ gereedschap = 'schoffel', aanvalssnelheid = 2, aanvalsschade = 1, bedrock_aanvalsschade = 3 },
  +
}},{
  +
['ijzer'] = {
  +
{ gereedschap = 'zwaard', aanvalssnelheid = '1,6', aanvalsschade = 6, bedrock_aanvalsschade = 6 },
  +
{ gereedschap = 'houweel', aanvalssnelheid = '1,2', aanvalsschade = 4, bedrock_aanvalsschade = 4 },
  +
{ gereedschap = 'bijl', aanvalssnelheid = '0,9', aanvalsschade = 9, bedrock_aanvalsschade = 5 },
  +
{ gereedschap = 'schep', aanvalssnelheid = 1, aanvalsschade = '4,5', bedrock_aanvalsschade = 3 },
  +
{ gereedschap = 'schoffel', aanvalssnelheid = 3, aanvalsschade = 1, bedrock_aanvalsschade = 4 },
  +
}},{
  +
['goud'] = {
  +
{ gereedschap = 'zwaard', aanvalssnelheid = '1,6', aanvalsschade = 4, bedrock_aanvalsschade = 4 },
  +
{ gereedschap = 'houweel', aanvalssnelheid = '1,2', aanvalsschade = 2, bedrock_aanvalsschade = 2 },
  +
{ gereedschap = 'bijl', aanvalssnelheid = 1, aanvalsschade = 7, bedrock_aanvalsschade = 3 },
  +
{ gereedschap = 'schep', aanvalssnelheid = 1, aanvalsschade = '2,5', bedrock_aanvalsschade = 1 },
  +
{ gereedschap = 'schoffel', aanvalssnelheid = 1, aanvalsschade = 1, bedrock_aanvalsschade = 2 },
  +
}},{
  +
['diamant'] = {
  +
{ gereedschap = 'zwaard', aanvalssnelheid = '1,6', aanvalsschade = 7, bedrock_aanvalsschade = 7 },
  +
{ gereedschap = 'houweel', aanvalssnelheid = '1,2', aanvalsschade = 5, bedrock_aanvalsschade = 5 },
  +
{ gereedschap = 'bijl', aanvalssnelheid = 1, aanvalsschade = 9, bedrock_aanvalsschade = 6 },
  +
{ gereedschap = 'schep', aanvalssnelheid = 1, aanvalsschade = '5,5', bedrock_aanvalsschade = 4 },
  +
{ gereedschap = 'schoffel', aanvalssnelheid = 4, aanvalsschade = 1, bedrock_aanvalsschade = 5 },
  +
}},{
  +
['Netheriet'] = {
  +
{ gereedschap = 'zwaard', aanvalssnelheid = '1,6', aanvalsschade = 8, bedrock_aanvalsschade = 8 },
  +
{ gereedschap = 'houweel', aanvalssnelheid = '1,2', aanvalsschade = 6, bedrock_aanvalsschade = 6 },
  +
{ gereedschap = 'bijl', aanvalssnelheid = 1, aanvalsschade = 10, bedrock_aanvalsschade = 7 },
  +
{ gereedschap = 'schep', aanvalssnelheid = '1,6', aanvalsschade = '6,5', bedrock_aanvalsschade = 5 },
  +
{ gereedschap = 'schoffel', aanvalssnelheid = 4, aanvalsschade = 1, bedrock_aanvalsschade = 4 },
  +
}})
   
  +
local materiaalgroepen = functioning_table()
for _, gereedschapType in ipairs( gereedschap ) do
 
  +
local gereedschapsgroepen = functioning_table()
local aliasNaam = gereedschapType[1] .. ' ' .. gereedschapType[2]:lower();
 
aliases[aliasNaam] = { title = aliasNaam, name = aliasNaam, text = '/&7Wanneer in hoofdhand:/ &7' .. gereedschapType[3] .. ' aanvalssnelheid/ &7' .. gereedschapType[4] .. ' aanvalsschade' }
 
   
  +
for materiaalsoort, gereedschapsoort in gereedschap:pairs() do
local materiaalGroep = gereedschapType[1]:lower();
 
  +
local materiaalsoortVerbogen
local gereedschapGroep = gereedschapType[2]:lower();
 
  +
if materiaalsoort == 'steen' then
  +
materiaalsoortVerbogen = 'stenen'
  +
else
  +
materiaalsoortVerbogen = materiaalsoort .. 'en'
  +
end
  +
  +
for _, eigenschappen in ipairs( gereedschapsoort ) do
  +
-- Voeg eerst alle aliasen toe aan de tabel
  +
materiaalsoortVerbogen = hoofdletter( materiaalsoortVerbogen )
   
  +
local gereedschapsnaam = materiaalsoortVerbogen .. ' ' .. eigenschappen.gereedschap
if gereedschapType[2] ~= 'Zwaard' then
 
  +
aliases[gereedschapsnaam] = { name = gereedschapsnaam, text = '/&7Wanneer in hoofdhand:/ &2' .. eigenschappen.aanvalssnelheid .. ' aanvalssnelheid/ &2' .. eigenschappen.aanvalsschade .. ' aanvalsschade' }
if materiaalGroepen[materiaalGroep] == nil then
 
  +
aliases[gereedschapsnaam .. ' (BE)'] = { name = gereedschapsnaam, text = '/&9+' .. eigenschappen.bedrock_aanvalsschade .. ' aanvalsschade' }
materiaalGroepen[materiaalGroep] = {}
 
  +
  +
local materiaalgroep = materiaalsoortVerbogen
  +
local gereedschapsgroep = eigenschappen.gereedschap
  +
-- Per materiaalgroep (m.u.v. zwaard)
  +
if gereedschapsnaam:find('%(BE%)$') == nil then
  +
if eigenschappen.gereedschap ~= 'zwaard' then
  +
if materiaalgroepen[materiaalgroep] == nil then
  +
materiaalgroepen[materiaalgroep] = {}
  +
end
  +
table.insert( materiaalgroepen[materiaalgroep], aliases[gereedschapsnaam] )
  +
end
  +
-- Per gereedschapsgroep
  +
if gereedschapsgroepen[gereedschapsgroep] == nil then
  +
gereedschapsgroepen[gereedschapsgroep] = {}
  +
end
  +
table.insert( gereedschapsgroepen[gereedschapsgroep], aliases[gereedschapsnaam] )
 
end
 
end
table.insert( materiaalGroepen[materiaalGroep], aliases[aliasNaam] )
 
 
end
 
end
  +
end
   
  +
-- Zet materiaal en gereedschap gegroepeerd in aliasestabel
if gereedschapGroepen[gereedschapGroep] == nil then
 
  +
for materiaalgroep, voorwerpen in materiaalgroepen:pairs() do
gereedschapGroepen[gereedschapGroep] = {}
 
  +
local mg
  +
if materiaalgroep == 'Netherieten' then
  +
mg = materiaalgroep
  +
else
  +
mg = materiaalgroep:lower()
 
end
 
end
  +
aliases['Elk ' .. mg .. ' gereedschap'] = voorwerpen
 
  +
aliases['Overeenkomend ' .. mg .. ' gereedschap'] = voorwerpen
table.insert( gereedschapGroepen[gereedschapGroep], aliases[aliasNaam] )
 
 
end
 
end
   
for materiaalGroep, voorwerpen in pairs( materiaalGroepen ) do
+
for gereedschapsgroep, voorwerpen in gereedschapsgroepen:pairs() do
  +
local vorm = gereedschapsvormen[gereedschapsgroep].vorm
aliases['Elk ' .. materiaalGroep .. ' gereedschap'] = voorwerpen
 
  +
if vorm == 'onverbogen' then
end
 
  +
aliases['Elk ' .. gereedschapsgroep] = voorwerpen
 
  +
aliases['Overeenkomend ' .. gereedschapsgroep] = voorwerpen
-- Als variabele gereedschapGroep gelijk is aan 'zwaard', gebruik dan 'Elk' in plaats van 'Elke'.
 
  +
elseif vorm == 'verbogen' then
for gereedschapGroep, voorwerpen in pairs( gereedschapGroepen ) do
 
  +
aliases['Elke ' .. gereedschapsgroep] = voorwerpen
if gereedschapGroep == 'zwaard' then
 
aliases['Elk ' .. gereedschapGroep] = voorwerpen
+
aliases['Overeenkomende ' .. gereedschapsgroep] = voorwerpen
end
 
if gereedschapGroep ~= 'zwaard' then
 
aliases['Elke ' .. gereedschapGroep] = voorwerpen
 
 
end
 
end
 
end
 
end
   
  +
--[[
-- Lijst van voorwerpvarianten --
 
  +
Lijst met voorwerpvarianten. De parameter 'vorm' bepaalt of er 'elke' en
--- Gebruikt 'Elk'
 
  +
'overeenkomende' (verbogen) óf 'elk' en 'overeenkomend' (onverbogen) voor
  +
komt te staan in de aliasestabel.
  +
Merk op dat hoofdletters niet nodig zijn tussen de blokhaken.
  +
]]
 
local voorwerpvarianten = {
 
local voorwerpvarianten = {
['kwartsblok'] = { 'Kwartsblok', 'Gebeiteld kwartsblok', 'Kwartspilaar' },
+
['bloem'] = { vorm = 'verbogen', lijst = { 'Margriet', 'Korenbloem', 'Lelietje-van-dalen',
  +
'Witherroos', 'Rode tulp', 'Oranje tulp', 'Witte tulp', 'Roze tulp', 'Porseleinsterretje',
['rood zandsteen'] = { 'Rood zandsteen', 'Gebeiteld rood zandsteen', 'Glad rood zandsteen' },
 
['zandsteen'] = { 'Zandsteen', 'Gebeiteld zandsteen', 'Glad zandsteen' },
+
'Look', 'Blauwe orchidee', 'Klaproos', 'Paardenbloem' } },
['purpurblok'] = { 'Purpurblok', 'Purpurpilaar' },
+
['paddenstoel'] = { vorm = 'verbogen', lijst = { 'Rode paddenstoel', 'Bruine paddenstoel' } },
  +
['kwartsblok'] = { vorm = 'onverbogen', lijst = { 'Kwartsblok', 'Gebeiteld kwartsblok',
  +
'Kwartspilaar' } },
  +
['rood zandsteen'] = { vorm = 'onverbogen', lijst = { 'Rood zandsteen',
  +
'Gesneden rood zandsteen', 'Gebeiteld rood zandsteen', 'Glad rood zandsteen' } },
  +
['zandsteen'] = { vorm = 'onverbogen', lijst = { 'Zandsteen', 'Gesneden zandsteen',
  +
'Gebeiteld zandsteen', 'Glad zandsteen' } },
  +
['blokstenen'] = { vorm = 'verbogen', lijst = {'Blokstenen', 'Mossige blokstenen',
  +
'Gebarsten blokstenen', 'Gebeitelde blokstenen'} },
  +
['stenen plaat'] = { vorm = 'verbogen', lijst = { 'Stenen plaat', 'Gladde stenen plaat',
  +
'Keistenen plaat', 'Mossige keistenen plaat', 'Blokstenen plaat',
  +
'Mossige blokstenen plaat', 'Andesietplaat', 'Gepolijste andesietplaat', 'Diorietplaat',
  +
'Gepolijste diorietplaat', 'Granietplaat', 'Gepolijste granietplaat', 'Zandstenen plaat',
  +
'Gesneden zandstenen plaat', 'Gladde zandstenen plaat', 'Rode zandstenen plaat',
  +
'Gesneden rode zandstenen plaat', 'Gladde rode zandstenen plaat', 'Bakstenen plaat',
  +
{ title = 'Prismarienplaat', name = 'Prismarienplaat.gif' }, 'Prismarienblokstenen plaat',
  +
'Donkerprismarienplaat', 'Netherbakstenen plaat', 'Rode Netherbakstenen plaat',
  +
'Kwartsplaat', 'Gladde kwartsplaat', 'Purpurplaat', 'Endblokstenen plaat',
  +
'Versteende eikenhouten plaat', 'Zwartstenen plaat', 'Gepolijste zwartstenen plaat',
  +
'Gepolijste zwartstenen blokstenen plaat' } },
  +
['stenen trap'] = { vorm = 'verbogen', lijst = { 'Stenen trap', 'Keistenen trap',
  +
'Mossige keistenen trap', 'Blokstenen trap', 'Mossige blokstenen trap', 'Andesiettrap',
  +
'Gepolijste andesiettrap', 'Dioriettrap', 'Gepolijste dioriettrap', 'Graniettrap',
  +
'Gepolijste graniettrap', 'Zandstenen trap', 'Gladde zandstenen trap',
  +
'Rode zandstenen trap', 'Gladde rode zandstenen trap', 'Bakstenen trap',
  +
{ title = 'Prismarientrap', name = 'Prismarientrap.gif' }, 'Prismarienblokstenen trap',
  +
'Donkerprismarientrap', 'Netherbakstenen trap', 'Rode Netherbakstenen trap', 'Kwartstrap',
  +
'Gladde kwartstrap', 'Purpurtrap', 'Endblokstenen trap', 'Zwartstenen trap',
  +
'Gepolijste zwartstenen trap', 'Gepolijste zwartstenen blokstenen trap' } },
  +
['purpurblok'] = { vorm = 'onverbogen', lijst = { 'Purpurblok', 'Purpurpilaar' } },
  +
['steen'] = { vorm = 'verbogen', lijst = { 'Steen', 'Andesiet', 'Graniet', 'Dioriet',
  +
'Gepolijst andesiet', 'Gepolijst graniet', 'Gepolijst dioriet' } },
  +
['steenachtig blok'] = { vorm = 'onverbogen', lijst = { 'Keisteen', 'Zwartsteen',
  +
'Geplaveid wrevelsteen' } },
  +
['tulp'] = { vorm = 'verbogen', lijst = { 'Rode tulp', 'Oranje tulp', 'Witte tulp',
  +
'Roze tulp' } },
  +
['prismarien'] = { vorm = 'onverbogen', lijst = { { title = 'Prismarien', name = 'Prismarien.gif' },
  +
'Prismarienblokstenen', 'Donkerprismarien' } },
  +
['erts'] = { vorm = 'verbogen', lijst = { 'Steenkoolerts', 'IJzererts', 'Gouderts',
  +
'Lapislazuli-erts', 'Redstone-erts', 'Smaragderts', 'Diamanterts', 'Netherkwartserts',
  +
'Nethergouderts' } },
  +
['dood koraalblok'] = { vorm = 'onverbogen', lijst = { 'Dood buiskoraalblok',
  +
'Dood hersenkoraalblok', 'Dood blaaskoraalblok', 'Dood brandkoraalblok',
  +
'Dood hoornkoraalblok' } },
  +
['dode koraalwaaier'] = { vorm = 'verbogen', lijst = { 'Dode buiskoraalwaaier',
  +
'Dode hersenkoraalwaaier', 'Dode blaaskoraalwaaier', 'Dode brandkoraalwaaier',
  +
'Dode hoornkoraalwaaier' } },
  +
['muur'] = { vorm = 'verbogen', lijst = { 'Keistenen muur', 'Mossige keistenen muur',
  +
'Blokstenen muur', 'Mossige blokstenen muur', 'Andesietmuur', 'Diorietmuur', 'Granietmuur',
  +
'Zandstenen muur', 'Rode zandstenen muur', 'Bakstenen muur',
  +
{ title = 'Prismarienmuur', name = 'Prismarienmuur.gif' }, 'Netherbakstenen muur',
  +
'Rode Netherbakstenen muur', 'Endblokstenen muur', 'Zwartstenen muur',
  +
'Gepolijste zwartstenen muur' } },
  +
['fakkel'] = { vorm = 'verbogen', lijst = { 'Fakkel', 'Zielenfakkel' } },
  +
['lantaarn'] = { vorm = 'verbogen', lijst = { 'Lantaarn', 'Zielenlantaarn' } },
  +
['zwam'] = { vorm = 'verbogen', lijst = { 'Helrode zwam', 'Spookachtige zwam' } },
  +
['wortels'] = { vorm = 'verbogen', lijst = { 'Helrode wortels', 'Spookachtige wortels' } },
  +
['nylium'] = { vorm = 'onverbogen', lijst = { 'Helrood nylium', 'Spookachtig nylium' } },
  +
['zielenzand'] = { vorm = 'onverbogen', lijst = { 'Zielenzand', 'Zielenaarde' } },
  +
['kampvuur'] = { vorm = 'onverbogen', lijst = { 'Kampvuur', 'Zielenkampvuur' } },
  +
['zwartsteen'] = { vorm = 'onverbogen', lijst = { 'Zwartsteen', 'Gepolijst zwartsteen',
  +
'Gebeiteld gepolijst zwartsteen', 'Gepolijste zwartstenen blokstenen',
  +
'Gebarsten gepolijste zwartstenen blokstenen' } },
  +
['stenen knop'] = { vorm = 'verbogen', lijst = { 'Stenen knop', 'Gepolijste zwartstenen knop' } },
  +
['stenen drukplaat'] = { vorm = 'verbogen', lijst = { 'Stenen drukplaat',
  +
'Gepolijste zwartstenen drukplaat' } },
  +
['Netherhouten drukplaat'] = { vorm = 'verbogen', lijst = { 'Helrode houten drukplaat',
  +
'Spookachtige houten drukplaat' } },
  +
['Netherhouten hek'] = { vorm = 'verbogen', lijst = { 'Helrood houten hek',
  +
'Spookachtig houten hek' } },
  +
['Netherhouten valluik'] = { vorm = 'verbogen', lijst = { 'Helrood houten valluik',
  +
'Spookachtig houten valluik' } },
  +
['Netherhouten poort'] = { vorm = 'verbogen', lijst = { 'Helrode houten poort',
  +
'Spookachtige houten poort' } },
  +
['Netherhouten trap'] = { vorm = 'verbogen', lijst = { 'Helrode houten trap',
  +
'Spookachtige houten trap' } },
  +
['Netherhouten deur'] = { vorm = 'verbogen', lijst = { 'Helrode houten deur',
  +
'Spookachtige houten deur' } },
  +
['Netherhouten bord'] = { vorm = 'verbogen', lijst = { 'Helrood houten bord',
  +
'Spookachtig houten bord' } },
 
}
 
}
--- Bijbehorende functie
 
for aliasNaam, aliasVoorwerpen in pairs( voorwerpvarianten ) do
 
aliases['Elk ' .. aliasNaam] = aliasVoorwerpen
 
aliases['Overeenkomend ' .. aliasNaam] = aliasVoorwerpen
 
end
 
   
  +
for aliasnaam, aliasinhoud in pairs( voorwerpvarianten ) do
--- Gebruikt 'Elke'
 
  +
if aliasinhoud.vorm == 'onverbogen' then
local voorwerpvariantenNaamval = {
 
  +
aliases['Elk ' .. aliasnaam] = aliasinhoud.lijst
['kleurstof'] = mw.clone( kleurstoffen ),
 
  +
aliases['Overeenkomend ' .. aliasnaam] = aliasinhoud.lijst
['gekleurde kleurstof'] = kleurstoffen,
 
  +
elseif aliasinhoud.vorm == 'verbogen' then
['gekleurde wol'] = {
 
  +
aliases['Elke ' .. aliasnaam] = aliasinhoud.lijst
'Oranje wol', 'Magenta wol', 'Lichtblauwe wol', 'Gele wol', 'Lichtgroene wol',
 
  +
aliases['Overeenkomende ' .. aliasnaam] = aliasinhoud.lijst
'Roze wol', 'Grijze wol', 'Lichtgrijze wol', 'Turquoise wol', 'Paarse wol',
 
  +
else
'Blauwe wol', 'Bruine wol', 'Groene wol', 'Rode wol', 'Zwarte wol',
 
  +
error("Eigenschap 'vorm' moet één van de volgende waarden bevatten:\n\t'verbogen'\n\t'onverbogen'")
},
 
  +
end
['paddenstoel'] = { { title = 'Paddenstoel', name = 'Rode paddenstoel' }, { title = 'Paddenstoel', name = 'Bruine paddenstoel' } },
 
['bloksteen'] = { 'Blokstenen', 'Mossige blokstenen', 'Gebarsten blokstenen', 'Gebeitelde blokstenen' },
 
['stenen plaat'] = { 'Stenen plaat', 'Zandstenen plaat', 'Keistenen plaat', 'Bakstenen plaat', 'Blokstenen plaat', 'Netherbakstenen plaat', 'Kwartsplaat', 'Purpurplaat' },
 
['steen'] = { 'Steen', 'Andesiet', 'Graniet', 'Dioriet', 'Gepolijst andesiet', 'Gepolijst graniet', 'Gepolijst dioriet' },
 
}
 
--- Bijbehorende functie
 
table.insert( voorwerpvariantenNaamval['kleurstof'], 1, 'Beendermeel' )
 
for aliasNaam, aliasVoorwerpen in pairs( voorwerpvariantenNaamval ) do
 
aliases['Elke ' .. aliasNaam] = aliasVoorwerpen
 
aliases['Overeenkomende ' .. aliasNaam] = aliasVoorwerpen
 
 
end
 
end
   
  +
-- Koper --
-- Geanimeerde afbeeldingen --
 
local geanimeerdeAfbeeldingen = {
+
local kopervarianten = {
  +
['Overeenkomend# (geoxideerd#) koperblok'] = { 'Koperblok', 'Blootgesteld# koperblok',
'Opdrachtblok',
 
  +
'Verweerd# koperblok', 'Geoxideerd# koperblok' },
'Gekoppeld opdrachtblok',
 
  +
['Overeenkomend# (geoxideerd#) gesneden koperblok'] = { 'Gesneden koperblok',
'Herhalend opdrachtblok',
 
  +
'Blootgesteld# gesneden koperblok', 'Verweerd# gesneden koperblok',
'Vuur',
 
  +
'Geoxideerd# gesneden koperblok' },
'Magmablok',
 
  +
['Overeenkomend# ingewassen (geoxideerd#) koperblok'] = { 'Ingewassen koperblok',
'Prismarien',
 
  +
'Ingewassen blootgesteld# koperblok', 'Ingewassen verweerd# koperblok' },
'Zeelantaarn',
 
  +
['Overeenkomend# ingewassen (geoxideerd#) gesneden koperblok'] = { 'Ingewassen gesneden koperblok',
  +
'Ingewassen blootgesteld# gesneden koperblok', 'Ingewassen verweerd# gesneden koperblok' },
 
}
 
}
   
  +
for key, values in pairs( kopervarianten ) do -- waarde in kopervariantentabel
for _, afbeelding in ipairs( geanimeerdeAfbeeldingen ) do
 
  +
for _, value in ipairs(values) do -- waarde in tabel van waarde kopervariantentabel
aliases[afbeelding] = afbeelding .. '.gif'
 
  +
local geparseerdeSleutel = ''
  +
local geparseerdeWaarde = ''
  +
  +
-- Koperblok
  +
geparseerdeSleutel = key:gsub('#', '')
  +
geparseerdeWaarde = value:gsub('#', '')
  +
  +
-- maak tabel als-ie niet bestaat
  +
if aliases[geparseerdeSleutel] == nil then aliases[geparseerdeSleutel] = {} end
  +
aliases[geparseerdeSleutel] = geparseerdeWaarde
  +
  +
-- Koperen plaat
  +
geparseerdeSleutel = key:gsub('#', 'e'):gsub('blok$', 'en plaat')
  +
geparseerdeWaarde = value:gsub('#', 'e'):gsub('blok$', 'en plaat')
  +
if aliases[geparseerdeSleutel] == nil then aliases[geparseerdeSleutel] = {} end
  +
aliases[geparseerdeSleutel] = geparseerdeWaarde
  +
  +
-- Koperen trap
  +
geparseerdeSleutel = key:gsub('#', 'e'):gsub('blok$', 'en trap')
  +
geparseerdeWaarde = value:gsub('#', 'e'):gsub('blok$', 'en trap')
  +
if aliases[geparseerdeSleutel] == nil then aliases[geparseerdeSleutel] = {} end
  +
aliases[geparseerdeSleutel] = geparseerdeWaarde
  +
end
 
end
 
end
   
 
-- Muziekplaten --
 
-- Muziekplaten --
local muziekplaten = {
+
local platen = {
'13',
+
{ nummer = '13', artiest = 'C418' },
'cat',
+
{ nummer = 'cat', artiest = 'C418' },
'blocks',
+
{ nummer = 'blocks', artiest = 'C418' },
'chirp',
+
{ nummer = 'chirp', artiest = 'C418' },
'far',
+
{ nummer = 'far', artiest = 'C418' },
'mall',
+
{ nummer = 'mall', artiest = 'C418' },
'mellohi',
+
{ nummer = 'mellohi', artiest = 'C418' },
'stal',
+
{ nummer = 'stal', artiest = 'C418' },
'strad',
+
{ nummer = 'strad', artiest = 'C418' },
'ward',
+
{ nummer = 'ward', artiest = 'C418' },
'11',
+
{ nummer = '11', artiest = 'C418' },
'wait',
+
{ nummer = 'wait', artiest = 'C418' },
  +
{ nummer = 'pigstep', artiest = 'Lena Raine' },
 
}
 
}
   
for _, muziekplaat in ipairs( muziekplaten ) do
+
for _, plaat in ipairs( platen ) do
local naam = 'Muziekplaat ' .. muziekplaat
+
local naam = 'Muziekplaat ' .. plaat.nummer
aliases[naam] = { title = '&bMuziekplaat', name = naam, text = '&7C418 - ' .. muziekplaat }
+
aliases[naam] = { title = '&bMuziekplaat', name = naam, text = '&7' .. plaat.artiest .. ' - ' .. plaat.nummer }
 
end
 
end
   
  +
--[[
-- Beschadigd harnas, gereedschap en beschadigde wapens --
 
  +
Beschadigde voorwerpen.
  +
De parameter 'vorm' kan de volgende waarden bevatten:
  +
- onverbogen (zonder -e)
  +
- verbogen (met -e)
  +
]]
 
local beschadigdeVoorwerpen = {
 
local beschadigdeVoorwerpen = {
  +
{ naam = 'boog', vorm = 'verbogen' },
'Diamanten zwaard',
 
  +
{ naam = 'dekschild', vorm = 'onverbogen' },
'Dekschild',
 
  +
{ naam = 'diamanten beenstukken', vorm = 'verbogen' },
'Vuursteen en staal',
 
  +
{ naam = 'diamanten bijl', vorm = 'verbogen' },
'Gouden zwaard',
 
  +
{ naam = 'diamanten borstplaat', vorm = 'verbogen' },
'IJzeren zwaard',
 
  +
{ naam = 'diamanten helm', vorm = 'verbogen' },
'Schild',
 
  +
{ naam = 'diamanten houweel', vorm = 'verbogen' },
'Stenen zwaard',
 
  +
{ naam = 'diamanten laarzen', vorm = 'verbogen' },
'Houten zwaard',
 
  +
{ naam = 'diamanten schep', vorm = 'verbogen' },
  +
{ naam = 'diamanten schoffel', vorm = 'verbogen' },
  +
{ naam = 'diamanten zwaard', vorm = 'onverbogen' },
  +
{ naam = 'gouden beenstukken', vorm = 'verbogen' },
  +
{ naam = 'gouden bijl', vorm = 'verbogen' },
  +
{ naam = 'gouden borstplaat', vorm = 'verbogen' },
  +
{ naam = 'gouden helm', vorm = 'verbogen' },
  +
{ naam = 'gouden houweel', vorm = 'verbogen' },
  +
{ naam = 'gouden laarzen', vorm = 'verbogen' },
  +
{ naam = 'gouden schep', vorm = 'verbogen' },
  +
{ naam = 'gouden schoffel', vorm = 'verbogen' },
  +
{ naam = 'gouden zwaard', vorm = 'onverbogen' },
  +
{ naam = 'houten bijl', vorm = 'verbogen' },
  +
{ naam = 'houten houweel', vorm = 'verbogen' },
  +
{ naam = 'houten schep', vorm = 'verbogen' },
  +
{ naam = 'houten schoffel', vorm = 'verbogen' },
  +
{ naam = 'houten zwaard', vorm = 'onverbogen' },
  +
{ naam = 'ijzeren beenstukken', vorm = 'verbogen' },
  +
{ naam = 'ijzeren bijl', vorm = 'verbogen' },
  +
{ naam = 'ijzeren borstplaat', vorm = 'verbogen' },
  +
{ naam = 'ijzeren helm', vorm = 'verbogen' },
  +
{ naam = 'ijzeren houweel', vorm = 'verbogen' },
  +
{ naam = 'ijzeren laarzen', vorm = 'verbogen' },
  +
{ naam = 'ijzeren schep', vorm = 'verbogen' },
  +
{ naam = 'ijzeren schoffel', vorm = 'verbogen' },
  +
{ naam = 'ijzeren zwaard', vorm = 'onverbogen' },
  +
{ naam = 'leren broek', vorm = 'verbogen' },
  +
{ naam = 'leren kap', vorm = 'verbogen' },
  +
{ naam = 'leren tuniek', vorm = 'verbogen' },
  +
{ naam = 'leren laarzen', vorm = 'verbogen' },
  +
{ naam = 'maliënbroek', vorm = 'verbogen' },
  +
{ naam = 'maliënkap', vorm = 'verbogen' },
  +
{ naam = 'maliënkolder', vorm = 'verbogen' },
  +
{ naam = 'maliënlaarzen', vorm = 'verbogen' },
  +
{ naam = 'Netherieten beenstukken', vorm = 'verbogen' },
  +
{ naam = 'Netherieten bijl', vorm = 'verbogen' },
  +
{ naam = 'Netherieten borstplaat', vorm = 'verbogen' },
  +
{ naam = 'Netherieten helm', vorm = 'verbogen' },
  +
{ naam = 'Netherieten houweel', vorm = 'verbogen' },
  +
{ naam = 'Netherieten laarzen', vorm = 'verbogen' },
  +
{ naam = 'Netherieten schep', vorm = 'verbogen' },
  +
{ naam = 'Netherieten schoffel', vorm = 'verbogen' },
  +
{ naam = 'Netherieten zwaard', vorm = 'onverbogen' },
  +
{ naam = 'kruisboog', vorm = 'verbogen' },
  +
{ naam = 'schaar', vorm = 'verbogen' },
  +
{ naam = 'schild', vorm = 'onverbogen' },
  +
{ naam = 'spookachtige zwam aan een stok', vorm = 'verbogen' },
  +
{ naam = 'stenen bijl', vorm = 'verbogen' },
  +
{ naam = 'stenen houweel', vorm = 'verbogen' },
  +
{ naam = 'stenen schep', vorm = 'verbogen' },
  +
{ naam = 'stenen schoffel', vorm = 'verbogen' },
  +
{ naam = 'stenen zwaard', vorm = 'onverbogen' },
  +
{ naam = 'vishengel', vorm = 'verbogen' },
  +
{ naam = 'vuursteen en staal', vorm = 'onverbogen' },
  +
{ naam = 'wortel aan een stok', vorm = 'verbogen' },
 
}
 
}
   
 
for _, voorwerp in ipairs( beschadigdeVoorwerpen ) do
 
for _, voorwerp in ipairs( beschadigdeVoorwerpen ) do
local naam = 'Beschadigd ' .. voorwerp:lower();
+
local naam = hoofdletter( voorwerp.naam )
aliases[naam] = { title = voorwerp, name = naam }
 
end
 
   
  +
if voorwerp.vorm == 'onverbogen' then
local beschadigdeVoorwerpenNaamval = {
 
  +
aliases['Beschadigd ' .. voorwerp.naam] = { title = naam, name = 'Beschadigd ' .. voorwerp.naam }
'Boog',
 
  +
elseif voorwerp.vorm == 'verbogen' then
'Wortel aan een stok',
 
  +
aliases['Beschadigde ' .. voorwerp.naam] = { title = naam, name = 'Beschadigde ' .. voorwerp.naam }
'Maliënlaarzen',
 
  +
else
'Maliënkolder',
 
  +
error("Eigenschap 'vorm' moet één van de volgende waarden bevatten:\n\t'verbogen'\n\t'onverbogen'")
'Maliënkap',
 
'Maliënbroek',
+
end
'Diamanten bijl',
 
'Diamanten laarzen',
 
'Diamanten borstplaat',
 
'Diamanten helm',
 
'Diamanten schoffel',
 
'Diamanten beenstukken',
 
'Diamanten houweel',
 
'Diamanten schep',
 
'Vishengel',
 
'Gouden bijl',
 
'Gouden laarzen',
 
'Gouden borstplaat',
 
'Gouden helm',
 
'Gouden schoffel',
 
'Gouden beenstukken',
 
'Gouden houweel',
 
'Gouden schep',
 
'IJzeren bijl',
 
'IJzeren laarzen',
 
'IJzeren borstplaat',
 
'IJzeren helm',
 
'IJzeren schoffel',
 
'IJzeren beenstukken',
 
'IJzeren houweel',
 
'IJzeren schep',
 
'Leren laarzen',
 
'Leren tuniek',
 
'Leren kap',
 
'Leren broek',
 
'Schaar',
 
'Stenen bijl',
 
'Stenen schoffel',
 
'Stenen houweel',
 
'Stenen schep',
 
'Houten bijl',
 
'Houten schoffel',
 
'Houten houweel',
 
'Houten schep',
 
}
 
 
for _, voorwerp in ipairs( beschadigdeVoorwerpenNaamval ) do
 
local naam = 'Beschadigde ' .. voorwerp:lower();
 
aliases[naam] = { title = voorwerp, name = naam }
 
 
end
 
end
   
  +
-- Kleuren --
-- Banieren en gekleurde voorwerpen --
 
--- Kleuren (normaal en naamval)
 
 
local kleuren = {
 
local kleuren = {
{ 'Wit', 'Witte' },
+
{ onverbogen = 'Wit', verbogen = 'Witte' },
{ 'Oranje', 'Oranje' },
+
{ onverbogen = 'Oranje', verbogen = 'Oranje' },
{ 'Magenta', 'Magenta' },
+
{ onverbogen = 'Magenta', verbogen = 'Magenta' },
{ 'Lichtblauw', 'Lichtblauwe' },
+
{ onverbogen = 'Lichtblauw', verbogen = 'Lichtblauwe' },
{ 'Geel', 'Gele' },
+
{ onverbogen = 'Geel', verbogen = 'Gele' },
{ 'Lichtgroen', 'Lichtgroene' },
+
{ onverbogen = 'Lichtgroen', verbogen = 'Lichtgroene' },
{ 'Roze', 'Roze' },
+
{ onverbogen = 'Roze', verbogen = 'Roze' },
{ 'Grijs', 'Grijze' },
+
{ onverbogen = 'Grijs', verbogen = 'Grijze' },
{ 'Lichtgrijs', 'Lichtgrijze' },
+
{ onverbogen = 'Lichtgrijs', verbogen = 'Lichtgrijze' },
{ 'Turquoise', 'Turquoise' },
+
{ onverbogen = 'Turquoise', verbogen = 'Turquoise' },
{ 'Paars', 'Paarse' },
+
{ onverbogen = 'Paars', verbogen = 'Paarse' },
{ 'Blauw', 'Blauwe' },
+
{ onverbogen = 'Blauw', verbogen = 'Blauwe' },
{ 'Bruin', 'Bruine' },
+
{ onverbogen = 'Bruin', verbogen = 'Bruine' },
{ 'Groen', 'Groene' },
+
{ onverbogen = 'Groen', verbogen = 'Groene' },
{ 'Rood', 'Rode' },
+
{ onverbogen = 'Rood', verbogen = 'Rode' },
{ 'Zwart', 'Zwarte' }
+
{ onverbogen = 'Zwart', verbogen = 'Zwarte' }
 
}
 
}
   
  +
--[[
--- Vuurwerksterren
 
  +
Banieren.
local vuurwerkster = {}
 
  +
Parameters:
 
  +
- vorm:
for _, kleur in ipairs( kleuren ) do
 
  +
- onverbogen: geen -e
local naam = kleur[2] .. ' vuurwerkster'
 
  +
- verbogen: met -e
aliases[naam] = { title = 'Vuurwerkster', name = naam, text = '&7' .. kleur[1] }
 
  +
- voorzetsel: of 'met' tussen banier en patroon geplaatst moet worden
table.insert( vuurwerkster, aliases[naam] )
 
  +
- spatie: of tussen kleur en patroon een spatie hoort te staan
end
 
  +
]]
 
aliases['Elke vuurwerkster'] = vuurwerkster
 
aliases['Overeenkomende vuurwerkster'] = vuurwerkster
 
 
--- Banieren
 
---- Banierpatronen (zonder spatie)
 
 
local banierpatronen = {
 
local banierpatronen = {
'andreaskruis',
+
['andreaskruis'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
  +
['bloem'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
'bloemwapen',
 
  +
['Creeper'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
'Creeperwapen',
 
  +
['dwarsbalk'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
'gradiënt',
 
  +
['gebalkt'] = { vorm = 'onverbogen', voorzetsel = false, spatie = false },
'ingesprongen hoofd',
 
  +
['gegolfd schildhoofd'] = { vorm = 'onverbogen', voorzetsel = true, spatie = false },
'kruis',
 
  +
['gegolfd schildvoet'] = { vorm = 'onverbogen', voorzetsel = true, spatie = false },
'Mojangwapen',
 
  +
['gepaald'] = { vorm = 'onverbogen', voorzetsel = false, spatie = false },
'rozet',
 
  +
['globe'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
'schedelwapen',
 
  +
['gradiënt'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
'veld gemetseld',
 
  +
['ingesprongen zoom'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
  +
['keper'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
  +
['koek'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
  +
['kruis'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
  +
['kwartier linksboven'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
  +
['kwartier linksonder'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
  +
['kwartier rechtsboven'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
  +
['kwartier rechtsonder'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
  +
['linkerpaal'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
  +
['linkerschuinbalk'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
  +
['lozanje'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
  +
['metselwerk'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
  +
['Mojanglogo'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
  +
['omgekeerd gebalkt'] = { vorm = 'onverbogen', voorzetsel = false, spatie = true },
  +
['omgekeerd gepaald'] = { vorm = 'onverbogen', voorzetsel = false, spatie = true },
  +
['omgekeerd schuinlinks verdeeld'] = { vorm = 'onverbogen', voorzetsel = false, spatie = true },
  +
['omgekeerd schuinrechts verdeeld'] = { vorm = 'onverbogen', voorzetsel = false, spatie = true },
  +
['paal'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
  +
['palen'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
  +
['rechterpaal'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
  +
['rechterschuinbalk'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
  +
['schedel'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
  +
['schildhoofd'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
  +
['schildvoet'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
  +
['schildvoetgradiënt'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
  +
['schuinlinks verdeeld'] = { vorm = 'onverbogen', voorzetsel = false, spatie = true },
  +
['schuinrechts verdeeld'] = { vorm = 'onverbogen', voorzetsel = false, spatie = true },
  +
['snuit'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
  +
['zoom'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
 
}
 
}
   
  +
for patroon, eigenschappen in pairs( banierpatronen ) do
---- Banierpatronen (nv)
 
  +
for _, kleur in ipairs( kleuren ) do
local banierpatronenNv = {
 
  +
local patroonnaam = ''
'band sinister',
 
  +
if eigenschappen.vorm == 'onverbogen' then
'band',
 
  +
if eigenschappen.voorzetsel == true and eigenschappen.spatie == true then
'basis dexter kanton',
 
  +
patroonnaam = 'Banier met ' .. kleur.onverbogen:lower() .. ' ' .. patroon
'basis faas',
 
  +
aliases[patroonnaam] = { title = 'Banier', name = patroonnaam, text = '&7' .. kleur.onverbogen .. ' ' .. patroon }
'basis gradiënt',
 
  +
elseif eigenschappen.voorzetsel == true and eigenschappen.spatie == false then
'basis sinister kanton',
 
  +
patroonnaam = 'Banier met ' .. kleur.onverbogen:lower() .. patroon
'faas',
 
  +
aliases[patroonnaam] = { title = 'Banier', name = patroonnaam, text = '&7' .. kleur.onverbogen .. patroon }
'hoofd dexter kanton',
 
  +
elseif eigenschappen.voorzetsel == false and eigenschappen.spatie == true then
'hoofd faas',
 
  +
patroonnaam = 'Banier ' .. kleur.onverbogen:lower() .. ' ' .. patroon
'hoofd sinister kanton',
 
  +
aliases[patroonnaam] = { title = 'Banier', name = patroonnaam, text = '&7' .. kleur.onverbogen .. ' ' .. patroon }
'ingesprongen basis',
 
  +
elseif eigenschappen.voorzetsel == false and eigenschappen.spatie == false then
'ingesprongen zoom',
 
  +
patroonnaam = 'Banier ' .. kleur.onverbogen:lower() .. patroon
'keper',
 
  +
aliases[patroonnaam] = { title = 'Banier', name = patroonnaam, text = '&7' .. kleur.onverbogen .. patroon }
'omgekeerde keper',
 
'paal dexter',
+
else
  +
error("Controleer waarden voor '" .. patroon .. "'.")
'paal sinister',
 
'paal',
+
end
  +
elseif eigenschappen.vorm == 'verbogen' then
'paly',
 
  +
if eigenschappen.voorzetsel == true and eigenschappen.spatie == true then
'per band omgekeerd',
 
  +
patroonnaam = 'Banier met ' .. kleur.verbogen:lower() .. ' ' .. patroon
'per band sinister omgekeerd',
 
  +
aliases[patroonnaam] = { title = 'Banier', name = patroonnaam, text = '&7' .. kleur.verbogen .. ' ' .. patroon }
'per band sinister',
 
'per band',
+
else
  +
error("Fout bij maken aliases. Overige vormen van voorzetsel en spatie niet geïmplementeerd.")
'per faas',
 
'per faas omgekeerd',
+
end
'per paal',
+
else
  +
error("Eigenschap 'vorm' moet één van de volgende waarden bevatten:\n\t'verbogen'\n\t'onverbogen'")
'per paal omgekeerd',
 
'ruit',
+
end
'zoom',
 
}
 
 
for _, kleur in ipairs( kleuren ) do
 
for _, patronen in ipairs( banierpatronen ) do
 
naam = kleur[2] .. ' ' .. patronen .. 'banier'
 
tekst = kleur[1] .. ' ' .. patronen
 
aliases[naam] = { title = 'Banier', name = naam, text = '&7' .. tekst }
 
end
 
for _, patronenNv in ipairs( banierpatronenNv ) do
 
naamNv = kleur[2] .. ' ' .. patronenNv .. 'banier'
 
tekstNv = kleur[2] .. ' ' .. patronenNv
 
aliases[naamNv] = { title = 'Banier', name = naamNv, text = '&7' .. tekstNv }
 
 
end
 
end
 
end
 
end
   
  +
--[[
-- Voorwerpen gebruikende de zestien kleuren --
 
  +
Gekleurde voorwerpen. Vuurwerksterren krijgen een aparte behandeling.
--- Spatie tussen kleur en voorwerp, geen extra 'e'
 
  +
Parameters:
local gekleurdeVoorwerpenNormaal = {
 
'tapijt',
+
- vorm:
  +
- onverbogen: geen -e
'beton',
 
  +
- verbogen: met -e
'cement',
 
  +
- spatie: of een spatie hoort te staan tussen kleur en voorwerp
'schild',
 
  +
- wit: of voorwerp met of zonder witte kleurstof moet worden gemaakt
'bed',
 
  +
- false: er worden twee aliasen gemaakt - één mét witte kleur
'terracotta',
 
  +
en één zonder. De alias zonder wit wordt 'gekleurd(e)'
  +
genoemd
  +
- true: er wordt één alias gemaakt, mét witte kleur
  +
Overige:
  +
- $1: kleur en vorm komen overeen
  +
- $2: kleur en vorm komen niet overeen
  +
In beide gevallen wordt de kleur als eerste ingevuld in correcte vorm.
  +
Er wordt uitgegaan dat de kleur op de juiste locatie staat. Hierom
  +
wordt de parameter 'spatie' niet meegenomen.
  +
]]
  +
local gekleurdeVoorwerpen = {
  +
['ballon'] = { vorm = 'verbogen', spatie = true, wit = true },
  +
['banier'] = { vorm = 'verbogen', spatie = true, wit = true },
  +
['bed'] = { vorm = 'onverbogen', spatie = true, wit = false },
  +
['beton'] = { vorm = 'onverbogen', spatie = true, wit = true },
  +
['cement'] = { vorm = 'onverbogen', spatie = true, wit = true },
  +
['geglazuurd terracotta'] = { vorm = 'onverbogen', spatie = false, wit = true },
  +
['gehard $1gekleurd glas'] = { vorm = 'onverbogen', spatie = false, wit = true },
  +
['geharde $2gekleurde glazen ruit'] = { vorm = 'verbogen', spatie = false, wit = true },
  +
['gekleurd glas'] = { vorm = 'onverbogen', spatie = false, wit = true },
  +
['$2gekleurde glazen ruit'] = { vorm = 'verbogen', spatie = false, wit = true },
  +
['tapijt'] = { vorm = 'onverbogen', spatie = true, wit = false },
  +
['terracotta'] = { vorm = 'onverbogen', spatie = true, wit = false },
  +
['kaars'] = { vorm = 'verbogen', spatie = true, wit = false },
  +
['kleurstof'] = { vorm = 'verbogen', spatie = true, wit = false },
  +
['schild'] = { vorm = 'onverbogen', spatie = true, wit = true },
  +
['Shulkerdoos'] = { vorm = 'verbogen', spatie = true, wit = true },
  +
['wol'] = { vorm = 'verbogen', spatie = true, wit = false },
 
}
 
}
   
for _, voorwerp in ipairs( gekleurdeVoorwerpenNormaal ) do
+
for voorwerp, eigenschappen in pairs( gekleurdeVoorwerpen ) do
 
local gekleurdeVoorwerpenAliases = {}
 
local gekleurdeVoorwerpenAliases = {}
  +
local voorwerpnaam = ''
  +
local voorwerpalias = ''
 
for _, kleur in ipairs( kleuren ) do
 
for _, kleur in ipairs( kleuren ) do
  +
if eigenschappen.vorm == 'onverbogen' then
table.insert( gekleurdeVoorwerpenAliases, kleur[1] .. ' ' .. voorwerp )
 
  +
if voorwerp:find( '%$1' ) then
  +
local kl = kleur.onverbogen:lower()
  +
voorwerpnaam = voorwerp:gsub( '%$1', kl )
  +
voorwerpnaam = hoofdletter( voorwerpnaam )
  +
table.insert( gekleurdeVoorwerpenAliases, voorwerpnaam )
  +
elseif voorwerp:find( '%$2' ) then
  +
local kl = kleur.verbogen:lower()
  +
voorwerpnaam = voorwerp:gsub( '%$2', kl )
  +
voorwerpnaam = hoofdletter( voorwerpnaam )
  +
table.insert( gekleurdeVoorwerpenAliases, voorwerpnaam )
  +
else
  +
if eigenschappen.spatie == true then
  +
voorwerpnaam = kleur.onverbogen .. ' ' .. voorwerp
  +
table.insert( gekleurdeVoorwerpenAliases, voorwerpnaam )
  +
else
  +
voorwerpnaam = kleur.onverbogen .. voorwerp
  +
table.insert( gekleurdeVoorwerpenAliases, voorwerpnaam )
  +
end
  +
end
  +
elseif eigenschappen.vorm == 'verbogen' then
  +
if voorwerp:find( '%$1' ) then
  +
local kl = kleur.verbogen:lower()
  +
voorwerpnaam = voorwerp:gsub( '%$1', kl )
  +
voorwerpnaam = hoofdletter( voorwerpnaam )
  +
table.insert( gekleurdeVoorwerpenAliases, voorwerpnaam )
  +
elseif voorwerp:find( '%$2' ) then
  +
local kl = kleur.onverbogen:lower()
  +
voorwerpnaam = voorwerp:gsub( '%$2', kl )
  +
voorwerpnaam = hoofdletter( voorwerpnaam )
  +
table.insert( gekleurdeVoorwerpenAliases, voorwerpnaam )
  +
else
  +
if eigenschappen.spatie == true then
  +
voorwerpnaam = kleur.verbogen .. ' ' .. voorwerp
  +
table.insert( gekleurdeVoorwerpenAliases, voorwerpnaam )
  +
else
  +
voorwerpnaam = kleur.verbogen .. voorwerp
  +
table.insert( gekleurdeVoorwerpenAliases, voorwerpnaam )
  +
end
  +
end
  +
else
  +
error("Eigenschap 'vorm' moet één van de volgende waarden bevatten:\n\t'verbogen'\n\t'onverbogen'")
  +
end
 
end
 
end
aliases['Elk ' .. voorwerp] = gekleurdeVoorwerpenAliases
 
aliases['Overeenkomend ' .. voorwerp] = gekleurdeVoorwerpenAliases
 
end
 
   
  +
if eigenschappen.vorm == 'onverbogen' then
--- Geen spatie tussen kleur en voorwerp
 
  +
voorwerpalias = voorwerp:gsub( '%$%d', '' )
local gekleurdeVoorwerpenNormaalGeenSpatie = {
 
  +
aliases['Elk ' .. voorwerpalias] = gekleurdeVoorwerpenAliases
'geglazuurde terracotta',
 
  +
aliases['Overeenkomend ' .. voorwerpalias] = gekleurdeVoorwerpenAliases
'gekleurd glas',
 
'gekleurde glazen ruit',
 
}
 
   
  +
if eigenschappen.wit == false then
for _, voorwerp in ipairs( gekleurdeVoorwerpenNormaalGeenSpatie ) do
 
  +
local alleenGekleurdeVoorwerpenAliases = mw.clone( gekleurdeVoorwerpenAliases )
local gekleurdeVoorwerpenAliasesGS = {}
 
  +
local witWeg = table.remove( alleenGekleurdeVoorwerpenAliases, 1 ) -- verwijder het eerste element van de tabel (wit)
for _, kleur in ipairs( kleuren ) do
 
  +
aliases['Elk gekleurd ' .. voorwerpalias] = alleenGekleurdeVoorwerpenAliases
table.insert( gekleurdeVoorwerpenAliasesGS, kleur[1] .. '' .. voorwerp )
 
  +
aliases['Overeenkomend gekleurd ' .. voorwerpalias] = alleenGekleurdeVoorwerpenAliases
  +
end
  +
elseif eigenschappen.vorm == 'verbogen' then
  +
voorwerpalias = voorwerp:gsub( '%$%d', '' )
  +
aliases['Elke ' .. voorwerpalias] = gekleurdeVoorwerpenAliases
  +
aliases['Overeenkomende ' .. voorwerpalias] = gekleurdeVoorwerpenAliases
  +
  +
if eigenschappen.wit == false then
  +
local alleenGekleurdeVoorwerpenAliases = mw.clone( gekleurdeVoorwerpenAliases )
  +
local witWeg = table.remove( alleenGekleurdeVoorwerpenAliases, 1 ) -- verwijder het eerste element van de tabel (wit)
  +
aliases['Elke gekleurde ' .. voorwerpalias] = alleenGekleurdeVoorwerpenAliases
  +
aliases['Overeenkomende gekleurde ' .. voorwerpalias] = alleenGekleurdeVoorwerpenAliases
  +
end
  +
else
  +
error("Eigenschap 'vorm' moet één van de volgende waarden bevatten:\n\t'verbogen'\n\t'onverbogen'")
 
end
 
end
aliases['Elk ' .. voorwerp] = gekleurdeVoorwerpenAliasesGS
 
aliases['Overeenkomend ' .. voorwerp] = gekleurdeVoorwerpenAliasesGS
 
 
end
 
end
   
  +
-- Vuurwerksterren --
--- Spatie tussen kleur en voorwerp, extra 'e'
 
local gekleurdeVoorwerpenNaamval = {
+
local vuurwerksterren = {}
  +
for _, kleur in ipairs( kleuren ) do
'banier',
 
  +
local naam = kleur.verbogen .. ' vuurwerkster'
'Shulkerdoos',
 
  +
aliases[naam] = { title = 'Vuurwerkster', name = naam, text = '&7' .. kleur.onverbogen }
'wol',
 
  +
table.insert( vuurwerksterren, aliases[naam] )
}
 
 
for _, voorwerp in ipairs( gekleurdeVoorwerpenNaamval ) do
 
local gekleurdeVoorwerpenAliasesNv = {}
 
for _, kleur in ipairs( kleuren ) do
 
table.insert( gekleurdeVoorwerpenAliasesNv, kleur[2] .. ' ' .. voorwerp )
 
end
 
aliases['Elke ' .. voorwerp] = gekleurdeVoorwerpenAliasesNv
 
aliases['Overeenkomende ' .. voorwerp] = gekleurdeVoorwerpenAliasesNv
 
 
end
 
end
  +
aliases['Elke vuurwerkster'] = vuurwerksterren
  +
aliases['Overeenkomende vuurwerkster'] = vuurwerksterren
   
-- Drankjes --
+
-- Dranken --
  +
-- Geen effect
local effecten = {
 
  +
local geenEffecten = {
'der regeneratie',
 
'der vlotheid',
+
'Waterfles',
'der vuurbestendigheid',
+
'Vreemde drank',
'des gifs',
+
'Stroperige drank',
'der genezing',
+
'Triviale drank',
'des nachtzichts',
+
'Onmaakbare drank',
'der zwakte',
+
'Spattende waterfles',
'der kracht',
+
'Spattende vreemde drank',
'der traagheid',
+
'Spattende stroperige drank',
'der sprongen',
+
'Spattende triviale drank',
'der schade',
+
'Spattende onmaakbare drank',
'des wateradems',
+
'Aanhoudende waterfles',
'der onzichtbaarheid',
+
'Aanhoudende vreemde drank',
'des geluks',
+
'Aanhoudende stroperige drank',
'der verval',
+
'Aanhoudende triviale drank',
  +
'Aanhoudende onmaakbare drank',
  +
'Getipte pijl',
  +
'Pijl der spatting',
  +
'Onmaakbare getipte pijl'
 
}
 
}
   
  +
for _, naam in ipairs( geenEffecten ) do
  +
aliases[naam] = { name = naam, text = '&7Geen effecten' }
  +
end
  +
  +
-- Begin lijst met dranken
 
local drankvoorwerpen = {
 
local drankvoorwerpen = {
['Drank'] = {
+
['drank'] = {
'Waterfles',
+
aliases['Waterfles'],
'Vreemde drank',
+
aliases['Vreemde drank'],
'Dikke drank',
+
aliases['Stroperige drank'],
'Triviale drank',
+
aliases['Triviale drank'],
 
},
 
},
['Spattende drank'] = {
+
['spattende drank'] = {
'Spattende waterfles',
+
aliases['Spattende waterfles'],
'Vreemde spattende drank',
+
aliases['Spattende vreemde drank'],
'Dikke spattende drank',
+
aliases['Spattende stroperige drank'],
'Triviale spattende drank',
+
aliases['Spattende triviale drank'],
 
},
 
},
['Aanhoudende drank'] = {
+
['aanhoudende drank'] = {
'Aanhoudende waterfles',
+
aliases['Aanhoudende waterfles'],
'Vreemde aanhoudende drank',
+
aliases['Aanhoudende vreemde drank'],
'Dikke aanhoudende drank',
+
aliases['Aanhoudende stroperige drank'],
'Triviale aanhoudende drank',
+
aliases['Aanhoudende triviale drank'],
},
 
['Getipte pijl'] = {
 
'Pijl der spatting',
 
'Getipte pijl',
 
'Getipte pijl',
 
'Getipte pijl',
 
 
},
 
},
  +
['getipte pijl'] = {
  +
aliases['Pijl der spatting'],
  +
aliases['Getipte pijl'],
  +
aliases['Getipte pijl'],
  +
aliases['Getipte pijl'],
  +
}
  +
}
  +
  +
--[[
  +
Effecten.
  +
Paramters:
  +
- naam: naam van effect, inclusief genitief
  +
- effect: naam van effect zelf, voorafgegaan door &9 (positief) of &c (negatief)
  +
- versterking: met Romeinse cijfers aangegeven wat de versterking is
  +
- duur: duur van het effect
  +
- normaal: gewone & spattende drank voor normaal, verlengd en versterkt
  +
- aanhoudend: aanhoudende drank voor normaal, verlengd en versterkt
  +
- pijl: getipte pijl voor normaal, verlengd en versterkt
  +
- in gevallen waar een drank meerdere effecten heeft (zoals der schildpadmeester) is de
  +
formatting iets anders. In plaats van 'effect' heet deze parameter 'tekst'
  +
]]
  +
local effecten = {
  +
{ naam = 'der regeneratie', effect = '&9Regeneratie', versterking = 'II',
  +
duur = { normaal = { '0:45', '1:30', '0:22' }, aanhoudend = { '0:11', '0:22', '0:05' }, pijl = { '0:05', '0:11', '0:02' } } },
  +
{ naam = 'der vlotheid', effect = '&9Snelheid', versterking = 'II',
  +
duur = { normaal = { '3:00', '8:00', '1:30' }, aanhoudend = { '0:45', '2:00', '0:22' }, pijl = { '0:22', '1:00', '0:11' } } },
  +
{ naam = 'der vuurbestendigheid', effect = '&9Vuurbestendigheid',
  +
duur = { normaal = { '3:00', '8:00' }, aanhoudend = { '0:45', '2:00' }, pijl = { '0:22', '1:00' } } },
  +
{ naam = 'des gifs', effect = '&cVergif', versterking = 'II',
  +
duur = { normaal = { '0:45', '1:30', '0:21' }, aanhoudend = { '0:11', '0:22', '0:05' }, pijl = { '0:05', '0:11', '0:02' } } },
  +
{ naam = 'der genezing', effect = '&9Onmiddellijke genezing', versterking = 'II' },
  +
{ naam = 'des nachtzichts', effect = '&9Nachtzicht',
  +
duur = { normaal = { '3:00', '8:00' }, aanhoudend = { '0:45', '2:00' }, pijl = { '0:22', '1:00' } } },
  +
{ naam = 'der zwakheid', effect = '&cZwakheid',
  +
duur = { normaal = { '1:30', '4:00' }, aanhoudend = { '0:22', '1:00' }, pijl = { '0:11', '0:30' } } },
  +
{ naam = 'der kracht', effect = '&9Kracht', versterking = 'II',
  +
duur = { normaal = { '3:00', '8:00', '1:30' }, aanhoudend = { '0:45', '2:00', '0:22' }, pijl = { '0:22', '1:00', '0:11' } } },
  +
{ naam = 'der traagheid', effect = '&cTraagheid', versterking = 'IV',
  +
duur = { normaal = { '1:30', '4:00', '0:20' }, aanhoudend = { '0:22', '1:00', '0:05' }, pijl = { '0:11', '0:30', '0:02' } } },
  +
{ naam = 'der sprongen', effect = '&9Sprongversterking', versterking = 'II',
  +
duur = { normaal = { '3:00', '8:00', '1:30' }, aanhoudend = { '0:45', '2:00', '0:22' }, pijl = { '0:22', '1:00', '0:11' } } },
  +
{ naam = 'der verwonding', effect = '&cOnmiddellijke schade', versterking = 'II' },
  +
{ naam = 'des wateradems', effect = '&9Wateradem',
  +
duur = { normaal = { '3:00', '8:00' }, aanhoudend = { '0:45', '2:00' }, pijl = { '0:22', '1:00' } } },
  +
{ naam = 'der onzichtbaarheid', effect = '&9Onzichtbaarheid',
  +
duur = { normaal = { '3:00', '8:00' }, aanhoudend = { '0:45', '2:00' }, pijl = { '0:22', '1:00' } } },
  +
{ naam = 'der valvertraging', effect = '&9Valvertraging',
  +
duur = { normaal = { '1:30', '4:00' }, aanhoudend = { '0:22', '1:00' }, pijl = { '0:11', '0:30' } } },
  +
{ naam = 'des geluks', effect = '&9Geluk',
  +
duur = { normaal = { '5:00' }, aanhoudend = { '1:15' }, pijl = { '0:37' } } },
  +
{ naam = 'der verval', effect = '&cVerschrompeling',
  +
duur = { normaal = { '0:40' }, aanhoudend = { '0:10' }, pijl = { '0:05' } } },
  +
-- Drank der schildpadmeester heeft speciale formatting nodig. Hierom volgt het niet het standaardformaat.
  +
{ naam = 'der schildpadmeester', tekst = '&cTraagheid IV ($1)/&9Weerstand III ($1)', versterking = '&cTraagheid VI ($1)/&9Weerstand IV ($1)',
  +
duur = { normaal = { '0:20', '0:40', '0:20' }, aanhoudend = { '0:15', '0:45', '0:15' }, pijl = { '0:07', '0:22', '0:07' } } },
  +
}
  +
  +
local soorten = {
  +
{ naam = 'Drank', duur = 'normaal', tekst = 'Drank ' },
  +
{ naam = 'Spattende drank', duur = 'normaal', tekst = 'Spattende drank ' },
  +
{ naam = 'Aanhoudende drank', duur = 'aanhoudend', tekst = 'Aanhoudende drank ' },
  +
{ naam = 'Getipte pijl', duur = 'pijl', tekst = 'Pijl ' },
 
}
 
}
   
 
for _, effect in ipairs( effecten ) do
 
for _, effect in ipairs( effecten ) do
  +
for _, soort in ipairs( soorten ) do
table.insert( drankvoorwerpen['Drank'], 'Drank ' .. effect )
 
  +
-- Maak naam van drank
table.insert( drankvoorwerpen['Spattende drank'], 'Spattende drank ' .. effect )
 
  +
local naam = soort.tekst .. effect.naam
table.insert( drankvoorwerpen['Aanhoudende drank'], 'Aanhoudende drank ' .. effect )
 
  +
local dranknaam = {}
table.insert( drankvoorwerpen['Getipte pijl'], 'Pijl ' .. effect )
 
  +
if soort.naam == 'Getipte pijl' then
end
 
  +
dranknaam = soort.tekst .. effect.naam
  +
else
  +
dranknaam = soort.tekst .. effect.naam .. '.gif'
  +
end
   
  +
-- Voeg duur toe als er een duur is
for voorwerp, drankAliases in pairs( drankvoorwerpen ) do
 
  +
if effect.duur then
local voorwerpKL = voorwerp:lower();
 
  +
local duur = effect.duur[soort.duur]
   
  +
-- Vervang $1 door tijden
aliases['Elke ' .. voorwerpKL] = drankAliases
 
  +
if effect.tekst then
aliases['Overeenkomende ' .. voorwerpKL] = drankAliases
 
  +
aliases[naam] = { name = dranknaam, text = effect.tekst:gsub( '%$1', duur[1] ) }
  +
aliases[naam .. ' - verlengd'] = { name = dranknaam, text = effect.tekst:gsub( '%$1', duur[2] ) }
  +
aliases[naam .. ' - versterkt'] = { name = dranknaam, text = effect.versterking:gsub( '%$1', duur[3] ) }
  +
else
  +
-- Er is altijd de normale variant
  +
aliases[naam] = { name = dranknaam, text = string.format( '%s (%s)', effect.effect, duur[1] ) }
  +
  +
-- Verlengde variant als die er is
  +
if duur[2] then
  +
aliases[naam .. ' - verlengd'] = { name = dranknaam, text = string.format( '%s (%s)', effect.effect, duur[2] ) }
  +
end
  +
  +
-- Versterkte variant als die er is
  +
if effect.versterking then
  +
aliases[naam .. ' - versterkt'] = { name = dranknaam, text = string.format( '%s %s (%s)', effect.effect, effect.versterking, duur[3] ) }
  +
end
  +
end
  +
  +
else
  +
-- Anders is het drank zonder duur
  +
aliases[naam] = { name = dranknaam, text = effect.effect }
  +
  +
-- Voeg de versterkte variant toe als die er is
  +
if effect.versterking then
  +
aliases[naam .. ' - versterkt'] = { name = dranknaam, text = effect.effect .. ' ' .. effect.versterking }
  +
end
  +
end
  +
-- Voeg de standaarddrank toe aan de drankenlijst
  +
table.insert( drankvoorwerpen[soort.naam:lower()], aliases[naam] )
  +
end
 
end
 
end
   
  +
-- Maak ten slotte de lijst met dranken
-- Hout --
 
  +
-- Op dit moment zijn alle drankvoorwerpen in de verbogen vorm, dus hoeft daar
--- Houtsoorten
 
  +
-- geen rekening gehouden mee te worden.
local houtsoort = {
 
  +
for voorwerp, drankaliases in pairs( drankvoorwerpen ) do
'Eiken',
 
  +
aliases['Elke ' .. voorwerp] = drankaliases
'Sparren',
 
  +
aliases['Overeenkomende ' .. voorwerp] = drankaliases
'Berken',
 
  +
end
'Oerwoud',
 
'Acacia',
 
'Donkereiken',
 
}
 
   
  +
--[[
local houtsoortKlein = {
 
'eiken',
+
Houtsoorten.
'sparren',
+
Parameters:
'berken',
+
- vorm:
  +
- onverbogen: geen -e
'oerwoud',
 
  +
- verbogen: met -e
'acacia',
 
  +
]]
'donkereiken',
 
  +
local houtsoorten = {
  +
bovenwereld = {
  +
{ onverbogen = 'Eik', verbogen = 'Eiken' },
  +
{ onverbogen = 'Spar', verbogen = 'Sparren' },
  +
{ onverbogen = 'Berk', verbogen = 'Berken' },
  +
{ onverbogen = 'Oerwoud', verbogen = 'Oerwoud' },
  +
{ onverbogen = 'Acacia', verbogen = 'Acacia' },
  +
{ onverbogen = 'Donkereik', verbogen = 'Donkereiken' },
  +
},
  +
Nether = {
  +
{ onverbogen = 'Helrood', verbogen = 'Helrode' },
  +
{ onverbogen = 'Spookachtig', verbogen = 'Spookachtige' },
  +
}
 
}
 
}
   
  +
--[[
--- Voorwerpen (elk)
 
  +
Houten voorwerpen.
  +
Parameters:
  +
- vorm:
  +
- onverbogen: geen -e
  +
- verbogen: met -e
  +
- bovenwereld: optioneel.
  +
Naam van het blok in de bovenwereld.
  +
- Nether: optioneel
  +
Naam van het blok in de Nether.
  +
- overige:
  +
- $1: Gebruik de onverbogen variant van de houtsoort
  +
- $1l: Zelfde als bovenstaande, maar in kleine letters - van :lower()
  +
- $2: Gebruik de verbogen variant van de houtsoort
  +
- $2l: Zelfde als bovenstaande, maar in kleine letters - van :lower()
  +
]]
 
local houtenVoorwerpen = {
 
local houtenVoorwerpen = {
  +
['hout'] = { vorm = 'onverbogen', bovenwereld = '$2hout' },
'hout',
 
  +
['gestript hout'] = { vorm = 'onverbogen', bovenwereld = 'Gestript $2lhout' },
'houten hek',
 
  +
['gestripte schimmeldraden'] = { vorm = 'verbogen', Nether = 'Gestripte $2l schimmeldraden' },
  +
['gestripte stam'] = { vorm = 'verbogen', bovenwereld = 'Gestripte $2lstam', Nether = 'Gestripte $2l stam' },
  +
['houten boot'] = { vorm = 'verbogen', bovenwereld = '$2houten boot' },
  +
['houten bord'] = { vorm = 'onverbogen', bovenwereld = '$2houten bord', Nether = '$1 houten bord' },
  +
['houten deur'] = { vorm = 'verbogen', bovenwereld = '$2houten deur', Nether = '$2 houten deur' },
  +
['houten drukplaat'] = { vorm = 'verbogen', bovenwereld = '$2houten drukplaat', Nether = '$2 houten drukplaat' },
  +
['houten hek'] = { vorm = 'onverbogen', bovenwereld = '$2houten hek', Nether = '$1 houten hek' },
  +
['houten knop'] = { vorm = 'verbogen', bovenwereld = '$2houten knop', Nether = '$2 houten knop' },
  +
['houten plaat'] = { vorm = 'verbogen', bovenwereld = '$2houten plaat', Nether = '$2 houten plaat' },
  +
['houten planken'] = { vorm = 'verbogen', bovenwereld = '$2houten planken', Nether = '$2 houten planken' },
  +
['houten poort'] = { vorm = 'verbogen', bovenwereld = '$2houten poort', Nether = '$2 houten poort' },
  +
['houten trap'] = { vorm = 'verbogen', bovenwereld = '$2houten trap', Nether = '$2 houten trap' },
  +
['houten valluik'] = { vorm = 'onverbogen', bovenwereld = '$2houten valluik', Nether = '$1 houten valluik' },
  +
['kiemplant'] = { vorm = 'verbogen', bovenwereld = '$2kiemplant' },
  +
['schimmeldraden'] = { vorm = 'verbogen', Nether = '$2 schimmeldraden' },
  +
['stam'] = { vorm = 'verbogen', bovenwereld = '$2stam', Nether = '$2 stam' },
 
}
 
}
   
  +
-- Geparseerd hout, door onderstaande drie for-loops gebruikt
for _, voorwerp in ipairs( houtenVoorwerpen ) do
 
local houtAliases = {}
+
local geparseerdHout = {}
  +
for _, hout in ipairs( houtsoort ) do
 
  +
-- Vul bovenstaande tabel
table.insert( houtAliases, hout .. '' .. voorwerp )
 
  +
for groep, data in pairs( houtenVoorwerpen ) do
  +
for wereld, houtsoortenInWereld in pairs( houtsoorten ) do
  +
local geparseerdHoutenVoorwerp = ''
  +
if data.bovenwereld and wereld == 'bovenwereld' then
  +
for _, houttype in ipairs( houtsoortenInWereld ) do
  +
geparseerdHoutenVoorwerp = data.bovenwereld:gsub('%$1l', houttype.verbogen:lower()):gsub('%$1', houttype.onverbogen):gsub('%$2l', houttype.verbogen:lower()):gsub('%$2', houttype.verbogen)
  +
if geparseerdHout[groep .. ' - bovenwereld'] == nil then geparseerdHout[groep .. ' - bovenwereld'] = {} end
  +
if geparseerdHout[groep] == nil then geparseerdHout[groep] = {} end
  +
table.insert(geparseerdHout[groep .. ' - bovenwereld'], geparseerdHoutenVoorwerp)
  +
table.insert(geparseerdHout[groep], geparseerdHoutenVoorwerp) -- compatibiliteit met vorige versie
  +
end
  +
end
  +
if data.Nether and wereld == 'Nether' then
  +
for _, houttype in ipairs( houtsoortenInWereld ) do
  +
geparseerdHoutenVoorwerp = data.Nether:gsub('%$1l', houttype.verbogen:lower()):gsub('%$1', houttype.onverbogen):gsub('%$2l', houttype.verbogen:lower()):gsub('%$2', houttype.verbogen)
  +
if geparseerdHout[groep .. ' - Nether'] == nil then geparseerdHout[groep .. ' - Nether'] = {} end
  +
table.insert(geparseerdHout[groep .. ' - Nether'], geparseerdHoutenVoorwerp)
  +
end
  +
end
 
end
 
end
aliases['Elk ' .. voorwerp] = houtAliases
 
aliases['Overeenkomend ' .. voorwerp] = houtAliases
 
 
end
 
end
   
  +
-- Voeg toe aan de aliasestabel
--- Voorwerpen (elke)
 
  +
for houtPerWereld, voorwerpen in pairs( geparseerdHout ) do
local houtenVoorwerpenNaamval = {
 
'houten poort',
+
local houtRegex = ''
  +
if houtPerWereld:match( '%-' ) then
'bast',
 
  +
houtRegex = houtPerWereld:match( '(.+)%s%-' )
'houten boot',
 
'houten deur',
+
else
  +
houtRegex = houtPerWereld
'houten planken',
 
'houten plaat',
+
end
'houten trap',
+
  +
if houtenVoorwerpen[houtRegex].vorm == 'onverbogen' then
  +
aliases['Elk ' .. houtPerWereld] = voorwerpen
  +
aliases['Overeenkomend ' .. houtPerWereld] = voorwerpen
  +
elseif houtenVoorwerpen[houtRegex].vorm == 'verbogen' then
  +
aliases['Elke ' .. houtPerWereld] = voorwerpen
  +
aliases['Overeenkomende ' .. houtPerWereld] = voorwerpen
  +
else
  +
error("Eigenschap 'vorm' moet één van de volgende waarden bevatten:\n\t'verbogen'\n\t'onverbogen'")
  +
end
  +
end
  +
  +
-- Zet hier blokken neer die samengevoegd moeten worden
  +
-- volgorde: bovenwereld, Nether
  +
local houtSamenvoegen = {
  +
{ 'hout', 'schimmeldraden' },
  +
{ 'gestript hout', 'gestripte schimmeldraden' },
  +
{ 'gestripte stam' },
  +
{ 'houten bord' },
  +
{ 'houten deur' },
  +
{ 'houten drukplaat' },
  +
{ 'houten hek' },
  +
{ 'houten knop' },
  +
{ 'houten plaat' },
  +
{ 'houten planken' },
  +
{ 'houten poort' },
  +
{ 'houten trap' },
  +
{ 'houten valluik' },
  +
{ 'stam' },
 
}
 
}
   
  +
-- Merge two tables into one https://stackoverflow.com/a/43460349
for _, voorwerp in ipairs( houtenVoorwerpenNaamval ) do
 
  +
function merge_tables( a, b )
local houtAliasesNv = {}
 
  +
local result = {}
for _, hout in ipairs( houtsoort ) do
 
  +
for k,v in pairs ( a ) do
table.insert( houtAliasesNv, hout .. '' .. voorwerp )
 
  +
table.insert( result, v )
 
end
 
end
  +
for k,v in pairs ( b ) do
aliases['Elke ' .. voorwerp] = houtAliasesNv
 
  +
table.insert( result, v )
aliases['Overeenkomende ' .. voorwerp] = houtAliasesNv
 
  +
end
  +
return result
 
end
 
end
   
  +
-- Voeg houten voorwerpen (bovenwereld en Nether) samen
--- Voorwerpen (elk, type vooraan + spatie)
 
  +
for _, samenvoegen in ipairs( houtSamenvoegen ) do
local houtPrefix = {
 
  +
local samengevoegd
'Gestript',
 
  +
if #samenvoegen > 1 then
  +
local samenTeVoegenLinks = samenvoegen[1] -- zoals altijd fantastische
  +
local samenTeVoegenRechts = samenvoegen[2] -- future-proofing
  +
samengevoegd = merge_tables( geparseerdHout[samenTeVoegenLinks .. ' - bovenwereld'], geparseerdHout[samenTeVoegenRechts .. ' - Nether'] )
  +
if houtenVoorwerpen[samenTeVoegenLinks].vorm == houtenVoorwerpen[samenTeVoegenRechts].vorm then
  +
-- omdat beide vormen gelijk zijn aan elkaar, hoeft enkel één
  +
-- opgehaald te worden
  +
local vorm = houtenVoorwerpen[samenTeVoegenLinks].vorm
  +
if vorm == 'onverbogen' then
  +
aliases['Elk ' .. samenTeVoegenLinks .. ' of ' .. samenTeVoegenRechts] = samengevoegd
  +
aliases['Overeenkomend ' .. samenTeVoegenLinks .. ' of ' .. samenTeVoegenRechts] = samengevoegd
  +
elseif vorm == 'verbogen' then
  +
aliases['Elke ' .. samenTeVoegenLinks .. ' of ' .. samenTeVoegenRechts] = samengevoegd
  +
aliases['Overeenkomende ' .. samenTeVoegenLinks .. ' of ' .. samenTeVoegenRechts] = samengevoegd
  +
else
  +
error("Eigenschap 'vorm' moet één van de volgende waarden bevatten:\n\t'verbogen'\n\t'onverbogen'\nWaarde: " .. vorm)
  +
end
  +
else
  +
-- beide vormen zijn verschillend, dus de linkervorm is het
  +
-- tegenovergestelde van de rechter
  +
local vormLinks = houtenVoorwerpen[samenTeVoegenLinks].vorm
  +
if vormLinks == 'onverbogen' then
  +
aliases['Elk ' .. samenTeVoegenLinks .. ' of elke ' .. samenTeVoegenRechts] = samengevoegd
  +
aliases['Overeenkomend ' .. samenTeVoegenLinks .. ' of overeenkomende ' .. samenTeVoegenRechts] = samengevoegd
  +
elseif vormLinks == 'verbogen' then
  +
aliases['Elke ' .. samenTeVoegenLinks .. ' of elk ' .. samenTeVoegenRechts] = samengevoegd
  +
aliases['Overeenkomende ' .. samenTeVoegenLinks .. ' of overeenkomend ' .. samenTeVoegenRechts] = samengevoegd
  +
else
  +
error("Eigenschap 'vorm' moet één van de volgende waarden bevatten:\n\t'verbogen'\n\t'onverbogen'\nWaarde: " .. vormLinks)
  +
end
  +
end
  +
else
  +
-- Er is slechts één element in de tabel, dus hoeft er geen rekening
  +
-- gehouden te worden met of de vorm van beide verschillen of gelijk
  +
-- zijn.
  +
samenTeVoegen = samenvoegen[1]
  +
samengevoegd = merge_tables( geparseerdHout[samenTeVoegen .. ' - bovenwereld'], geparseerdHout[samenTeVoegen .. ' - Nether'] )
  +
if houtenVoorwerpen[samenTeVoegen].vorm == 'onverbogen' then
  +
aliases['Elk ' .. samenTeVoegen .. ' - nieuw'] = samengevoegd
  +
aliases['Overeenkomend ' .. samenTeVoegen .. ' - nieuw'] = samengevoegd
  +
elseif houtenVoorwerpen[samenTeVoegen].vorm == 'verbogen' then
  +
aliases['Elke ' .. samenTeVoegen .. ' - nieuw'] = samengevoegd
  +
aliases['Overeenkomende ' .. samenTeVoegen .. ' - nieuw'] = samengevoegd
  +
else
  +
error("Eigenschap 'vorm' moet één van de volgende waarden bevatten:\n\t'verbogen'\n\t'onverbogen'")
  +
end
  +
end
  +
end
  +
  +
-- Bedrock en console-specifieke voorwerpen --
  +
local editievoorwerpen = {
  +
['(BE)'] = {
  +
'Acaciahouten poort',
  +
'Baken', 'Betoveringstafel', 'Berkenhouten poort', 'Blauw ijs', 'Boog', 'Bosontdekkingskaart',
  +
'Constructieleegte', 'Creeperhoofd',
  +
'Donkereikenhouten poort', 'Drakenei', 'Drakenhoofd',
  +
'Eikenhouten poort', 'Emmer kogelvis', 'Emmer tropische vis', 'Enderkist', 'Endpoort', 'Endportaal', 'Endportaalframe', 'Endstaf',
  +
'Glazen ruit', 'Gloeisteen',
  +
'Helrode houten poort', 'Honingblok', 'Hoofd', 'Hoornkoraalblok', 'Huilend obsidiaan',
  +
"Jack-o'-lantern",
  +
'Kaart', 'Kattenspawnei', 'Kist', 'Kist met valstrik', 'Kracht van de zee',
  +
'Lava',
  +
'Magmablok', 'Mijnkar met opdrachtblok', 'Monsterkooi',
  +
'Observeerder', 'Oceaanontdekkingskaart', 'Oerwoudbladeren', 'Oerwoudhouten poort',
  +
'Pandaspawnei', 'Pioenroos', 'Puzzelblok',
  +
'Rondreizendehandelaarsspawnei', 'Rozenstruik',
  +
'Skelettenschedel', 'Sparrenhouten poort', 'Spookachtige houten poort', 'Steiger', 'Stromende lava',
  +
'Tralies',
  +
'Witherskelettenschedel',
  +
'Zeelantaarn', 'Zombiehoofd', 'Zwammenlicht',
  +
},
  +
['(LCE)'] = {
  +
'Pioenroos',
  +
'Rozenstruik',
  +
'Struik'
  +
}
 
}
 
}
   
for _, voorwerp in ipairs( houtPrefix ) do
+
for editie, voorwerpen in pairs( editievoorwerpen ) do
  +
for _, voorwerp in ipairs( voorwerpen ) do
local houtAliasesPrefix = {}
 
  +
local naam = voorwerp .. ' ' .. editie
 
  +
aliases[naam] = { title = voorwerp, name = naam }
for _, hout in ipairs( houtsoortKlein ) do
 
table.insert( houtAliasesPrefix, voorwerp .. ' ' .. hout .. 'hout' )
 
 
end
 
end
  +
end
local voorwerpKL = voorwerp:lower();
 
  +
aliases['Elk ' .. voorwerpKL .. ' hout'] = houtAliasesPrefix
 
  +
-- Lichtblokken (BE)
aliases['Overeenkomend ' .. voorwerpKL .. ' hout'] = houtAliasesPrefix
 
  +
for niveau = 0,15 do
  +
aliases['Lichtblok ' .. niveau] = { title = 'Lichtblok', name = 'Lichtblok ' .. niveau }
 
end
 
end
   

Huidige versie van 3 mrt 2021 om 23:41

Deze pagina heeft nog geen documentatie. Als je weet hoe het werkt, maak het dan alsjeblieft.
-- Ga door een tabel in de volgorde zoals gegeven (http://lua-users.org/wiki/MakingLuaLikePhp)
function functioning_table( ... )
    local newTable,keys,values={},{},{}
    newTable.pairs=function(self) -- pairs iterator
        local count=0
        return function() 
            count=count+1
            return keys[count],values[keys[count]]
        end
    end
    setmetatable(newTable,{
        __newindex=function(self,key,value)
            if not self[key] then table.insert(keys,key)
            elseif value==nil then -- Handle item delete
                local count=1
                while keys[count]~=key do count = count + 1 end
                table.remove(keys,count)
            end
            values[key]=value -- replace/create
        end,
        __index=function(self,key) return values[key] end
    })
    for x=1,table.getn(arg) do -- door #args vervangen als dit werkt
        for k,v in pairs(arg[x]) do newTable[k]=v end
    end
    return newTable
end

-- Hoofdletters (houdt ook rekening met 'ij')
function hoofdletter( str )
    local pstr = '' -- pstr = Parsed STRing
    if str:match('^%l%l') == 'ij' then
        pstr = str:gsub('^ij', 'IJ')
    else
        pstr = str:gsub('^%l', string.upper)
    end
    return pstr
end

local aliases = {
    -- Veelvoorkomende branstof --
    ['Elke brandstof'] = { 'Steenkool', 'Houtskool', { title = 'Stam', name = 'Eikenstam' }, { title = 'Houten planken', name = 'Eikenhouten planken' }, 'Steenkoolblok', 'Gedroogd kelpblok' },
    
    -- Harnas --
    ['Leren harnas'] = { 'Leren kap', 'Leren tuniek', 'Leren broek', 'Leren laarzen' },
    ['Gouden harnas'] = { 'Gouden helm', 'Gouden borstplaat', 'Gouden beenstukken', 'Gouden laarzen' },
    ['Maliënharnas'] = { 'Maliënkap', 'Maliënkolder', 'Maliënbroek', 'Maliënlaarzen' },
    ['IJzeren harnas'] = { 'IJzeren helm', 'IJzeren borstplaat', 'IJzeren beenstukken', 'IJzeren laarzen' },
    ['Diamanten harnas'] = { 'Diamanten helm', 'Diamanten borstplaat', 'Diamanten beenstukken', 'Diamanten laarzen' },
    ['Netherieten harnas'] = { 'Netherieten helm', 'Netherieten borstplaat', 'Netherieten beenstukken', 'Netherieten laarzen' },

    -- Overige namen --
    ['Gebroken dekschild'] = { title = 'Dekschild', name = 'Gebroken dekschild' },
    -- Klei (blok) -> Klei
    -- Klei -> Kleibal
    ['Bloemwapenbanierpatroon'] = { title = 'Banierpatroon', name = 'Banierpatroon', text = '&7Bloem' },
    ['Creeperwapenbanierpatroon'] = { title = '&eBanierpatroon', name = 'Banierpatroon', text = '&7Creeper' },
    ['Ingesprongen zoom-banierpatroon'] = { title = 'Banierpatroon', name = 'Banierpatroon', text = '&Ingesprongen zoom' },
    ['Metselwerkbanierpatroon'] = { title = 'Banierpatroon', name = 'Banierpatroon', text = '&7Metselwerk' },
    ['Schedelwapenbanierpatroon'] = { title = '&eBanierpatroon', name = 'Banierpatroon', text = '&7Schedel' },
    ['Mojanglogobanierpatroon'] = { title = '&dBanierpatroon', name = 'Banierpatroon', text = '&7Mojanglogo' },
    ['Globebanierpatroon'] = { title = 'Banierpatroon', name = 'Banierpatroon', text = '&7Globe' },
    ['Snuitbanierpatroon'] = { title = 'Banierpatroon', name = 'Banierpatroon', text = '&7Snuit' },
    ['Knop'] = { title = 'Knop', name = 'Stenen knop' },
    ['Houten knop'] = { title = 'Houten knop', name = 'Eikenhouten knop' },
    ['Kruisboog geladen met pijl'] = { title = 'Kruisboog', name = 'Kruisboog geladen met pijl' },
    ['Beschadigde kruisboog geladen met pijl'] = { title = 'Kruisboog', name = 'Beschadigde kruisboog geladen met pijl' },
    ['Kruisboog geladen met vuurpijl'] = { title = 'Kruisboog', name = 'Kruisboog geladen met vuurpijl' },
    ['Beschadigde kruisboog geladen met vuurpijl'] = { title = 'Kruisboog', name = 'Beschadigde kruisboog geladen met vuurpijl' },
    ['Illagerbanier'] = { title = '&6&oIllagerbanier', name = 'Illagerbanier', text = 
        '&7Turquoise lozanje/&7Lichtgrijs schildvoet/&7Grijze paal/&7Lichtgrijze zoom/&7Zwarte dwarsbalk/&7Lichtgrijsgebalkt'
    },
    ['Puzzelblok'] = { title = '&dPuzzelblok', name = 'Puzzelblok' },
    ['Halfvolle bundel'] = { title = 'Bundel', name = 'Halfvolle bundel' },
    ['Volle bundel'] = { title = 'Bundel', name = 'Volle bundel' },

    -- Wapens --
    ['Drietand'] = { name = 'Drietand', text = '/&7 Wanneer hoofdhand:/ &21,1 aanvalssnelheid/ &29 aanvalsschade' },
    ['Drietand (BE)'] = { name = 'Drietand', text = '/&9 +8 aanvalsschade' },

    -- Bedrock- en Educationedities --
    ['Gebakken rundvlees'] = { title = 'Gebakken rundvlees', name = 'Biefstuk' },
    ['Kaart (BE)'] = { title = 'Kaart', name = 'Kaart', text = 'Toon markeerders: &cNee' },
    ['Kompas wijzend naar zeilsteen (BE)'] = { title = 'Kompas wijzend naar zeilsteen', name = 'Kompas wijzend naar zeilsteen (BE).gif' },
    ['Locatiekaart (BE)'] = { title = 'Kaart', name = 'Kaart', text = 'Toon markeerders: &aJa' },
    ['Sculksensor (BE)'] = { title = 'Sculksensor', name = 'Sculksensor (BE).gif' },

    -- Chemie --
    ['Water (stof)'] = { title = 'Water', name = 'Water (stof)' },
    ['Chloride'] = { 'Calciumchloride', 'Ceriumchloride', 'Kaliumchloride', 'Kwikchloride', 'Wolfraamchloride' },
    ['Sterretjes'] = { 'Oranje sterretje', 'Blauw sterretje', 'Rood sterretje', 'Paars sterretje', 'Groen sterretje' },
    ['Overeenkomende chloride'] = { 'Calciumchloride', 'Ceriumchloride', 'Kaliumchloride', 'Kwikchloride', 'Wolfraamchloride' },
    ['Overeenkomende gekleurde fakkel'] = { 'Blauwe fakkel', 'Rode fakkel', 'Paarse fakkel', 'Groene fakkel' },
    ['Overeenkomende gloeistaaf'] = { 'Witte gloeistaaf', 'Oranje gloeistaaf', 'Magenta gloeistaaf', 'Lichtblauwe gloeistaaf',
        'Gele gloeistaaf', 'Lichtgroene gloeistaaf', 'Roze gloeistaaf', 'Grijze gloeistaaf', 'Lichtgrijze gloeistaaf', 'Turquoise gloeistaaf',
        'Paarse gloeistaaf', 'Blauwe gloeistaaf', 'Bruine gloeistaaf', 'Groene gloeistaaf', 'Rode gloeistaaf'
    },
}

-- Tekstwolkkleuren & animatie --
-- Geen speciale tekstkleur (dus wit)
local geanimeerdeSprites = {
    'Blauwe sleutel', 'Bellenkolom',
    'Debugstok',
    'Gele sleutel', 'Geschreven boek',
    'Helrode schimmeldraden', 'Helrode stam',
    'Klok', 'Kompas', 'Kompas wijzend naar zeilsteen',
    'Lava',
    'Magmablok',
    'Netherportaal',
    'Prismarien', 'Prismarienmuur', 'Prismarienplaat', 'Prismarientrap',
    'Rode sleutel',
    'Sculksensor', 'Spookachtige schimmeldraden', 'Spookachtige stam', 'Steenzaag',
    'Vuur',
    'Warmteblok', 'Water',
    'Zeelantaarn', 'Zielenvuur',
}

for _, sprite in ipairs ( geanimeerdeSprites ) do
    aliases[sprite] = sprite .. '.gif'
end

-- Gele tekst in tekstwolk en/of geanimeerd
local geleTekstwolken = {
    { naam = 'Beschadigd dekschild', geanimeerd = false },
    { naam = 'Betoverd boek', geanimeerd = true },
    { naam = 'Creeperhoofd', geanimeerd = false },
    { naam = 'Drakenhoofd', geanimeerd = false },
    { naam = 'Drakenadem', geanimeerd = false },
    { naam = 'Dekschild', geanimeerd = false },
    { naam = 'Hoofd', geanimeerd = false },
    { naam = 'Hart van de zee', geanimeerd = false },
    { naam = 'Magiërsextract', geanimeerd = true },
    { naam = 'Netherster', geanimeerd = true },
    { naam = 'Skelettenschedel', geanimeerd = false },
    { naam = 'Totem der onsterfelijkheid', geanimeerd = false },
    { naam = 'Witherskelettenschedel', geanimeerd = false },
    { naam = 'Zombiehoofd', geanimeerd = false }
}

for _, eigenschap in ipairs( geleTekstwolken ) do
    local naam = eigenschap.naam
    if eigenschap.geanimeerd == true then
        aliases[naam] = { title = '&e', name = naam .. '.gif' }
    else
        aliases[naam] = { title = '&e', name = naam }
    end
end

-- Aqua tekst in tekstwolk en/of geanimeerd
local aquaTekstwolken = {
    { naam = 'Baken', geanimeerd = false },
    { naam = 'Endkristal', geanimeerd = true },
    { naam = 'Gouden appel', geanimeerd = false },
    { naam = 'Kracht van de zee', geanimeerd = false }
}

for _, eigenschap in ipairs( aquaTekstwolken ) do
    local naam = eigenschap.naam
    if eigenschap.geanimeerd == true then
        aliases[naam] = { title = '&b', name = naam .. '.gif' }
    else
        aliases[naam] = { title = '&b', name = naam }
    end
end

-- Lichtpaarse tekst in tekstwolk en/of geanimeerd
local lichtpaarseTekstwolken = {
    { naam = 'Betoverde gouden appel', geanimeerd = true },
    { naam = 'Constructieblok', geanimeerd = false },
    { naam = 'Drakenei', geanimeerd = false },
    { naam = 'Gekoppeld opdrachtblok', geanimeerd = true },
    { naam = 'Herhalend opdrachtblok', geanimeerd = true },
    { naam = 'Opdrachtblok', geanimeerd = true },
    { naam = 'Kracht van de zee', geanimeerd = false }
}

for _, eigenschap in ipairs( lichtpaarseTekstwolken ) do
    local naam = eigenschap.naam
    if eigenschap.geanimeerd == true then
        aliases[naam] = { title = '&b', name = naam .. '.gif' }
    else
        aliases[naam] = { title = '&b', name = naam }
    end
end

local oranjeEnSchuingedrukteTekstwolken = {
    { naam = 'Onheilspellende banier', geanimeerd = false },
}

for _, eigenschap in ipairs( oranjeEnSchuingedrukteTekstwolken ) do
    local naam = eigenschap.naam
    if eigenschap.geanimeerd == true then
        aliases[naam] = { title = '&6&o', name = naam .. '.gif' }
    else
        aliases[naam] = { title = '&6&o', name = naam }
    end
end

-- Gereedschap en wapens --
local gereedschapsvormen = {
    ["zwaard"] = { vorm = 'onverbogen' },
    ["houweel"] = { vorm = 'verbogen' },
    ["bijl"] = { vorm = 'verbogen' },
    ["schep"] = { vorm = 'verbogen' },
    ["schoffel"] = { vorm = 'verbogen' },
}

-- Merk op dat deze gereedschapstabel geen normale tabel is. Hierom zijn de
-- verschillende materiaalsoorten opgesplitst in een eigen tabel. Zie ook de
-- functie die bovenaan staat.
local gereedschap = functioning_table({
    ['hout'] = {
        { gereedschap = 'zwaard', aanvalssnelheid = '1,6', aanvalsschade = 4, bedrock_aanvalsschade = 4 },
        { gereedschap = 'houweel', aanvalssnelheid = '1,2', aanvalsschade = 2, bedrock_aanvalsschade = 2 },
        { gereedschap = 'bijl', aanvalssnelheid = '0,8', aanvalsschade = 7, bedrock_aanvalsschade = 3 },
        { gereedschap = 'schep', aanvalssnelheid = 1, aanvalsschade = '2,5', bedrock_aanvalsschade = 1 },
        { gereedschap = 'schoffel', aanvalssnelheid = 1, aanvalsschade = 1, bedrock_aanvalsschade = 2 },
    }},{
    ['steen'] = {
        { gereedschap = 'zwaard', aanvalssnelheid = '1,6', aanvalsschade = 5, bedrock_aanvalsschade = 5 },
        { gereedschap = 'houweel', aanvalssnelheid = '1,2', aanvalsschade = 3, bedrock_aanvalsschade = 3 },
        { gereedschap = 'bijl', aanvalssnelheid = '0,8', aanvalsschade = 9, bedrock_aanvalsschade = 4 },
        { gereedschap = 'schep', aanvalssnelheid = 1, aanvalsschade = '3,5', bedrock_aanvalsschade = 2 },
        { gereedschap = 'schoffel', aanvalssnelheid = 2, aanvalsschade = 1, bedrock_aanvalsschade = 3 },
    }},{
    ['ijzer'] = {
        { gereedschap = 'zwaard', aanvalssnelheid = '1,6', aanvalsschade = 6, bedrock_aanvalsschade = 6 },
        { gereedschap = 'houweel', aanvalssnelheid = '1,2', aanvalsschade = 4, bedrock_aanvalsschade = 4 },
        { gereedschap = 'bijl', aanvalssnelheid = '0,9', aanvalsschade = 9, bedrock_aanvalsschade = 5 },
        { gereedschap = 'schep', aanvalssnelheid = 1, aanvalsschade = '4,5', bedrock_aanvalsschade = 3 },
        { gereedschap = 'schoffel', aanvalssnelheid = 3, aanvalsschade = 1, bedrock_aanvalsschade = 4 },
    }},{
    ['goud'] = {
        { gereedschap = 'zwaard', aanvalssnelheid = '1,6', aanvalsschade = 4, bedrock_aanvalsschade = 4 },
        { gereedschap = 'houweel', aanvalssnelheid = '1,2', aanvalsschade = 2, bedrock_aanvalsschade = 2 },
        { gereedschap = 'bijl', aanvalssnelheid = 1, aanvalsschade = 7, bedrock_aanvalsschade = 3 },
        { gereedschap = 'schep', aanvalssnelheid = 1, aanvalsschade = '2,5', bedrock_aanvalsschade = 1 },
        { gereedschap = 'schoffel', aanvalssnelheid = 1, aanvalsschade = 1, bedrock_aanvalsschade = 2 },
    }},{
    ['diamant'] = {
        { gereedschap = 'zwaard', aanvalssnelheid = '1,6', aanvalsschade = 7, bedrock_aanvalsschade = 7 },
        { gereedschap = 'houweel', aanvalssnelheid = '1,2', aanvalsschade = 5, bedrock_aanvalsschade = 5 },
        { gereedschap = 'bijl', aanvalssnelheid = 1, aanvalsschade = 9, bedrock_aanvalsschade = 6 },
        { gereedschap = 'schep', aanvalssnelheid = 1, aanvalsschade = '5,5', bedrock_aanvalsschade = 4 },
        { gereedschap = 'schoffel', aanvalssnelheid = 4, aanvalsschade = 1, bedrock_aanvalsschade = 5 },
    }},{
    ['Netheriet'] = {
        { gereedschap = 'zwaard', aanvalssnelheid = '1,6', aanvalsschade = 8, bedrock_aanvalsschade = 8 },
        { gereedschap = 'houweel', aanvalssnelheid = '1,2', aanvalsschade = 6, bedrock_aanvalsschade = 6 },
        { gereedschap = 'bijl', aanvalssnelheid = 1, aanvalsschade = 10, bedrock_aanvalsschade = 7 },
        { gereedschap = 'schep', aanvalssnelheid = '1,6', aanvalsschade = '6,5', bedrock_aanvalsschade = 5 },
        { gereedschap = 'schoffel', aanvalssnelheid = 4, aanvalsschade = 1, bedrock_aanvalsschade = 4 },
    }})

local materiaalgroepen = functioning_table()
local gereedschapsgroepen = functioning_table()

for materiaalsoort, gereedschapsoort in gereedschap:pairs() do
    local materiaalsoortVerbogen
    if materiaalsoort == 'steen' then
        materiaalsoortVerbogen = 'stenen'
    else
        materiaalsoortVerbogen = materiaalsoort .. 'en'
    end
        
    for _, eigenschappen in ipairs( gereedschapsoort ) do
        -- Voeg eerst alle aliasen toe aan de tabel
        materiaalsoortVerbogen = hoofdletter( materiaalsoortVerbogen )

        local gereedschapsnaam = materiaalsoortVerbogen .. ' ' .. eigenschappen.gereedschap
        aliases[gereedschapsnaam] = { name = gereedschapsnaam, text = '/&7Wanneer in hoofdhand:/ &2' .. eigenschappen.aanvalssnelheid .. ' aanvalssnelheid/ &2' .. eigenschappen.aanvalsschade .. ' aanvalsschade'  }
        aliases[gereedschapsnaam .. ' (BE)'] = { name = gereedschapsnaam, text = '/&9+' .. eigenschappen.bedrock_aanvalsschade .. ' aanvalsschade' }

        local materiaalgroep = materiaalsoortVerbogen
        local gereedschapsgroep = eigenschappen.gereedschap
        -- Per materiaalgroep (m.u.v. zwaard)
        if gereedschapsnaam:find('%(BE%)$') == nil then
            if eigenschappen.gereedschap ~= 'zwaard' then
                if materiaalgroepen[materiaalgroep] == nil then
                    materiaalgroepen[materiaalgroep] = {}
                end
                table.insert( materiaalgroepen[materiaalgroep], aliases[gereedschapsnaam] )
            end
            -- Per gereedschapsgroep
            if gereedschapsgroepen[gereedschapsgroep] == nil then
                gereedschapsgroepen[gereedschapsgroep] = {}
            end
            table.insert( gereedschapsgroepen[gereedschapsgroep], aliases[gereedschapsnaam] )
        end
    end
end

-- Zet materiaal en gereedschap gegroepeerd in aliasestabel
for materiaalgroep, voorwerpen in materiaalgroepen:pairs() do
    local mg
    if materiaalgroep == 'Netherieten' then
        mg = materiaalgroep
    else
        mg = materiaalgroep:lower()
    end
    aliases['Elk ' .. mg .. ' gereedschap'] = voorwerpen
    aliases['Overeenkomend ' .. mg .. ' gereedschap'] = voorwerpen
end

for gereedschapsgroep, voorwerpen in gereedschapsgroepen:pairs() do
    local vorm = gereedschapsvormen[gereedschapsgroep].vorm
    if vorm == 'onverbogen' then
        aliases['Elk ' .. gereedschapsgroep] = voorwerpen
        aliases['Overeenkomend ' .. gereedschapsgroep] = voorwerpen
    elseif vorm == 'verbogen' then
        aliases['Elke ' .. gereedschapsgroep] = voorwerpen
        aliases['Overeenkomende ' .. gereedschapsgroep] = voorwerpen
    end
end

--[[
    Lijst met voorwerpvarianten. De parameter 'vorm' bepaalt of er 'elke' en
    'overeenkomende' (verbogen) óf 'elk' en 'overeenkomend' (onverbogen) voor
    komt te staan in de aliasestabel.
    Merk op dat hoofdletters niet nodig zijn tussen de blokhaken.
]]
local voorwerpvarianten = {
    ['bloem'] = { vorm = 'verbogen', lijst = { 'Margriet', 'Korenbloem', 'Lelietje-van-dalen',
        'Witherroos', 'Rode tulp', 'Oranje tulp', 'Witte tulp', 'Roze tulp', 'Porseleinsterretje',
        'Look', 'Blauwe orchidee', 'Klaproos', 'Paardenbloem' } },
    ['paddenstoel'] = { vorm = 'verbogen', lijst = { 'Rode paddenstoel', 'Bruine paddenstoel' } },
    ['kwartsblok'] = { vorm = 'onverbogen', lijst = { 'Kwartsblok', 'Gebeiteld kwartsblok',
        'Kwartspilaar' } },
    ['rood zandsteen'] = { vorm = 'onverbogen', lijst = { 'Rood zandsteen',
        'Gesneden rood zandsteen', 'Gebeiteld rood zandsteen', 'Glad rood zandsteen' } },
    ['zandsteen'] = { vorm = 'onverbogen', lijst = { 'Zandsteen', 'Gesneden zandsteen',
        'Gebeiteld zandsteen', 'Glad zandsteen' } },
    ['blokstenen'] = { vorm = 'verbogen', lijst = {'Blokstenen', 'Mossige blokstenen',
        'Gebarsten blokstenen', 'Gebeitelde blokstenen'} },
    ['stenen plaat'] = { vorm = 'verbogen', lijst = { 'Stenen plaat', 'Gladde stenen plaat',
        'Keistenen plaat', 'Mossige keistenen plaat', 'Blokstenen plaat',
        'Mossige blokstenen plaat', 'Andesietplaat', 'Gepolijste andesietplaat', 'Diorietplaat',
        'Gepolijste diorietplaat', 'Granietplaat', 'Gepolijste granietplaat', 'Zandstenen plaat',
        'Gesneden zandstenen plaat', 'Gladde zandstenen plaat', 'Rode zandstenen plaat',
        'Gesneden rode zandstenen plaat', 'Gladde rode zandstenen plaat', 'Bakstenen plaat',
        { title = 'Prismarienplaat', name = 'Prismarienplaat.gif' }, 'Prismarienblokstenen plaat',
        'Donkerprismarienplaat', 'Netherbakstenen plaat', 'Rode Netherbakstenen plaat',
        'Kwartsplaat', 'Gladde kwartsplaat', 'Purpurplaat', 'Endblokstenen plaat',
        'Versteende eikenhouten plaat', 'Zwartstenen plaat', 'Gepolijste zwartstenen plaat',
        'Gepolijste zwartstenen blokstenen plaat' } },
    ['stenen trap'] = { vorm = 'verbogen', lijst = { 'Stenen trap', 'Keistenen trap',
        'Mossige keistenen trap', 'Blokstenen trap', 'Mossige blokstenen trap', 'Andesiettrap',
        'Gepolijste andesiettrap', 'Dioriettrap', 'Gepolijste dioriettrap', 'Graniettrap',
        'Gepolijste graniettrap', 'Zandstenen trap', 'Gladde zandstenen trap',
        'Rode zandstenen trap', 'Gladde rode zandstenen trap', 'Bakstenen trap',
        { title = 'Prismarientrap', name = 'Prismarientrap.gif' }, 'Prismarienblokstenen trap',
        'Donkerprismarientrap', 'Netherbakstenen trap', 'Rode Netherbakstenen trap', 'Kwartstrap',
        'Gladde kwartstrap', 'Purpurtrap', 'Endblokstenen trap', 'Zwartstenen trap',
        'Gepolijste zwartstenen trap', 'Gepolijste zwartstenen blokstenen trap' } },
    ['purpurblok'] = { vorm = 'onverbogen', lijst = { 'Purpurblok', 'Purpurpilaar' } },
    ['steen'] = { vorm = 'verbogen', lijst = { 'Steen', 'Andesiet', 'Graniet', 'Dioriet',
        'Gepolijst andesiet', 'Gepolijst graniet', 'Gepolijst dioriet' } },
    ['steenachtig blok'] = { vorm = 'onverbogen', lijst = { 'Keisteen', 'Zwartsteen',
    	'Geplaveid wrevelsteen' } },
    ['tulp'] = { vorm = 'verbogen', lijst = { 'Rode tulp', 'Oranje tulp', 'Witte tulp',
        'Roze tulp' } },
    ['prismarien'] = { vorm = 'onverbogen', lijst = { { title = 'Prismarien', name = 'Prismarien.gif' },
        'Prismarienblokstenen', 'Donkerprismarien' } },
    ['erts'] = { vorm = 'verbogen', lijst = { 'Steenkoolerts', 'IJzererts', 'Gouderts',
        'Lapislazuli-erts', 'Redstone-erts', 'Smaragderts', 'Diamanterts', 'Netherkwartserts',
        'Nethergouderts' } },
    ['dood koraalblok'] = { vorm = 'onverbogen', lijst = { 'Dood buiskoraalblok',
        'Dood hersenkoraalblok', 'Dood blaaskoraalblok', 'Dood brandkoraalblok',
        'Dood hoornkoraalblok' } },
    ['dode koraalwaaier'] = { vorm = 'verbogen', lijst = { 'Dode buiskoraalwaaier',
        'Dode hersenkoraalwaaier', 'Dode blaaskoraalwaaier', 'Dode brandkoraalwaaier',
        'Dode hoornkoraalwaaier' } },
    ['muur'] = { vorm = 'verbogen', lijst = { 'Keistenen muur', 'Mossige keistenen muur',
        'Blokstenen muur', 'Mossige blokstenen muur', 'Andesietmuur', 'Diorietmuur', 'Granietmuur',
        'Zandstenen muur', 'Rode zandstenen muur', 'Bakstenen muur',
        { title = 'Prismarienmuur', name = 'Prismarienmuur.gif' }, 'Netherbakstenen muur',
        'Rode Netherbakstenen muur', 'Endblokstenen muur', 'Zwartstenen muur',
        'Gepolijste zwartstenen muur' } },
    ['fakkel'] = { vorm = 'verbogen', lijst = { 'Fakkel', 'Zielenfakkel' } },
    ['lantaarn'] = { vorm = 'verbogen', lijst = { 'Lantaarn', 'Zielenlantaarn' } },
    ['zwam'] = { vorm = 'verbogen', lijst = { 'Helrode zwam', 'Spookachtige zwam' } },
    ['wortels'] = { vorm = 'verbogen', lijst = { 'Helrode wortels', 'Spookachtige wortels' } },
    ['nylium'] = { vorm = 'onverbogen', lijst = { 'Helrood nylium', 'Spookachtig nylium' } },
    ['zielenzand'] = { vorm = 'onverbogen', lijst = { 'Zielenzand', 'Zielenaarde' } },
    ['kampvuur'] = { vorm = 'onverbogen', lijst = { 'Kampvuur', 'Zielenkampvuur' } },
    ['zwartsteen'] = { vorm = 'onverbogen', lijst = { 'Zwartsteen', 'Gepolijst zwartsteen',
        'Gebeiteld gepolijst zwartsteen', 'Gepolijste zwartstenen blokstenen',
        'Gebarsten gepolijste zwartstenen blokstenen' } },
    ['stenen knop'] = { vorm = 'verbogen', lijst = { 'Stenen knop', 'Gepolijste zwartstenen knop' } },
    ['stenen drukplaat'] = { vorm = 'verbogen', lijst = { 'Stenen drukplaat',
        'Gepolijste zwartstenen drukplaat' } },
    ['Netherhouten drukplaat'] = { vorm = 'verbogen', lijst = { 'Helrode houten drukplaat',
        'Spookachtige houten drukplaat' } },
    ['Netherhouten hek'] = { vorm = 'verbogen', lijst = { 'Helrood houten hek',
        'Spookachtig houten hek' } },
    ['Netherhouten valluik'] = { vorm = 'verbogen', lijst = { 'Helrood houten valluik',
        'Spookachtig houten valluik' } },
    ['Netherhouten poort'] = { vorm = 'verbogen', lijst = { 'Helrode houten poort',
        'Spookachtige houten poort' } },
    ['Netherhouten trap'] = { vorm = 'verbogen', lijst = { 'Helrode houten trap',
        'Spookachtige houten trap' } },
    ['Netherhouten deur'] = { vorm = 'verbogen', lijst = { 'Helrode houten deur',
        'Spookachtige houten deur' } },
    ['Netherhouten bord'] = { vorm = 'verbogen', lijst = { 'Helrood houten bord',
        'Spookachtig houten bord' } },
}

for aliasnaam, aliasinhoud in pairs( voorwerpvarianten ) do
    if aliasinhoud.vorm == 'onverbogen' then
        aliases['Elk ' .. aliasnaam] = aliasinhoud.lijst
        aliases['Overeenkomend ' .. aliasnaam] = aliasinhoud.lijst
    elseif aliasinhoud.vorm == 'verbogen' then
        aliases['Elke ' .. aliasnaam] = aliasinhoud.lijst
        aliases['Overeenkomende ' .. aliasnaam] = aliasinhoud.lijst
    else
        error("Eigenschap 'vorm' moet één van de volgende waarden bevatten:\n\t'verbogen'\n\t'onverbogen'")
    end
end

-- Koper --
local kopervarianten = {
    ['Overeenkomend# (geoxideerd#) koperblok'] = { 'Koperblok', 'Blootgesteld# koperblok',
        'Verweerd# koperblok', 'Geoxideerd# koperblok' },
    ['Overeenkomend# (geoxideerd#) gesneden koperblok'] = { 'Gesneden koperblok',
        'Blootgesteld# gesneden koperblok', 'Verweerd# gesneden koperblok',
        'Geoxideerd# gesneden koperblok' },
    ['Overeenkomend# ingewassen (geoxideerd#) koperblok'] = { 'Ingewassen koperblok',
        'Ingewassen blootgesteld# koperblok', 'Ingewassen verweerd# koperblok' },
    ['Overeenkomend# ingewassen (geoxideerd#) gesneden koperblok'] = { 'Ingewassen gesneden koperblok',
        'Ingewassen blootgesteld# gesneden koperblok', 'Ingewassen verweerd# gesneden koperblok' },
}

for key, values in pairs( kopervarianten ) do -- waarde in kopervariantentabel
    for _, value in ipairs(values) do -- waarde in tabel van waarde kopervariantentabel
        local geparseerdeSleutel = ''
        local geparseerdeWaarde = ''

        -- Koperblok
        geparseerdeSleutel = key:gsub('#', '')
        geparseerdeWaarde = value:gsub('#', '')
        
        -- maak tabel als-ie niet bestaat
        if aliases[geparseerdeSleutel] == nil then aliases[geparseerdeSleutel] = {} end
        aliases[geparseerdeSleutel] = geparseerdeWaarde

        -- Koperen plaat
        geparseerdeSleutel = key:gsub('#', 'e'):gsub('blok$', 'en plaat')
        geparseerdeWaarde = value:gsub('#', 'e'):gsub('blok$', 'en plaat')
        if aliases[geparseerdeSleutel] == nil then aliases[geparseerdeSleutel] = {} end
        aliases[geparseerdeSleutel] = geparseerdeWaarde

        -- Koperen trap
        geparseerdeSleutel = key:gsub('#', 'e'):gsub('blok$', 'en trap')
        geparseerdeWaarde = value:gsub('#', 'e'):gsub('blok$', 'en trap')
        if aliases[geparseerdeSleutel] == nil then aliases[geparseerdeSleutel] = {} end
        aliases[geparseerdeSleutel] = geparseerdeWaarde
    end
end

-- Muziekplaten --
local platen = {
    { nummer = '13', artiest = 'C418' },
    { nummer = 'cat', artiest = 'C418' },
    { nummer = 'blocks', artiest = 'C418' },
    { nummer = 'chirp', artiest = 'C418' },
    { nummer = 'far', artiest = 'C418' },
    { nummer = 'mall', artiest = 'C418' },
    { nummer = 'mellohi', artiest = 'C418' },
    { nummer = 'stal', artiest = 'C418' },
    { nummer = 'strad', artiest = 'C418' },
    { nummer = 'ward', artiest = 'C418' },
    { nummer = '11', artiest = 'C418' },
    { nummer = 'wait', artiest = 'C418' },
    { nummer = 'pigstep', artiest = 'Lena Raine' },
}

for _, plaat in ipairs( platen ) do
    local naam = 'Muziekplaat ' .. plaat.nummer
    aliases[naam] = { title = '&bMuziekplaat', name = naam, text = '&7' .. plaat.artiest .. ' - ' .. plaat.nummer }
end

--[[
    Beschadigde voorwerpen.
    De parameter 'vorm' kan de volgende waarden bevatten:
        - onverbogen (zonder -e)
        - verbogen (met -e)
]]
local beschadigdeVoorwerpen = {
    { naam = 'boog', vorm = 'verbogen' },
    { naam = 'dekschild', vorm = 'onverbogen' },
    { naam = 'diamanten beenstukken', vorm = 'verbogen' },
    { naam = 'diamanten bijl', vorm = 'verbogen' },
    { naam = 'diamanten borstplaat', vorm = 'verbogen' },
    { naam = 'diamanten helm', vorm = 'verbogen' },
    { naam = 'diamanten houweel', vorm = 'verbogen' },
    { naam = 'diamanten laarzen', vorm = 'verbogen' },
    { naam = 'diamanten schep', vorm = 'verbogen' },
    { naam = 'diamanten schoffel', vorm = 'verbogen' },
    { naam = 'diamanten zwaard', vorm = 'onverbogen' },
    { naam = 'gouden beenstukken', vorm = 'verbogen' },
    { naam = 'gouden bijl', vorm = 'verbogen' },
    { naam = 'gouden borstplaat', vorm = 'verbogen' },
    { naam = 'gouden helm', vorm = 'verbogen' },
    { naam = 'gouden houweel', vorm = 'verbogen' },
    { naam = 'gouden laarzen', vorm = 'verbogen' },
    { naam = 'gouden schep', vorm = 'verbogen' },
    { naam = 'gouden schoffel', vorm = 'verbogen' },
    { naam = 'gouden zwaard', vorm = 'onverbogen' },
    { naam = 'houten bijl', vorm = 'verbogen' },
    { naam = 'houten houweel', vorm = 'verbogen' },
    { naam = 'houten schep', vorm = 'verbogen' },
    { naam = 'houten schoffel', vorm = 'verbogen' },
    { naam = 'houten zwaard', vorm = 'onverbogen' },
    { naam = 'ijzeren beenstukken', vorm = 'verbogen' },
    { naam = 'ijzeren bijl', vorm = 'verbogen' },
    { naam = 'ijzeren borstplaat', vorm = 'verbogen' },
    { naam = 'ijzeren helm', vorm = 'verbogen' },
    { naam = 'ijzeren houweel', vorm = 'verbogen' },
    { naam = 'ijzeren laarzen', vorm = 'verbogen' },
    { naam = 'ijzeren schep', vorm = 'verbogen' },
    { naam = 'ijzeren schoffel', vorm = 'verbogen' },
    { naam = 'ijzeren zwaard', vorm = 'onverbogen' },
    { naam = 'leren broek', vorm = 'verbogen' },
    { naam = 'leren kap', vorm = 'verbogen' },
    { naam = 'leren tuniek', vorm = 'verbogen' },
    { naam = 'leren laarzen', vorm = 'verbogen' },
    { naam = 'maliënbroek', vorm = 'verbogen' },
    { naam = 'maliënkap', vorm = 'verbogen' },
    { naam = 'maliënkolder', vorm = 'verbogen' },
    { naam = 'maliënlaarzen', vorm = 'verbogen' },
    { naam = 'Netherieten beenstukken', vorm = 'verbogen' },
    { naam = 'Netherieten bijl', vorm = 'verbogen' },
    { naam = 'Netherieten borstplaat', vorm = 'verbogen' },
    { naam = 'Netherieten helm', vorm = 'verbogen' },
    { naam = 'Netherieten houweel', vorm = 'verbogen' },
    { naam = 'Netherieten laarzen', vorm = 'verbogen' },
    { naam = 'Netherieten schep', vorm = 'verbogen' },
    { naam = 'Netherieten schoffel', vorm = 'verbogen' },
    { naam = 'Netherieten zwaard', vorm = 'onverbogen' },
    { naam = 'kruisboog', vorm = 'verbogen' },
    { naam = 'schaar', vorm = 'verbogen' },
    { naam = 'schild', vorm = 'onverbogen' },
    { naam = 'spookachtige zwam aan een stok', vorm = 'verbogen' },
    { naam = 'stenen bijl', vorm = 'verbogen' },
    { naam = 'stenen houweel', vorm = 'verbogen' },
    { naam = 'stenen schep', vorm = 'verbogen' },
    { naam = 'stenen schoffel', vorm = 'verbogen' },
    { naam = 'stenen zwaard', vorm = 'onverbogen' },
    { naam = 'vishengel', vorm = 'verbogen' },
    { naam = 'vuursteen en staal', vorm = 'onverbogen' },
    { naam = 'wortel aan een stok', vorm = 'verbogen' },
}

for _, voorwerp in ipairs( beschadigdeVoorwerpen ) do
    local naam = hoofdletter( voorwerp.naam )

    if voorwerp.vorm == 'onverbogen' then
        aliases['Beschadigd ' .. voorwerp.naam] = { title = naam, name = 'Beschadigd ' .. voorwerp.naam }
    elseif voorwerp.vorm == 'verbogen' then
        aliases['Beschadigde ' .. voorwerp.naam] = { title = naam, name = 'Beschadigde ' .. voorwerp.naam }
    else
        error("Eigenschap 'vorm' moet één van de volgende waarden bevatten:\n\t'verbogen'\n\t'onverbogen'")
    end
end

-- Kleuren --
local kleuren = {
    { onverbogen = 'Wit', verbogen = 'Witte' },
    { onverbogen = 'Oranje', verbogen = 'Oranje' },
    { onverbogen = 'Magenta', verbogen = 'Magenta' },
    { onverbogen = 'Lichtblauw', verbogen = 'Lichtblauwe' },
    { onverbogen = 'Geel', verbogen = 'Gele' },
    { onverbogen = 'Lichtgroen', verbogen = 'Lichtgroene' },
    { onverbogen = 'Roze', verbogen = 'Roze' },
    { onverbogen = 'Grijs', verbogen = 'Grijze' },
    { onverbogen = 'Lichtgrijs', verbogen = 'Lichtgrijze' },
    { onverbogen = 'Turquoise', verbogen = 'Turquoise' },
    { onverbogen = 'Paars', verbogen = 'Paarse' },
    { onverbogen = 'Blauw', verbogen = 'Blauwe' },
    { onverbogen = 'Bruin', verbogen = 'Bruine' },
    { onverbogen = 'Groen', verbogen = 'Groene' },
    { onverbogen = 'Rood', verbogen = 'Rode' },
    { onverbogen = 'Zwart', verbogen = 'Zwarte' }
}

--[[
    Banieren.
    Parameters:
        - vorm:
            - onverbogen: geen -e
            - verbogen: met -e
        - voorzetsel: of 'met' tussen banier en patroon geplaatst moet worden
        - spatie: of tussen kleur en patroon een spatie hoort te staan
]]
local banierpatronen = {
    ['andreaskruis'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
    ['bloem'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
    ['Creeper'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
    ['dwarsbalk'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
    ['gebalkt'] = { vorm = 'onverbogen', voorzetsel = false, spatie = false },
    ['gegolfd schildhoofd'] = { vorm = 'onverbogen', voorzetsel = true, spatie = false },
    ['gegolfd schildvoet'] = { vorm = 'onverbogen', voorzetsel = true, spatie = false },
    ['gepaald'] = { vorm = 'onverbogen', voorzetsel = false, spatie = false },
    ['globe'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
    ['gradiënt'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
    ['ingesprongen zoom'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
    ['keper'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
    ['koek'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
    ['kruis'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
    ['kwartier linksboven'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
    ['kwartier linksonder'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
    ['kwartier rechtsboven'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
    ['kwartier rechtsonder'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
    ['linkerpaal'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
    ['linkerschuinbalk'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
    ['lozanje'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
    ['metselwerk'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
    ['Mojanglogo'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
    ['omgekeerd gebalkt'] = { vorm = 'onverbogen', voorzetsel = false, spatie = true },
    ['omgekeerd gepaald'] = { vorm = 'onverbogen', voorzetsel = false, spatie = true },
    ['omgekeerd schuinlinks verdeeld'] = { vorm = 'onverbogen', voorzetsel = false, spatie = true },
    ['omgekeerd schuinrechts verdeeld'] = { vorm = 'onverbogen', voorzetsel = false, spatie = true },
    ['paal'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
    ['palen'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
    ['rechterpaal'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
    ['rechterschuinbalk'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
    ['schedel'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
    ['schildhoofd'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
    ['schildvoet'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
    ['schildvoetgradiënt'] = { vorm = 'onverbogen', voorzetsel = true, spatie = true },
    ['schuinlinks verdeeld'] = { vorm = 'onverbogen', voorzetsel = false, spatie = true },
    ['schuinrechts verdeeld'] = { vorm = 'onverbogen', voorzetsel = false, spatie = true },
    ['snuit'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
    ['zoom'] = { vorm = 'verbogen', voorzetsel = true, spatie = true },
}

for patroon, eigenschappen in pairs( banierpatronen ) do
    for _, kleur in ipairs( kleuren ) do
        local patroonnaam = ''
        if eigenschappen.vorm == 'onverbogen' then
            if eigenschappen.voorzetsel == true and eigenschappen.spatie == true then
                patroonnaam = 'Banier met ' .. kleur.onverbogen:lower() .. ' ' .. patroon
                aliases[patroonnaam] = { title = 'Banier', name = patroonnaam, text = '&7' .. kleur.onverbogen .. ' ' .. patroon }
            elseif eigenschappen.voorzetsel == true and eigenschappen.spatie == false then
                patroonnaam = 'Banier met ' .. kleur.onverbogen:lower() .. patroon
                aliases[patroonnaam] = { title = 'Banier', name = patroonnaam, text = '&7' .. kleur.onverbogen .. patroon }
            elseif eigenschappen.voorzetsel == false and eigenschappen.spatie == true then
                patroonnaam = 'Banier ' .. kleur.onverbogen:lower() .. ' ' .. patroon
                aliases[patroonnaam] = { title = 'Banier', name = patroonnaam, text = '&7' .. kleur.onverbogen .. ' ' .. patroon }
            elseif eigenschappen.voorzetsel == false and eigenschappen.spatie == false then
                patroonnaam = 'Banier ' .. kleur.onverbogen:lower() .. patroon
                aliases[patroonnaam] = { title = 'Banier', name = patroonnaam, text = '&7' .. kleur.onverbogen .. patroon }
            else
                error("Controleer waarden voor '" .. patroon .. "'.")
            end
        elseif eigenschappen.vorm == 'verbogen' then
            if eigenschappen.voorzetsel == true and eigenschappen.spatie == true then
                patroonnaam = 'Banier met ' .. kleur.verbogen:lower() .. ' ' .. patroon
                aliases[patroonnaam] = { title = 'Banier', name = patroonnaam, text = '&7' .. kleur.verbogen .. ' ' .. patroon }
            else
                error("Fout bij maken aliases. Overige vormen van voorzetsel en spatie niet geïmplementeerd.")
            end
        else
            error("Eigenschap 'vorm' moet één van de volgende waarden bevatten:\n\t'verbogen'\n\t'onverbogen'")
        end
    end
end

--[[
    Gekleurde voorwerpen. Vuurwerksterren krijgen een aparte behandeling.
    Parameters:
        - vorm:
            - onverbogen: geen -e
            - verbogen: met -e
        - spatie: of een spatie hoort te staan tussen kleur en voorwerp
        - wit: of voorwerp met of zonder witte kleurstof moet worden gemaakt
            - false: er worden twee aliasen gemaakt - één mét witte kleur
                     en één zonder. De alias zonder wit wordt 'gekleurd(e)'
                     genoemd
            - true: er wordt één alias gemaakt, mét witte kleur
    Overige:
        - $1: kleur en vorm komen overeen
        - $2: kleur en vorm komen niet overeen
        In beide gevallen wordt de kleur als eerste ingevuld in correcte vorm.
        Er wordt uitgegaan dat de kleur op de juiste locatie staat. Hierom
        wordt de parameter 'spatie' niet meegenomen.
]]
local gekleurdeVoorwerpen = {
    ['ballon'] = { vorm = 'verbogen', spatie = true, wit = true },
    ['banier'] = { vorm = 'verbogen', spatie = true, wit = true },
    ['bed'] = { vorm = 'onverbogen', spatie = true, wit = false },
    ['beton'] = { vorm = 'onverbogen', spatie = true, wit = true },
    ['cement'] = { vorm = 'onverbogen', spatie = true, wit = true },
    ['geglazuurd terracotta'] = { vorm = 'onverbogen', spatie = false, wit = true },
    ['gehard $1gekleurd glas'] = { vorm = 'onverbogen', spatie = false, wit = true },
    ['geharde $2gekleurde glazen ruit'] = { vorm = 'verbogen', spatie = false, wit = true },
    ['gekleurd glas'] = { vorm = 'onverbogen', spatie = false, wit = true },
    ['$2gekleurde glazen ruit'] = { vorm = 'verbogen', spatie = false, wit = true },
    ['tapijt'] = { vorm = 'onverbogen', spatie = true, wit = false },
    ['terracotta'] = { vorm = 'onverbogen', spatie = true, wit = false },
    ['kaars'] = { vorm = 'verbogen', spatie = true, wit = false },
    ['kleurstof'] = { vorm = 'verbogen', spatie = true, wit = false },
    ['schild'] = { vorm = 'onverbogen', spatie = true, wit = true },
    ['Shulkerdoos'] = { vorm = 'verbogen', spatie = true, wit = true },
    ['wol'] = { vorm = 'verbogen', spatie = true, wit = false },
}

for voorwerp, eigenschappen in pairs( gekleurdeVoorwerpen ) do
    local gekleurdeVoorwerpenAliases = {}
    local voorwerpnaam = ''
    local voorwerpalias = ''
    for _, kleur in ipairs( kleuren ) do
        if eigenschappen.vorm == 'onverbogen' then
            if voorwerp:find( '%$1' ) then
                local kl = kleur.onverbogen:lower()
                voorwerpnaam = voorwerp:gsub( '%$1', kl )
                voorwerpnaam = hoofdletter( voorwerpnaam )
                table.insert( gekleurdeVoorwerpenAliases, voorwerpnaam )
            elseif voorwerp:find( '%$2' ) then
                local kl = kleur.verbogen:lower()
                voorwerpnaam = voorwerp:gsub( '%$2', kl )
                voorwerpnaam = hoofdletter( voorwerpnaam )
                table.insert( gekleurdeVoorwerpenAliases, voorwerpnaam )
            else
                if eigenschappen.spatie == true then
                    voorwerpnaam = kleur.onverbogen .. ' ' .. voorwerp
                    table.insert( gekleurdeVoorwerpenAliases, voorwerpnaam )
                else
                    voorwerpnaam = kleur.onverbogen .. voorwerp
                    table.insert( gekleurdeVoorwerpenAliases, voorwerpnaam )
                end
            end
        elseif eigenschappen.vorm == 'verbogen' then
            if voorwerp:find( '%$1' ) then
                local kl = kleur.verbogen:lower()
                voorwerpnaam = voorwerp:gsub( '%$1', kl )
                voorwerpnaam = hoofdletter( voorwerpnaam )
                table.insert( gekleurdeVoorwerpenAliases, voorwerpnaam )
            elseif voorwerp:find( '%$2' ) then
                local kl = kleur.onverbogen:lower()
                voorwerpnaam = voorwerp:gsub( '%$2', kl )
                voorwerpnaam = hoofdletter( voorwerpnaam )
                table.insert( gekleurdeVoorwerpenAliases, voorwerpnaam )
            else
                if eigenschappen.spatie == true then
                    voorwerpnaam = kleur.verbogen .. ' ' .. voorwerp
                    table.insert( gekleurdeVoorwerpenAliases, voorwerpnaam )
                else
                    voorwerpnaam = kleur.verbogen .. voorwerp
                    table.insert( gekleurdeVoorwerpenAliases, voorwerpnaam )
                end
            end
        else
            error("Eigenschap 'vorm' moet één van de volgende waarden bevatten:\n\t'verbogen'\n\t'onverbogen'")
        end
    end

    if eigenschappen.vorm == 'onverbogen' then
        voorwerpalias = voorwerp:gsub( '%$%d', '' )
        aliases['Elk ' .. voorwerpalias] = gekleurdeVoorwerpenAliases
        aliases['Overeenkomend ' .. voorwerpalias] = gekleurdeVoorwerpenAliases

        if eigenschappen.wit == false then
        	local alleenGekleurdeVoorwerpenAliases = mw.clone( gekleurdeVoorwerpenAliases )
            local witWeg = table.remove( alleenGekleurdeVoorwerpenAliases, 1 ) -- verwijder het eerste element van de tabel (wit)
            aliases['Elk gekleurd ' .. voorwerpalias] = alleenGekleurdeVoorwerpenAliases
            aliases['Overeenkomend gekleurd ' .. voorwerpalias] = alleenGekleurdeVoorwerpenAliases
        end
    elseif eigenschappen.vorm == 'verbogen' then
        voorwerpalias = voorwerp:gsub( '%$%d', '' )
        aliases['Elke ' .. voorwerpalias] = gekleurdeVoorwerpenAliases
        aliases['Overeenkomende ' .. voorwerpalias] = gekleurdeVoorwerpenAliases

        if eigenschappen.wit == false then
        	local alleenGekleurdeVoorwerpenAliases = mw.clone( gekleurdeVoorwerpenAliases )
            local witWeg = table.remove( alleenGekleurdeVoorwerpenAliases, 1 ) -- verwijder het eerste element van de tabel (wit)
            aliases['Elke gekleurde ' .. voorwerpalias] = alleenGekleurdeVoorwerpenAliases
            aliases['Overeenkomende gekleurde ' .. voorwerpalias] = alleenGekleurdeVoorwerpenAliases
        end
    else
        error("Eigenschap 'vorm' moet één van de volgende waarden bevatten:\n\t'verbogen'\n\t'onverbogen'")
    end
end

-- Vuurwerksterren --
local vuurwerksterren = {}
for _, kleur in ipairs( kleuren ) do
    local naam = kleur.verbogen .. ' vuurwerkster'
    aliases[naam] = { title = 'Vuurwerkster', name = naam, text = '&7' .. kleur.onverbogen }
    table.insert( vuurwerksterren, aliases[naam] )
end
aliases['Elke vuurwerkster'] = vuurwerksterren
aliases['Overeenkomende vuurwerkster'] = vuurwerksterren

-- Dranken --
-- Geen effect
local geenEffecten = {
    'Waterfles',
    'Vreemde drank',
    'Stroperige drank',
    'Triviale drank',
    'Onmaakbare drank',
    'Spattende waterfles',
    'Spattende vreemde drank',
    'Spattende stroperige drank',
    'Spattende triviale drank',
    'Spattende onmaakbare drank',
    'Aanhoudende waterfles',
    'Aanhoudende vreemde drank',
    'Aanhoudende stroperige drank',
    'Aanhoudende triviale drank',
    'Aanhoudende onmaakbare drank',
    'Getipte pijl',
    'Pijl der spatting',
    'Onmaakbare getipte pijl'
}

for _, naam in ipairs( geenEffecten ) do
    aliases[naam] = { name = naam, text = '&7Geen effecten' }
end

-- Begin lijst met dranken
local drankvoorwerpen = {
    ['drank'] = {
        aliases['Waterfles'],
        aliases['Vreemde drank'],
        aliases['Stroperige drank'],
        aliases['Triviale drank'],
    },
    ['spattende drank'] = {
        aliases['Spattende waterfles'],
        aliases['Spattende vreemde drank'],
        aliases['Spattende stroperige drank'],
        aliases['Spattende triviale drank'],
    },
    ['aanhoudende drank'] = {
        aliases['Aanhoudende waterfles'],
        aliases['Aanhoudende vreemde drank'],
        aliases['Aanhoudende stroperige drank'],
        aliases['Aanhoudende triviale drank'],
    },
    ['getipte pijl'] = {
        aliases['Pijl der spatting'],
        aliases['Getipte pijl'],
        aliases['Getipte pijl'],
        aliases['Getipte pijl'],
    }
}

--[[
    Effecten.
    Paramters:
        - naam: naam van effect, inclusief genitief
        - effect: naam van effect zelf, voorafgegaan door &9 (positief) of &c (negatief)
        - versterking: met Romeinse cijfers aangegeven wat de versterking is
        - duur: duur van het effect
            - normaal: gewone & spattende drank voor normaal, verlengd en versterkt
            - aanhoudend: aanhoudende drank voor normaal, verlengd en versterkt
            - pijl: getipte pijl voor normaal, verlengd en versterkt
        - in gevallen waar een drank meerdere effecten heeft (zoals der schildpadmeester) is de
          formatting iets anders. In plaats van 'effect' heet deze parameter 'tekst'
]]
local effecten = {
    { naam = 'der regeneratie', effect = '&9Regeneratie', versterking = 'II',
        duur = { normaal = { '0:45', '1:30', '0:22' }, aanhoudend = { '0:11', '0:22', '0:05' }, pijl = { '0:05', '0:11', '0:02' } } },
    { naam = 'der vlotheid', effect = '&9Snelheid', versterking = 'II',
        duur = { normaal = { '3:00', '8:00', '1:30' }, aanhoudend = { '0:45', '2:00', '0:22' }, pijl = { '0:22', '1:00', '0:11' } } },
    { naam = 'der vuurbestendigheid', effect = '&9Vuurbestendigheid',
        duur = { normaal = { '3:00', '8:00' }, aanhoudend = { '0:45', '2:00' }, pijl = { '0:22', '1:00' } } },
    { naam = 'des gifs', effect = '&cVergif', versterking = 'II',
        duur = { normaal = { '0:45', '1:30', '0:21' }, aanhoudend = { '0:11', '0:22', '0:05' }, pijl = { '0:05', '0:11', '0:02' } } },
    { naam = 'der genezing', effect = '&9Onmiddellijke genezing', versterking = 'II' },
    { naam = 'des nachtzichts', effect = '&9Nachtzicht',
        duur = { normaal = { '3:00', '8:00' }, aanhoudend = { '0:45', '2:00' }, pijl = { '0:22', '1:00' } } },
    { naam = 'der zwakheid', effect = '&cZwakheid',
        duur = { normaal = { '1:30', '4:00' }, aanhoudend = { '0:22', '1:00' }, pijl = { '0:11', '0:30' } } },
    { naam = 'der kracht', effect = '&9Kracht', versterking = 'II',
        duur = { normaal = { '3:00', '8:00', '1:30' }, aanhoudend = { '0:45', '2:00', '0:22' }, pijl = { '0:22', '1:00', '0:11' } } },
    { naam = 'der traagheid', effect = '&cTraagheid', versterking = 'IV',
        duur = { normaal = { '1:30', '4:00', '0:20' }, aanhoudend = { '0:22', '1:00', '0:05' }, pijl = { '0:11', '0:30', '0:02' } } },
    { naam = 'der sprongen', effect = '&9Sprongversterking', versterking = 'II',
        duur = { normaal = { '3:00', '8:00', '1:30' }, aanhoudend = { '0:45', '2:00', '0:22' }, pijl = { '0:22', '1:00', '0:11' } } },
    { naam = 'der verwonding', effect = '&cOnmiddellijke schade', versterking = 'II' },
    { naam = 'des wateradems', effect = '&9Wateradem',
        duur = { normaal = { '3:00', '8:00' }, aanhoudend = { '0:45', '2:00' }, pijl = { '0:22', '1:00' } } },
    { naam = 'der onzichtbaarheid', effect = '&9Onzichtbaarheid',
        duur = { normaal = { '3:00', '8:00' }, aanhoudend = { '0:45', '2:00' }, pijl = { '0:22', '1:00' } } },
    { naam = 'der valvertraging', effect = '&9Valvertraging',
        duur = { normaal = { '1:30', '4:00' }, aanhoudend = { '0:22', '1:00' }, pijl = { '0:11', '0:30' } } },
    { naam = 'des geluks', effect = '&9Geluk',
        duur = { normaal = { '5:00' }, aanhoudend = { '1:15' }, pijl = { '0:37' } } },
    { naam = 'der verval', effect = '&cVerschrompeling',
        duur = { normaal = { '0:40' }, aanhoudend = { '0:10' }, pijl = { '0:05' } } },
    -- Drank der schildpadmeester heeft speciale formatting nodig. Hierom volgt het niet het standaardformaat.
    { naam = 'der schildpadmeester', tekst = '&cTraagheid IV ($1)/&9Weerstand III ($1)', versterking = '&cTraagheid VI ($1)/&9Weerstand IV ($1)',
        duur = { normaal = { '0:20', '0:40', '0:20' }, aanhoudend = { '0:15', '0:45', '0:15' }, pijl = { '0:07', '0:22', '0:07' } } },
}

local soorten = {
    { naam = 'Drank', duur = 'normaal', tekst = 'Drank ' },
    { naam = 'Spattende drank', duur = 'normaal', tekst = 'Spattende drank ' },
    { naam = 'Aanhoudende drank', duur = 'aanhoudend', tekst = 'Aanhoudende drank ' },
    { naam = 'Getipte pijl', duur = 'pijl', tekst = 'Pijl ' },
}

for _, effect in ipairs( effecten ) do
    for _, soort in ipairs( soorten ) do
        -- Maak naam van drank
        local naam = soort.tekst .. effect.naam
        local dranknaam = {}
        if soort.naam == 'Getipte pijl' then
            dranknaam = soort.tekst .. effect.naam
        else
            dranknaam = soort.tekst .. effect.naam .. '.gif'
        end

        -- Voeg duur toe als er een duur is
        if effect.duur then
            local duur = effect.duur[soort.duur]

            -- Vervang $1 door tijden
            if effect.tekst then
                aliases[naam] = { name = dranknaam, text = effect.tekst:gsub( '%$1', duur[1] ) }
                aliases[naam .. ' - verlengd'] = { name = dranknaam, text = effect.tekst:gsub( '%$1', duur[2] ) }
                aliases[naam .. ' - versterkt'] = { name = dranknaam, text = effect.versterking:gsub( '%$1', duur[3] ) }
            else
                -- Er is altijd de normale variant
                aliases[naam] = { name = dranknaam, text = string.format( '%s (%s)', effect.effect, duur[1] ) }

                -- Verlengde variant als die er is
                if duur[2] then
                    aliases[naam .. ' - verlengd'] = { name = dranknaam, text = string.format( '%s (%s)', effect.effect, duur[2] ) }
                end

                -- Versterkte variant als die er is
                if effect.versterking then
                    aliases[naam .. ' - versterkt'] = { name = dranknaam, text = string.format( '%s %s (%s)', effect.effect, effect.versterking, duur[3] ) }
                end
            end

        else
            -- Anders is het drank zonder duur
            aliases[naam] = { name = dranknaam, text = effect.effect }

            -- Voeg de versterkte variant toe als die er is
            if effect.versterking then 
                aliases[naam .. ' - versterkt'] = { name = dranknaam, text = effect.effect .. ' ' .. effect.versterking }
            end
        end
        -- Voeg de standaarddrank toe aan de drankenlijst
        table.insert( drankvoorwerpen[soort.naam:lower()], aliases[naam] )
    end
end

-- Maak ten slotte de lijst met dranken
-- Op dit moment zijn alle drankvoorwerpen in de verbogen vorm, dus hoeft daar
-- geen rekening gehouden mee te worden.
for voorwerp, drankaliases in pairs( drankvoorwerpen ) do
    aliases['Elke ' .. voorwerp] = drankaliases
    aliases['Overeenkomende ' .. voorwerp] = drankaliases
end

--[[
    Houtsoorten.
    Parameters:
        - vorm:
            - onverbogen: geen -e
            - verbogen: met -e
]]
local houtsoorten = {
    bovenwereld = {
        { onverbogen = 'Eik', verbogen = 'Eiken' },
        { onverbogen = 'Spar', verbogen = 'Sparren' },
        { onverbogen = 'Berk', verbogen = 'Berken' },
        { onverbogen = 'Oerwoud', verbogen = 'Oerwoud' },
        { onverbogen = 'Acacia', verbogen = 'Acacia' },
        { onverbogen = 'Donkereik', verbogen = 'Donkereiken' },
    },
    Nether = {
        { onverbogen = 'Helrood', verbogen = 'Helrode' },
        { onverbogen = 'Spookachtig', verbogen = 'Spookachtige' },
    }
}

--[[
    Houten voorwerpen.
    Parameters:
        - vorm:
            - onverbogen: geen -e
            - verbogen: met -e
        - bovenwereld: optioneel.
            Naam van het blok in de bovenwereld.
        - Nether: optioneel
            Naam van het blok in de Nether.
        - overige:
            - $1: Gebruik de onverbogen variant van de houtsoort
            - $1l: Zelfde als bovenstaande, maar in kleine letters - van :lower()
            - $2: Gebruik de verbogen variant van de houtsoort
            - $2l: Zelfde als bovenstaande, maar in kleine letters - van :lower()
]]
local houtenVoorwerpen = {
    ['hout'] = { vorm = 'onverbogen', bovenwereld = '$2hout' },
    ['gestript hout'] = { vorm = 'onverbogen', bovenwereld = 'Gestript $2lhout' },
    ['gestripte schimmeldraden'] = { vorm = 'verbogen', Nether = 'Gestripte $2l schimmeldraden' },
    ['gestripte stam'] = { vorm = 'verbogen', bovenwereld = 'Gestripte $2lstam', Nether = 'Gestripte $2l stam' },
    ['houten boot'] = { vorm = 'verbogen', bovenwereld = '$2houten boot' },
    ['houten bord'] = { vorm = 'onverbogen', bovenwereld = '$2houten bord', Nether = '$1 houten bord' },
    ['houten deur'] = { vorm = 'verbogen', bovenwereld = '$2houten deur', Nether = '$2 houten deur' },
    ['houten drukplaat'] = { vorm = 'verbogen', bovenwereld = '$2houten drukplaat', Nether = '$2 houten drukplaat' },
    ['houten hek'] = { vorm = 'onverbogen', bovenwereld = '$2houten hek', Nether = '$1 houten hek' },
    ['houten knop'] = { vorm = 'verbogen', bovenwereld = '$2houten knop', Nether = '$2 houten knop' },
    ['houten plaat'] = { vorm = 'verbogen', bovenwereld = '$2houten plaat', Nether = '$2 houten plaat' },
    ['houten planken'] = { vorm = 'verbogen', bovenwereld = '$2houten planken', Nether = '$2 houten planken' },
    ['houten poort'] = { vorm = 'verbogen', bovenwereld = '$2houten poort', Nether = '$2 houten poort' },
    ['houten trap'] = { vorm = 'verbogen', bovenwereld = '$2houten trap', Nether = '$2 houten trap' },
    ['houten valluik'] = { vorm = 'onverbogen', bovenwereld = '$2houten valluik', Nether = '$1 houten valluik' },
    ['kiemplant'] = { vorm = 'verbogen', bovenwereld = '$2kiemplant' },
    ['schimmeldraden'] = { vorm = 'verbogen', Nether = '$2 schimmeldraden' },
    ['stam'] = { vorm = 'verbogen', bovenwereld = '$2stam', Nether = '$2 stam' },
}

-- Geparseerd hout, door onderstaande drie for-loops gebruikt
local geparseerdHout = {}

-- Vul bovenstaande tabel
for groep, data in pairs( houtenVoorwerpen ) do
    for wereld, houtsoortenInWereld in pairs( houtsoorten ) do
        local geparseerdHoutenVoorwerp = ''
        if data.bovenwereld and wereld == 'bovenwereld' then
            for _, houttype in ipairs( houtsoortenInWereld ) do
                geparseerdHoutenVoorwerp = data.bovenwereld:gsub('%$1l', houttype.verbogen:lower()):gsub('%$1', houttype.onverbogen):gsub('%$2l', houttype.verbogen:lower()):gsub('%$2', houttype.verbogen)
                if geparseerdHout[groep .. ' - bovenwereld'] == nil then geparseerdHout[groep .. ' - bovenwereld'] = {} end
                if geparseerdHout[groep] == nil then geparseerdHout[groep] = {} end
                table.insert(geparseerdHout[groep .. ' - bovenwereld'], geparseerdHoutenVoorwerp)
                table.insert(geparseerdHout[groep], geparseerdHoutenVoorwerp) -- compatibiliteit met vorige versie
            end
        end
        if data.Nether and wereld == 'Nether' then
            for _, houttype in ipairs( houtsoortenInWereld ) do
                geparseerdHoutenVoorwerp = data.Nether:gsub('%$1l', houttype.verbogen:lower()):gsub('%$1', houttype.onverbogen):gsub('%$2l', houttype.verbogen:lower()):gsub('%$2', houttype.verbogen)
                if geparseerdHout[groep .. ' - Nether'] == nil then geparseerdHout[groep .. ' - Nether'] = {} end
                table.insert(geparseerdHout[groep .. ' - Nether'], geparseerdHoutenVoorwerp)
            end
        end
    end
end

-- Voeg toe aan de aliasestabel
for houtPerWereld, voorwerpen in pairs( geparseerdHout ) do
    local houtRegex = ''
    if houtPerWereld:match( '%-' ) then
        houtRegex = houtPerWereld:match( '(.+)%s%-' )
    else
        houtRegex = houtPerWereld
    end
    
    if houtenVoorwerpen[houtRegex].vorm == 'onverbogen' then
        aliases['Elk ' .. houtPerWereld] = voorwerpen
        aliases['Overeenkomend ' .. houtPerWereld] = voorwerpen
    elseif houtenVoorwerpen[houtRegex].vorm == 'verbogen' then
        aliases['Elke ' .. houtPerWereld] = voorwerpen
        aliases['Overeenkomende ' .. houtPerWereld] = voorwerpen
    else
        error("Eigenschap 'vorm' moet één van de volgende waarden bevatten:\n\t'verbogen'\n\t'onverbogen'")
    end
end

-- Zet hier blokken neer die samengevoegd moeten worden
-- volgorde: bovenwereld, Nether
local houtSamenvoegen = {
    { 'hout', 'schimmeldraden' },
    { 'gestript hout', 'gestripte schimmeldraden' },
    { 'gestripte stam' },
    { 'houten bord' },
    { 'houten deur' },
    { 'houten drukplaat' },
    { 'houten hek' },
    { 'houten knop' },
    { 'houten plaat' },
    { 'houten planken' },
    { 'houten poort' },
    { 'houten trap' },
    { 'houten valluik' },
    { 'stam' },
}

-- Merge two tables into one https://stackoverflow.com/a/43460349
function merge_tables( a, b )
    local result = {}
    for k,v in pairs ( a ) do
        table.insert( result, v )
    end
    for k,v in pairs ( b ) do
        table.insert( result, v )
    end
    return result
end

-- Voeg houten voorwerpen (bovenwereld en Nether) samen
for _, samenvoegen in ipairs( houtSamenvoegen ) do
    local samengevoegd
    if #samenvoegen > 1 then
        local samenTeVoegenLinks = samenvoegen[1]  -- zoals altijd fantastische
        local samenTeVoegenRechts = samenvoegen[2] -- future-proofing
        samengevoegd = merge_tables( geparseerdHout[samenTeVoegenLinks .. ' - bovenwereld'], geparseerdHout[samenTeVoegenRechts .. ' - Nether'] )
        if houtenVoorwerpen[samenTeVoegenLinks].vorm == houtenVoorwerpen[samenTeVoegenRechts].vorm then
            -- omdat beide vormen gelijk zijn aan elkaar, hoeft enkel één
            -- opgehaald te worden
            local vorm = houtenVoorwerpen[samenTeVoegenLinks].vorm
            if vorm == 'onverbogen' then
                aliases['Elk ' .. samenTeVoegenLinks .. ' of ' .. samenTeVoegenRechts] = samengevoegd
                aliases['Overeenkomend ' .. samenTeVoegenLinks .. ' of ' .. samenTeVoegenRechts] = samengevoegd
            elseif vorm == 'verbogen' then
                aliases['Elke ' .. samenTeVoegenLinks .. ' of ' .. samenTeVoegenRechts] = samengevoegd
                aliases['Overeenkomende ' .. samenTeVoegenLinks .. ' of ' .. samenTeVoegenRechts] = samengevoegd
            else
                error("Eigenschap 'vorm' moet één van de volgende waarden bevatten:\n\t'verbogen'\n\t'onverbogen'\nWaarde: " .. vorm)
            end
        else
            -- beide vormen zijn verschillend, dus de linkervorm is het
            -- tegenovergestelde van de rechter
            local vormLinks = houtenVoorwerpen[samenTeVoegenLinks].vorm
            if vormLinks == 'onverbogen' then
                aliases['Elk ' .. samenTeVoegenLinks .. ' of elke ' .. samenTeVoegenRechts] = samengevoegd
                aliases['Overeenkomend ' .. samenTeVoegenLinks .. ' of overeenkomende ' .. samenTeVoegenRechts] = samengevoegd
            elseif vormLinks == 'verbogen' then
                aliases['Elke ' .. samenTeVoegenLinks .. ' of elk ' .. samenTeVoegenRechts] = samengevoegd
                aliases['Overeenkomende ' .. samenTeVoegenLinks .. ' of overeenkomend ' .. samenTeVoegenRechts] = samengevoegd
            else
                error("Eigenschap 'vorm' moet één van de volgende waarden bevatten:\n\t'verbogen'\n\t'onverbogen'\nWaarde: " .. vormLinks)
            end
        end
    else
        -- Er is slechts één element in de tabel, dus hoeft er geen rekening
        -- gehouden te worden met of de vorm van beide verschillen of gelijk
        -- zijn.
        samenTeVoegen = samenvoegen[1]
        samengevoegd = merge_tables( geparseerdHout[samenTeVoegen .. ' - bovenwereld'], geparseerdHout[samenTeVoegen .. ' - Nether'] )
        if houtenVoorwerpen[samenTeVoegen].vorm == 'onverbogen' then
            aliases['Elk ' .. samenTeVoegen .. ' - nieuw'] = samengevoegd
            aliases['Overeenkomend ' .. samenTeVoegen .. ' - nieuw'] = samengevoegd
        elseif houtenVoorwerpen[samenTeVoegen].vorm == 'verbogen' then
            aliases['Elke ' .. samenTeVoegen .. ' - nieuw'] = samengevoegd
            aliases['Overeenkomende ' .. samenTeVoegen .. ' - nieuw'] = samengevoegd
        else
            error("Eigenschap 'vorm' moet één van de volgende waarden bevatten:\n\t'verbogen'\n\t'onverbogen'")
        end
    end
end

-- Bedrock en console-specifieke voorwerpen --
local editievoorwerpen = {
    ['(BE)'] = {
        'Acaciahouten poort',
        'Baken', 'Betoveringstafel', 'Berkenhouten poort', 'Blauw ijs', 'Boog', 'Bosontdekkingskaart',
        'Constructieleegte', 'Creeperhoofd',
        'Donkereikenhouten poort', 'Drakenei', 'Drakenhoofd',
        'Eikenhouten poort', 'Emmer kogelvis', 'Emmer tropische vis', 'Enderkist', 'Endpoort', 'Endportaal', 'Endportaalframe', 'Endstaf',
        'Glazen ruit', 'Gloeisteen',
        'Helrode houten poort', 'Honingblok', 'Hoofd', 'Hoornkoraalblok', 'Huilend obsidiaan',
        "Jack-o'-lantern",
        'Kaart', 'Kattenspawnei', 'Kist', 'Kist met valstrik', 'Kracht van de zee',
        'Lava',
        'Magmablok', 'Mijnkar met opdrachtblok', 'Monsterkooi',
        'Observeerder', 'Oceaanontdekkingskaart', 'Oerwoudbladeren', 'Oerwoudhouten poort',
        'Pandaspawnei', 'Pioenroos', 'Puzzelblok',
        'Rondreizendehandelaarsspawnei', 'Rozenstruik',
        'Skelettenschedel', 'Sparrenhouten poort', 'Spookachtige houten poort', 'Steiger', 'Stromende lava',
        'Tralies',
        'Witherskelettenschedel',
        'Zeelantaarn', 'Zombiehoofd', 'Zwammenlicht',
    },
    ['(LCE)'] = {
        'Pioenroos',
        'Rozenstruik',
        'Struik'
    }
}

for editie, voorwerpen in pairs( editievoorwerpen ) do
    for _, voorwerp in ipairs( voorwerpen ) do
        local naam = voorwerp .. ' ' .. editie
        aliases[naam] = { title = voorwerp, name = naam }
    end
end

-- Lichtblokken (BE)
for niveau = 0,15 do
    aliases['Lichtblok ' .. niveau] = { title = 'Lichtblok', name = 'Lichtblok ' .. niveau }
end

return aliases