<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.play.eco/de/index.php?action=history&amp;feed=atom&amp;title=Modul%3ARecipeUtils</id>
	<title>Modul:RecipeUtils - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.play.eco/de/index.php?action=history&amp;feed=atom&amp;title=Modul%3ARecipeUtils"/>
	<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Modul:RecipeUtils&amp;action=history"/>
	<updated>2026-06-04T02:13:33Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Eco - Deutsches Wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.play.eco/de/index.php?title=Modul:RecipeUtils&amp;diff=3096&amp;oldid=prev</id>
		<title>StalEF: Die Seite wurde neu angelegt: „local Utils = require(&#039;Module:Utils&#039;) local IconUtils = require(&#039;Module:IconUtils&#039;) local RecipesData = mw.loadData(&#039;Module:RecipeData&#039;) local ItemsData = mw.loadData(&#039;Module:ItemData&#039;) local TagsData = mw.loadData(&#039;Module:TagData&#039;) local SkillsData = mw.loadData(&#039;Module:SkillData&#039;) local Lang = Utils.getLanguageName() local p = {}  function p.ItemCraft(ItemName)     local Recipes = &quot;&quot;     for RecipeName,RecipeData in pairs(RecipesData.recipes) do…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/de/index.php?title=Modul:RecipeUtils&amp;diff=3096&amp;oldid=prev"/>
		<updated>2026-03-03T17:46:05Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „local Utils = require(&amp;#039;Module:Utils&amp;#039;) local IconUtils = require(&amp;#039;Module:IconUtils&amp;#039;) local RecipesData = mw.loadData(&amp;#039;Module:RecipeData&amp;#039;) local ItemsData = mw.loadData(&amp;#039;Module:ItemData&amp;#039;) local TagsData = mw.loadData(&amp;#039;Module:TagData&amp;#039;) local SkillsData = mw.loadData(&amp;#039;Module:SkillData&amp;#039;) local Lang = Utils.getLanguageName() local p = {}  function p.ItemCraft(ItemName)     local Recipes = &amp;quot;&amp;quot;     for RecipeName,RecipeData in pairs(RecipesData.recipes) do…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local Utils = require(&amp;#039;Module:Utils&amp;#039;)&lt;br /&gt;
local IconUtils = require(&amp;#039;Module:IconUtils&amp;#039;)&lt;br /&gt;
local RecipesData = mw.loadData(&amp;#039;Module:RecipeData&amp;#039;)&lt;br /&gt;
local ItemsData = mw.loadData(&amp;#039;Module:ItemData&amp;#039;)&lt;br /&gt;
local TagsData = mw.loadData(&amp;#039;Module:TagData&amp;#039;)&lt;br /&gt;
local SkillsData = mw.loadData(&amp;#039;Module:SkillData&amp;#039;)&lt;br /&gt;
local Lang = Utils.getLanguageName()&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.ItemCraft(ItemName)&lt;br /&gt;
    local Recipes = &amp;quot;&amp;quot;&lt;br /&gt;
    for RecipeName,RecipeData in pairs(RecipesData.recipes) do&lt;br /&gt;
        for ProductName,ProductData in pairs(RecipeData.Products) do&lt;br /&gt;
            if ProductName == ItemName and ProductData.Type == &amp;quot;ITEM&amp;quot; then&lt;br /&gt;
                if (Recipes == &amp;quot;&amp;quot;) then Recipes = Recipes .. RecipeName else Recipes = Recipes .. &amp;quot;,&amp;quot; .. RecipeName end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
           &lt;br /&gt;
    return Recipes&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.TagIngredient(TagName)&lt;br /&gt;
    local Recipes = &amp;quot;&amp;quot;&lt;br /&gt;
    for RecipeName,RecipeData in pairs(RecipesData.recipes) do&lt;br /&gt;
        for IngredientName,IngredientData in pairs(RecipeData.Ingredients) do&lt;br /&gt;
            if IngredientName == TagName and IngredientData.Type == &amp;quot;TAG&amp;quot; then&lt;br /&gt;
                if (Recipes == &amp;quot;&amp;quot;) then Recipes = Recipes .. RecipeName else Recipes = Recipes .. &amp;quot;,&amp;quot; .. RecipeName end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return Recipes&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.TagsIngredient(TagsList)&lt;br /&gt;
    local Recipes = &amp;quot;&amp;quot;&lt;br /&gt;
	for Count, TagName in pairs(TagsList) do&lt;br /&gt;
		RecipeList = p.TagIngredient(TagName)&lt;br /&gt;
		if (Recipes == &amp;quot;&amp;quot;) then Recipes = Recipes .. RecipeList else Recipes = Recipes .. &amp;quot;,&amp;quot; .. RecipeList end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	Recipes = Utils.CheckList(Recipes)&lt;br /&gt;
	&lt;br /&gt;
    return Recipes&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.ItemIngredient(ItemName)&lt;br /&gt;
    local Recipes = &amp;quot;&amp;quot;&lt;br /&gt;
    for RecipeName,RecipeData in pairs(RecipesData.recipes) do&lt;br /&gt;
        for IngredientName,IngredientData in pairs(RecipeData.Ingredients) do&lt;br /&gt;
            if IngredientName == ItemName and IngredientData.Type == &amp;quot;ITEM&amp;quot; then&lt;br /&gt;
                if (Recipes == &amp;quot;&amp;quot;) then Recipes = Recipes .. RecipeName else Recipes = Recipes .. &amp;quot;,&amp;quot; .. RecipeName end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return Recipes&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.CraftTable(RecipeList)&lt;br /&gt;
    local CraftTable = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    if (RecipeList ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
        CraftTable = CraftTable .. &amp;#039;&amp;lt;table class=&amp;quot;table table-striped table-bordered sortable&amp;quot;&amp;gt;&amp;lt;tr class=&amp;quot;thead-dark&amp;quot;&amp;gt;&amp;#039;;&lt;br /&gt;
        CraftTable = CraftTable .. &amp;#039;&amp;lt;th&amp;gt;&amp;#039; .. Utils.Translate(&amp;quot;Crafting Table&amp;quot;) .. &amp;#039;&amp;lt;/th&amp;gt;&amp;lt;th class=&amp;quot;unsortable&amp;quot;&amp;gt;&amp;#039; .. Utils.Translate(&amp;quot;Products&amp;quot;) .. &amp;#039;&amp;lt;/th&amp;gt;&amp;lt;th class=&amp;quot;unsortable&amp;quot;&amp;gt;&amp;#039; .. Utils.Translate(&amp;quot;Ingredients&amp;quot;) .. &amp;#039;&amp;lt;/th&amp;gt;&amp;lt;th data-sort-type=&amp;quot;mm:ss&amp;quot;&amp;gt;&amp;#039; .. Utils.Translate(&amp;quot;Craft time&amp;quot;) .. &amp;#039;&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;&amp;#039; .. Utils.Translate(&amp;quot;Labor&amp;quot;) .. &amp;#039;&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;&amp;#039; .. Utils.Translate(&amp;quot;Skill Requirements&amp;quot;) .. &amp;#039;&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;&amp;#039; .. Utils.Translate(&amp;quot;Experience&amp;quot;) .. &amp;#039;&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;#039;;&lt;br /&gt;
        &lt;br /&gt;
        for RecipeName in string.gmatch(RecipeList, &amp;quot;([^,]+)&amp;quot;) do&lt;br /&gt;
            local CraftTableRow = &amp;quot;&amp;quot;;&lt;br /&gt;
            local RecipeData = RecipesData.recipes[RecipeName];&lt;br /&gt;
            local CraftTableData = ItemsData.items[RecipeData.CraftingTables]&lt;br /&gt;
            CraftTableRow = &amp;quot;&amp;lt;td&amp;gt;&amp;quot; .. IconUtils.main{ name = CraftTableData.Name[Lang], id = CraftTableData.ID, size = 48, style = 2, link = CraftTableData.Name[Lang] } .. &amp;quot;&amp;lt;/td&amp;gt;&amp;quot;;&lt;br /&gt;
            &lt;br /&gt;
            local RecipeProducts = &amp;quot;&amp;quot;;&lt;br /&gt;
            for ProductName,ProductData in pairs(RecipeData.Products) do&lt;br /&gt;
            	local Item = ItemsData.items[ProductName]&lt;br /&gt;
            	if ProductData.IsStatic == &amp;#039;True&amp;#039; then ItemBorder = &amp;#039;yellow&amp;#039; else ItemBorder = &amp;#039;green&amp;#039; end&lt;br /&gt;
                RecipeProducts = RecipeProducts .. &amp;#039;&amp;lt;span style=&amp;quot;display: inline-block;&amp;quot;&amp;gt;&amp;#039; .. IconUtils.main{ name = Item.Name[Lang], id = Item.ID, size = 48, style = 5, link = Item.Name[Lang], border = ItemBorder, count = ProductData.Quantity } .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
            end&lt;br /&gt;
            CraftTableRow = CraftTableRow .. &amp;quot;&amp;lt;td&amp;gt;&amp;quot; .. RecipeProducts .. &amp;quot;&amp;lt;/td&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            local RecipeIngredients = &amp;quot;&amp;quot;;&lt;br /&gt;
            local TagString = Utils.Translate(&amp;quot;{0} Tag&amp;quot;);&lt;br /&gt;
            for IngredientName,IngredientData in pairs(RecipeData.Ingredients) do&lt;br /&gt;
            	if IngredientData.IsStatic == &amp;#039;True&amp;#039; then ItemBorder = &amp;#039;yellow&amp;#039; else ItemBorder = &amp;#039;green&amp;#039; end&lt;br /&gt;
            	if (IngredientData[&amp;#039;Type&amp;#039;] == &amp;quot;TAG&amp;quot;) then local Tag = TagsData.tags[IngredientName]; local TagLink = Utils.VSTranslate(TagString,Tag.Name[Lang]); RecipeIngredients = RecipeIngredients .. &amp;#039;&amp;lt;span style=&amp;quot;display: inline-block;&amp;quot;&amp;gt;&amp;#039; .. IconUtils.main{ name = Tag.Name[Lang], id = Tag.ID, size = 48, style = 5, link = TagLink, border = ItemBorder, count = IngredientData.Quantity } .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;; &lt;br /&gt;
            	else  local Item = ItemsData.items[IngredientName]; RecipeIngredients = RecipeIngredients .. &amp;#039;&amp;lt;span style=&amp;quot;display: inline-block;&amp;quot;&amp;gt;&amp;#039; .. IconUtils.main{ name = Item.Name[Lang], id = Item.ID, size = 48, style = 5, link = Item.Name[Lang], border = ItemBorder, count = IngredientData.Quantity } .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
            	end&lt;br /&gt;
            	&lt;br /&gt;
            end&lt;br /&gt;
            if (RecipeData.RequiresStrangeBlueprint == &amp;quot;True&amp;quot;) then RecipeIngredients = RecipeIngredients .. &amp;#039;&amp;lt;span style=&amp;quot;display: inline-block;&amp;quot;&amp;gt;&amp;#039; .. IconUtils.main{ name = &amp;quot;Blueprint&amp;quot;, id = &amp;quot;BlueprintItem&amp;quot;, size = 48, style = 6, link = &amp;quot;Marketplace&amp;quot;} .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;; end&lt;br /&gt;
            CraftTableRow = CraftTableRow .. &amp;quot;&amp;lt;td&amp;gt;&amp;quot; .. RecipeIngredients .. &amp;quot;&amp;lt;/td&amp;gt;&amp;quot;;&lt;br /&gt;
            local CraftTime = tonumber(RecipeData.CraftTime)&lt;br /&gt;
			CraftTableRow = CraftTableRow .. &amp;quot;&amp;lt;td&amp;gt;&amp;lt;span&amp;gt;&amp;quot; .. p.CraftTime(CraftTime) .. &amp;quot;&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;;&lt;br /&gt;
			CraftTableRow = CraftTableRow .. &amp;quot;&amp;lt;td&amp;gt;&amp;lt;span&amp;gt;&amp;quot; .. RecipeData.LaborInCalories .. &amp;quot;&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
			CraftTableRow = CraftTableRow .. &amp;quot;&amp;lt;td&amp;gt;&amp;quot; .. p.RecipeRequiredSkill(RecipeData.RequiredSkill) .. &amp;quot;&amp;lt;/td&amp;gt;&amp;quot;;&lt;br /&gt;
			CraftTableRow = CraftTableRow .. &amp;quot;&amp;lt;td&amp;gt;&amp;lt;span&amp;gt;&amp;quot; .. RecipeData.ExperienceOnCraft .. &amp;quot;&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            CraftTable = CraftTable .. &amp;quot;&amp;lt;tr&amp;gt;&amp;quot; ..CraftTableRow .. &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;;&lt;br /&gt;
        end&lt;br /&gt;
        CraftTable = CraftTable .. &amp;quot;&amp;lt;/table&amp;gt;&amp;quot;;  &lt;br /&gt;
    end&lt;br /&gt;
    return CraftTable&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.CraftTime(TimeInSeconds)&lt;br /&gt;
    local CraftTime = &amp;quot;&amp;quot;;&lt;br /&gt;
    local Minutes = 0;&lt;br /&gt;
    local Seconds = 0;&lt;br /&gt;
    if (TimeInSeconds &amp;gt;= 60) then Minutes = math.floor(TimeInSeconds / 60); Seconds = TimeInSeconds - Minutes * 60; else Seconds = TimeInSeconds; end&lt;br /&gt;
    if (Minutes &amp;lt;10) then CraftTime = &amp;quot;0&amp;quot; .. Minutes .. &amp;quot;:&amp;quot; else CraftTime = Minutes .. &amp;quot;:&amp;quot; end&lt;br /&gt;
    if (Seconds &amp;lt; 10) then CraftTime = CraftTime .. &amp;quot;0&amp;quot; end&lt;br /&gt;
    CraftTime = &amp;quot;00:&amp;quot; .. CraftTime .. Seconds;&lt;br /&gt;
    return CraftTime&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.RecipeRequiredSkill(SkillData)&lt;br /&gt;
	local SkillCell = &amp;quot;&amp;quot;&lt;br /&gt;
	local SkillID = SkillData[1]&lt;br /&gt;
	local SkillLevel = SkillData[2]&lt;br /&gt;
	if ((SkillID == &amp;quot;&amp;quot;) or (SkillID == &amp;quot;nil&amp;quot;)) then SkillName = &amp;#039;None&amp;#039; else SkillName = Utils.SkillSearchByID(SkillID) end&lt;br /&gt;
	if (SkillName == &amp;quot;None&amp;quot;) then SkillCell = IconUtils.main{ name = Utils.Translate(&amp;quot;None&amp;quot;), id = &amp;#039;NoSkillLabor&amp;#039;, size = 48, style = 2 } else SkillCell = IconUtils.main{ name = SkillsData.skills[SkillName].Name[Lang], id = SkillsData.skills[SkillName].SkillID, size = 48, style = 2, link = SkillsData.skills[SkillName].Name[Lang]} .. &amp;quot; &amp;quot; .. SkillLevel end&lt;br /&gt;
	&lt;br /&gt;
	return SkillCell&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.CraftingTableRecipes(ItemName)&lt;br /&gt;
    local Recipes = &amp;quot;&amp;quot;&lt;br /&gt;
    for RecipeName,RecipeData in pairs(RecipesData.recipes) do&lt;br /&gt;
            if RecipeData.CraftingTables == ItemName then&lt;br /&gt;
                if (Recipes == &amp;quot;&amp;quot;) then Recipes = Recipes .. RecipeName else Recipes = Recipes .. &amp;quot;,&amp;quot; .. RecipeName end&lt;br /&gt;
            end&lt;br /&gt;
    end&lt;br /&gt;
           &lt;br /&gt;
    return Recipes&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>StalEF</name></author>
	</entry>
</feed>