diff --git a/craft.lua b/craft.lua index 7a21d08..db9bbc5 100644 --- a/craft.lua +++ b/craft.lua @@ -1,8 +1,20 @@ local S = farming.intllib local modname=minetest.get_current_modname() +-- generate "seed" out of harvest and trellis +farming.trellis_seed = function(grain_name) + local mname = grain_name:split(":")[1] + local pname = grain_name:split(":")[2] + minetest.register_craft({ + type = "shapeless", + output = mname..":seed_"..pname.." 1", + recipe = { + modname..":trellis",grain_name + }, + }) +end -- define seed crafting -local function seed_craft(grain_name) +function farming.seed_craft(grain_name) local mname = grain_name:split(":")[1] local pname = grain_name:split(":")[2] @@ -15,16 +27,6 @@ local function seed_craft(grain_name) replacements = {{"group:food_flail", modname..":flail"}, {"group:food_wheat","farming:straw"}}, }) - minetest.register_craft({ - type = "shapeless", - output = mname..":seed_"..pname.." 1", - recipe = { - grain_name, modname..":flail" - }, - replacements = {{"group:food_flail", modname..":flail"}, - {"group:food_wheat","farming:straw"}}, - additional_wear=0.5, - }) minetest.register_craft({ type = "shapeless", output = mname..":seed_"..pname.." 1", @@ -58,9 +60,6 @@ minetest.register_craft({ replacements = {{"group:food_mortar_pestle", modname..":mortar_pestle"}}, }) -seed_craft("farming:wheat") -seed_craft("farming:culturewheat") -seed_craft("farming:barley") roast_seed("farming:seed_barley","farming:seed_barley_roasted") roast_seed("farming:seed_wheat","farming_grain:seed_wheat_roasted") @@ -104,3 +103,14 @@ minetest.register_craftitem("farming:flour", { groups = {food_flour = 1, flammable = 1}, }) +minetest.register_craftitem(modname..":urtica_water",{ + description = "Urtica Water", + inventory_image = "farming_tool_glass_urtica.png", + groups = {desinfect = 1} +}) +minetest.register_craft({ + output=modname..":urtica_water 10", + type = "shapeless", + recipe {"vessels:glass_bottle 10","bucket_water",modname..":urtica"} + replacements = {{"bucket_water", "bucket_empty"}} +}) diff --git a/crops.csv b/crops.csv index e854e7e..b823005 100644 --- a/crops.csv +++ b/crops.csv @@ -1,27 +1,27 @@ -#name,enabled,next_plant,rarety,steps,harvest_max,eat_hp,to_culture,to_dig,has_harvest,on_soil,punchable,infectable,seed_extractable,snappy,temperature_min,temperature_max,humidity_min,humidity_max,elevation_min,elevation_max,light_min,light_max,infect_rate_base,infect_rate_monoculture,spread_rate -default,1,,10,8,2,1,,,,,,,,3,15,50,10,50,0,31000,11,14,1E-05,0.001,0.001 -barley,1,,10,7,2,1,,,1,1,,1,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 -beetroot,1,,10,5,2,2,,1,,1,,,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 -blackberry,1,,10,4,2,1,,,,,1,,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 -blueberry,1,,10,4,2,1,,,,,1,,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 -carrot,1,,10,8,2,2,,1,,1,,,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 -chili,1,,20,8,2,1,,,,,1,,,3,25,50,10,50,50,1000,11,14,1E-05,0.001,0.001 -coffee,1,,20,5,2,1,,,,,1,,,3,25,50,10,50,50,1000,11,14,1E-05,0.001,0.001 -cocoa,1,,20,4,2,1,,,,,1,,,3,25,50,10,50,50,1000,11,14,1E-05,0.001,0.001 -corn,1,,10,8,2,2,,,,1,,1,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 -cotton,1,,10,8,2,2,,,1,1,,1,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 -culturewheat,1,,100,4,2,1,1,,1,1,,1,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 -garlic,,,10,5,2,2,,1,,1,,,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 -hemp,,,10,8,2,2,,,1,1,,1,,3,,50,10,50,0,100,11,14,1E-05,0.001,0.001 -hop,1,,10,7,2,1,,,1,1,1,1,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 -mustard,1,,10,5,2,1,,,1,,,1,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 -potato,1,,10,4,2,2,,,,1,,1,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 -raspberry,1,,10,4,2,1,,,,,1,,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 -rhubarb,1,,10,3,2,2,,1,,1,,,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 -spelt,1,,10,7,2,1,,,1,1,,1,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 -strawberry,1,,10,4,2,1,,,,,1,,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 -tea,,,20,5,2,1,,,,,1,,1,3,25,50,10,50,50,,11,14,1E-05,0.001,0.001 -tobaco,,,10,8,2,2,,,,1,,1,1,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 -tomato,1,,10,8,2,1,,,1,1,1,1,,3,,50,10,50,0,100,11,14,1E-05,0.001,0.001 -urtica,,,10,8,2,1,,,1,,,,,3,15,50,10,50,0,200,11,14,1E-05,0.001,0.01 -wheat,1,culturewheat,10,8,2,1,,,1,1,,1,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 +#name,enabled,next_plant,rarety,steps,harvest_max,eat_hp,to_culture,to_dig,has_harvest,on_soil,punchable,infectable,seed_extractable,use_flail,use_trellis,snappy,temperature_min,temperature_max,humidity_min,humidity_max,elevation_min,elevation_max,light_min,light_max,infect_rate_base,infect_rate_monoculture,spread_rate +default,1,,10,8,2,1,,,,,,,,,,3,15,50,10,50,0,31000,11,14,1E-05,0.001,0.001 +barley,1,,10,7,2,1,,,1,1,,1,,1,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 +beetroot,1,,10,5,2,2,,1,,1,,,,,,3,15,50,10,50,0,100,9,14,1E-05,0.001,0.001 +blackberry,1,,10,4,2,1,,,,,1,,,,,3,15,50,10,50,0,100,9,14,1E-05,0.001,0.001 +blueberry,1,,10,4,2,1,,,,,1,,,,,3,15,50,10,50,0,100,9,14,1E-05,0.001,0.001 +carrot,1,,10,8,2,2,,1,,1,,,,,,3,15,50,10,50,0,100,8,14,1E-05,0.001,0.001 +chili,1,,20,8,2,1,,,,,1,,,,,3,25,50,10,50,50,1000,11,14,1E-05,0.001,0.001 +coffee,1,,20,5,2,1,,,,,1,,,,,3,50,120,40,150,50,1000,12,14,1E-05,0.001,0.001 +cocoa,1,,20,4,2,1,,,,,1,,,,,3,50,120,40,150,50,1000,12,14,1E-05,0.001,0.001 +corn,1,,10,8,2,2,,,,1,,1,,,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 +cotton,1,,10,8,2,2,,,1,1,,1,,1,,3,15,50,10,50,0,100,12,14,1E-05,0.001,0.001 +culturewheat,1,,100,4,2,1,1,,1,1,,1,,1,,3,15,50,10,50,0,100,10,14,1E-05,0.001,0.001 +garlic,,,10,5,2,2,,1,,1,,,,,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 +hemp,1,,10,8,2,2,,,1,1,,,,1,,3,15,120,10,90,0,100,6,14,1E-05,0.001,1E-05 +hop,1,,10,7,2,1,,,1,1,1,1,,,1,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 +mustard,1,,10,5,2,1,,,,,,1,,,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 +potato,1,,10,4,2,2,,,,1,,1,,,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 +raspberry,1,,10,4,2,1,,,,,1,,,,,3,15,50,10,50,0,100,9,14,1E-05,0.001,0.001 +rhubarb,1,,10,3,2,2,,1,,1,,,,,,3,15,50,10,50,0,100,9,14,1E-05,0.001,0.001 +spelt,1,,10,7,2,1,,,1,1,,1,,1,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 +strawberry,1,,10,4,2,1,,,,,1,,,,,3,15,50,10,50,0,100,9,14,1E-05,0.001,0.001 +tea,,,20,5,2,1,,,,,1,,1,,,3,30,70,30,70,50,100,11,14,1E-05,0.001,0.001 +tobaco,,,10,8,2,2,,,,1,,1,1,,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 +tomato,1,,10,8,2,1,,,1,1,1,1,,,1,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 +urtica,1,,10,5,2,1,,,1,,,,,1,,3,5,150,10,100,0,2000,6,14,1E-05,0.001,0.001 +wheat,1,culturewheat,10,8,2,1,,,1,1,,1,,1,,3,15,50,10,50,0,100,11,14,1E-05,0.001,0.001 diff --git a/crops.lua b/crops.lua index ec742ac..598c394 100644 --- a/crops.lua +++ b/crops.lua @@ -8,7 +8,7 @@ local crop_definition = {} local file = io.open(farming.path .. "/crops.csv", "r") for line in file:lines() do local attribs = line:split(",", true) - local name,enabled,next_plant,rarety,steps,harvest_max,eat_hp,to_culture,to_dig,has_harvest,on_soil,punchable,infectable,seed_extractable,snappy,temperature_min,temperature_max,humidity_min,humidity_max,elevation_min,elevation_max,light_min,light_max,infect_rate_base,infect_rate_monoculture,spread_rate = unpack(attribs) + local name,enabled,next_plant,rarety,steps,harvest_max,eat_hp,to_culture,to_dig,has_harvest,on_soil,punchable,infectable,seed_extractable,use_flail,use_trellis,snappy,temperature_min,temperature_max,humidity_min,humidity_max,elevation_min,elevation_max,light_min,light_max,infect_rate_base,infect_rate_monoculture,spread_rate = unpack(attribs) if #name > 0 and name:sub(1,1) ~= "#" and #enabled > 0 and #steps > 0 then crop_definition[name]={ paramtype2 = "meshoptions", @@ -17,18 +17,20 @@ for line in file:lines() do groups = {farming=1}, mod_name=minetest.get_current_modname(), steps = tonumber(steps), - grow_time_mean=tonumber(grow_time_mean), - harvest_max=tonumber(harvest_max), - light_min=tonumber(light_min), - light_max=tonumber(light_max) or default.LIGHT_MAX, - temperature_min=tonumber(temperature_min), - temperature_max=tonumber(temperature_max), - humidity_min=tonumber(humidity_min), - humidity_max=tonumber(humidity_max), - elevation_min=tonumber(elevation_min), - elevation_max=tonumber(elevation_max), + environment={ + grow_time_mean=tonumber(grow_time_mean), + harvest_max=tonumber(harvest_max), + light_min=tonumber(light_min), + light_max=tonumber(light_max) or default.LIGHT_MAX, + temperature_min=tonumber(temperature_min), + temperature_max=tonumber(temperature_max), + humidity_min=tonumber(humidity_min), + humidity_max=tonumber(humidity_max), + elevation_min=tonumber(elevation_min), + elevation_max=tonumber(elevation_max), + rarety=tonumber(rarety), + }, name=name, - rarety=tonumber(rarety), description=S(name), eat_hp=tonumber(eat_hp), next_plant=next_plant, @@ -59,6 +61,12 @@ for line in file:lines() do if #seed_extractable > 0 then crop_definition[name].groups["seed_extractable"]=tonumber(seed_extractable) end + if #use_flail > 0 then + crop_definition[name].groups["use_flail"]=tonumber(use_flail) + end + if #use_trellis > 0 then + crop_definition[name].groups["use_trellis"]=tonumber(use_trellis) + end if #snappy > 0 then crop_definition[name].groups["snappy"]=tonumber(snappy) else @@ -66,6 +74,7 @@ for line in file:lines() do end end end +file:close() -- voids are filled from default if crop_definition["default"]~=nil then @@ -75,8 +84,8 @@ if crop_definition["default"]~=nil then local tdef_name = tdef.name for _,colu in ipairs({"rarety","harvest_max","temperature_min","temperature_max", "humidity_min","humidity_max","elevation_min","elevation_max"}) do - if crop_definition[tdef_name][colu] == nil then - crop_definition[tdef_name][colu] = default_def[colu] + if crop_definition[tdef_name].environment[colu] == nil then + crop_definition[tdef_name].environment[colu] = default_def.environment[colu] end end if crop_definition[tdef_name].infect.base_rate == nil then @@ -89,12 +98,12 @@ if crop_definition["default"]~=nil then crop_definition[tdef_name].spread.base_rate = default_def.spread.base_rate or 0.001 end biom_def={ - min_temp=crop_definition[tdef_name].temperature_min, - max_temp=crop_definition[tdef_name].temperature_max, - min_humidity=crop_definition[tdef_name].humidity_min, - max_humidity=crop_definition[tdef_name].humidity_max, - spawnon={spawn_min=crop_definition[tdef_name].elevation_min, - spawn_max=crop_definition[tdef_name].elevation_max, + min_temp=crop_definition[tdef_name].environment.temperature_min, + max_temp=crop_definition[tdef_name].environment.temperature_max, + min_humidity=crop_definition[tdef_name].environment.humidity_min, + max_humidity=crop_definition[tdef_name].environment.humidity_max, + spawnon={spawn_min=crop_definition[tdef_name].environment.elevation_min, + spawn_max=crop_definition[tdef_name].environment.elevation_max, },} crop_definition[tdef_name].biomes=farming.get_biomes(biom_def) end diff --git a/register.lua b/register.lua index a95a04e..c260fae 100644 --- a/register.lua +++ b/register.lua @@ -2,14 +2,20 @@ local S = farming.intllib -- function to check definition -- and set to defaults values local register_plant_check_def = function(def) - local default_def={temperature_min=0,temperature_max=100,humidity_min=0,humidity_max=100, - elevation_min=0,elevation_max=31000,light_min=10,light_max=default.LIGHT_MAX,rarety=10,harvest_max=2, - place_param2 = 3,grow_time_mean=120,mod_name=minetest.get_current_modname()} + local default_def={harvest_max=2,place_param2 = 3,mod_name=minetest.get_current_modname()} for dn,dv in pairs(default_def) do if def[dn] == nil then def[dn] = dv end end + local default_env={temperature_min=0,temperature_max=100,humidity_min=0,humidity_max=100, + elevation_min=0,elevation_max=31000,light_min=10,light_max=default.LIGHT_MAX,rarety=10, + grow_time_mean=120} + for dn,dv in pairs(default_env) do + if def.environment[dn] == nil then + def.environment[dn] = dv + end + end if not def.description then def.description = "Seed" end @@ -35,8 +41,8 @@ local register_plant_check_def = function(def) else def.infect = nil end - def.grow_time_min=math.floor(def.grow_time_mean*0.75) - def.grow_time_max=math.floor(def.grow_time_mean*1.2) + def.grow_time_min=math.floor(def.environment.grow_time_mean*0.75) + def.grow_time_max=math.floor(def.environment.grow_time_mean*1.2) return def end @@ -72,16 +78,24 @@ farming.register_plant = function(def) -- farming.register_mapgen(def) -- end if (def.spread) and (not def.groups["to_culture"]) then + edef=def.environment local spread_def={name=def.step_name.."_1", - temp_min=def.temperature_min,temp_max=def.temperature_max, - hum_min=def.humidity_min,hum_max=def.humidity_max, - y_min=def.elevation_min,y_max=def.elevation_max,base_rate = def.spread.base_rate} + temp_min=edef.temperature_min,temp_max=edef.temperature_max, + hum_min=edef.humidity_min,hum_max=edef.humidity_max, + y_min=edef.elevation_min,y_max=edef.elevation_max,base_rate = def.spread.base_rate} table.insert(farming.spreading_crops,1,spread_def) end if def.groups["infectable"] then farming.register_infect(def) end + + if def.groups["use_flail"] then + farming.seed_craft(def.harvest_name) + end + if def.groups["use_trellis"] then + farming.trellis_seed(def.harvest_name) + end end -- helping function for getting biomes @@ -138,6 +152,12 @@ farming.register_harvest=function(hdef) for _,coln in ipairs({"name","seed_name","harvest_name"}) do harvest_def[coln] = hdef[coln] end + if hdef.groups["use_flail"] then + harvest_def.groups["use_flail"]=hdef.groups["use_flail"] + end + if hdef.groups["use_trellis"] then + harvest_def.groups["use_trellis"]=hdef.groups["use_trellis"] + end minetest.register_craftitem(":" .. hdef.harvest_name, harvest_def) end @@ -190,8 +210,7 @@ farming.register_seed=function(sdef) on_timer = farming.seed_on_timer, } for i,colu in ipairs({"inventory_image","place_param2","fertility","description","name","seed_name","harvest_name", - "light_min","light_max","temperature_min","temperature_max","humidity_min","humidity_max","elevation_min","elevation_max", - "grow_time_min","grow_time_max"}) do + "environment"}) do seed_def[colu] = sdef[colu] end local seed_png = sdef.mod_name.."_"..sdef.name.."_seed.png" @@ -223,6 +242,14 @@ farming.register_steps = function(sdef) if sdef.groups["punchable"] then is_punchable = true end + local seed_extractable = false + if sdef.groups["seed_extractable"] then + seed_extractable = true + end + local use_trellis = false + if sdef.groups["use_trellis"] then + use_trellis = true + end -- check if cultured plant exist local has_next_plant = false if sdef.next_plant then @@ -241,8 +268,7 @@ farming.register_steps = function(sdef) sounds = default.node_sound_leaves_defaults(), } -- copy some plant definition into definition of this steps - for _,colu in ipairs({"paramtype2","place_param2","seed_name","name","harvest_name","light_min","light_max", - "temperature_min","temperature_max","humidity_min","humidity_max"}) do + for _,colu in ipairs({"paramtype2","place_param2","seed_name","name","harvest_name","environment"}) do if sdef[colu] then node_def[colu] = sdef[colu] end @@ -282,7 +308,9 @@ farming.register_steps = function(sdef) base_rarity = 8 - (i - 1) * 7 / (sdef.steps - 1) end ndef.drop={items={{items={drop_item}}}} - + if use_trellis then + table.insert(ndef.drop.items,1,{items={"farming:trellis"}}) + end local base_rarity = 1 if sdef.steps ~= 1 then base_rarity = sdef.steps - i + 1 @@ -555,7 +583,7 @@ farming.step_on_punch = function(pos, node, puncher, pointed_thing) local meta = minetest.get_meta(pos) meta:set_int("farming:step",pre_def.groups[pre_def.plant_name]) if pre_def.next_step then - minetest.get_node_timer(pos):start(math.random(pre_def.min_grow_time or 100, pre_def.max_grow_time or 200)) + minetest.get_node_timer(pos):start(math.random(pre_def.grow_time_min or 100, pre_def.grow_time_max or 200)) end return end @@ -669,16 +697,17 @@ farming.place_seed = function(itemstack, placer, pointed_thing, plantname) if not is_correct_node then return itemstack end + local edef=pdef.environment -- check for correct temperature - if pt.under.y < pdef.elevation_min or pt.under.y > pdef.elevation_max then - minetest.chat_send_player(player_name,"Elevation must be between "..pdef.elevation_min.." and "..pdef.elevation_max) + if pt.under.y < edef.elevation_min or pt.under.y > edef.elevation_max then + minetest.chat_send_player(player_name,"Elevation must be between "..edef.elevation_min.." and "..edef.elevation_max) return end - if minetest.get_heat(pt.under) < pdef.temperature_min or minetest.get_heat(pt.under) > pdef.temperature_max then + if minetest.get_heat(pt.under) < edef.temperature_min or minetest.get_heat(pt.under) > edef.temperature_max then minetest.chat_send_player(player_name,"Temperature "..minetest.get_heat(pt.under).." is out of range for planting.") return end - if minetest.get_humidity(pt.under) < pdef.humidity_min or minetest.get_humidity(pt.under) > pdef.humidity_max then + if minetest.get_humidity(pt.under) < edef.humidity_min or minetest.get_humidity(pt.under) > edef.humidity_max then minetest.chat_send_player(player_name,"Humidity "..minetest.get_humidity(pt.under).." is out of range for planting.") return end diff --git a/textures/farming_hop_1.png b/textures/farming_hop_1.png index 7ad3ae4..d8f3093 100755 Binary files a/textures/farming_hop_1.png and b/textures/farming_hop_1.png differ diff --git a/textures/farming_soil.png b/textures/farming_soil.png index a7a2af4..7bcc01d 100644 Binary files a/textures/farming_soil.png and b/textures/farming_soil.png differ diff --git a/textures/farming_soil_wet.png b/textures/farming_soil_wet.png index 6ff4646..1dfdc38 100644 Binary files a/textures/farming_soil_wet.png and b/textures/farming_soil_wet.png differ diff --git a/textures/farming_tool_glass_urtica.png b/textures/farming_tool_glass_urtica.png new file mode 100644 index 0000000..03d994f Binary files /dev/null and b/textures/farming_tool_glass_urtica.png differ diff --git a/textures/farming_tool_glass_water.png b/textures/farming_tool_glass_water.png new file mode 100644 index 0000000..7c3342b Binary files /dev/null and b/textures/farming_tool_glass_water.png differ diff --git a/textures/farming_tool_trellis.png b/textures/farming_tool_trellis.png new file mode 100755 index 0000000..7ad3ae4 Binary files /dev/null and b/textures/farming_tool_trellis.png differ diff --git a/textures/farming_urtica_1.png b/textures/farming_urtica_1.png new file mode 100644 index 0000000..fafa992 Binary files /dev/null and b/textures/farming_urtica_1.png differ diff --git a/textures/farming_urtica_2.png b/textures/farming_urtica_2.png new file mode 100644 index 0000000..9dcc529 Binary files /dev/null and b/textures/farming_urtica_2.png differ diff --git a/textures/farming_urtica_3.png b/textures/farming_urtica_3.png new file mode 100644 index 0000000..9609233 Binary files /dev/null and b/textures/farming_urtica_3.png differ diff --git a/textures/farming_urtica_4.png b/textures/farming_urtica_4.png new file mode 100644 index 0000000..0832298 Binary files /dev/null and b/textures/farming_urtica_4.png differ diff --git a/textures/farming_urtica_5.png b/textures/farming_urtica_5.png new file mode 100644 index 0000000..440acdc Binary files /dev/null and b/textures/farming_urtica_5.png differ diff --git a/textures/farming_urtica_seed.png b/textures/farming_urtica_seed.png new file mode 100644 index 0000000..1a8722f Binary files /dev/null and b/textures/farming_urtica_seed.png differ diff --git a/utensils.lua b/utensils.lua index 4b31a7f..3f8220d 100644 --- a/utensils.lua +++ b/utensils.lua @@ -21,7 +21,7 @@ minetest.register_craft({ minetest.register_craftitem(modname..":flail", { description = S("Threshing Flail"), inventory_image = "farming_tool_flail.png", - groups = {food_flail = 1, flammable = 2}, + groups = {farming_flail = 1, flammable = 2}, }) minetest.register_craft({ @@ -32,6 +32,21 @@ minetest.register_craft({ {"group:stick", "", ""}, } }) +-- Trellis +minetest.register_craftitem(modname..":trellis", { + description = S("Trellis"), + inventory_image = "farming_tool_trellis.png", + groups = {farming_trellis = 1, flammable = 2}, +}) + +minetest.register_craft({ + output = modname..":trellis", + recipe = { + {"", "", ""}, + { "group:stick", "","group:stick"}, + { "","group:stick", ""}, + } +}) -- mortar and pestle -- definition from mod farming by tenplus1 minetest.register_craftitem(modname..":mortar_pestle", {