Talk:Games/Minetest Game/Smelting
(Redirected from Talk:Smelting)
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Semi-automatic generation of fuel table
Since updating the fuel table is a tedious and error-prone task, I have written a Lua script to semi-automatically generate the table.
Put the following code into a mod called “wikifuel”, enable it in Minetest Game with no other mods enabled and use the /wikifuel
command. The mod will then output a wiki table into fuel_recipes.txt
in the world directory. This wiki table can be pasted into the the article.
The wiki table you get will still need manual updates:
- Links need to be corrected
- Images need to be corrected
- Replacements must be added by hand (e.g. Lava Bucket turning into Empty Bucket)
- Groups must be added by hand
-- TODO: Add support for replacements -- TODO: Add support for groups -- TODO: Make item count sortable local function do_out(playername, param) local outstring = "" outstring = [=[ {| class="wikitable collapsible sortable" ! scope="row" class="unsortable" | ! scope="row" | Block ! scope="row" | Burning time in seconds ! scope="row" class="unsortable" | Items smelted per fuel<ref>Assuming a smelting time of 3 seconds</ref> ! scope="row" class="unsortable" | ! scope="row" | Remainder |- ]=] local fuelitems = {} for k,v in pairs(minetest.registered_items) do local f = minetest.get_craft_result({method="fuel", items = {k}}) if f~=nil and f.time > 0 then table.insert(fuelitems, {burntime=f.time, item=k}) end end table.sort(fuelitems, function(a,b) return a.burntime > b.burntime end) for i=1,#fuelitems do local itemname = minetest.registered_items[fuelitems[i].item].description if itemname == nil then itemname = "UNKNOWN ITEM" end local burntime = fuelitems[i].burntime local iwhole = math.floor(burntime/3) local iremainder = math.fmod(burntime, 3) local itemcount = "" if iremainder == 0 then itemcount = tostring(iwhole) else if iwhole >= 1 then itemcount = tostring(iwhole) itemcount = itemcount .. '' end if iremainder == 2 then itemcount = itemcount .. "⅔" elseif iremainder == 1 then itemcount = itemcount .. "⅓" end end outstring = outstring .. string.format( [=[ | [[File:%s.png|link=%s|32px]] | [[%s]] | %d | %s | | ''Nothing'' |- ]=], itemname, itemname, itemname, burntime, itemcount) end outstring = outstring .. "|}\n<references/>" local filename = minetest.get_worldpath().."/fuel_recipes.txt" local file = io.open(filename, "w") file:write(outstring) file:close() minetest.chat_send_player(playername, "Fuel items written to: "..filename) minetest.log("action", "[wikifuel] Fuel items were written into file: "..filename) end minetest.register_chatcommand("wikifuel", { description = "Writes a list of all available fuels in MediaWiki syntax", params = "", privs = {server=true}, func = do_out, })