1 minetest.override_item("default:dirt", {
5 wet = "farming:soil_wet"
9 minetest.override_item("default:dirt_with_grass", {
11 base = "default:dirt_with_grass",
13 wet = "farming:soil_wet"
17 minetest.override_item("default:dirt_with_dry_grass", {
19 base = "default:dirt_with_dry_grass",
21 wet = "farming:soil_wet"
25 minetest.override_item("default:dirt_with_rainforest_litter", {
27 base = "default:dirt_with_rainforest_litter",
29 wet = "farming:soil_wet"
33 minetest.register_node("farming:soil", {
35 tiles = {"default_dirt.png^farming_soil.png", "default_dirt.png"},
36 drop = "default:dirt",
37 groups = {crumbly=3, not_in_creative_inventory=1, soil=2, grassland = 1, field = 1},
38 sounds = default.node_sound_dirt_defaults(),
40 base = "default:dirt",
42 wet = "farming:soil_wet"
46 minetest.register_node("farming:soil_wet", {
47 description = "Wet Soil",
48 tiles = {"default_dirt.png^farming_soil_wet.png", "default_dirt.png^farming_soil_wet_side.png"},
49 drop = "default:dirt",
50 groups = {crumbly=3, not_in_creative_inventory=1, soil=3, wet = 1, grassland = 1, field = 1},
51 sounds = default.node_sound_dirt_defaults(),
53 base = "default:dirt",
55 wet = "farming:soil_wet"
59 minetest.override_item("default:desert_sand", {
60 groups = {crumbly=3, falling_node=1, sand=1, soil = 1},
62 base = "default:desert_sand",
63 dry = "farming:desert_sand_soil",
64 wet = "farming:desert_sand_soil_wet"
67 minetest.register_node("farming:desert_sand_soil", {
68 description = "Desert Sand Soil",
69 drop = "default:desert_sand",
70 tiles = {"farming_desert_sand_soil.png", "default_desert_sand.png"},
71 groups = {crumbly=3, not_in_creative_inventory = 1, falling_node=1, sand=1, soil = 2, desert = 1, field = 1},
72 sounds = default.node_sound_sand_defaults(),
74 base = "default:desert_sand",
75 dry = "farming:desert_sand_soil",
76 wet = "farming:desert_sand_soil_wet"
80 minetest.register_node("farming:desert_sand_soil_wet", {
81 description = "Wet Desert Sand Soil",
82 drop = "default:desert_sand",
83 tiles = {"farming_desert_sand_soil_wet.png", "farming_desert_sand_soil_wet_side.png"},
84 groups = {crumbly=3, falling_node=1, sand=1, not_in_creative_inventory=1, soil=3, wet = 1, desert = 1, field = 1},
85 sounds = default.node_sound_sand_defaults(),
87 base = "default:desert_sand",
88 dry = "farming:desert_sand_soil",
89 wet = "farming:desert_sand_soil_wet"
93 minetest.register_node("farming:straw", {
94 description = "Straw",
95 tiles = {"farming_straw.png"},
96 is_ground_content = false,
97 groups = {snappy=3, flammable=4, fall_damage_add_percent=-30},
98 sounds = default.node_sound_leaves_defaults(),
101 stairs.register_stair_and_slab(
104 {snappy = 3, flammable = 4},
105 {"farming_straw.png"},
108 default.node_sound_leaves_defaults()
111 minetest.register_abm({
112 label = "Farming soil",
113 nodenames = {"group:field"},
116 action = function(pos, node)
117 local n_def = minetest.registered_nodes[node.name] or nil
118 local wet = n_def.soil.wet or nil
119 local base = n_def.soil.base or nil
120 local dry = n_def.soil.dry or nil
121 if not n_def or not n_def.soil or not wet or not base or not dry then
126 local nn = minetest.get_node_or_nil(pos)
127 if not nn or not nn.name then
130 local nn_def = minetest.registered_nodes[nn.name] or nil
133 if nn_def and nn_def.walkable and minetest.get_item_group(nn.name, "plant") == 0 then
134 minetest.set_node(pos, {name = base})
137 -- check if there is water nearby
138 local wet_lvl = minetest.get_item_group(node.name, "wet")
139 if minetest.find_node_near(pos, 3, {"group:water"}) then
140 -- if it is dry soil and not base node, turn it into wet soil
142 minetest.set_node(pos, {name = wet})
145 -- only turn back if there are no unloaded blocks (and therefore
146 -- possible water sources) nearby
147 if not minetest.find_node_near(pos, 3, {"ignore"}) then
148 -- turn it back into base if it is already dry
150 -- only turn it back if there is no plant/seed on top of it
151 if minetest.get_item_group(nn.name, "plant") == 0 and minetest.get_item_group(nn.name, "seed") == 0 then
152 minetest.set_node(pos, {name = base})
155 -- if its wet turn it back into dry soil
156 elseif wet_lvl == 1 then
157 minetest.set_node(pos, {name = dry})
166 minetest.override_item("default:grass_"..i, {drop = {
169 {items = {'farming:seed_wheat'},rarity = 5},
170 {items = {'default:grass_1'}},
175 minetest.override_item("default:junglegrass", {drop = {
178 {items = {'farming:seed_cotton'},rarity = 8},
179 {items = {'default:junglegrass'}},