|
@@ -128,14 +128,6 @@ minetest.register_tool("runes:pick", {
|
|
|
groups = {pickaxe = 1, disable_repair = 1},
|
|
|
})
|
|
|
|
|
|
-local spread_function
|
|
|
-for _, ABM in next, minetest.registered_abms do
|
|
|
- if ABM.mod_origin == "default" and ABM.label == "Grass spread" then
|
|
|
- spread_function = ABM.action
|
|
|
- end
|
|
|
-end
|
|
|
-
|
|
|
minetest.register_tool("runes:shovel", {
|
|
|
description = S("Runic Shovel"),
|
|
|
inventory_image = "runes.tool_aura_stone_shovel.png",
|
|
@@ -279,6 +271,24 @@ minetest.register_tool("runes:sword", {
|
|
|
end,
|
|
|
})
|
|
|
|
|
|
+-- Used by the Spreader buff.
|
|
|
+local spread_function
|
|
|
+for _, ABM in next, minetest.registered_abms do
|
|
|
+ if ABM.mod_origin == "default" and ABM.label == "Grass spread" then
|
|
|
+ spread_function = ABM.action
|
|
|
+ end
|
|
|
+end
|
|
|
+
|
|
|
+-- Used by the Mosser buff
|
|
|
+local mossed = {
|
|
|
+ ["default:cobble"] = "default:mossycobble",
|
|
|
+ ["stairs:slab_cobble"] = "stairs:slab_mossycobble",
|
|
|
+ ["stairs:stair_cobble"] = "stairs:stair_mossycobble",
|
|
|
+ ["stairs:stair_inner_cobble"] = "stairs:stair_inner_mossycobble",
|
|
|
+ ["stairs:stair_outer_cobble"] = "stairs:stair_outer_mossycobble",
|
|
|
+ ["walls:cobble"] = "walls:mossycobble",
|
|
|
+}
|
|
|
+
|
|
|
farming.register_hoe("runes:hoe", {
|
|
|
description = S("Runic Hoe"),
|
|
|
inventory_image = "runes.tool_aura_stone_hoe.png",
|
|
@@ -290,13 +300,36 @@ minetest.override_item("runes:hoe", {
|
|
|
wield_overlay = "farming_tool_stonehoe.png",
|
|
|
on_place = function(itemstack, user, pointed_thing)
|
|
|
local target = minetest.get_node(pointed_thing.under)
|
|
|
- if target.name == "default:dirt" and itemstack:get_meta():get("spreader") then
|
|
|
- spread_function(pointed_thing.under, target)
|
|
|
- itemstack:add_wear(math.floor(65536/810))
|
|
|
- return itemstack
|
|
|
- elseif minetest.registered_nodes[target.name]
|
|
|
+ if minetest.registered_nodes[target.name]
|
|
|
and minetest.registered_nodes[target.name].on_rightclick then
|
|
|
return minetest.registered_nodes[target.name].on_rightclick(pointed_thing.under, target, user, itemstack, pointed_thing)
|
|
|
+ elseif not minetest.is_protected(pointed_thing.under, user:get_player_name()) then
|
|
|
+ local wear_to_add
|
|
|
+ local meta = itemstack:get_meta()
|
|
|
+ if meta:get("durable") then
|
|
|
+ wear_to_add = math.floor(65536/540)
|
|
|
+ else
|
|
|
+ wear_to_add = math.floor(65536/810)
|
|
|
+ end
|
|
|
+ if target.name == "default:dirt" and meta:get("spreader") then
|
|
|
+ spread_function(pointed_thing.under, target)
|
|
|
+ itemstack:add_wear(wear_to_add)
|
|
|
+ return itemstack
|
|
|
+ elseif target.name == "default:stone" and meta:get("breaker") then
|
|
|
+ minetest.swap_node(pointed_thing.under, {
|
|
|
+ name = "default:cobble",
|
|
|
+ })
|
|
|
+ itemstack:add_wear(wear_to_add)
|
|
|
+ return itemstack
|
|
|
+ elseif mossed[target.name] and meta:get("mosser") then
|
|
|
+ minetest.swap_node(pointed_thing.under, {
|
|
|
+ name = mossed[target.name],
|
|
|
+ param1 = target.param1,
|
|
|
+ param2 = target.param2,
|
|
|
+ })
|
|
|
+ itemstack:add_wear(wear_to_add)
|
|
|
+ return itemstack
|
|
|
+ end
|
|
|
end
|
|
|
end,
|
|
|
})
|