local function till_soil(pos)
- local is_dirt = minetest.get_node_group(minetest.get_node(pos).name, "dirt") > 0
- local is_farmland = minetest.get_node_group(minetest.get_node(pos).name, "farmland") > 0
- if is_dirt and not is_farmland then
- minetest.sound_play("dirt",{pos=pos})
- minetest.set_node(pos,{name="farming:farmland_dry"})
- return(true)
- end
+ local is_dirt = minetest.get_node_group(minetest.get_node(pos).name, "dirt") > 0
+ local is_farmland = minetest.get_node_group(minetest.get_node(pos).name, "farmland") > 0
+ if is_dirt and not is_farmland then
+ minetest.sound_play("dirt",{pos=pos})
+ minetest.set_node(pos,{name="farming:farmland_dry"})
+ return(true)
+ end
end
for level,material in pairs(material) do
- local wear = 5000-(950*level)
- print(wear)
- minetest.register_tool("farming:"..material.."hoe", {
- description = material:gsub("^%l", string.upper).." Hoe",
- inventory_image = material.."hoe.png",
- tool_capabilities = {
- --full_punch_interval = 1.2,
- --max_drop_level=0,
- groupcaps={
- dirt = {times={[4]=4-level/4,[3]=3.5-level/4,[2]=3.0-level/4,[1]=2.8-level/4}, uses=(level/2)*3, maxlevel=level},
- sand = {times={[4]=4-level/4,[3]=3.5-level/4,[2]=3.0-level/4,[1]=2.8-level/4}, uses=(level/2)*3, maxlevel=level},
- },
- damage_groups = {fleshy=1},
- },
- sound = {breaks = {name="tool_break",gain=0.4}}, -- change this
- groups = {flammable = 2, tool=1 },
-
- on_place = function(itemstack, placer, pointed_thing)
- local tilled = till_soil(pointed_thing.under)
- if tilled == true then itemstack:add_wear(wear) end
-
- local damage = itemstack:get_wear()
-
- if damage <= 0 then
- minetest.sound_play("tool_break",{object=placer})
- end
- return(itemstack)
- end,
- })
- minetest.register_craft({
- output = "farming:"..material.."hoe",
- recipe = {
- {"","main:"..material, "main:"..material},
- {"","main:stick", ""},
- {"", "main:stick", ""}
- }
- })
- minetest.register_craft({
- output = "farming:"..material.."hoe",
- recipe = {
- {"main:"..material,"main:"..material, ""},
- {"","main:stick", ""},
- {"", "main:stick", ""}
- }
- })
+ local wear = 5000-(950*level)
+ print(wear)
+ minetest.register_tool("farming:"..material.."hoe", {
+ description = material:gsub("^%l", string.upper).." Hoe",
+ inventory_image = material.."hoe.png",
+ tool_capabilities = {
+ --full_punch_interval = 1.2,
+ --max_drop_level=0,
+ groupcaps={
+ dirt = {times={[4]=4-level/4,[3]=3.5-level/4,[2]=3.0-level/4,[1]=2.8-level/4}, uses=(level/2)*3, maxlevel=level},
+ sand = {times={[4]=4-level/4,[3]=3.5-level/4,[2]=3.0-level/4,[1]=2.8-level/4}, uses=(level/2)*3, maxlevel=level},
+ },
+ damage_groups = {fleshy=1},
+ },
+ sound = {breaks = {name="tool_break",gain=0.4}}, -- change this
+ groups = {flammable = 2, tool=1 },
+
+ on_place = function(itemstack, placer, pointed_thing)
+ local tilled = till_soil(pointed_thing.under)
+ if tilled == true then itemstack:add_wear(wear) end
+
+ local damage = itemstack:get_wear()
+
+ if damage <= 0 then
+ minetest.sound_play("tool_break",{object=placer})
+ end
+ return(itemstack)
+ end,
+ })
+ minetest.register_craft({
+ output = "farming:"..material.."hoe",
+ recipe = {
+ {"","main:"..material, "main:"..material},
+ {"","main:stick", ""},
+ {"", "main:stick", ""}
+ }
+ })
+ minetest.register_craft({
+ output = "farming:"..material.."hoe",
+ recipe = {
+ {"main:"..material,"main:"..material, ""},
+ {"","main:stick", ""},
+ {"", "main:stick", ""}
+ }
+ })
end
local farmland = {"wet","dry"}
for level,dryness in pairs(farmland) do
- local coloring = 160/level
-
- minetest.register_node("farming:farmland_"..dryness,{
- description = "Farmland",
- paramtype = "light",
- drawtype = "nodebox",
- sounds = main.dirtSound(),
- --paramtype2 = "wallmounted",
- node_box = {
- type = "fixed",
- --{xmin, ymin, zmin, xmax, ymax, zmax}
-
- fixed = {-0.5, -0.5, -0.5, 0.5, 6/16, 0.5},
- },
- wetness = math.abs(level-2),
- collision_box = {
- type = "fixed",
- --{xmin, ymin, zmin, xmax, ymax, zmax}
-
- fixed = {-0.5, -0.5, -0.5, 0.5, 6/16, 0.5},
- },
- tiles = {"dirt.png^farmland.png^[colorize:black:"..coloring,"dirt.png^[colorize:black:"..coloring,"dirt.png^[colorize:black:"..coloring,"dirt.png^[colorize:black:"..coloring,"dirt.png^[colorize:black:"..coloring,"dirt.png^[colorize:black:"..coloring},
- groups = {dirt = 1, soft = 1, shovel = 1, hand = 1, soil=1,farmland=1},
- drop="main:dirt",
- })
+ local coloring = 160/level
+
+ minetest.register_node("farming:farmland_"..dryness,{
+ description = "Farmland",
+ paramtype = "light",
+ drawtype = "nodebox",
+ sounds = main.dirtSound(),
+ --paramtype2 = "wallmounted",
+ node_box = {
+ type = "fixed",
+ --{xmin, ymin, zmin, xmax, ymax, zmax}
+
+ fixed = {-0.5, -0.5, -0.5, 0.5, 6/16, 0.5},
+ },
+ wetness = math.abs(level-2),
+ collision_box = {
+ type = "fixed",
+ --{xmin, ymin, zmin, xmax, ymax, zmax}
+
+ fixed = {-0.5, -0.5, -0.5, 0.5, 6/16, 0.5},
+ },
+ tiles = {"dirt.png^farmland.png^[colorize:black:"..coloring,"dirt.png^[colorize:black:"..coloring,"dirt.png^[colorize:black:"..coloring,"dirt.png^[colorize:black:"..coloring,"dirt.png^[colorize:black:"..coloring,"dirt.png^[colorize:black:"..coloring},
+ groups = {dirt = 1, soft = 1, shovel = 1, hand = 1, soil=1,farmland=1},
+ drop="main:dirt",
+ })
end
--drying and wetting abm for farmland
minetest.register_abm({
- label = "Farmland Wet",
- nodenames = {"farming:farmland_dry"},
- neighbors = {"air","group:crop"},
- interval = 3,
- chance = 150,
- action = function(pos)
- local found = minetest.find_node_near(pos, 3, {"main:water","main:waterflow"})
- if found then
- minetest.set_node(pos,{name="farming:farmland_wet"})
- else
- minetest.set_node(pos,{name="main:dirt"})
- end
- end,
+ label = "Farmland Wet",
+ nodenames = {"farming:farmland_dry"},
+ neighbors = {"air","group:crop"},
+ interval = 3,
+ chance = 150,
+ action = function(pos)
+ local found = minetest.find_node_near(pos, 3, {"main:water","main:waterflow"})
+ if found then
+ minetest.set_node(pos,{name="farming:farmland_wet"})
+ else
+ minetest.set_node(pos,{name="main:dirt"})
+ end
+ end,
})
minetest.register_abm({
- label = "Farmland dry",
- nodenames = {"farming:farmland_wet"},
- neighbors = {"air"},
- interval = 5,
- chance = 500,
- action = function(pos)
- local found = minetest.find_node_near(pos, 3, {"main:water","main:waterflow"})
- if not found then
- minetest.set_node(pos,{name="farming:farmland_dry"})
- end
- end,
+ label = "Farmland dry",
+ nodenames = {"farming:farmland_wet"},
+ neighbors = {"air"},
+ interval = 5,
+ chance = 500,
+ action = function(pos)
+ local found = minetest.find_node_near(pos, 3, {"main:water","main:waterflow"})
+ if not found then
+ minetest.set_node(pos,{name="farming:farmland_dry"})
+ end
+ end,
})
minetest.register_node("farming:grass", {
description = "Tall Grass",
drawtype = "plantlike",
- waving = 1,
- walkable = false,
- climbable = false,
- paramtype = "light",
- is_ground_content = false,
+ waving = 1,
+ walkable = false,
+ climbable = false,
+ paramtype = "light",
+ is_ground_content = false,
tiles = {"tallgrass.png"},
paramtype2 = "degrotate",
buildable_to = true,
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 4 / 16, 4 / 16}
},
- drop = {
- max_items = 1,
- items= {
- {
- -- Only drop if using a tool whose name is identical to one
- -- of these.
- rarity = 10,
- items = {"farming:seeds"},
- -- Whether all items in the dropped item list inherit the
- -- hardware coloring palette color from the dug node.
- -- Default is 'false'.
- --inherit_color = true,
- },
- },
- },
+ drop = {
+ max_items = 1,
+ items= {
+ {
+ -- Only drop if using a tool whose name is identical to one
+ -- of these.
+ rarity = 10,
+ items = {"farming:seeds"},
+ -- Whether all items in the dropped item list inherit the
+ -- hardware coloring palette color from the dug node.
+ -- Default is 'false'.
+ --inherit_color = true,
+ },
+ },
+ },
})
--wheat definitions
local wheat_max = 7
minetest.register_abm({
- label = "crops grow",
- nodenames = {"group:crops"},
- neighbors = {"group:farmland"},
- interval = 3,
- chance = 150,
- action = function(pos)
-
- local node_under = minetest.get_node(vector.new(pos.x,pos.y-1,pos.z)).name
- local wetness = minetest.registered_nodes[node_under].wetness
-
- if wetness == 0 or not wetness then
- return
- end
-
- local node = minetest.get_node(pos).name
- local stage = minetest.registered_nodes[node].grow_stage
- if stage < wheat_max then
- minetest.set_node(pos,{name="farming:wheat_"..stage+1})
- end
- end,
+ label = "crops grow",
+ nodenames = {"group:crops"},
+ neighbors = {"group:farmland"},
+ interval = 3,
+ chance = 150,
+ action = function(pos)
+
+ local node_under = minetest.get_node(vector.new(pos.x,pos.y-1,pos.z)).name
+ local wetness = minetest.registered_nodes[node_under].wetness
+
+ if wetness == 0 or not wetness then
+ return
+ end
+
+ local node = minetest.get_node(pos).name
+ local stage = minetest.registered_nodes[node].grow_stage
+ if stage < wheat_max then
+ minetest.set_node(pos,{name="farming:wheat_"..stage+1})
+ end
+ end,
})
for i = 0,wheat_max do
- local drop = ""
- if i == wheat_max then
- drop = {
- max_items = 2,
- items= {
- {
- -- Only drop if using a tool whose name is identical to one
- -- of these.
- --rarity = 10,
- items = {"farming:wheat"},
- -- Whether all items in the dropped item list inherit the
- -- hardware coloring palette color from the dug node.
- -- Default is 'false'.
- --inherit_color = true,
- },
- {
- -- Only drop if using a tool whose name is identical to one
- -- of these.
- rarity = 3,
- items = {"farming:seeds"},
- -- Whether all items in the dropped item list inherit the
- -- hardware coloring palette color from the dug node.
- -- Default is 'false'.
- --inherit_color = true,
- },
- },
- }
-
-
- end
-
- minetest.register_node("farming:wheat_"..i, {
- description = "Wheat Stage "..i,
- drawtype = "plantlike",
- waving = 1,
- walkable = false,
- climbable = false,
- paramtype = "light",
- is_ground_content = false,
- tiles = {"wheat_stage_"..i..".png"},
- paramtype2 = "degrotate",
- buildable_to = true,
- grow_stage = i,
- groups = {leaves = 1, plant = 1, axe = 1, hand = 0,dig_immediate=1,attached_node=1,crops=1},
- sounds = main.grassSound(),
- selection_box = {
- type = "fixed",
- fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 4 / 16, 4 / 16}
- },
- drop = drop,
- })
+ local drop = ""
+ if i == wheat_max then
+ drop = {
+ max_items = 2,
+ items= {
+ {
+ -- Only drop if using a tool whose name is identical to one
+ -- of these.
+ --rarity = 10,
+ items = {"farming:wheat"},
+ -- Whether all items in the dropped item list inherit the
+ -- hardware coloring palette color from the dug node.
+ -- Default is 'false'.
+ --inherit_color = true,
+ },
+ {
+ -- Only drop if using a tool whose name is identical to one
+ -- of these.
+ rarity = 3,
+ items = {"farming:seeds"},
+ -- Whether all items in the dropped item list inherit the
+ -- hardware coloring palette color from the dug node.
+ -- Default is 'false'.
+ --inherit_color = true,
+ },
+ },
+ }
+
+
+ end
+
+ minetest.register_node("farming:wheat_"..i, {
+ description = "Wheat Stage "..i,
+ drawtype = "plantlike",
+ waving = 1,
+ walkable = false,
+ climbable = false,
+ paramtype = "light",
+ is_ground_content = false,
+ tiles = {"wheat_stage_"..i..".png"},
+ paramtype2 = "degrotate",
+ buildable_to = true,
+ grow_stage = i,
+ groups = {leaves = 1, plant = 1, axe = 1, hand = 0,dig_immediate=1,attached_node=1,crops=1},
+ sounds = main.grassSound(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 4 / 16, 4 / 16}
+ },
+ drop = drop,
+ })
end
minetest.register_craftitem("farming:seeds", {
- description = "Seeds",
- inventory_image = "seeds.png",
- on_place = function(itemstack, placer, pointed_thing)
- if pointed_thing.type ~= "node" then
- return itemstack
- end
- local pb = pointed_thing.above
- if minetest.get_node_group(minetest.get_node(vector.new(pb.x,pb.y-1,pb.z)).name, "farmland") == 0 or minetest.get_node(pointed_thing.above).name ~= "air" then
- return itemstack
- end
-
- local wdir = minetest.dir_to_wallmounted(vector.subtract(pointed_thing.under,pointed_thing.above))
-
- local fakestack = itemstack
- local retval = false
-
- retval = fakestack:set_name("farming:wheat_0")
-
- if not retval then
- return itemstack
- end
- itemstack, retval = minetest.item_place(fakestack, placer, pointed_thing, wdir)
- itemstack:set_name("farming:seeds")
-
- if retval then
- minetest.sound_play("leaves", {pos=pointed_thing.above, gain = 1.0})
- end
-
- return itemstack
- end
+ description = "Seeds",
+ inventory_image = "seeds.png",
+ on_place = function(itemstack, placer, pointed_thing)
+ if pointed_thing.type ~= "node" then
+ return itemstack
+ end
+ local pb = pointed_thing.above
+ if minetest.get_node_group(minetest.get_node(vector.new(pb.x,pb.y-1,pb.z)).name, "farmland") == 0 or minetest.get_node(pointed_thing.above).name ~= "air" then
+ return itemstack
+ end
+
+ local wdir = minetest.dir_to_wallmounted(vector.subtract(pointed_thing.under,pointed_thing.above))
+
+ local fakestack = itemstack
+ local retval = false
+
+ retval = fakestack:set_name("farming:wheat_0")
+
+ if not retval then
+ return itemstack
+ end
+ itemstack, retval = minetest.item_place(fakestack, placer, pointed_thing, wdir)
+ itemstack:set_name("farming:seeds")
+
+ if retval then
+ minetest.sound_play("leaves", {pos=pointed_thing.above, gain = 1.0})
+ end
+
+ return itemstack
+ end
})
minetest.register_craftitem("farming:wheat", {
- description = "Wheat",
- inventory_image = "wheat_harvested.png",
+ description = "Wheat",
+ inventory_image = "wheat_harvested.png",
})
minetest.register_craftitem("farming:bread", {
- description = "Bread",
- inventory_image = "bread.png",
- health = 3,
+ description = "Bread",
+ inventory_image = "bread.png",
+ health = 3,
})
minetest.register_craftitem("farming:toast", {
- description = "Toast",
- inventory_image = "bread.png^[colorize:black:100",
- health = 5,
+ description = "Toast",
+ inventory_image = "bread.png^[colorize:black:100",
+ health = 5,
})
minetest.register_craft({
- output = "farming:bread",
- recipe = {
- {"farming:wheat", "farming:wheat", "farming:wheat"}
- }
+ output = "farming:bread",
+ recipe = {
+ {"farming:wheat", "farming:wheat", "farming:wheat"}
+ }
})
minetest.register_craft({
- type = "cooking",
- output = "farming:toast",
- recipe = "farming:bread",
- cooktime = 3,
+ type = "cooking",
+ output = "farming:toast",
+ recipe = "farming:bread",
+ cooktime = 3,
})