diff --git a/enchants.lua b/enchants.lua index 127cae6..aae0af1 100644 --- a/enchants.lua +++ b/enchants.lua @@ -11,6 +11,9 @@ function tool_level_enchanting.set_enchantment(itemstack,enchantment_name,level) local itemdesc = itemdef.original_description or "" itemmeta:set_string(enchantment_name,level) itemmeta:set_string("description", tool_level_enchanting.create_description(itemdesc, dugnodes, itemstack)) + if enchantment_name == "efficiency" then + itemstack = tool_level_enchanting.efficiency_change(itemstack,level) + end return itemstack end @@ -29,8 +32,23 @@ end -- Efficiency -- 10% speed increase each level? --- Max Level 10 - +-- Max Level 5 +function tool_level_enchanting.efficiency_change(itemstack, enchant_level) + local itemmeta = itemstack:get_meta() + local itemdef = itemstack:get_definition() + print(ItemStack("default:pick_diamond"):get_tool_capabilities()) + if itemdef.tool_capabilities then + local speed_multiplier = 1 - (0.1 * tonumber(enchant_level)) + local cap = table.copy(itemdef.tool_capabilities) + for _,c in pairs(cap.groupcaps) do + for i,t in pairs(c.times) do + c.times[i] = t * speed_multiplier --FIXME: add actual + end + end + itemmeta:set_tool_capabilities(cap) + end + return itemstack +end -- Fortune -- 10% Chance per level of doubling ore @@ -56,7 +74,6 @@ end -- This keeps existing handling of node drops local old_handle_node_drops = minetest.handle_node_drops - function minetest.handle_node_drops(pos, drops, digger) if not digger or not digger:is_player() then return old_handle_node_drops(pos, drops, digger) diff --git a/init.lua b/init.lua index 501d6f5..87f6af9 100644 --- a/init.lua +++ b/init.lua @@ -27,7 +27,7 @@ function tool_level_enchanting.get_level(uses) end function tool_level_enchanting.create_description(name, uses, itemstack) - enchantment_string = 'Enchants:' + local enchantment_string = 'Enchants:' if itemstack then local itemmeta = itemstack:get_meta() local unbreaking = tonumber(itemmeta:get_string("unbreaking")) or 0 @@ -85,6 +85,7 @@ function tool_level_enchanting.on_use(itemstack, user, node, digparams) local fortune = tonumber(itemmeta:get_string("fortune")) or 0 local silk_touch = tonumber(itemmeta:get_string("silk_touch")) or 0 local auto_repair = tonumber(itemmeta:get_string("auto_repair")) or 0 + -- Make sure play exists if not pname then return itemstack end @@ -111,7 +112,6 @@ function tool_level_enchanting.on_use(itemstack, user, node, digparams) end function tool_level_enchanting.add_tool(name) - print(name) local desc = ItemStack(name):get_definition().description minetest.override_item(name, { original_description = desc, @@ -121,4 +121,8 @@ function tool_level_enchanting.add_tool(name) end tool_level_enchanting.add_tool("default:pick_wood") +tool_level_enchanting.add_tool("default:pick_stone") +tool_level_enchanting.add_tool("default:pick_steel") +tool_level_enchanting.add_tool("default:pick_bronze") +tool_level_enchanting.add_tool("default:pick_mese") tool_level_enchanting.add_tool("default:pick_diamond") \ No newline at end of file diff --git a/mod.conf b/mod.conf index eaa0128..c50fc9f 100644 --- a/mod.conf +++ b/mod.conf @@ -2,3 +2,4 @@ name = tool_level_enchanting description = Enchant Tools based on how much you use them author = jasonl8446 title = Tool Level Enchanting +depends = default \ No newline at end of file