mirror of
https://github.com/minetest-mods/moreores.git
synced 2025-07-03 08:30:31 +02:00
Use farming mod's API to register hoes
This commit is contained in:
@ -1,2 +1,3 @@
|
|||||||
default
|
default
|
||||||
|
farming?
|
||||||
mg?
|
mg?
|
||||||
|
62
init.lua
62
init.lua
@ -37,37 +37,6 @@ end
|
|||||||
local default_stone_sounds = default.node_sound_stone_defaults()
|
local default_stone_sounds = default.node_sound_stone_defaults()
|
||||||
local default_metal_sounds = default.node_sound_metal_defaults()
|
local default_metal_sounds = default.node_sound_metal_defaults()
|
||||||
|
|
||||||
local function hoe_on_use(itemstack, user, pointed_thing, uses)
|
|
||||||
local pt = pointed_thing
|
|
||||||
-- Check if pointing at a node:
|
|
||||||
if not pt then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
if pt.type ~= "node" then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local under = minetest.get_node(pt.under)
|
|
||||||
local pos = {x = pt.under.x, y = pt.under.y + 1, z = pt.under.z}
|
|
||||||
local above = minetest.get_node(pos)
|
|
||||||
|
|
||||||
-- Return if any of the nodes is not registered:
|
|
||||||
if not minetest.registered_nodes[under.name] then return end
|
|
||||||
if not minetest.registered_nodes[above.name] then return end
|
|
||||||
|
|
||||||
-- Check if the node above the pointed thing is air:
|
|
||||||
if above.name ~= "air" then return end
|
|
||||||
|
|
||||||
-- Check if pointing at dirt:
|
|
||||||
if minetest.get_item_group(under.name, "soil") ~= 1 then return end
|
|
||||||
|
|
||||||
-- Turn the node into soil, wear out item and play sound:
|
|
||||||
minetest.set_node(pt.under, {name ="farming:soil"})
|
|
||||||
minetest.sound_play("default_dig_crumbly", {pos = pt.under, gain = 0.5})
|
|
||||||
itemstack:add_wear(65535 / (uses - 1))
|
|
||||||
return itemstack
|
|
||||||
end
|
|
||||||
|
|
||||||
local function get_recipe(c, name)
|
local function get_recipe(c, name)
|
||||||
if name == "sword" then
|
if name == "sword" then
|
||||||
return {{c}, {c}, {"group:stick"}}
|
return {{c}, {c}, {"group:stick"}}
|
||||||
@ -189,6 +158,26 @@ local function add_ore(modname, description, mineral_name, oredef)
|
|||||||
sound = {breaks = "default_tool_breaks"},
|
sound = {breaks = "default_tool_breaks"},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local fulltool_name = tool_base .. tool_name .. tool_post
|
||||||
|
|
||||||
|
if tool_name == "hoe" and minetest.get_modpath("farming") then
|
||||||
|
local uses = tooldef.uses
|
||||||
|
tooldef.uses = nil
|
||||||
|
|
||||||
|
tdef.max_uses = uses
|
||||||
|
tdef.description = S("%s Hoe"):format(S(description))
|
||||||
|
|
||||||
|
farming.register_hoe(fulltool_name, tdef)
|
||||||
|
minetest.register_alias(tool_name .. tool_post, fulltool_name)
|
||||||
|
|
||||||
|
if oredef.makes.ingot then
|
||||||
|
minetest.register_craft({
|
||||||
|
output = fulltool_name,
|
||||||
|
recipe = get_recipe(ingot, tool_name)
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
else
|
||||||
if tool_name == "sword" then
|
if tool_name == "sword" then
|
||||||
tdef.tool_capabilities.full_punch_interval = oredef.full_punch_interval
|
tdef.tool_capabilities.full_punch_interval = oredef.full_punch_interval
|
||||||
tdef.tool_capabilities.damage_groups = oredef.damage_groups
|
tdef.tool_capabilities.damage_groups = oredef.damage_groups
|
||||||
@ -214,16 +203,6 @@ local function add_ore(modname, description, mineral_name, oredef)
|
|||||||
tdef.wield_image = toolimg_base .. tool_name .. ".png^[transformR90"
|
tdef.wield_image = toolimg_base .. tool_name .. ".png^[transformR90"
|
||||||
end
|
end
|
||||||
|
|
||||||
if tool_name == "hoe" then
|
|
||||||
tdef.description = S("%s Hoe"):format(S(description))
|
|
||||||
local uses = tooldef.uses
|
|
||||||
tooldef.uses = nil
|
|
||||||
tdef.on_use = function(itemstack, user, pointed_thing)
|
|
||||||
return hoe_on_use(itemstack, user, pointed_thing, uses)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local fulltool_name = tool_base .. tool_name .. tool_post
|
|
||||||
minetest.register_tool(fulltool_name, tdef)
|
minetest.register_tool(fulltool_name, tdef)
|
||||||
minetest.register_alias(tool_name .. tool_post, fulltool_name)
|
minetest.register_alias(tool_name .. tool_post, fulltool_name)
|
||||||
if oredef.makes.ingot then
|
if oredef.makes.ingot then
|
||||||
@ -233,6 +212,7 @@ local function add_ore(modname, description, mineral_name, oredef)
|
|||||||
})
|
})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Add everything:
|
-- Add everything:
|
||||||
|
Reference in New Issue
Block a user