From 8ce1d40e57c93aa089acb2b8c28b0f248b24da4b Mon Sep 17 00:00:00 2001 From: ademant Date: Tue, 15 Jan 2019 08:59:50 +0100 Subject: [PATCH] api with hooks for harvesting --- actions_register.lua | 5 +++-- api.lua | 16 ++++++++++++++++ config.lua | 1 + mod.conf | 2 +- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/actions_register.lua b/actions_register.lua index f676f17..364fbf6 100644 --- a/actions_register.lua +++ b/actions_register.lua @@ -128,7 +128,8 @@ end -- function for digging crops -- if dug with scythe by change you harvest more -farming.dig_harvest = function(pos, node, digger) +--farming.dig_harvest = function(pos, node, digger) +farming.register_on_harvest(function(pos, node, digger) local starttime=os.clock() local def = minetest.registered_nodes[node.name] @@ -145,7 +146,7 @@ farming.dig_harvest = function(pos, node, digger) -- print(dump(def.drop)) minetest.node_dig(pos,node,digger) --table.insert(farming.time_digharvest,1000*(os.clock()-starttime)) -end +end) -- timer function for infected plants -- the step of plant is reduced till zero then the plant dies diff --git a/api.lua b/api.lua index 3d91fca..b435b70 100644 --- a/api.lua +++ b/api.lua @@ -1,3 +1,19 @@ farming.add_soil=function(soil2add) table.insert(farming.change_soil,soil2add) end + +function farming.register_on_harvest(spec) + -- Add function + if #farming.registered_on_harvest == 0 then + farming.registered_on_harvest=spec + else + table.insert(farming.registered_on_harvest,1,spec) + end +end + +function farming.on_harvest(pos,node,digger) + for _, func in ipairs(farming.registered_on_harvest) do + itemstack = func(pos,node,digger) or itemstack + end + return itemstack +end diff --git a/config.lua b/config.lua index a2fe07b..5f7bed6 100644 --- a/config.lua +++ b/config.lua @@ -28,6 +28,7 @@ farming.health_threshold = tonumber(minetest.settings:get("farming.health_thres farming.factor_regrow = tonumber(minetest.settings:get("farming.factor_regrow")) or 2 farming.abm_planting = tonumber(minetest.settings:get("farming.abm_planting")) or 30 farming.abm_planting_change = tonumber(minetest.settings:get("farming.abm_planting_change")) or 750 +farming.registered_on_harvest={} -- node type, where grain can be randomly found farming.change_soil = {} diff --git a/mod.conf b/mod.conf index a71b09d..9627d27 100644 --- a/mod.conf +++ b/mod.conf @@ -2,7 +2,7 @@ name = farming title = Farming author = ademant description = An enhanced farming mod with spreding crops which wilt if not harvested. -optional_depends = intllib,default,wool,vessels,bucket,thirsty +optional_depends = intllib,default,wool,vessels,bucket,thirsty,ethereal depends = basic_functions license = MIT version = 1.0.0