<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.play.eco/fr/index.php?action=history&amp;feed=atom&amp;title=Module%3ARecipeUtils</id>
	<title>Module:RecipeUtils - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.play.eco/fr/index.php?action=history&amp;feed=atom&amp;title=Module%3ARecipeUtils"/>
	<link rel="alternate" type="text/html" href="https://wiki.play.eco/fr/index.php?title=Module:RecipeUtils&amp;action=history"/>
	<updated>2026-06-04T00:38:32Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.play.eco/fr/index.php?title=Module:RecipeUtils&amp;diff=2277&amp;oldid=prev</id>
		<title>BuloBon le 25 février 2026 à 19:53</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/fr/index.php?title=Module:RecipeUtils&amp;diff=2277&amp;oldid=prev"/>
		<updated>2026-02-25T19:53:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wiki.play.eco/fr/index.php?title=Module:RecipeUtils&amp;amp;diff=2277&amp;amp;oldid=2276&quot;&gt;Voir les modifications&lt;/a&gt;</summary>
		<author><name>BuloBon</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/fr/index.php?title=Module:RecipeUtils&amp;diff=2276&amp;oldid=prev</id>
		<title>BuloBon le 25 février 2026 à 19:52</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/fr/index.php?title=Module:RecipeUtils&amp;diff=2276&amp;oldid=prev"/>
		<updated>2026-02-25T19:52:25Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wiki.play.eco/fr/index.php?title=Module:RecipeUtils&amp;amp;diff=2276&amp;amp;oldid=2275&quot;&gt;Voir les modifications&lt;/a&gt;</summary>
		<author><name>BuloBon</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/fr/index.php?title=Module:RecipeUtils&amp;diff=2275&amp;oldid=prev</id>
		<title>BuloBon le 25 février 2026 à 19:51</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/fr/index.php?title=Module:RecipeUtils&amp;diff=2275&amp;oldid=prev"/>
		<updated>2026-02-25T19:51:23Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wiki.play.eco/fr/index.php?title=Module:RecipeUtils&amp;amp;diff=2275&amp;amp;oldid=482&quot;&gt;Voir les modifications&lt;/a&gt;</summary>
		<author><name>BuloBon</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/fr/index.php?title=Module:RecipeUtils&amp;diff=482&amp;oldid=prev</id>
		<title>BuloBon : Page créée avec « local Utils = require(&#039;Module:Utils&#039;) local IconUtils = require(&#039;Module:IconUtils&#039;) local RecipesData = require(&#039;Module:RecipeData&#039;) local ItemsData = require(&#039;Module:ItemData&#039;) local TagsData = require(&#039;Module:TagData&#039;) local SkillsData = require(&#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         for ProductName,Product... »</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/fr/index.php?title=Module:RecipeUtils&amp;diff=482&amp;oldid=prev"/>
		<updated>2025-11-16T20:18:36Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « local Utils = require(&amp;#039;Module:Utils&amp;#039;) local IconUtils = require(&amp;#039;Module:IconUtils&amp;#039;) local RecipesData = require(&amp;#039;Module:RecipeData&amp;#039;) local ItemsData = require(&amp;#039;Module:ItemData&amp;#039;) local TagsData = require(&amp;#039;Module:TagData&amp;#039;) local SkillsData = require(&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         for ProductName,Product... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&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 = require(&amp;#039;Module:RecipeData&amp;#039;)&lt;br /&gt;
local ItemsData = require(&amp;#039;Module:ItemData&amp;#039;)&lt;br /&gt;
local TagsData = require(&amp;#039;Module:TagData&amp;#039;)&lt;br /&gt;
local SkillsData = require(&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 = 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.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 = 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 = 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 = 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;quot;Poste de Fabrication&amp;quot;) .. &amp;#039;&amp;lt;/th&amp;gt;&amp;#039;&lt;br /&gt;
        CraftTable = CraftTable .. &amp;#039;&amp;lt;th class=&amp;quot;unsortable&amp;quot;&amp;gt;&amp;#039; .. Utils.Translate(&amp;quot;Products&amp;quot;, &amp;quot;Produits&amp;quot;) .. &amp;#039;&amp;lt;/th&amp;gt;&amp;#039;&lt;br /&gt;
        CraftTable = CraftTable .. &amp;#039;&amp;lt;th class=&amp;quot;unsortable&amp;quot;&amp;gt;&amp;#039; .. Utils.Translate(&amp;quot;Ingredients&amp;quot;, &amp;quot;Ingrédients&amp;quot;) .. &amp;#039;&amp;lt;/th&amp;gt;&amp;#039;&lt;br /&gt;
        CraftTable = CraftTable .. &amp;#039;&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;quot;Temps de fabrication&amp;quot;) .. &amp;#039;&amp;lt;/th&amp;gt;&amp;#039;&lt;br /&gt;
        CraftTable = CraftTable .. &amp;#039;&amp;lt;th&amp;gt;&amp;#039; .. Utils.Translate(&amp;quot;Labor&amp;quot;, &amp;quot;Calories&amp;quot;) .. &amp;#039;&amp;lt;/th&amp;gt;&amp;#039;&lt;br /&gt;
        CraftTable = CraftTable .. &amp;#039;&amp;lt;th&amp;gt;&amp;#039; .. Utils.Translate(&amp;quot;Skill Requirements&amp;quot;, &amp;quot;Compétence requise&amp;quot;) .. &amp;#039;&amp;lt;/th&amp;gt;&amp;#039;&lt;br /&gt;
        CraftTable = CraftTable .. &amp;#039;&amp;lt;th&amp;gt;&amp;#039; .. Utils.Translate(&amp;quot;Experience&amp;quot;, &amp;quot;Expérience&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;
&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;
            -- Produits&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;
                RecipeProducts = RecipeProducts .. &amp;quot;&amp;lt;span&amp;gt;&amp;quot; .. IconUtils.main{ name = Item.Name[Lang], id = Item.ID, size = 48, style = 2, link = Item.Name[Lang] } .. &amp;quot;&amp;lt;/span&amp;gt;&amp;quot;;&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;
            -- Ingrédients&lt;br /&gt;
            local RecipeIngredients = &amp;quot;&amp;quot;;&lt;br /&gt;
            local TagString = Utils.Translate(&amp;quot;{0} Tag&amp;quot;, &amp;quot;Étiquette {0}&amp;quot;)&lt;br /&gt;
            for IngredientName,IngredientData in pairs(RecipeData.Ingredients) do&lt;br /&gt;
            	if (IngredientData.Type == &amp;quot;TAG&amp;quot;) then&lt;br /&gt;
            	    local Tag = TagsData.tags[IngredientName]&lt;br /&gt;
            	    local TagLink = Utils.VSTranslate(TagString, Tag.Name[Lang])&lt;br /&gt;
            	    RecipeIngredients = RecipeIngredients .. &amp;quot;&amp;lt;span&amp;gt;&amp;quot; .. IconUtils.main{ name = Tag.Name[Lang], id = Tag.ID, size = 48, style = 2, link = TagLink } .. &amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
            	else&lt;br /&gt;
            	    local Item = ItemsData.items[IngredientName]&lt;br /&gt;
            	    RecipeIngredients = RecipeIngredients .. &amp;quot;&amp;lt;span&amp;gt;&amp;quot; .. IconUtils.main{ name = Item.Name[Lang], id = Item.ID, size = 48, style = 2, link = Item.Name[Lang] } .. &amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
            	end&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            if (RecipeData.RequiresStrangeBlueprint == &amp;quot;True&amp;quot;) then&lt;br /&gt;
                RecipeIngredients = RecipeIngredients .. &amp;quot;&amp;lt;span&amp;gt;&amp;quot; .. IconUtils.main{ name = &amp;quot;Plan secret&amp;quot;, id = &amp;quot;BlueprintItem&amp;quot;, size = 48, style = 3, link = &amp;quot;Marketplace&amp;quot;} .. &amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
            end&lt;br /&gt;
&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;
&lt;br /&gt;
            -- Temps / Calories / compétence / XP&lt;br /&gt;
            CraftTableRow = CraftTableRow .. &amp;quot;&amp;lt;td&amp;gt;&amp;lt;span&amp;gt;&amp;quot; .. p.CraftTime(tonumber(RecipeData.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;
            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 Minutes = math.floor(TimeInSeconds / 60)&lt;br /&gt;
    local Seconds = TimeInSeconds % 60&lt;br /&gt;
    return string.format(&amp;quot;00:%02d:%02d&amp;quot;, Minutes, Seconds)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.RecipeRequiredSkill(SkillData)&lt;br /&gt;
	local SkillID = SkillData[1]&lt;br /&gt;
	local SkillLevel = SkillData[2]&lt;br /&gt;
&lt;br /&gt;
	local SkillName = (SkillID == &amp;quot;&amp;quot; or SkillID == &amp;quot;nil&amp;quot;) and &amp;quot;None&amp;quot; or Utils.SkillSearchByID(SkillID)&lt;br /&gt;
&lt;br /&gt;
	if (SkillName == &amp;quot;None&amp;quot;) then&lt;br /&gt;
	    return IconUtils.main{ name = Utils.Translate(&amp;quot;None&amp;quot;, &amp;quot;Aucune&amp;quot;), id = &amp;#039;NoSkillLabor&amp;#039;, size = 48, style = 2 }&lt;br /&gt;
	else&lt;br /&gt;
	    local Skill = SkillsData.skills[SkillName]&lt;br /&gt;
	    return IconUtils.main{&lt;br /&gt;
	        name = Skill.Name[Lang],&lt;br /&gt;
	        id = Skill.SkillID,&lt;br /&gt;
	        size = 48,&lt;br /&gt;
	        style = 2,&lt;br /&gt;
	        link = Skill.Name[Lang]&lt;br /&gt;
	    } .. &amp;quot; &amp;quot; .. SkillLevel&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>BuloBon</name></author>
	</entry>
</feed>