<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.play.eco/de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Avaren</id>
	<title>Eco - Deutsches Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.play.eco/de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Avaren"/>
	<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/Spezial:Beitr%C3%A4ge/Avaren"/>
	<updated>2026-06-04T02:51:38Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Haus&amp;diff=2700</id>
		<title>Haus</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Haus&amp;diff=2700"/>
		<updated>2021-03-19T00:24:13Z</updated>

		<summary type="html">&lt;p&gt;Avaren: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Available Furniture ===&lt;br /&gt;
&lt;br /&gt;
==== Bathroom Furniture ====&lt;br /&gt;
A bathroom is defined as any room containing any of the following items:&lt;br /&gt;
{{HousingTable|category = {{Translate|Bathroom}}}}&lt;br /&gt;
====Bedroom Furniture====&lt;br /&gt;
A bedroom is defined as any room containing any of the following items:&lt;br /&gt;
{{HousingTable|category = {{Translate|Bedroom}}}}&lt;br /&gt;
====Kitchen Furniture====&lt;br /&gt;
A kitchen is defined as any room containing any of the following items:&lt;br /&gt;
{{HousingTable|category = {{Translate|Kitchen}}}}&lt;br /&gt;
====General Furniture====&lt;br /&gt;
General is a room containing &#039;&#039;&#039;only&#039;&#039;&#039; furniture that is not specific to any of the other rooms.&lt;br /&gt;
The general furniture can be used in any room in order to get more Skill Points.&lt;br /&gt;
The following are General items:&lt;br /&gt;
{{HousingTable|category = {{Translate|General}}}}&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Vorlage:HousingTable&amp;diff=2699</id>
		<title>Vorlage:HousingTable</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Vorlage:HousingTable&amp;diff=2699"/>
		<updated>2021-03-19T00:22:39Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Copying from EN&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#invoke:HousingTable|table}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{HousingTable|category = {{Translate|Kitchen}}}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{HousingTable|category = {{Translate|Kitchen}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{HousingTable|category = {{Translate|Bathroom}}|type = {{Translate|Sink}}}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{HousingTable|category = {{Translate|Bathroom}}|type = {{Translate|Sink}}}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Modul:HousingTable&amp;diff=2697</id>
		<title>Modul:HousingTable</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Modul:HousingTable&amp;diff=2697"/>
		<updated>2021-03-19T00:22:19Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Copying from EN&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local Utils = require(&#039;Module:Utils&#039;)&lt;br /&gt;
local L = require(&#039;Module:Localization&#039;)&lt;br /&gt;
&lt;br /&gt;
local HEADER = [[&amp;lt;table class=&amp;quot;wikitable sortable jquery-tablesorter&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
function p.table(frame)&lt;br /&gt;
    local args = Utils.normaliseArgs(frame)&lt;br /&gt;
&lt;br /&gt;
    local ItemData = mw.loadData(&amp;quot;Module:ItemData&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    local returnStr = string.format(HEADER, L.t(&#039;Item&#039;), L.t(&#039;Room&#039;), L.t(&#039;Type&#039;), L.t(&#039;Value&#039;), L.t(&#039;Dim. Return %&#039;), L.t(&#039;Dimensions (X,Y,Z)&#039;))&lt;br /&gt;
&lt;br /&gt;
    local items = {}&lt;br /&gt;
&lt;br /&gt;
    for itemName, item in pairs(ItemData.items) do&lt;br /&gt;
        if item.roomCategory and item.furnitureType and (args.category == nil or args.category == item.roomCategory) and (args.type == nil or args.type == item.furnitureType) then&lt;br /&gt;
            table.insert(items, { item = itemName, room = item.roomCategory, type = item.furnitureType, value = item.skillValue, depreciation = item.repeatsDepreciation, dimensions = item.footprint })&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.sort(items, compareItems)&lt;br /&gt;
&lt;br /&gt;
    for _, item in pairs(items) do&lt;br /&gt;
        returnStr = returnStr .. &#039;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[&#039; .. item.item .. &#039;]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; .. item.room .. &#039;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; .. item.type .. &#039;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; .. item.value .. &#039;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; .. item.depreciation * 100 .. &#039;%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; .. item.dimensions .. &#039;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return returnStr .. &#039;&amp;lt;/table&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function compareItems(a, b)&lt;br /&gt;
    if a.room == b.room then&lt;br /&gt;
        if a.type == b.type then&lt;br /&gt;
            return a.item &amp;lt; b.item&lt;br /&gt;
        else&lt;br /&gt;
            return a.type &amp;lt; b.type&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return a.room &amp;lt; b.room&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Vorlage:HousingTable&amp;diff=2696</id>
		<title>Vorlage:HousingTable</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Vorlage:HousingTable&amp;diff=2696"/>
		<updated>2021-03-19T00:11:13Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Copying from EN&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#invoke:HousingTable|table}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{HousingTable|category = Kitchen}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{HousingTable|category = Kitchen}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{HousingTable|category = Bathroom|type = Sink}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{HousingTable|category = Bathroom|type = Sink}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Modul:HousingTable&amp;diff=2695</id>
		<title>Modul:HousingTable</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Modul:HousingTable&amp;diff=2695"/>
		<updated>2021-03-19T00:11:03Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Copying from EN&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local Utils = require(&#039;Module:Utils&#039;)&lt;br /&gt;
local L = require(&#039;Module:Localization&#039;)&lt;br /&gt;
&lt;br /&gt;
local HEADER = [[&amp;lt;table class=&amp;quot;wikitable sortable jquery-tablesorter&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
function p.table(frame)&lt;br /&gt;
    local args = Utils.normaliseArgs(frame)&lt;br /&gt;
&lt;br /&gt;
    local ItemData = mw.loadData(&amp;quot;Module:ItemData&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    local returnStr = string.format(HEADER, L.t(&#039;Item&#039;), L.t(&#039;Room&#039;), L.t(&#039;Type&#039;), L.t(&#039;Value&#039;), L.t(&#039;Dim. Return %&#039;), L.t(&#039;Dimensions&#039;))&lt;br /&gt;
&lt;br /&gt;
    local items = {}&lt;br /&gt;
&lt;br /&gt;
    for itemName, item in pairs(ItemData.items) do&lt;br /&gt;
        if item.roomCategory and item.furnitureType and (args.category == nil or args.category == item.roomCategory) and (args.type == nil or args.type == item.furnitureType) then&lt;br /&gt;
            table.insert(items, { item = itemName, room = item.roomCategory, type = item.furnitureType, value = item.skillValue, depreciation = item.repeatsDepreciation, dimensions = item.footprint })&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.sort(items, compareItems)&lt;br /&gt;
&lt;br /&gt;
    for _, item in pairs(items) do&lt;br /&gt;
        returnStr = returnStr .. &#039;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[&#039; .. item.item .. &#039;]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; .. item.room .. &#039;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; .. item.type .. &#039;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; .. item.value .. &#039;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; .. item.depreciation .. &#039;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; .. item.dimensions .. &#039;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return returnStr .. &#039;&amp;lt;/table&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function compareItems(a, b)&lt;br /&gt;
    if a.room == b.room then&lt;br /&gt;
        if a.type == b.type then&lt;br /&gt;
            return a.item &amp;lt; b.item&lt;br /&gt;
        else&lt;br /&gt;
            return a.type &amp;lt; b.type&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return a.room &amp;lt; b.room&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Haus&amp;diff=2694</id>
		<title>Haus</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Haus&amp;diff=2694"/>
		<updated>2021-03-19T00:10:02Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Die Seite wurde neu angelegt: „=== Available Furniture ===  ==== Bathroom Furniture ==== A bathroom is defined as any room containing any of the following items: {{HousingTable|category = Ba…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Available Furniture ===&lt;br /&gt;
&lt;br /&gt;
==== Bathroom Furniture ====&lt;br /&gt;
A bathroom is defined as any room containing any of the following items:&lt;br /&gt;
{{HousingTable|category = Bathroom}}&lt;br /&gt;
====Bedroom Furniture====&lt;br /&gt;
A bedroom is defined as any room containing any of the following items:&lt;br /&gt;
{{HousingTable|category = Bedroom}}&lt;br /&gt;
====Kitchen Furniture====&lt;br /&gt;
A kitchen is defined as any room containing any of the following items:&lt;br /&gt;
{{HousingTable|category = Kitchen}}&lt;br /&gt;
====General Furniture====&lt;br /&gt;
General is a room containing &#039;&#039;&#039;only&#039;&#039;&#039; furniture that is not specific to any of the other rooms.&lt;br /&gt;
The general furniture can be used in any room in order to get more Skill Points.&lt;br /&gt;
The following are General items:&lt;br /&gt;
{{HousingTable|category = General}}&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Vorlage:HousingTable&amp;diff=2691</id>
		<title>Vorlage:HousingTable</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Vorlage:HousingTable&amp;diff=2691"/>
		<updated>2021-03-19T00:07:53Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Die Seite wurde neu angelegt: „&amp;lt;includeonly&amp;gt; {{#invoke:HousingTable|table}} &amp;lt;/includeonly&amp;gt; &amp;lt;noinclude&amp;gt; == Documentation == &amp;lt;pre&amp;gt;  &amp;lt;/pre&amp;gt;  ==Examples== &amp;lt;pre&amp;gt; {{HousingTable|category = {{Trans…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#invoke:HousingTable|table}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{HousingTable|category = {{Translate|Kitchen}}}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{HousingTable|category = {{Translate|Kitchen}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{HousingTable|category = {{Translate|Bathroom}}|type = {{Translate|Sink}}}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{HousingTable|category = {{Translate|Bathroom}}|type = {{Translate|Sink}}}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Modul:HousingTable&amp;diff=2690</id>
		<title>Modul:HousingTable</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Modul:HousingTable&amp;diff=2690"/>
		<updated>2021-03-18T23:51:16Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Copying from EN&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local Utils = require(&#039;Module:Utils&#039;)&lt;br /&gt;
local L = require(&#039;Module:Localization&#039;)&lt;br /&gt;
&lt;br /&gt;
local HEADER = [[&amp;lt;table class=&amp;quot;wikitable sortable jquery-tablesorter&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
function p.table(frame)&lt;br /&gt;
    local args = Utils.normaliseArgs(frame)&lt;br /&gt;
&lt;br /&gt;
    local ItemData = mw.loadData(&amp;quot;Module:ItemData&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    local returnStr = string.format(HEADER, L.t(&#039;Item&#039;), L.t(&#039;Room&#039;), L.t(&#039;Type&#039;), L.t(&#039;Value&#039;), L.t(&#039;Dim. Return %&#039;), L.t(&#039;Dimensions&#039;))&lt;br /&gt;
&lt;br /&gt;
    local items = {}&lt;br /&gt;
&lt;br /&gt;
    for itemName, item in pairs(ItemData.items) do&lt;br /&gt;
        if item.roomCategory and item.furnitureType and (args.category == nil or L.t(args.category) == item.roomCategory) and (args.type == nil or L.t(args.type) == item.furnitureType) then&lt;br /&gt;
            table.insert(items, { item = itemName, room = item.roomCategory, type = item.furnitureType, value = item.skillValue, depreciation = item.repeatsDepreciation, dimensions = item.footprint })&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.sort(items, compareItems)&lt;br /&gt;
&lt;br /&gt;
    for _, item in pairs(items) do&lt;br /&gt;
        returnStr = returnStr .. &#039;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[&#039; .. item.item .. &#039;]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; .. item.room .. &#039;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; .. item.type .. &#039;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; .. item.value .. &#039;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; .. item.depreciation .. &#039;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; .. item.dimensions .. &#039;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return returnStr .. &#039;&amp;lt;/table&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function compareItems(a, b)&lt;br /&gt;
    if a.room == b.room then&lt;br /&gt;
        if a.type == b.type then&lt;br /&gt;
            return a.item &amp;lt; b.item&lt;br /&gt;
        else&lt;br /&gt;
            return a.type &amp;lt; b.type&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return a.room &amp;lt; b.room&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Modul:HousingTable&amp;diff=2689</id>
		<title>Modul:HousingTable</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Modul:HousingTable&amp;diff=2689"/>
		<updated>2021-03-18T23:30:26Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Copying from EN&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local Utils = require(&#039;Module:Utils&#039;)&lt;br /&gt;
local L = require(&#039;Module:Localization&#039;)&lt;br /&gt;
&lt;br /&gt;
local HEADER = [[&amp;lt;table class=&amp;quot;wikitable sortable jquery-tablesorter&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;headerSort&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;columnheader button&amp;quot; title=&amp;quot;Sort ascending&amp;quot;&amp;gt;%s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
function p.table(frame)&lt;br /&gt;
    local args = Utils.normaliseArgs(frame)&lt;br /&gt;
&lt;br /&gt;
    local ItemData = mw.loadData(&amp;quot;Module:ItemData&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    local returnStr = string.format(HEADER, L.t(&#039;Item&#039;), L.t(&#039;Room&#039;), L.t(&#039;Type&#039;), L.t(&#039;Value&#039;), L.t(&#039;Dim. Return %&#039;), L.t(&#039;Dimensions&#039;))&lt;br /&gt;
&lt;br /&gt;
    local items = {}&lt;br /&gt;
&lt;br /&gt;
    for itemName, item in pairs(ItemData.items) do&lt;br /&gt;
        if item.roomCategory and item.furnitureType and (args.category == nil or args.category == item.roomCategory) and (args.type == nil or args.type == item.furnitureType) then&lt;br /&gt;
            table.insert(items, { item = itemName, room = item.roomCategory, type = item.furnitureType, value = item.skillValue, depreciation = item.repeatsDepreciation, dimensions = item.footprint })&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.sort(items, compareItems)&lt;br /&gt;
&lt;br /&gt;
    for _, item in pairs(items) do&lt;br /&gt;
        returnStr = returnStr .. &#039;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[&#039; .. item.item .. &#039;]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; .. item.room .. &#039;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; .. item.type .. &#039;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; .. item.value .. &#039;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; .. item.depreciation .. &#039;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&#039; .. item.dimensions .. &#039;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return returnStr .. &#039;&amp;lt;/table&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function compareItems(a, b)&lt;br /&gt;
    if a.room == b.room then&lt;br /&gt;
        if a.type == b.type then&lt;br /&gt;
            return a.item &amp;lt; b.item&lt;br /&gt;
        else&lt;br /&gt;
            return a.type &amp;lt; b.type&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return a.room &amp;lt; b.room&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Modul:TagInfoCard&amp;diff=2687</id>
		<title>Modul:TagInfoCard</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Modul:TagInfoCard&amp;diff=2687"/>
		<updated>2021-03-16T17:24:57Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Copying from EN&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Credit: User:Avaren&lt;br /&gt;
&lt;br /&gt;
local Utils = require(&#039;Module:Utils&#039;)&lt;br /&gt;
local L = require(&#039;Module:Localization&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function icon_frame(name, link, bg, text, expensive)&lt;br /&gt;
    local icon = Utils.build_icon(name, link, nil, bg, nil, expensive)&lt;br /&gt;
    return &#039;&amp;lt;div style=&amp;quot;border: 5px outset #A9A9A9; background: #DCDCDC; display:inline-block; width: auto; padding: 10px; margin: 10px; text-align: center; vertical-align: middle;&amp;quot;&amp;gt;&#039; .. icon .. text ..&#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- build tag list&lt;br /&gt;
function p.tagList(frame)&lt;br /&gt;
    local args = Utils.normaliseArgs(frame)&lt;br /&gt;
&lt;br /&gt;
    -- check that all necessary arguments are passed correctly&lt;br /&gt;
    if args.name == nil or args.name == &#039;&#039; then&lt;br /&gt;
        return &#039;\&#039;name\&#039; must be specified.&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local tagName = args.name&lt;br /&gt;
&lt;br /&gt;
    local itemData = mw.loadData(&amp;quot;Module:ItemData&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    local tagList = itemData.tags&lt;br /&gt;
&lt;br /&gt;
    local itemList = tagList[tagName]&lt;br /&gt;
&lt;br /&gt;
    if (itemList == nil) then&lt;br /&gt;
        return tagName .. &amp;quot; could not be found in Module:ItemData&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local text = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local tagLink = L.t(&#039;%s Tag&#039;):format(tagName)&lt;br /&gt;
&lt;br /&gt;
    text = text .. icon_frame(L.tag(tagName) .. &#039;Tag&#039;, tagLink, &#039;iconWhite&#039;, &#039;&amp;lt;h3&amp;gt;[[&#039; .. tagLink .. &#039;]]&amp;lt;/h3&amp;gt;&#039;, false)&lt;br /&gt;
&lt;br /&gt;
    local tagCount = Utils.tableLen(itemList)&lt;br /&gt;
    if tagCount &amp;gt; 98 then&lt;br /&gt;
        expensive = true&lt;br /&gt;
    else&lt;br /&gt;
        expensive = false&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    text = text .. &#039;\n\n\n&#039; .. string.format(L.t(&#039;Item with the %s Tag:&#039;, tagCount), tagName) .. &#039;\n&#039;&lt;br /&gt;
&lt;br /&gt;
    for _, item in pairs(itemList) do&lt;br /&gt;
        text = text .. icon_frame(item, item, nil, &#039;&amp;lt;h3&amp;gt;[[&#039; .. item .. &#039;]]&amp;lt;/h3&amp;gt;&#039;, expensive)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Modul:ItemInfoCard&amp;diff=2685</id>
		<title>Modul:ItemInfoCard</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Modul:ItemInfoCard&amp;diff=2685"/>
		<updated>2021-03-16T17:04:12Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Copying from EN&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Credit: Original Infobox (now known as Infobox_Item) created by Pradoxzon was then edited by Nesphit and TreeNuts0. Fyre (FishAus) and Scotty (ZeelNightwolf) further edited the Infobox_Item. They then duplicated and used as a base for Infobox_Skill, Infobox_Plant, and Infobox_Animal.&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
local Utils = require(&#039;Module:Utils&#039;)&lt;br /&gt;
local L = require(&#039;Module:Localization&#039;)&lt;br /&gt;
&lt;br /&gt;
-- Build an Item Infobox&lt;br /&gt;
function itemBox(args, itemData)&lt;br /&gt;
    -- check that all necessary arguments are passed correctly&lt;br /&gt;
    if args.name == nil or args.name == &#039;&#039; then&lt;br /&gt;
        return &#039;\&#039;name\&#039; must be specified.&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local item = args.name&lt;br /&gt;
    local itemTable = itemData.items[item]&lt;br /&gt;
&lt;br /&gt;
    if itemTable == nil then&lt;br /&gt;
        return item .. &#039; could not be found in Module:ItemData.&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local itemType = itemTable.type&lt;br /&gt;
    local itemEN = string.sub(itemType, 1, -5)&lt;br /&gt;
    local itemimagename = string.gsub(itemEN, &#039; &#039;, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- string used to build the infobox&lt;br /&gt;
    local infobox = &#039;{| class=\&amp;quot;infobox\&amp;quot;\n&#039;&lt;br /&gt;
&lt;br /&gt;
    -- &#039;Name and Image&#039; section&lt;br /&gt;
    -- name of the item&lt;br /&gt;
    infobox = infobox .. &#039;|- style=\&amp;quot;color: white; background-color: #1165AF; text-align: center;\&amp;quot;\n| colspan=\&amp;quot;2\&amp;quot; | \&#039;\&#039;\&#039;&amp;lt;big&amp;gt;&#039; .. item .. &#039;&amp;lt;/big&amp;gt;\&#039;\&#039;\&#039;\n&#039;&lt;br /&gt;
&lt;br /&gt;
    -- the item&#039;s type (ItemData - group)&lt;br /&gt;
    infobox = infobox .. &#039;|- style=\&amp;quot;text-align: center; color: white; background-color: &#039;&lt;br /&gt;
&lt;br /&gt;
    local text_colour = &#039;#78B1FF&#039;&lt;br /&gt;
&lt;br /&gt;
    if itemTable.group == L.t(&#039;Food&#039;) then&lt;br /&gt;
        text_colour = &#039;#85D66B&#039;&lt;br /&gt;
    elseif itemTable.group == L.t(&#039;Skill Books&#039;) or itemTable.group == L.t(&#039;Skill Scrolls&#039;) then&lt;br /&gt;
        text_colour = &#039;#FFCF4D&#039;&lt;br /&gt;
    elseif itemTable.group == L.t(&#039;Skill Scrolls&#039;) then&lt;br /&gt;
        text_colour = &#039;#FFCF4D&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    infobox = infobox .. text_colour .. &#039;;\&amp;quot;\n| colspan=\&amp;quot;2\&amp;quot; | \&#039;\&#039;\&#039;&#039; .. itemTable.group .. &#039;\&#039;\&#039;\&#039;\n&#039;&lt;br /&gt;
    local icon = Utils.build_icon(item)&lt;br /&gt;
    infobox = infobox .. &#039;|-\n| colspan=\&amp;quot;2\&amp;quot; style=\&amp;quot;padding: 10px;\&amp;quot; | &#039;..icon .. &#039;\n&#039;&lt;br /&gt;
&lt;br /&gt;
    -- &#039;Description&#039; section header&lt;br /&gt;
    infobox = infobox .. sectionHeader(&#039;Description&#039;)&lt;br /&gt;
&lt;br /&gt;
    if itemTable.description == nil or itemTable.description == &#039;&#039; then&lt;br /&gt;
        infobox = infobox .. &#039;|- style=\&amp;quot;text-align: center;\&amp;quot;\n| colspan=\&amp;quot;2\&amp;quot; | \&#039;\&#039;\&#039;&#039; .. L.t(&#039;None&#039;) .. &#039;\&#039;\&#039;\&#039;\n&#039;&lt;br /&gt;
    else&lt;br /&gt;
        infobox = infobox .. &#039;|- style=\&amp;quot;text-align: center;\&amp;quot;\n| colspan=\&amp;quot;2\&amp;quot; | &#039; .. itemTable.description .. &#039;\n&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --Crafting&lt;br /&gt;
    local craftingRecipes = mw.loadData(&amp;quot;Module:CraftingRecipes&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    infobox = infobox .. generalSection(item, itemTable, craftingRecipes, args)&lt;br /&gt;
&lt;br /&gt;
    infobox = infobox .. IDsSection(itemTable)&lt;br /&gt;
&lt;br /&gt;
    -- Tags Header&lt;br /&gt;
    if itemTable.tagGroups ~= nil and itemTable.tagGroups ~= {} then&lt;br /&gt;
        infobox = infobox .. tagSection(itemTable, itemData)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- &#039;Item&#039; World Object header (if itemTable.group = Placeable or Blocks)&lt;br /&gt;
    if itemTable.group == L.t(&#039;Block Items&#039;) or itemTable.group == L.t(&#039;World Object Items&#039;) then&lt;br /&gt;
        infobox = infobox .. placementSection(itemTable, itemimagename)&lt;br /&gt;
&lt;br /&gt;
        -- Object Form Image&lt;br /&gt;
        if itemTable.group == L.t(&#039;Block Items&#039;) then&lt;br /&gt;
            infobox = infobox .. objectFormSection(itemTable, itemimagename)&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- &#039;Housing&#039; section (if there is a Room Category)&lt;br /&gt;
        if itemTable.roomCategory ~= nil then&lt;br /&gt;
            infobox = infobox .. housingSection(itemTable)&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- &#039;Storage&#039; Section (if inventorySlots is not nil)&lt;br /&gt;
        if itemTable.inventorySlots ~= nil then&lt;br /&gt;
            infobox = infobox .. storageSection(itemTable)&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- &#039;Power&#039; section (if EngeryType is ``not nil)&lt;br /&gt;
        if itemTable.energyType ~= nil then&lt;br /&gt;
            infobox = infobox .. powerSection(itemTable)&lt;br /&gt;
&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- &#039;Fuel&#039; Section (if fuelsUsed by Object)&lt;br /&gt;
        if itemTable.fuelsUsed ~= nil then&lt;br /&gt;
            infobox = infobox .. fuelsSection(itemTable)&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- &#039;Fluid&#039; section (if fludisUsed is not nil)&lt;br /&gt;
        if itemTable.fluidsUsed ~= nil or itemTable.fluidsProduced ~= nil then&lt;br /&gt;
            infobox = infobox .. fluidsSection(itemTable)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Road Object header (if group == Road Items)&lt;br /&gt;
    if itemTable.group == L.t(&#039;Road Items&#039;) then&lt;br /&gt;
        infobox = infobox .. roadItemsSection(itemTable, itemimagename)&lt;br /&gt;
    end&lt;br /&gt;
    infobox = infobox .. &#039;|}&#039;&lt;br /&gt;
    return infobox&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sectionHeader(title, count)&lt;br /&gt;
    return &amp;quot;|- style=\&amp;quot;background-color: #4688C0; text-align: center;\&amp;quot;\n| colspan=\&amp;quot;2\&amp;quot; | &#039;&#039;&#039;&amp;quot; .. L.t(title, count) .. &amp;quot;&#039;&#039;&#039;\n&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sectionRow(label, content, count, unit)&lt;br /&gt;
    if unit ~= nil then&lt;br /&gt;
        content = tonumber(content)&lt;br /&gt;
        unit = L.t(unit, content)&lt;br /&gt;
        local lang = mw.getContentLanguage()&lt;br /&gt;
        content = lang:formatNum(content)&lt;br /&gt;
    else&lt;br /&gt;
        unit = &#039;&#039;&lt;br /&gt;
    end&lt;br /&gt;
    return &#039;|-\n| &#039; .. L.t(label, count) .. &#039;:\n| style=\&amp;quot;text-align: right; padding: 3px;\&amp;quot; | &#039; .. content .. unit .. &#039;\n&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sectionImage(imageName, suffix)&lt;br /&gt;
    local image = checkImage(imageName, suffix)&lt;br /&gt;
    return &#039;|-\n| colspan=\&amp;quot;2\&amp;quot; style=\&amp;quot;padding: 10px;\&amp;quot; | [[File:&#039; .. image .. &#039;|center|border|240px]]\n&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addToSet(set, key)&lt;br /&gt;
    set[key] = true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function setNotContains(set, key)&lt;br /&gt;
    return set[key] == nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function craftingSubSection(title, item, productsOrIngredients, recipes)&lt;br /&gt;
    local stations = {}&lt;br /&gt;
    local sortStations = {}&lt;br /&gt;
    local stationString = &#039;&#039;&lt;br /&gt;
    for _, recipeName in ipairs(productsOrIngredients[item]) do&lt;br /&gt;
        local currentRecipe = recipes[recipeName]&lt;br /&gt;
        if currentRecipe ~= nil then&lt;br /&gt;
            if currentRecipe.variants[recipeName] ~= nil then&lt;br /&gt;
                local currentStation = currentRecipe.craftStn[1][1]&lt;br /&gt;
                if setNotContains(stations, currentStation) then&lt;br /&gt;
                    addToSet(stations, currentStation)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if stations then&lt;br /&gt;
        for a, _ in pairs(stations) do&lt;br /&gt;
            table.insert(sortStations, a)&lt;br /&gt;
        end&lt;br /&gt;
        table.sort(sortStations)&lt;br /&gt;
        for i, n in ipairs(sortStations) do&lt;br /&gt;
            stationString = stationString .. &#039; [[&#039; .. n .. &#039;]]&#039;&lt;br /&gt;
            if (n ~= sortStations[#sortStations]) then&lt;br /&gt;
                -- add a comma&lt;br /&gt;
                stationString = stationString .. &#039;, &#039;&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        return sectionRow(title, stationString)&lt;br /&gt;
    else&lt;br /&gt;
        return sectionRow(title, L.t(&#039;N/A&#039;))&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function generalSection(item, itemTable, craftingRecipes, args)&lt;br /&gt;
    -- &#039;General&#039; section header&lt;br /&gt;
    section = sectionHeader(&#039;General&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- Is a product at these tables&lt;br /&gt;
    if craftingRecipes.products[item] ~= nil and Utils.tableLen(craftingRecipes.products[item]) &amp;gt;= 1 then&lt;br /&gt;
        section = section .. craftingSubSection(&#039;Created at&#039;, item, craftingRecipes.products, craftingRecipes.recipes)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Is an ingredient at these tables&lt;br /&gt;
    if craftingRecipes.ingredients[item] ~= nil and Utils.tableLen(craftingRecipes.ingredients[item]) &amp;gt;= 1 then&lt;br /&gt;
        section = section .. craftingSubSection(&#039;Used at&#039;, item, craftingRecipes.ingredients, craftingRecipes.recipes)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- calories and nutrients (if itemTable.group == &#039;Food&#039;)&lt;br /&gt;
    if itemTable.group == L.t(&#039;Food&#039;) then&lt;br /&gt;
        section = section .. sectionRow(&#039;Calorie&#039;, itemTable.calories, tonumber(itemTable.calories), &#039;cal&#039;)&lt;br /&gt;
        section = section .. &#039;|- valign=\&amp;quot;center\&amp;quot;\n| rowspan=\&amp;quot;4\&amp;quot; | &#039; .. L.t(&#039;Nutrients&#039;) .. &#039;:\n&#039;&lt;br /&gt;
        section = section .. &#039;| style=\&amp;quot;color: red; text-align: right; padding: 3px;\&amp;quot; | &#039; .. L.t(&#039;Carbs&#039;) .. &#039;: &#039; .. itemTable.carbs .. &#039;\n&#039;&lt;br /&gt;
        section = section .. &#039;|- valign=\&amp;quot;center\&amp;quot;\n| style=\&amp;quot;color: orange; text-align: right; padding: 3px;\&amp;quot; | &#039; .. L.t(&#039;Protein&#039;) .. &#039;: &#039; .. itemTable.protein .. &#039;\n&#039;&lt;br /&gt;
        section = section .. &#039;|- valign=\&amp;quot;center\&amp;quot;\n| style=\&amp;quot;color: yellow; text-align: right; padding: 3px;\&amp;quot; | &#039; .. L.t(&#039;Fat&#039;) .. &#039;: &#039; .. itemTable.fat .. &#039;\n&#039;&lt;br /&gt;
        section = section .. &#039;|- valign=\&amp;quot;center\&amp;quot;\n| style=\&amp;quot;color: limegreen; text-align: right; padding: 3px;\&amp;quot; | &#039; .. L.t(&#039;Vitamins&#039;) .. &#039;: &#039; .. itemTable.vitamins .. &#039;\n&#039;&lt;br /&gt;
        section = section .. sectionRow(&#039;Nutrition Density&#039;, L.t(&#039;%s per 100 cals&#039;):format(itemTable.density))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- carried&lt;br /&gt;
    local carried&lt;br /&gt;
    if args.carried ~= nil and args.carried ~= &#039;&#039; then&lt;br /&gt;
        carried = args.carried&lt;br /&gt;
    else&lt;br /&gt;
        carried = itemTable.carried&lt;br /&gt;
    end&lt;br /&gt;
    section = section .. sectionRow(&#039;Carried in&#039;, carried)&lt;br /&gt;
&lt;br /&gt;
    -- weight&lt;br /&gt;
    local weight&lt;br /&gt;
    if itemTable.weight ~= nil then&lt;br /&gt;
        weight = itemTable.weight&lt;br /&gt;
    else&lt;br /&gt;
        weight = &#039;0.0&#039;&lt;br /&gt;
    end&lt;br /&gt;
    section = section .. sectionRow(&#039;Weight&#039;, weight, nil, &#039;kg&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- stack limit&lt;br /&gt;
    if itemTable.maxStack ~= nil then&lt;br /&gt;
        section = section .. sectionRow(&#039;Stack limit&#039;, itemTable.maxStack)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- yield&lt;br /&gt;
    if itemTable.yield ~= nil then&lt;br /&gt;
        section = section .. sectionRow(&#039;Improve Gathering&#039;, itemTable.yield)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- fuel&lt;br /&gt;
    if itemTable.fuel ~= nil then&lt;br /&gt;
        section = section .. sectionRow(&#039;Fuel energy&#039;, itemTable.fuel, nil, &#039;J&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- currency&lt;br /&gt;
    if itemTable.currency ~= nil then&lt;br /&gt;
        section = section .. &amp;quot;|- style=\&amp;quot;text-align: center;\&amp;quot;\n| colspan=\&amp;quot;2\&amp;quot; | &amp;quot; .. L.t(&#039;Can back a currency&#039;) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    return section&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function IDsSection(itemTable)&lt;br /&gt;
    -- &#039;IDs&#039; section header&lt;br /&gt;
    section = sectionHeader(&#039;ID&#039;, 2)&lt;br /&gt;
&lt;br /&gt;
    -- item id (type)&lt;br /&gt;
    section = section .. sectionRow(&#039;Item ID&#039;, itemTable.type)&lt;br /&gt;
&lt;br /&gt;
    -- id number (type id)&lt;br /&gt;
    section = section .. sectionRow(&#039;ID Number&#039;, itemTable.typeID)&lt;br /&gt;
&lt;br /&gt;
    return section&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function tagSection(itemTable, itemData)&lt;br /&gt;
    -- Tags Header&lt;br /&gt;
    local tags = itemTable.tagGroups&lt;br /&gt;
    section = sectionHeader(&#039;Tag&#039;, Utils.tableLen(tags))&lt;br /&gt;
    local list = &#039;&#039;&lt;br /&gt;
    -- for each item in the list (a is position, b is value)&lt;br /&gt;
    for a, b in ipairs(tags) do&lt;br /&gt;
        --if not these tags listed here&lt;br /&gt;
        if (b ~= L.t(&#039;Object&#039;) or b ~= L.t(&#039;World  Object&#039;) or b ~= L.t(&#039;Housing  Object&#039;)) then&lt;br /&gt;
            -- add the tag to the list&lt;br /&gt;
            -- HACK: Some tag localisations have spaces in the tag name, but not in the tag data&lt;br /&gt;
            local tagLink&lt;br /&gt;
            -- Some tags have multiple spaces? Possible data quality issue&lt;br /&gt;
            bClean = b:gsub(&amp;quot;%s+&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
            if itemData.tags[bClean] ~= nil then&lt;br /&gt;
                tagLink = L.t(&#039;%s Tag&#039;):format(bClean)&lt;br /&gt;
            else&lt;br /&gt;
                tagLink = L.t(&#039;%s Tag&#039;):format(bClean:gsub(&#039; &#039;, &#039;&#039;))&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            list = list .. &#039;[[&#039; .. tagLink .. &#039;|&#039; .. bClean .. &#039;]][[Category:&#039; .. bClean .. &#039;]]&#039;&lt;br /&gt;
        end&lt;br /&gt;
        -- if not the last item in the list&lt;br /&gt;
        if (b ~= tags[#tags]) then&lt;br /&gt;
            -- add a comma&lt;br /&gt;
            list = list .. &#039;, &#039;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    -- Now the list is made add it to the infobox&lt;br /&gt;
    section = section .. &#039;|- style=\&amp;quot;text-align: center;\&amp;quot;\n| colspan=\&amp;quot;2\&amp;quot; | &#039; .. list .. &#039;\n&#039;&lt;br /&gt;
&lt;br /&gt;
    return section&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function placementSection(itemTable, itemImageName)&lt;br /&gt;
    section = sectionHeader(&#039;World Object&#039;)&lt;br /&gt;
    -- Object Placed Image&lt;br /&gt;
    section = section .. sectionImage(itemImageName, &#039;Placed&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- &#039;Placement&#039; section&lt;br /&gt;
    --Placement Header&lt;br /&gt;
    section = section .. sectionHeader(&#039;Placement&#039;)&lt;br /&gt;
&lt;br /&gt;
    --Vechile&lt;br /&gt;
    if itemTable.mobile ~= nil then&lt;br /&gt;
        section = section .. sectionRow(&#039;Vehicle/Mobile Object&#039;, itemTable.mobile)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --Dimensions&lt;br /&gt;
    if itemTable.footprint ~= nil then&lt;br /&gt;
        section = section .. sectionRow(&#039;Dimensions (X,Y,Z)&#039;, itemTable.footprint)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --Material Tier&lt;br /&gt;
    if itemTable.materialTier ~= nil or itemTable.materialTier == 0 then&lt;br /&gt;
        section = section .. sectionRow(&#039;Room Material&#039;, itemTable.materialTier) .. &#039;[[Category:Tier &#039; .. itemTable.materialTier .. &#039;]]\n&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --Room Req.&lt;br /&gt;
    if itemTable.roomContainReq ~= nil then&lt;br /&gt;
        section = section .. sectionRow(&#039;Room Required&#039;, itemTable.roomContainReq)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --Room Size. Req.&lt;br /&gt;
    if itemTable.roomSizeReq ~= nil then&lt;br /&gt;
        section = section .. sectionRow(&#039;Room Size&#039;, itemTable.roomSizeReq, nil, &#039;m³&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --Room Mat. Req.&lt;br /&gt;
    if itemTable.roomMatReq ~= nil then&lt;br /&gt;
        section = section .. sectionRow(&#039;Room Materials&#039;, itemTable.roomMatReq)&lt;br /&gt;
    end&lt;br /&gt;
    return section&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function objectFormSection(itemTable, itemImageName)&lt;br /&gt;
    return sectionImage(itemImageName, &#039;Form&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function housingSection(itemTable)&lt;br /&gt;
    -- Housing Header&lt;br /&gt;
    section = sectionHeader(&#039;Housing&#039;)&lt;br /&gt;
&lt;br /&gt;
    --roomCategory&lt;br /&gt;
    section = section .. sectionRow(&#039;Room Category&#039;, itemTable.roomCategory) .. &#039;[[Category:&#039; .. itemTable.roomCategory .. &#039;]]\n&#039;&lt;br /&gt;
&lt;br /&gt;
    if itemTable.roomCategory ~= L.t(&#039;Industrial&#039;) then&lt;br /&gt;
        if itemTable.furnitureType ~= nil then&lt;br /&gt;
            --furnitureType&lt;br /&gt;
            section = section .. sectionRow(&#039;Furniture Type&#039;, itemTable.furnitureType) .. &#039;[[Category:&#039; .. itemTable.furnitureType .. &#039;]]\n&#039;&lt;br /&gt;
&lt;br /&gt;
            --Value of the object&lt;br /&gt;
            section = section .. sectionRow(&#039;Value&#039;, itemTable.skillValue)&lt;br /&gt;
&lt;br /&gt;
            --Dim. Return % of Object&lt;br /&gt;
            section = section .. sectionRow(&#039;Dim. Return %&#039;, itemTable.repeatsDepreciation * 100, nil, &#039;%&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if itemTable.roomCategory == L.t(&#039;Industrial&#039;) then&lt;br /&gt;
        section = section .. &amp;quot;|- style=\&amp;quot;background-color: #red; text-align: center;\&amp;quot;\n| colspan=\&amp;quot;2\&amp;quot; | &#039;&#039;&#039;&amp;quot; .. L.t(&#039;ALL ROOM VALUE LOST&#039;) .. &amp;quot;&#039;&#039;&#039;\n&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return section&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function storageSection(itemTable)&lt;br /&gt;
    -- Storage Header&lt;br /&gt;
    section = sectionHeader(&#039;Storage&#039;)&lt;br /&gt;
&lt;br /&gt;
    --Inventory Slots&lt;br /&gt;
    section = section .. sectionRow(&#039;Inventory Slots&#039;, itemTable.inventorySlots)&lt;br /&gt;
&lt;br /&gt;
    --inventoryMaxWeight&lt;br /&gt;
    if itemTable.inventoryMaxWeight ~= nil then&lt;br /&gt;
        maxWeightKg = itemTable.inventoryMaxWeight / 1000&lt;br /&gt;
        section = section .. sectionRow(&#039;Inventory Max Weight&#039;, maxWeightKg, nil, &#039;kg&#039;)&lt;br /&gt;
    else&lt;br /&gt;
        section = section .. sectionRow(&#039;Inventory Max Weight&#039;, L.t(&#039;Unlimited&#039;))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return section&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function powerSection(itemTable)&lt;br /&gt;
    -- Power Header&lt;br /&gt;
    section = sectionHeader(&#039;Power&#039;)&lt;br /&gt;
&lt;br /&gt;
    --EngergyType&lt;br /&gt;
    section = section .. sectionRow(&#039;Energy Type&#039;, itemTable.energyType) .. &#039;[[Category:&#039; .. itemTable.energyType .. &#039;]]\n&#039;&lt;br /&gt;
&lt;br /&gt;
    --Grid Radius&lt;br /&gt;
    section = section .. sectionRow(&#039;Grid Radius&#039;, itemTable.gridRadius, nil, &#039;m&#039;)&lt;br /&gt;
&lt;br /&gt;
    --Energy Produced&lt;br /&gt;
    section = section .. sectionRow(&#039;Energy Produced&#039;, itemTable.energyProduced, nil, &#039;w&#039;)&lt;br /&gt;
&lt;br /&gt;
    --Energy Used&lt;br /&gt;
    section = section .. sectionRow(&#039;Energy Used&#039;, itemTable.energyUsed, nil, &#039;w&#039;)&lt;br /&gt;
&lt;br /&gt;
    return section&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function fuelsSection(itemTable)&lt;br /&gt;
    -- Fuel Header&lt;br /&gt;
    section = sectionHeader(&#039;Fuel&#039;)&lt;br /&gt;
&lt;br /&gt;
    --Fuels Used by Object&lt;br /&gt;
    section = section .. sectionRow(&#039;Fuels Used&#039;, &#039;[[&#039; .. L.t(&#039;%s Tag&#039;):format(itemTable.fuelsUsed:gsub(&#039;[%[%]]+&#039;, &#039;&#039;)) .. &#039;]]&#039;)&lt;br /&gt;
&lt;br /&gt;
    return section&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function fluidsSection(itemTable)&lt;br /&gt;
    -- Liquid/Gas Header&lt;br /&gt;
    section = sectionHeader(&#039;Liquid/Gas&#039;)&lt;br /&gt;
&lt;br /&gt;
    --Input (fludisUsed)&lt;br /&gt;
    if itemTable.fluidsUsed ~= nil then&lt;br /&gt;
        local list = &#039;&#039;&lt;br /&gt;
        for a, b in ipairs(itemTable.fluidsUsed) do&lt;br /&gt;
            local acceptedType = b[1]&lt;br /&gt;
            local cRateString = string.gsub(b[2], &amp;quot;%s+&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
            local consumingRate = tonumber(cRateString)&lt;br /&gt;
            list = list .. L.t(&#039;%s at %sL&#039;):format(acceptedType, consumingRate)&lt;br /&gt;
&lt;br /&gt;
            if (a ~= #itemTable.fluidsUsed) then&lt;br /&gt;
                list = list .. &#039;, &#039;&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        section = section .. sectionRow(&#039;Input&#039;, list)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --Output (liquidProduced)&lt;br /&gt;
    if itemTable.fluidsProduced ~= nil then&lt;br /&gt;
        local list = &#039;&#039;&lt;br /&gt;
        for a, b in ipairs(itemTable.fluidsProduced) do&lt;br /&gt;
            local producedType = b[1]&lt;br /&gt;
            local pRateString = string.gsub(b[2], &amp;quot;%s+&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
            local producingRate = tonumber(pRateString)&lt;br /&gt;
            if (producingRate == 0) then&lt;br /&gt;
                producingRate = &#039;Rate of Input&#039;&lt;br /&gt;
            end&lt;br /&gt;
            list = list .. L.t(&#039;%s at %sL&#039;):format(producedType, producingRate)&lt;br /&gt;
            if (a ~= #itemTable.fluidsProduced) then&lt;br /&gt;
                list = list .. &#039;, &#039;&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        section = section .. sectionRow(&#039;Output&#039;, list)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return section&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function roadItemsSection(itemTable, itemImageName)&lt;br /&gt;
    section = sectionHeader(&#039;Road Object&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- Object Placed Image&lt;br /&gt;
    section = section .. sectionImage(itemImageName, &#039;Placed&#039;)&lt;br /&gt;
    return section&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function checkImage(imageName, suffix)&lt;br /&gt;
    local image = &#039;NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&amp;amp;wpDestFile=&#039; .. imageName .. &#039;_&#039; .. suffix .. &#039;.png|[[Category:Pages_with_missing_&#039; .. suffix:lower() .. &#039;]]&#039;&lt;br /&gt;
    if mw.title.makeTitle(&#039;File&#039;, imageName .. &#039;_&#039; .. suffix .. &#039;.png&#039;).file.exists then&lt;br /&gt;
        image = imageName .. &#039;_&#039; .. suffix .. &#039;.png&#039;&lt;br /&gt;
    elseif mw.title.makeTitle(&#039;File&#039;, imageName .. &#039;_&#039; .. suffix .. &#039;.jpg&#039;).file.exists then&lt;br /&gt;
        image = imageName .. &#039;_&#039; .. suffix .. &#039;.jpg&#039;&lt;br /&gt;
    end&lt;br /&gt;
    return image&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Main entry point for the Module&lt;br /&gt;
function p.ItemMain(frame)&lt;br /&gt;
    -- get args from the Template&lt;br /&gt;
    local args = Utils.normaliseArgs(frame)&lt;br /&gt;
&lt;br /&gt;
    -- get item data&lt;br /&gt;
    local itemData = mw.loadData(&amp;quot;Module:ItemData&amp;quot;)&lt;br /&gt;
    return itemBox(args, itemData)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Modul:Utils&amp;diff=2684</id>
		<title>Modul:Utils</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Modul:Utils&amp;diff=2684"/>
		<updated>2021-03-16T17:04:02Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Copying from EN&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Trims and parses the args into a table, then returns the table&lt;br /&gt;
function p.normaliseArgs(frame)&lt;br /&gt;
    local origArgs = frame:getParent().args&lt;br /&gt;
    local args = {}&lt;br /&gt;
&lt;br /&gt;
    for k, v in pairs(origArgs) do&lt;br /&gt;
        v = mw.text.trim(tostring(v))&lt;br /&gt;
        if v ~= &#039;&#039; then&lt;br /&gt;
            args[k] = v&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.checkImage(name, too_expensive)&lt;br /&gt;
    local icon = name:gsub(&#039;%s+&#039;, &#039;&#039;) .. &#039;_Icon.png&#039;&lt;br /&gt;
    if too_expensive then&lt;br /&gt;
        return icon&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if mw.title.makeTitle(&#039;File&#039;, icon).file.exists then&lt;br /&gt;
        return icon&lt;br /&gt;
    else&lt;br /&gt;
        return &#039;NoImage.png&#039;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function in_array(item, array)&lt;br /&gt;
    -- Should only use on short arrays&lt;br /&gt;
    local set = {}&lt;br /&gt;
    for _, l in ipairs(array) do&lt;br /&gt;
        set[l] = true&lt;br /&gt;
    end&lt;br /&gt;
    return set[item] ~= nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---@param name string&lt;br /&gt;
---@param size string|nil&lt;br /&gt;
---@param bg string|nil&lt;br /&gt;
---@param border string|nil&lt;br /&gt;
---@param too_expensive boolean|nil&lt;br /&gt;
function p.build_icon(name, link, size, bg, border, too_expensive)&lt;br /&gt;
    -- Size options are iconNormal or iconRecipe - 64px or 44px - defaults to iconNormal&lt;br /&gt;
&lt;br /&gt;
    local L = require(&#039;Module:Localization&#039;) -- local import&lt;br /&gt;
&lt;br /&gt;
    if not size then&lt;br /&gt;
        size = &#039;iconNormal&#039;&lt;br /&gt;
    end&lt;br /&gt;
    local icon_bg&lt;br /&gt;
    if bg then&lt;br /&gt;
        icon_bg = bg&lt;br /&gt;
    end&lt;br /&gt;
    local icon_border&lt;br /&gt;
    if border then&lt;br /&gt;
        icon_border = border&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local item_data = mw.loadData(&#039;Module:ItemData&#039;)&lt;br /&gt;
    local item = item_data.items[name]&lt;br /&gt;
    local image&lt;br /&gt;
    if item then&lt;br /&gt;
        if item[&#039;group&#039;] == L.t(&#039;Skill Books&#039;) then&lt;br /&gt;
            image = &#039;SkillBook.png&#039;&lt;br /&gt;
            icon_bg = &#039;iconGold&#039;&lt;br /&gt;
        elseif item[&#039;group&#039;] == L.t(&#039;Skill Scrolls&#039;) then&lt;br /&gt;
            image = &#039;Skill Scroll&#039;&lt;br /&gt;
            icon_bg = &#039;iconGold&#039;&lt;br /&gt;
            -- Attempt to generate skill page&lt;br /&gt;
        elseif in_array(L.t(&#039;Basic  Research&#039;), item[&#039;tagGroups&#039;]) then&lt;br /&gt;
            image = string.sub(item[&#039;untranslated&#039;], 1, -7):gsub(&#039;%s+&#039;, &#039;&#039;) .. &#039;_Icon.png&#039;&lt;br /&gt;
            icon_bg = &#039;paperBasic&#039;&lt;br /&gt;
        elseif in_array(L.t(&#039;Advanced  Research&#039;), item[&#039;tagGroups&#039;]) then&lt;br /&gt;
            image = string.sub(item[&#039;untranslated&#039;], 1, -10):gsub(&#039;%s+&#039;, &#039;&#039;) .. &#039;_Icon.png&#039;&lt;br /&gt;
            icon_bg = &#039;paperAdvanced&#039;&lt;br /&gt;
        elseif in_array(L.t(&#039;Modern  Research&#039;), item[&#039;tagGroups&#039;]) then&lt;br /&gt;
            image = string.sub(item[&#039;untranslated&#039;], 1, -8):gsub(&#039;%s+&#039;, &#039;&#039;) .. &#039;_Icon.png&#039;&lt;br /&gt;
            icon_bg = &#039;paperModern&#039;&lt;br /&gt;
        else&lt;br /&gt;
            image = p.checkImage(item[&#039;untranslated&#039;], too_expensive)&lt;br /&gt;
        end&lt;br /&gt;
        if not icon_bg then&lt;br /&gt;
            if item[&#039;group&#039;] == L.t(&#039;Food&#039;) then&lt;br /&gt;
                icon_bg = &#039;iconGreen&#039;&lt;br /&gt;
            elseif item[&#039;carried&#039;] == L.t(&#039;Hands&#039;) then&lt;br /&gt;
                icon_bg = &#039;iconBrown&#039;&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        image = p.checkImage(name, too_expensive)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if not icon_bg then&lt;br /&gt;
        icon_bg = &#039;iconBlue&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if border then&lt;br /&gt;
        icon_border = border&lt;br /&gt;
    else&lt;br /&gt;
        icon_border = &#039;borderBlue&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if size == &#039;iconNormal&#039; then&lt;br /&gt;
        icon_container = &#039;iconContainer&#039;&lt;br /&gt;
    else&lt;br /&gt;
        icon_container = &#039;iconContainerSmall&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if not link then&lt;br /&gt;
        link = &#039;&#039;&lt;br /&gt;
    else&lt;br /&gt;
        link = &#039;|link=&#039;..link&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local file = &#039;[[File:&#039; .. image .. &#039;|frameless|class=&#039; .. size .. &#039; &#039; .. icon_bg .. link ..&#039;]]&#039;&lt;br /&gt;
    return &#039;&amp;lt;div class=&amp;quot;&#039; .. icon_container .. &#039;&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;iconStack&amp;quot;&amp;gt;&#039; .. file .. &#039;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;iconBorder &#039; .. icon_border .. &#039;&amp;quot; style=&amp;quot;position:absolute;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.Icon(frame)&lt;br /&gt;
    args = p.normaliseArgs(frame)&lt;br /&gt;
    return p.build_icon(args.name, args.link, args.size, args.bg, args.border, args.too_expensive)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- mw.LoadData prevents #table from working correctly&lt;br /&gt;
function p.tableLen(tbl)&lt;br /&gt;
    local count = 0&lt;br /&gt;
    for _, v in ipairs(tbl) do&lt;br /&gt;
        if v == nil then&lt;br /&gt;
            return count&lt;br /&gt;
        end&lt;br /&gt;
        count = count + 1&lt;br /&gt;
    end&lt;br /&gt;
    return count&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Modul:Utils&amp;diff=2678</id>
		<title>Modul:Utils</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Modul:Utils&amp;diff=2678"/>
		<updated>2021-03-16T13:59:11Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Copying from EN&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Trims and parses the args into a table, then returns the table&lt;br /&gt;
function p.normaliseArgs(frame)&lt;br /&gt;
    local origArgs = frame:getParent().args&lt;br /&gt;
    local args = {}&lt;br /&gt;
&lt;br /&gt;
    for k, v in pairs(origArgs) do&lt;br /&gt;
        v = mw.text.trim(tostring(v))&lt;br /&gt;
        if v ~= &#039;&#039; then&lt;br /&gt;
            args[k] = v&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.checkImage(name, too_expensive)&lt;br /&gt;
    local icon = name:gsub(&#039;%s+&#039;, &#039;&#039;) .. &#039;_Icon.png&#039;&lt;br /&gt;
    if too_expensive then&lt;br /&gt;
        return icon&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if mw.title.makeTitle(&#039;File&#039;, icon).file.exists then&lt;br /&gt;
        return icon&lt;br /&gt;
    else&lt;br /&gt;
        return &#039;NoImage.png&#039;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function in_array(item, array)&lt;br /&gt;
    -- Should only use on short arrays&lt;br /&gt;
    local set = {}&lt;br /&gt;
    for _, l in ipairs(array) do&lt;br /&gt;
        set[l] = true&lt;br /&gt;
    end&lt;br /&gt;
    return set[item] ~= nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---@param name string&lt;br /&gt;
---@param size string|nil&lt;br /&gt;
---@param bg string|nil&lt;br /&gt;
---@param border string|nil&lt;br /&gt;
---@param too_expensive boolean|nil&lt;br /&gt;
function p.build_icon(name, size, bg, border, too_expensive)&lt;br /&gt;
    -- Size options are iconNormal or iconRecipe - 64px or 44px - defaults to iconNormal&lt;br /&gt;
&lt;br /&gt;
    local L = require(&#039;Module:Localization&#039;) -- local import&lt;br /&gt;
&lt;br /&gt;
    if not size then&lt;br /&gt;
        size = &#039;iconNormal&#039;&lt;br /&gt;
    end&lt;br /&gt;
    local icon_bg&lt;br /&gt;
    if bg then&lt;br /&gt;
        icon_bg = bg&lt;br /&gt;
    end&lt;br /&gt;
    local icon_border&lt;br /&gt;
    if border then&lt;br /&gt;
        icon_border = border&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local item_data = mw.loadData(&#039;Module:ItemData&#039;)&lt;br /&gt;
    local item = item_data.items[name]&lt;br /&gt;
    local image&lt;br /&gt;
    if item then&lt;br /&gt;
        if item[&#039;group&#039;] == L.t(&#039;Skill Books&#039;) then&lt;br /&gt;
            image = &#039;SkillBook.png&#039;&lt;br /&gt;
            icon_bg = &#039;iconGold&#039;&lt;br /&gt;
        elseif item[&#039;group&#039;] == L.t(&#039;Skill Scrolls&#039;) then&lt;br /&gt;
            image = &#039;Skill Scroll&#039;&lt;br /&gt;
            icon_bg = &#039;iconGold&#039;&lt;br /&gt;
            -- Attempt to generate skill page&lt;br /&gt;
        elseif in_array(L.t(&#039;Basic  Research&#039;), item[&#039;tagGroups&#039;]) then&lt;br /&gt;
            image = string.sub(item[&#039;untranslated&#039;], 1, -7):gsub(&#039;%s+&#039;, &#039;&#039;) .. &#039;_Icon.png&#039;&lt;br /&gt;
            icon_bg = &#039;paperBasic&#039;&lt;br /&gt;
        elseif in_array(L.t(&#039;Advanced  Research&#039;), item[&#039;tagGroups&#039;]) then&lt;br /&gt;
            image = string.sub(item[&#039;untranslated&#039;], 1, -10):gsub(&#039;%s+&#039;, &#039;&#039;) .. &#039;_Icon.png&#039;&lt;br /&gt;
            icon_bg = &#039;paperAdvanced&#039;&lt;br /&gt;
        elseif in_array(L.t(&#039;Modern  Research&#039;), item[&#039;tagGroups&#039;]) then&lt;br /&gt;
            image = string.sub(item[&#039;untranslated&#039;], 1, -8):gsub(&#039;%s+&#039;, &#039;&#039;) .. &#039;_Icon.png&#039;&lt;br /&gt;
            icon_bg = &#039;paperModern&#039;&lt;br /&gt;
        else&lt;br /&gt;
            image = p.checkImage(item[&#039;untranslated&#039;], too_expensive)&lt;br /&gt;
        end&lt;br /&gt;
        if not icon_bg then&lt;br /&gt;
            if item[&#039;group&#039;] == L.t(&#039;Food&#039;) then&lt;br /&gt;
                icon_bg = &#039;iconGreen&#039;&lt;br /&gt;
            elseif item[&#039;carried&#039;] == L.t(&#039;Hands&#039;) then&lt;br /&gt;
                icon_bg = &#039;iconBrown&#039;&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        image = p.checkImage(name, too_expensive)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if not icon_bg then&lt;br /&gt;
        icon_bg = &#039;iconBlue&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if border then&lt;br /&gt;
        icon_border = border&lt;br /&gt;
    else&lt;br /&gt;
        icon_border = &#039;borderBlue&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if size == &#039;iconNormal&#039; then&lt;br /&gt;
        icon_container = &#039;iconContainer&#039;&lt;br /&gt;
    else&lt;br /&gt;
        icon_container = &#039;iconContainerSmall&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local file = &#039;[[File:&#039; .. image .. &#039;|frameless|class=&#039; .. size .. &#039; &#039; .. icon_bg .. &#039;]]&#039;&lt;br /&gt;
    return &#039;&amp;lt;div class=&amp;quot;&#039; .. icon_container .. &#039;&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;iconStack&amp;quot;&amp;gt;&#039; .. file .. &#039;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;iconBorder &#039; .. icon_border .. &#039;&amp;quot; style=&amp;quot;position:absolute;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.Icon(frame)&lt;br /&gt;
    args = p.normaliseArgs(frame)&lt;br /&gt;
    return p.build_icon(args.name, args.size, args.bg, args.border, args.too_expensive)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- mw.LoadData prevents #table from working correctly&lt;br /&gt;
function p.tableLen(tbl)&lt;br /&gt;
    local count = 0&lt;br /&gt;
    for _, v in ipairs(tbl) do&lt;br /&gt;
        if v == nil then&lt;br /&gt;
            return count&lt;br /&gt;
        end&lt;br /&gt;
        count = count + 1&lt;br /&gt;
    end&lt;br /&gt;
    return count&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Modul:ItemInfoCard&amp;diff=2666</id>
		<title>Modul:ItemInfoCard</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Modul:ItemInfoCard&amp;diff=2666"/>
		<updated>2021-03-08T23:51:19Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Copying from EN&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Credit: Original Infobox (now known as Infobox_Item) created by Pradoxzon was then edited by Nesphit and TreeNuts0. Fyre (FishAus) and Scotty (ZeelNightwolf) further edited the Infobox_Item. They then duplicated and used as a base for Infobox_Skill, Infobox_Plant, and Infobox_Animal.&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
local Utils = require(&#039;Module:Utils&#039;)&lt;br /&gt;
local L = require(&#039;Module:Localization&#039;)&lt;br /&gt;
&lt;br /&gt;
-- Build an Item Infobox&lt;br /&gt;
function itemBox( args, itemData )&lt;br /&gt;
  -- check that all necessary arguments are passed correctly&lt;br /&gt;
  if args.name == nil or args.name == &#039;&#039; then&lt;br /&gt;
    return &#039;\&#039;name\&#039; must be specified.&#039;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  local item = args.name&lt;br /&gt;
  local itemTable = itemData.items[item]&lt;br /&gt;
&lt;br /&gt;
  if itemTable == nil then&lt;br /&gt;
    return item .. &#039; could not be found in Module:ItemData.&#039;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  local itemType = itemTable.type&lt;br /&gt;
  local itemEN = string.sub (itemType, 1, -5)&lt;br /&gt;
  local itemimagename = string.gsub(itemEN, &#039; &#039;, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
  -- string used to build the infobox&lt;br /&gt;
  local infobox = &#039;{| class=\&amp;quot;infobox\&amp;quot;\n&#039;&lt;br /&gt;
&lt;br /&gt;
  -- &#039;Name and Image&#039; section&lt;br /&gt;
  -- name of the item&lt;br /&gt;
  infobox = infobox .. &#039;|- style=\&amp;quot;color: white; background-color: #1165AF; text-align: center;\&amp;quot;\n| colspan=\&amp;quot;2\&amp;quot; | \&#039;\&#039;\&#039;&amp;lt;big&amp;gt;&#039; .. item .. &#039;&amp;lt;/big&amp;gt;\&#039;\&#039;\&#039;\n&#039;&lt;br /&gt;
&lt;br /&gt;
  -- the item&#039;s type (ItemData - group)&lt;br /&gt;
  infobox = infobox .. &#039;|- style=\&amp;quot;text-align: center; color: white; background-color: &#039;&lt;br /&gt;
&lt;br /&gt;
  if itemTable.group == L.t(&#039;Food&#039;) then&lt;br /&gt;
    infobox = infobox .. &#039;#85D66B;\&amp;quot;\n| colspan=\&amp;quot;2\&amp;quot; | \&#039;\&#039;\&#039;&#039; .. L.t(&#039;Food&#039;) .. &#039;\&#039;\&#039;\&#039;\n&#039;&lt;br /&gt;
    -- Items:Food Icon Image&lt;br /&gt;
    local image = checkImage(itemimagename, &#039;Icon&#039;)&lt;br /&gt;
&lt;br /&gt;
    infobox = infobox .. &#039;|-\n| colspan=\&amp;quot;2\&amp;quot; style=\&amp;quot;padding: 10px;\&amp;quot; | &amp;lt;div class=&amp;quot;iconContainer&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;iconStack&amp;quot;&amp;gt;[[File:&#039; .. image .. &#039;|frameless|class=iconGreen]]&amp;lt;/div&amp;gt;&amp;lt;div class=iconBorder style=\&amp;quot;position:absolute;\&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt; \n&#039;&lt;br /&gt;
&lt;br /&gt;
  elseif itemTable.group == L.t(&#039;Skill Books&#039;) then&lt;br /&gt;
    infobox = infobox .. &#039;#FFCF4D;\&amp;quot;\n| colspan=\&amp;quot;2\&amp;quot; | \&#039;\&#039;\&#039;&#039; .. itemTable.group .. &#039;\&#039;\&#039;\&#039;\n&#039;&lt;br /&gt;
    -- Items:Skill Book Icon Image&lt;br /&gt;
    infobox = infobox .. &#039;|-\n| colspan=\&amp;quot;2\&amp;quot; style=\&amp;quot;padding: 10px;\&amp;quot; | &amp;lt;div class=&amp;quot;iconContainer&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;iconStack&amp;quot;&amp;gt;[[File:SkillBook.png|link=https://wiki.play.eco/File:SkillBook.png|frameless|class=iconGold]]&amp;lt;/div&amp;gt;&amp;lt;div class=iconBorder style=\&amp;quot;position:absolute;\&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt; \n&#039;&lt;br /&gt;
&lt;br /&gt;
  elseif itemTable.group == L.t(&#039;Skill Scrolls&#039;) then&lt;br /&gt;
    infobox = infobox .. &#039;#FFCF4D;\&amp;quot;\n| colspan=\&amp;quot;2\&amp;quot; | \&#039;\&#039;\&#039;&#039; .. itemTable.group .. &#039;\&#039;\&#039;\&#039;\n&#039;&lt;br /&gt;
    -- Items:Skill Scrolls Icon Image&lt;br /&gt;
    infobox = infobox .. &#039;|-\n| colspan=\&amp;quot;2\&amp;quot; style=\&amp;quot;padding: 10px;\&amp;quot; | &amp;lt;div class=&amp;quot;iconContainer&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;iconStack&amp;quot;&amp;gt;[[File:SkillScroll.png|link=https://wiki.play.eco/File:SkillScroll.png|frameless|class=iconGold]]&amp;lt;/div&amp;gt;&amp;lt;div class=iconBorder style=\&amp;quot;position:absolute;\&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt; \n&#039;&lt;br /&gt;
&lt;br /&gt;
  else&lt;br /&gt;
    infobox = infobox .. &#039;#78B1FF;\&amp;quot;\n| colspan=\&amp;quot;2\&amp;quot; | \&#039;\&#039;\&#039;&#039; .. itemTable.group .. &#039;\&#039;\&#039;\&#039;\n&#039;&lt;br /&gt;
    -- Items: Other Icon Image&lt;br /&gt;
    local image = checkImage(itemimagename, &#039;Icon&#039;)&lt;br /&gt;
    infobox = infobox .. &#039;|-\n| colspan=\&amp;quot;2\&amp;quot; style=\&amp;quot;padding: 10px;\&amp;quot; | &amp;lt;div class=&amp;quot;iconContainer&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;iconStack&amp;quot;&amp;gt;[[File:&#039; .. image .. &#039;|frameless|class=iconBlue]]&amp;lt;/div&amp;gt;&amp;lt;div class=iconBorder style=\&amp;quot;position:absolute;\&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt; \n&#039;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- &#039;Description&#039; section header&lt;br /&gt;
  infobox = infobox .. sectionHeader(&#039;Description&#039;)&lt;br /&gt;
&lt;br /&gt;
  if itemTable.description == nil or itemTable.description == &#039;&#039; then&lt;br /&gt;
    infobox = infobox .. &#039;|- style=\&amp;quot;text-align: center;\&amp;quot;\n| colspan=\&amp;quot;2\&amp;quot; | \&#039;\&#039;\&#039;&#039;..L.t(&#039;None&#039;)..&#039;\&#039;\&#039;\&#039;\n&#039;&lt;br /&gt;
  else&lt;br /&gt;
    infobox = infobox .. &#039;|- style=\&amp;quot;text-align: center;\&amp;quot;\n| colspan=\&amp;quot;2\&amp;quot; | &#039; .. itemTable.description .. &#039;\n&#039;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  --Crafting&lt;br /&gt;
  local craftingRecipes = mw.loadData( &amp;quot;Module:CraftingRecipes&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
  infobox = infobox .. generalSection(item, itemTable, craftingRecipes, args)&lt;br /&gt;
&lt;br /&gt;
  infobox = infobox .. IDsSection(itemTable)&lt;br /&gt;
&lt;br /&gt;
  -- Tags Header&lt;br /&gt;
  if itemTable.tagGroups ~= nil and itemTable.tagGroups ~= {} then&lt;br /&gt;
    infobox = infobox .. tagSection(itemTable, itemData)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- &#039;Item&#039; World Object header (if itemTable.group = Placeable or Blocks)&lt;br /&gt;
  if itemTable.group == L.t(&#039;Block Items&#039;) or itemTable.group == L.t(&#039;World Object Items&#039;) then&lt;br /&gt;
    infobox = infobox .. placementSection(itemTable, itemimagename)				&lt;br /&gt;
&lt;br /&gt;
    -- Object Form Image&lt;br /&gt;
    if itemTable.group == L.t(&#039;Block Items&#039;) then&lt;br /&gt;
      infobox = infobox .. objectFormSection(itemTable, itemimagename)&lt;br /&gt;
    end	&lt;br /&gt;
&lt;br /&gt;
    -- &#039;Housing&#039; section (if there is a Room Category)&lt;br /&gt;
    if itemTable.roomCategory ~= nil then  &lt;br /&gt;
      infobox = infobox .. housingSection(itemTable)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- &#039;Storage&#039; Section (if inventorySlots is not nil)&lt;br /&gt;
    if itemTable.inventorySlots ~= nil then&lt;br /&gt;
      infobox = infobox .. storageSection(itemTable)&lt;br /&gt;
    end	&lt;br /&gt;
&lt;br /&gt;
    -- &#039;Power&#039; section (if EngeryType is ``not nil)&lt;br /&gt;
    if itemTable.energyType ~= nil then  &lt;br /&gt;
      infobox = infobox .. powerSection(itemTable)&lt;br /&gt;
&lt;br /&gt;
    end	&lt;br /&gt;
&lt;br /&gt;
    -- &#039;Fuel&#039; Section (if fuelsUsed by Object)&lt;br /&gt;
    if itemTable.fuelsUsed ~= nil then&lt;br /&gt;
      infobox = infobox .. fuelsSection(itemTable)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- &#039;Fluid&#039; section (if fludisUsed is not nil)    &lt;br /&gt;
    if itemTable.fluidsUsed ~= nil or itemTable.fluidsProduced ~= nil then &lt;br /&gt;
      infobox = infobox .. fluidsSection(itemTable)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- Road Object header (if group == Road Items)&lt;br /&gt;
  if itemTable.group == L.t(&#039;Road Items&#039;) then&lt;br /&gt;
    infobox = infobox .. roadItemsSection(itemTable, itemimagename)&lt;br /&gt;
  end&lt;br /&gt;
  infobox = infobox .. &#039;|}&#039;&lt;br /&gt;
  return infobox&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sectionHeader(title, count)&lt;br /&gt;
  return &amp;quot;|- style=\&amp;quot;background-color: #4688C0; text-align: center;\&amp;quot;\n| colspan=\&amp;quot;2\&amp;quot; | &#039;&#039;&#039;&amp;quot; .. L.t(title, count) .. &amp;quot;&#039;&#039;&#039;\n&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sectionRow(label, content, count, unit)&lt;br /&gt;
  if unit ~= nil then&lt;br /&gt;
    content = tonumber(content)&lt;br /&gt;
    unit = L.t(unit, content)&lt;br /&gt;
    local lang = mw.getContentLanguage()&lt;br /&gt;
    content = lang:formatNum(content)&lt;br /&gt;
  else&lt;br /&gt;
    unit = &#039;&#039;&lt;br /&gt;
  end&lt;br /&gt;
  return &#039;|-\n| &#039; .. L.t(label, count) .. &#039;:\n| style=\&amp;quot;text-align: right; padding: 3px;\&amp;quot; | &#039; .. content .. unit .. &#039;\n&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sectionImage(imageName, suffix)&lt;br /&gt;
  local image = checkImage(imageName, suffix)&lt;br /&gt;
  return &#039;|-\n| colspan=\&amp;quot;2\&amp;quot; style=\&amp;quot;padding: 10px;\&amp;quot; | [[File:&#039; .. image .. &#039;|center|border|240px]]\n&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addToSet(set, key)&lt;br /&gt;
  set[key] = true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function setNotContains(set, key)&lt;br /&gt;
  return set[key] == nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function craftingSubSection(title, item, productsOrIngredients, recipes)&lt;br /&gt;
  local stations = {}&lt;br /&gt;
  local sortStations = {}&lt;br /&gt;
  local stationString = &#039;&#039;&lt;br /&gt;
  for _, recipeName in ipairs( productsOrIngredients[item] ) do&lt;br /&gt;
    local currentRecipe = recipes[recipeName]&lt;br /&gt;
    if currentRecipe ~= nil then&lt;br /&gt;
      if currentRecipe.variants[recipeName] ~= nil then&lt;br /&gt;
        local currentStation = currentRecipe.craftStn[1][1]&lt;br /&gt;
        if setNotContains(stations, currentStation) then&lt;br /&gt;
          addToSet(stations, currentStation)&lt;br /&gt;
        end	&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  if stations then&lt;br /&gt;
    for a, _ in pairs(stations) do&lt;br /&gt;
      table.insert(sortStations, a)&lt;br /&gt;
    end&lt;br /&gt;
    table.sort(sortStations)&lt;br /&gt;
    for i, n in ipairs(sortStations) do				&lt;br /&gt;
      stationString = stationString .. &#039; [[&#039; .. n .. &#039;]]&#039;&lt;br /&gt;
      if (n ~= sortStations[#sortStations]) then&lt;br /&gt;
        -- add a comma&lt;br /&gt;
        stationString = stationString .. &#039;, &#039;&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
    return sectionRow(title, stationString)&lt;br /&gt;
  else&lt;br /&gt;
    return sectionRow(title, L.t(&#039;N/A&#039;))&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function generalSection(item, itemTable, craftingRecipes, args)&lt;br /&gt;
-- &#039;General&#039; section header&lt;br /&gt;
  section = sectionHeader(&#039;General&#039;)&lt;br /&gt;
&lt;br /&gt;
  -- Is a product at these tables&lt;br /&gt;
  if craftingRecipes.products[item] ~= nil and Utils.tableLen(craftingRecipes.products[item]) &amp;gt;= 1 then&lt;br /&gt;
    section = section .. craftingSubSection(&#039;Created at&#039;, item, craftingRecipes.products, craftingRecipes.recipes)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- Is an ingredient at these tables&lt;br /&gt;
  if craftingRecipes.ingredients[item] ~= nil and Utils.tableLen(craftingRecipes.ingredients[item]) &amp;gt;= 1 then&lt;br /&gt;
    section = section .. craftingSubSection(&#039;Used at&#039;, item, craftingRecipes.ingredients, craftingRecipes.recipes)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- calories and nutrients (if itemTable.group == &#039;Food&#039;)&lt;br /&gt;
  if itemTable.group == L.t(&#039;Food&#039;) then&lt;br /&gt;
    section = section .. sectionRow(&#039;Calorie&#039;, itemTable.calories, tonumber(itemTable.calories), &#039;cal&#039;)&lt;br /&gt;
    section = section .. &#039;|- valign=\&amp;quot;center\&amp;quot;\n| rowspan=\&amp;quot;4\&amp;quot; | &#039;..L.t(&#039;Nutrients&#039;)..&#039;:\n&#039;&lt;br /&gt;
    section = section .. &#039;| style=\&amp;quot;color: red; text-align: right; padding: 3px;\&amp;quot; | &#039;..L.t(&#039;Carbs&#039;)..&#039;: &#039; .. itemTable.carbs .. &#039;\n&#039;&lt;br /&gt;
    section = section .. &#039;|- valign=\&amp;quot;center\&amp;quot;\n| style=\&amp;quot;color: orange; text-align: right; padding: 3px;\&amp;quot; | &#039;..L.t(&#039;Protein&#039;)..&#039;: &#039; .. itemTable.protein .. &#039;\n&#039;&lt;br /&gt;
    section = section .. &#039;|- valign=\&amp;quot;center\&amp;quot;\n| style=\&amp;quot;color: yellow; text-align: right; padding: 3px;\&amp;quot; | &#039;..L.t(&#039;Fat&#039;)..&#039;: &#039; .. itemTable.fat .. &#039;\n&#039;&lt;br /&gt;
    section = section .. &#039;|- valign=\&amp;quot;center\&amp;quot;\n| style=\&amp;quot;color: limegreen; text-align: right; padding: 3px;\&amp;quot; | &#039;..L.t(&#039;Vitamins&#039;)..&#039;: &#039; .. itemTable.vitamins .. &#039;\n&#039;&lt;br /&gt;
    section = section .. sectionRow(&#039;Nutrition Density&#039;, L.t(&#039;%s per 100 cals&#039;):format(itemTable.density))&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- carried&lt;br /&gt;
  local carried&lt;br /&gt;
  if args.carried ~= nil and args.carried ~= &#039;&#039; then carried = args.carried else carried = itemTable.carried end&lt;br /&gt;
  section = section .. sectionRow(&#039;Carried in&#039;, carried)&lt;br /&gt;
&lt;br /&gt;
  -- weight&lt;br /&gt;
  local weight&lt;br /&gt;
  if itemTable.weight ~= nil then weight = itemTable.weight else weight = &#039;0.0&#039; end&lt;br /&gt;
  section = section .. sectionRow(&#039;Weight&#039;, weight, nil, &#039;kg&#039;)&lt;br /&gt;
&lt;br /&gt;
  -- stack limit&lt;br /&gt;
  if itemTable.maxStack ~= nil then&lt;br /&gt;
    section = section .. sectionRow(&#039;Stack limit&#039;, itemTable.maxStack)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- yield &lt;br /&gt;
  if itemTable.yield ~= nil then&lt;br /&gt;
    section = section .. sectionRow(&#039;Improve Gathering&#039;, itemTable.yield)&lt;br /&gt;
  end 	&lt;br /&gt;
&lt;br /&gt;
  -- fuel&lt;br /&gt;
  if itemTable.fuel ~= nil then&lt;br /&gt;
    section = section .. sectionRow(&#039;Fuel energy&#039;, itemTable.fuel, nil, &#039;J&#039;)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- currency&lt;br /&gt;
  if itemTable.currency ~= nil then&lt;br /&gt;
    section = section .. &amp;quot;|- style=\&amp;quot;text-align: center;\&amp;quot;\n| colspan=\&amp;quot;2\&amp;quot; | &amp;quot; .. L.t(&#039;Can back a currency&#039;) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
  return section&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function IDsSection(itemTable)&lt;br /&gt;
  -- &#039;IDs&#039; section header&lt;br /&gt;
  section = sectionHeader(&#039;ID&#039;, 2)&lt;br /&gt;
&lt;br /&gt;
  -- item id (type)&lt;br /&gt;
  section = section .. sectionRow(&#039;Item ID&#039;, itemTable.type)&lt;br /&gt;
&lt;br /&gt;
  -- id number (type id)&lt;br /&gt;
  section = section .. sectionRow(&#039;ID Number&#039;, itemTable.typeID)&lt;br /&gt;
&lt;br /&gt;
  return section&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function tagSection(itemTable, itemData)&lt;br /&gt;
  -- Tags Header&lt;br /&gt;
  local tags = itemTable.tagGroups&lt;br /&gt;
  section = sectionHeader(&#039;Tag&#039;, Utils.tableLen(tags))&lt;br /&gt;
  local list = &#039;&#039;&lt;br /&gt;
  -- for each item in the list (a is position, b is value)            &lt;br /&gt;
  for a,b in ipairs(tags) do&lt;br /&gt;
    --if not these tags listed here&lt;br /&gt;
    if (b ~=L.t(&#039;Object&#039;) or b ~= L.t(&#039;World  Object&#039;) or b ~= L.t(&#039;Housing  Object&#039;)) then&lt;br /&gt;
      -- add the tag to the list&lt;br /&gt;
      -- HACK: Some tag localisations have spaces in the tag name, but not in the tag data&lt;br /&gt;
      local tagLink&lt;br /&gt;
      -- Some tags have multiple spaces? Possible data quality issue&lt;br /&gt;
      bClean = b:gsub(&amp;quot;%s+&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
      if itemData.tags[bClean] ~= nil then&lt;br /&gt;
        tagLink = L.t(&#039;%s Tag&#039;):format(bClean)&lt;br /&gt;
      else&lt;br /&gt;
        tagLink = L.t(&#039;%s Tag&#039;):format(bClean:gsub(&#039; &#039;, &#039;&#039;))&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
      list = list .. &#039;[[&#039; .. tagLink ..&#039;|&#039; .. bClean ..&#039;]][[Category:&#039; .. bClean .. &#039;]]&#039;					&lt;br /&gt;
    end&lt;br /&gt;
    -- if not the last item in the list&lt;br /&gt;
    if (b ~= tags[#tags]) then&lt;br /&gt;
      -- add a comma&lt;br /&gt;
      list = list .. &#039;, &#039;&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  -- Now the list is made add it to the infobox&lt;br /&gt;
  section = section .. &#039;|- style=\&amp;quot;text-align: center;\&amp;quot;\n| colspan=\&amp;quot;2\&amp;quot; | &#039; .. list .. &#039;\n&#039;&lt;br /&gt;
&lt;br /&gt;
  return section&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function placementSection(itemTable, itemImageName)&lt;br /&gt;
  section = sectionHeader(&#039;World Object&#039;)&lt;br /&gt;
-- Object Placed Image&lt;br /&gt;
  section = section .. sectionImage(itemImageName, &#039;Placed&#039;)&lt;br /&gt;
&lt;br /&gt;
  -- &#039;Placement&#039; section&lt;br /&gt;
  --Placement Header&lt;br /&gt;
  section = section .. sectionHeader(&#039;Placement&#039;)&lt;br /&gt;
&lt;br /&gt;
  --Vechile&lt;br /&gt;
  if itemTable.mobile ~= nil then&lt;br /&gt;
    section = section .. sectionRow(&#039;Vehicle/Mobile Object&#039;, itemTable.mobile)&lt;br /&gt;
  end			&lt;br /&gt;
&lt;br /&gt;
  --Dimensions &lt;br /&gt;
  if itemTable.footprint ~= nil then&lt;br /&gt;
    section = section .. sectionRow(&#039;Dimensions (X,Y,Z)&#039;, itemTable.footprint)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  --Material Tier&lt;br /&gt;
  if itemTable.materialTier ~= nil or itemTable.materialTier == 0 then&lt;br /&gt;
    section = section .. sectionRow(&#039;Room Material&#039;, itemTable.materialTier)  .. &#039;[[Category:Tier &#039;.. itemTable.materialTier ..&#039;]]\n&#039;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  --Room Req.&lt;br /&gt;
  if itemTable.roomContainReq ~= nil then&lt;br /&gt;
    section = section .. sectionRow(&#039;Room Required&#039;, itemTable.roomContainReq)&lt;br /&gt;
  end	&lt;br /&gt;
&lt;br /&gt;
  --Room Size. Req.&lt;br /&gt;
  if itemTable.roomSizeReq ~= nil then&lt;br /&gt;
    section = section .. sectionRow(&#039;Room Size&#039;, itemTable.roomSizeReq, nil, &#039;m³&#039;)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  --Room Mat. Req.&lt;br /&gt;
  if itemTable.roomMatReq ~= nil then&lt;br /&gt;
    section = section .. sectionRow(&#039;Room Materials&#039;, itemTable.roomMatReq)&lt;br /&gt;
  end	&lt;br /&gt;
  return section&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function objectFormSection(itemTable, itemImageName)&lt;br /&gt;
  return sectionImage(itemImageName, &#039;Form&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function housingSection(itemTable)&lt;br /&gt;
-- Housing Header&lt;br /&gt;
  section = sectionHeader(&#039;Housing&#039;)&lt;br /&gt;
&lt;br /&gt;
  --roomCategory&lt;br /&gt;
  section = section .. sectionRow(&#039;Room Category&#039;, itemTable.roomCategory) .. &#039;[[Category:&#039; .. itemTable.roomCategory .. &#039;]]\n&#039;&lt;br /&gt;
&lt;br /&gt;
  if itemTable.roomCategory ~= L.t(&#039;Industrial&#039;) then&lt;br /&gt;
    if itemTable.furnitureType ~= nil then &lt;br /&gt;
      --furnitureType&lt;br /&gt;
      section = section .. sectionRow(&#039;Furniture Type&#039;, itemTable.furnitureType) .. &#039;[[Category:&#039; .. itemTable.furnitureType .. &#039;]]\n&#039;&lt;br /&gt;
&lt;br /&gt;
      --Value of the object&lt;br /&gt;
      section = section .. sectionRow(&#039;Value&#039;, itemTable.skillValue)&lt;br /&gt;
&lt;br /&gt;
      --Dim. Return % of Object  &lt;br /&gt;
      section = section .. sectionRow(&#039;Dim. Return %&#039;, itemTable.repeatsDepreciation*100, nil, &#039;%&#039;)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  if itemTable.roomCategory == L.t(&#039;Industrial&#039;) then&lt;br /&gt;
    section = section .. &amp;quot;|- style=\&amp;quot;background-color: #red; text-align: center;\&amp;quot;\n| colspan=\&amp;quot;2\&amp;quot; | &#039;&#039;&#039;&amp;quot; .. L.t(&#039;ALL ROOM VALUE LOST&#039;) .. &amp;quot;&#039;&#039;&#039;\n&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  return section&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function storageSection(itemTable)&lt;br /&gt;
  -- Storage Header&lt;br /&gt;
  section = sectionHeader(&#039;Storage&#039;)&lt;br /&gt;
&lt;br /&gt;
  --Inventory Slots&lt;br /&gt;
  section = section .. sectionRow(&#039;Inventory Slots&#039;, itemTable.inventorySlots)&lt;br /&gt;
&lt;br /&gt;
  --inventoryMaxWeight&lt;br /&gt;
  if itemTable.inventoryMaxWeight ~= nil then&lt;br /&gt;
    maxWeightKg = itemTable.inventoryMaxWeight/1000&lt;br /&gt;
    section = section ..sectionRow(&#039;Inventory Max Weight&#039;, maxWeightKg, nil, &#039;kg&#039;)&lt;br /&gt;
  else&lt;br /&gt;
    section = section .. sectionRow(&#039;Inventory Max Weight&#039;, L.t(&#039;Unlimited&#039;))&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  return section&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function powerSection(itemTable)&lt;br /&gt;
  -- Power Header&lt;br /&gt;
  section = sectionHeader(&#039;Power&#039;)&lt;br /&gt;
&lt;br /&gt;
  --EngergyType &lt;br /&gt;
  section = section .. sectionRow(&#039;Energy Type&#039;, itemTable.energyType) .. &#039;[[Category:&#039; .. itemTable.energyType .. &#039;]]\n&#039;&lt;br /&gt;
&lt;br /&gt;
  --Grid Radius&lt;br /&gt;
  section = section .. sectionRow(&#039;Grid Radius&#039;, itemTable.gridRadius, nil, &#039;m&#039;)&lt;br /&gt;
&lt;br /&gt;
  --Energy Produced&lt;br /&gt;
  section = section .. sectionRow(&#039;Energy Produced&#039;, itemTable.energyProduced, nil, &#039;w&#039;)&lt;br /&gt;
&lt;br /&gt;
  --Energy Used&lt;br /&gt;
  section = section .. sectionRow(&#039;Energy Used&#039;, itemTable.energyUsed, nil, &#039;w&#039;)&lt;br /&gt;
&lt;br /&gt;
  return section&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function fuelsSection(itemTable)&lt;br /&gt;
  -- Fuel Header&lt;br /&gt;
  section = sectionHeader(&#039;Fuel&#039;)&lt;br /&gt;
&lt;br /&gt;
  --Fuels Used by Object&lt;br /&gt;
  section = section .. sectionRow(&#039;Fuels Used&#039;, &#039;[[&#039; .. L.t(&#039;%s Tag&#039;):format(itemTable.fuelsUsed:gsub(&#039;[%[%]]+&#039;, &#039;&#039;)) .. &#039;]]&#039;)&lt;br /&gt;
&lt;br /&gt;
  return section&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function fluidsSection(itemTable)&lt;br /&gt;
-- Liquid/Gas Header&lt;br /&gt;
  section = sectionHeader(&#039;Liquid/Gas&#039;)&lt;br /&gt;
&lt;br /&gt;
--Input (fludisUsed) &lt;br /&gt;
  if itemTable.fluidsUsed ~= nil then&lt;br /&gt;
    local list = &#039;&#039;&lt;br /&gt;
    for a,b in ipairs(itemTable.fluidsUsed) do&lt;br /&gt;
      local acceptedType =  b[1]&lt;br /&gt;
      local cRateString = string.gsub(b[2], &amp;quot;%s+&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
      local consumingRate = tonumber(cRateString)&lt;br /&gt;
      list = list .. L.t(&#039;%s at %sL&#039;):format(acceptedType, consumingRate)&lt;br /&gt;
      &lt;br /&gt;
      if (a ~= #itemTable.fluidsUsed) then&lt;br /&gt;
        list = list .. &#039;, &#039;&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
    section = section .. sectionRow(&#039;Input&#039;, list)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
--Output (liquidProduced)&lt;br /&gt;
  if itemTable.fluidsProduced ~= nil then&lt;br /&gt;
    local list = &#039;&#039;&lt;br /&gt;
    for a,b in ipairs(itemTable.fluidsProduced) do&lt;br /&gt;
      local producedType =  b[1]&lt;br /&gt;
      local pRateString = string.gsub(b[2], &amp;quot;%s+&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
      local producingRate = tonumber(pRateString)&lt;br /&gt;
      if (producingRate == 0) then&lt;br /&gt;
        producingRate = &#039;Rate of Input&#039;&lt;br /&gt;
      end&lt;br /&gt;
      list = list .. L.t(&#039;%s at %sL&#039;):format(producedType, producingRate)&lt;br /&gt;
      if (a ~= #itemTable.fluidsProduced) then&lt;br /&gt;
        list = list .. &#039;, &#039;&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
    section = section .. sectionRow(&#039;Output&#039;, list)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return section&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function roadItemsSection(itemTable, itemImageName)&lt;br /&gt;
  section = sectionHeader(&#039;Road Object&#039;)&lt;br /&gt;
&lt;br /&gt;
  -- Object Placed Image&lt;br /&gt;
  section = section .. sectionImage(itemImageName, &#039;Placed&#039;)&lt;br /&gt;
  return section&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function checkImage(imageName, suffix)&lt;br /&gt;
  local image = &#039;NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&amp;amp;wpDestFile=&#039; .. imageName .. &#039;_&#039;..suffix..&#039;.png|[[Category:Pages_with_missing_&#039;..suffix:lower()..&#039;]]&#039;&lt;br /&gt;
  if mw.title.makeTitle(&#039;File&#039;, imageName .. &#039;_&#039;..suffix..&#039;.png&#039;).file.exists then&lt;br /&gt;
    image = imageName .. &#039;_&#039;..suffix..&#039;.png&#039;&lt;br /&gt;
  elseif mw.title.makeTitle(&#039;File&#039;, imageName .. &#039;_&#039;..suffix..&#039;.jpg&#039;).file.exists then&lt;br /&gt;
    image = imageName .. &#039;_&#039;..suffix..&#039;.jpg&#039;&lt;br /&gt;
  end&lt;br /&gt;
  return image&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Main entry point for the Module&lt;br /&gt;
function p.ItemMain(frame)&lt;br /&gt;
  -- get args from the Template&lt;br /&gt;
  local args = Utils.normaliseArgs(frame)&lt;br /&gt;
&lt;br /&gt;
  -- get item data&lt;br /&gt;
  local itemData = mw.loadData( &amp;quot;Module:ItemData&amp;quot; )&lt;br /&gt;
  return itemBox( args, itemData )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Raw_FoodTag&amp;diff=2665</id>
		<title>Raw FoodTag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Raw_FoodTag&amp;diff=2665"/>
		<updated>2021-03-08T23:48:36Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite Raw FoodTag nach Raw Food Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Raw Food Tag]]&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Raw_Food_Tag&amp;diff=2664</id>
		<title>Raw Food Tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Raw_Food_Tag&amp;diff=2664"/>
		<updated>2021-03-08T23:48:36Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite Raw FoodTag nach Raw Food Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TagDetails|name = Raw Food}}&lt;br /&gt;
{{GetRecipes|tag = Raw Food}}&lt;br /&gt;
[[Category: Tags]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=ProductTag&amp;diff=2663</id>
		<title>ProductTag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=ProductTag&amp;diff=2663"/>
		<updated>2021-03-08T23:48:28Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite ProductTag nach Product Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Product Tag]]&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Product_Tag&amp;diff=2662</id>
		<title>Product Tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Product_Tag&amp;diff=2662"/>
		<updated>2021-03-08T23:48:26Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite ProductTag nach Product Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TagDetails|name = Product}}&lt;br /&gt;
{{GetRecipes|tag = Product}}&lt;br /&gt;
[[Category: Tags]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=PolluterTag&amp;diff=2661</id>
		<title>PolluterTag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=PolluterTag&amp;diff=2661"/>
		<updated>2021-03-08T23:48:16Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite PolluterTag nach Polluter Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Polluter Tag]]&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Polluter_Tag&amp;diff=2660</id>
		<title>Polluter Tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Polluter_Tag&amp;diff=2660"/>
		<updated>2021-03-08T23:48:16Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite PolluterTag nach Polluter Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TagDetails|name = Polluter}}&lt;br /&gt;
{{GetRecipes|tag = Polluter}}&lt;br /&gt;
[[Category: Tags]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=PlanterTag&amp;diff=2659</id>
		<title>PlanterTag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=PlanterTag&amp;diff=2659"/>
		<updated>2021-03-08T23:48:06Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite PlanterTag nach Planter Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Planter Tag]]&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Planter_Tag&amp;diff=2658</id>
		<title>Planter Tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Planter_Tag&amp;diff=2658"/>
		<updated>2021-03-08T23:48:06Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite PlanterTag nach Planter Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TagDetails|name = Planter}}&lt;br /&gt;
{{GetRecipes|tag = Planter}}&lt;br /&gt;
[[Category: Tags]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=FishTag&amp;diff=2657</id>
		<title>FishTag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=FishTag&amp;diff=2657"/>
		<updated>2021-03-08T23:47:56Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite FishTag nach Fish Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Fish Tag]]&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Fish_Tag&amp;diff=2656</id>
		<title>Fish Tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Fish_Tag&amp;diff=2656"/>
		<updated>2021-03-08T23:47:56Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite FishTag nach Fish Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TagDetails|name = Fish}}&lt;br /&gt;
{{GetRecipes|tag = Fish}}&lt;br /&gt;
[[Category: Tags]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=FettTag&amp;diff=2655</id>
		<title>FettTag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=FettTag&amp;diff=2655"/>
		<updated>2021-03-08T23:47:46Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite FettTag nach Fett Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Fett Tag]]&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Fett_Tag&amp;diff=2654</id>
		<title>Fett Tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Fett_Tag&amp;diff=2654"/>
		<updated>2021-03-08T23:47:46Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite FettTag nach Fett Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TagDetails|name = Fett}}&lt;br /&gt;
{{GetRecipes|tag = Fett}}&lt;br /&gt;
[[Category: Tags]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=FertilizerTag&amp;diff=2653</id>
		<title>FertilizerTag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=FertilizerTag&amp;diff=2653"/>
		<updated>2021-03-08T23:47:36Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite FertilizerTag nach Fertilizer Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Fertilizer Tag]]&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Fertilizer_Tag&amp;diff=2652</id>
		<title>Fertilizer Tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Fertilizer_Tag&amp;diff=2652"/>
		<updated>2021-03-08T23:47:36Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite FertilizerTag nach Fertilizer Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TagDetails|name = Fertilizer}}&lt;br /&gt;
{{GetRecipes|tag = Fertilizer}}&lt;br /&gt;
[[Category: Tags]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Fertigkeitsb%C3%BCcherTag&amp;diff=2651</id>
		<title>FertigkeitsbücherTag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Fertigkeitsb%C3%BCcherTag&amp;diff=2651"/>
		<updated>2021-03-08T23:47:26Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite FertigkeitsbücherTag nach Fertigkeitsbücher Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Fertigkeitsbücher Tag]]&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Fertigkeitsb%C3%BCcher_Tag&amp;diff=2650</id>
		<title>Fertigkeitsbücher Tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Fertigkeitsb%C3%BCcher_Tag&amp;diff=2650"/>
		<updated>2021-03-08T23:47:26Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite FertigkeitsbücherTag nach Fertigkeitsbücher Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TagDetails|name = Fertigkeitsbücher}}&lt;br /&gt;
{{GetRecipes|tag = Fertigkeitsbücher}}&lt;br /&gt;
[[Category: Tags]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=W%C3%A4hrungTag&amp;diff=2649</id>
		<title>WährungTag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=W%C3%A4hrungTag&amp;diff=2649"/>
		<updated>2021-03-08T23:33:56Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite WährungTag nach Währung Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Währung Tag]]&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=W%C3%A4hrung_Tag&amp;diff=2648</id>
		<title>Währung Tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=W%C3%A4hrung_Tag&amp;diff=2648"/>
		<updated>2021-03-08T23:33:56Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite WährungTag nach Währung Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TagDetails|name = Währung}}&lt;br /&gt;
{{GetRecipes|tag = Währung}}&lt;br /&gt;
[[Category: Tags]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=VegetableTag&amp;diff=2647</id>
		<title>VegetableTag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=VegetableTag&amp;diff=2647"/>
		<updated>2021-03-08T23:33:51Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite VegetableTag nach Vegetable Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Vegetable Tag]]&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Vegetable_Tag&amp;diff=2646</id>
		<title>Vegetable Tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Vegetable_Tag&amp;diff=2646"/>
		<updated>2021-03-08T23:33:51Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite VegetableTag nach Vegetable Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TagDetails|name = Vegetable}}&lt;br /&gt;
{{GetRecipes|tag = Vegetable}}&lt;br /&gt;
[[Category: Tags]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=UpgradeTag&amp;diff=2645</id>
		<title>UpgradeTag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=UpgradeTag&amp;diff=2645"/>
		<updated>2021-03-08T23:33:46Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite UpgradeTag nach Upgrade Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Upgrade Tag]]&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Upgrade_Tag&amp;diff=2644</id>
		<title>Upgrade Tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Upgrade_Tag&amp;diff=2644"/>
		<updated>2021-03-08T23:33:46Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite UpgradeTag nach Upgrade Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TagDetails|name = Upgrade}}&lt;br /&gt;
{{GetRecipes|tag = Upgrade}}&lt;br /&gt;
[[Category: Tags]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=ToolTag&amp;diff=2643</id>
		<title>ToolTag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=ToolTag&amp;diff=2643"/>
		<updated>2021-03-08T23:33:41Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite ToolTag nach Tool Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Tool Tag]]&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Tool_Tag&amp;diff=2642</id>
		<title>Tool Tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Tool_Tag&amp;diff=2642"/>
		<updated>2021-03-08T23:33:41Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite ToolTag nach Tool Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TagDetails|name = Tool}}&lt;br /&gt;
{{GetRecipes|tag = Tool}}&lt;br /&gt;
[[Category: Tags]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=SmallCarcassTag&amp;diff=2641</id>
		<title>SmallCarcassTag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=SmallCarcassTag&amp;diff=2641"/>
		<updated>2021-03-08T23:33:36Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite SmallCarcassTag nach SmallCarcass Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[SmallCarcass Tag]]&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=SmallCarcass_Tag&amp;diff=2640</id>
		<title>SmallCarcass Tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=SmallCarcass_Tag&amp;diff=2640"/>
		<updated>2021-03-08T23:33:36Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite SmallCarcassTag nach SmallCarcass Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TagDetails|name = SmallCarcass}}&lt;br /&gt;
{{GetRecipes|tag = SmallCarcass}}&lt;br /&gt;
[[Category: Tags]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=SkilschriftrollenTag&amp;diff=2639</id>
		<title>SkilschriftrollenTag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=SkilschriftrollenTag&amp;diff=2639"/>
		<updated>2021-03-08T23:33:31Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite SkilschriftrollenTag nach Skilschriftrollen Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Skilschriftrollen Tag]]&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Skilschriftrollen_Tag&amp;diff=2638</id>
		<title>Skilschriftrollen Tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Skilschriftrollen_Tag&amp;diff=2638"/>
		<updated>2021-03-08T23:33:31Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite SkilschriftrollenTag nach Skilschriftrollen Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TagDetails|name = Skilschriftrollen}}&lt;br /&gt;
{{GetRecipes|tag = Skilschriftrollen}}&lt;br /&gt;
[[Category: Tags]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=ModernUpgradeTag&amp;diff=2637</id>
		<title>ModernUpgradeTag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=ModernUpgradeTag&amp;diff=2637"/>
		<updated>2021-03-08T23:33:06Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite ModernUpgradeTag nach ModernUpgrade Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[ModernUpgrade Tag]]&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=ModernUpgrade_Tag&amp;diff=2636</id>
		<title>ModernUpgrade Tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=ModernUpgrade_Tag&amp;diff=2636"/>
		<updated>2021-03-08T23:33:06Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite ModernUpgradeTag nach ModernUpgrade Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TagDetails|name = ModernUpgrade}}&lt;br /&gt;
{{GetRecipes|tag = ModernUpgrade}}&lt;br /&gt;
[[Category: Tags]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Modern_ResearchTag&amp;diff=2635</id>
		<title>Modern ResearchTag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Modern_ResearchTag&amp;diff=2635"/>
		<updated>2021-03-08T23:33:01Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite Modern ResearchTag nach Modern Research Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Modern Research Tag]]&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Modern_Research_Tag&amp;diff=2634</id>
		<title>Modern Research Tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Modern_Research_Tag&amp;diff=2634"/>
		<updated>2021-03-08T23:33:01Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite Modern ResearchTag nach Modern Research Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TagDetails|name = Modern Research}}&lt;br /&gt;
{{GetRecipes|tag = Modern Research}}&lt;br /&gt;
[[Category: Tags]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=MetalTag&amp;diff=2633</id>
		<title>MetalTag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=MetalTag&amp;diff=2633"/>
		<updated>2021-03-08T23:32:56Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite MetalTag nach Metal Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Metal Tag]]&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Metal_Tag&amp;diff=2632</id>
		<title>Metal Tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Metal_Tag&amp;diff=2632"/>
		<updated>2021-03-08T23:32:56Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite MetalTag nach Metal Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TagDetails|name = Metal}}&lt;br /&gt;
{{GetRecipes|tag = Metal}}&lt;br /&gt;
[[Category: Tags]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=MediumCarcassTag&amp;diff=2631</id>
		<title>MediumCarcassTag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=MediumCarcassTag&amp;diff=2631"/>
		<updated>2021-03-08T23:32:51Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite MediumCarcassTag nach MediumCarcass Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[MediumCarcass Tag]]&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=MediumCarcass_Tag&amp;diff=2630</id>
		<title>MediumCarcass Tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=MediumCarcass_Tag&amp;diff=2630"/>
		<updated>2021-03-08T23:32:51Z</updated>

		<summary type="html">&lt;p&gt;Avaren: Avaren verschob die Seite MediumCarcassTag nach MediumCarcass Tag: Fix tag translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TagDetails|name = MediumCarcass}}&lt;br /&gt;
{{GetRecipes|tag = MediumCarcass}}&lt;br /&gt;
[[Category: Tags]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Avaren</name></author>
	</entry>
</feed>