craft emc work except for groups

This commit is contained in:
yamanq 2015-08-08 12:51:21 -04:00
parent 8caab933f6
commit dd3f8dfff0

@ -41,7 +41,10 @@ local emcs = {
mese_crystal = 425, mese_crystal = 425,
-- Precise Value: 848 -- Precise Value: 848
diamond = 976, diamond = 976,
obsidian =
-- REDO VALUE HERE
obsidian = 0,
nyancat = 3786750, nyancat = 3786750,
nyancat_rainbow = 3786750, nyancat_rainbow = 3786750,
-- Exceptions -- -- Exceptions --
@ -52,7 +55,9 @@ local emcs = {
}, },
["bucket"] = { ["bucket"] = {
bucket_water = 275, bucket_water = 275,
bucket_lava =
-- REDO VALUE HERE
bucket_lava = 0,
}, },
["farming"] = { ["farming"] = {
seed_wheat = 20, seed_wheat = 20,
@ -72,6 +77,15 @@ local emcs = {
}, },
} }
-- Add all items to a table.
local registered_items = {}
local local_emcs = {}
for itemname, value in pairs(minetest.registered_items) do
table.insert(registered_items, itemname)
end
-- Add EMC values to raw materials.
for modname, itemlist in pairs(emcs) do for modname, itemlist in pairs(emcs) do
for itemname, emcvalue in pairs(itemlist) do for itemname, emcvalue in pairs(itemlist) do
minetest.override_item(modname..":"..itemname, { minetest.override_item(modname..":"..itemname, {
@ -80,3 +94,64 @@ for modname, itemlist in pairs(emcs) do
}) })
end end
end end
for i=1,10 do
for _, itemname in pairs(registered_items) do
if itemname ~= ""
and itemname ~= ":"
and minetest.get_all_craft_recipes(itemname) ~= nil
and minetest.registered_items[itemname]
and minetest.registered_items[itemname].emc == nil then
for _, recipe in pairs(minetest.get_all_craft_recipes(itemname)) do
local emcvalue = 0
if recipe.type == "cooking" and minetest.registered_items[recipe.items[1].emc] ~= nil then
emcvalue = minetest.registered_items[recipe.items[1]].emc * 1.5
-- table.insert(exceptions, itemname)
else
for _,item in pairs(recipe.items) do
if string.sub(item,1,string.len("group:"))=="group:" then
local current_emc = 0
for _,definition in pairs(minetest.registered_nodes) do
if definition.groups[item] and definition.emc ~= nil then
if definition.emc < current_emc then
current_emc = definition.emc
elseif current_emc == 0 then
current_emc = definition.emc
end
end
end
emcvalue = current_emc
elseif minetest.registered_items[item] and minetest.registered_items[item].emc then
emcvalue = emcvalue + minetest.registered_items[item].emc
else
emcvalue = nil
break
end
end
output_number = recipe.output:split(" ")
local craft_number
if output_number[2] then
craft_number = tonumber(output_number[2])
else
craft_number = 1
end
if emcvalue ~= nil then
emcvalue = emcvalue / craft_number
end
end
local_emcs[itemname] = emcvalue
end
end
end
for item, value in pairs(local_emcs) do
minetest.override_item(item, {
description = minetest.registered_items[item].description.."\nEMC Value: "..value,
emc = value,
})
end
local_emcs = {}
end