-- farming/nodes.lua -- support for MT game translation. local S = farming.get_translator minetest.override_item("default:dirt", { soil = { base = "default:dirt", dry = "farming:soil", wet = "farming:soil_wet" } }) minetest.override_item("default:dirt_with_grass", { soil = { base = "default:dirt_with_grass", dry = "farming:soil", wet = "farming:soil_wet" } }) minetest.override_item("default:dirt_with_dry_grass", { soil = { base = "default:dirt_with_dry_grass", dry = "farming:soil", wet = "farming:soil_wet" } }) minetest.override_item("default:dirt_with_rainforest_litter", { soil = { base = "default:dirt_with_rainforest_litter", dry = "farming:soil", wet = "farming:soil_wet" } }) minetest.override_item("default:dirt_with_coniferous_litter", { soil = { base = "default:dirt_with_coniferous_litter", dry = "farming:soil", wet = "farming:soil_wet" } }) minetest.override_item("default:dry_dirt", { soil = { base = "default:dry_dirt", dry = "farming:dry_soil", wet = "farming:dry_soil_wet" } }) minetest.override_item("default:dry_dirt_with_dry_grass", { soil = { base = "default:dry_dirt_with_dry_grass", dry = "farming:dry_soil", wet = "farming:dry_soil_wet" } }) minetest.register_node("farming:soil", { description = S("Soil"), tiles = {"default_dirt.png^farming_soil.png", "default_dirt.png"}, drop = "default:dirt", groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 2, grassland = 1, field = 1}, sounds = default.node_sound_dirt_defaults(), soil = { base = "default:dirt", dry = "farming:soil", wet = "farming:soil_wet" } }) minetest.register_node("farming:soil_wet", { description = S("Wet Soil"), tiles = {"default_dirt.png^farming_soil_wet.png", "default_dirt.png^farming_soil_wet_side.png"}, drop = "default:dirt", groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 3, wet = 1, grassland = 1, field = 1}, sounds = default.node_sound_dirt_defaults(), soil = { base = "default:dirt", dry = "farming:soil", wet = "farming:soil_wet" } }) minetest.register_node("farming:dry_soil", { description = S("Savanna Soil"), tiles = {"default_dry_dirt.png^farming_soil.png", "default_dry_dirt.png"}, drop = "default:dry_dirt", groups = {crumbly=3, not_in_creative_inventory=1, soil=2, grassland = 1, field = 1}, sounds = default.node_sound_dirt_defaults(), soil = { base = "default:dry_dirt", dry = "farming:dry_soil", wet = "farming:dry_soil_wet" } }) minetest.register_node("farming:dry_soil_wet", { description = S("Wet Savanna Soil"), tiles = {"default_dry_dirt.png^farming_soil_wet.png", "default_dry_dirt.png^farming_soil_wet_side.png"}, drop = "default:dry_dirt", groups = {crumbly=3, not_in_creative_inventory=1, soil=3, wet = 1, grassland = 1, field = 1}, sounds = default.node_sound_dirt_defaults(), soil = { base = "default:dry_dirt", dry = "farming:dry_soil", wet = "farming:dry_soil_wet" } }) minetest.override_item("default:desert_sand", { groups = {crumbly=3, falling_node=1, sand=1, soil = 1}, soil = { base = "default:desert_sand", dry = "farming:desert_sand_soil", wet = "farming:desert_sand_soil_wet" } }) minetest.register_node("farming:desert_sand_soil", { description = S("Desert Sand Soil"), drop = "default:desert_sand", tiles = {"farming_desert_sand_soil.png", "default_desert_sand.png"}, groups = {crumbly = 3, not_in_creative_inventory = 1, falling_node = 1, sand = 1, soil = 2, desert = 1, field = 1}, sounds = default.node_sound_sand_defaults(), soil = { base = "default:desert_sand", dry = "farming:desert_sand_soil", wet = "farming:desert_sand_soil_wet" } }) minetest.register_node("farming:desert_sand_soil_wet", { description = S("Wet Desert Sand Soil"), drop = "default:desert_sand", tiles = {"farming_desert_sand_soil_wet.png", "farming_desert_sand_soil_wet_side.png"}, groups = {crumbly = 3, falling_node = 1, sand = 1, desert = 1, not_in_creative_inventory = 1, soil = 3, wet = 1, field = 1}, sounds = default.node_sound_sand_defaults(), soil = { base = "default:desert_sand", dry = "farming:desert_sand_soil", wet = "farming:desert_sand_soil_wet" } }) minetest.register_node("farming:straw", { description = S("Straw"), tiles = {"farming_straw.png"}, is_ground_content = false, groups = {snappy=3, flammable=4, fall_damage_add_percent=-30}, sounds = default.node_sound_leaves_defaults(), }) -- Registered before the stairs so the stairs get fuel recipes. minetest.register_craft({ type = "fuel", recipe = "farming:straw", burntime = 3, }) do local recipe = "farming:straw" local groups = {snappy = 3, flammable = 4} local images = {"farming_straw.png"} local sounds = default.node_sound_leaves_defaults() stairs.register_stair("straw", recipe, groups, images, S("Straw Stair"), sounds, true) stairs.register_stair_inner("straw", recipe, groups, images, "", sounds, true, S("Inner Straw Stair")) stairs.register_stair_outer("straw", recipe, groups, images, "", sounds, true, S("Outer Straw Stair")) stairs.register_slab("straw", recipe, groups, images, S("Straw Slab"), sounds, true) end minetest.register_abm({ label = "Farming soil", nodenames = {"group:field"}, interval = 15, chance = 4, action = function(pos, node) pos.y = pos.y + 1 local nn = minetest.get_node_or_nil(pos) if not nn then return end local nn_def = minetest.registered_nodes[nn.name] pos.y = pos.y - 1 local soil = minetest.registered_nodes[node.name].soil assert(soil and soil.wet and soil.base and soil.dry, "Field node " .. node.name .. " lacks of either 'wet', 'base' " .. "or 'dry' properties.") if nn_def and nn_def.walkable and minetest.get_item_group(nn.name, "plant") == 0 then node.name = soil.base minetest.set_node(pos, node) return end local wet_lvl = minetest.get_item_group(node.name, "wet") -- Make the node wet if water is near it if minetest.find_node_near(pos, 3, {"group:water"}) then -- If it is dry soil and not base node, turn it into wet soil if wet_lvl == 0 then node.name = soil.wet minetest.set_node(pos, node) end return end -- Only dry out if there are no unloaded blocks (and therefore -- possible water sources) nearby if minetest.find_node_near(pos, 3, {"ignore"}) then return end -- Turn it back into base if it is already dry and no plant/seed -- is on top of it if wet_lvl == 0 then if minetest.get_item_group(nn.name, "plant") == 0 and minetest.get_item_group(nn.name, "seed") == 0 then node.name = soil.base minetest.set_node(pos, node) end -- If it is wet turn it back into dry soil elseif wet_lvl == 1 then node.name = soil.dry minetest.set_node(pos, node) end end, }) -- Make default:grass_* occasionally drop wheat seed for i = 1, 5 do minetest.override_item("default:grass_" .. i, { drop = { max_items = 1, items = { {items = {"farming:seed_wheat"}, rarity = 5}, {items = {"default:grass_1"}}, } } }) end -- Make default:junglegrass occasionally drop cotton seed. -- This is the old source of cotton seeds that makes no sense. It is a leftover -- from Mapgen V6 where junglegrass was the only plant available to be a source. -- This source is kept for now to avoid disruption but should probably be -- removed in future as players get used to the new source. minetest.override_item("default:junglegrass", { drop = { max_items = 1, items = { {items = {"farming:seed_cotton"}, rarity = 8}, {items = {"default:junglegrass"}}, } } }) -- Wild cotton as a source of cotton seed minetest.register_node("farming:cotton_wild", { description = S("Wild Cotton"), drawtype = "plantlike", waving = 1, tiles = {"farming_cotton_wild.png"}, inventory_image = "farming_cotton_wild.png", wield_image = "farming_cotton_wild.png", paramtype = "light", sunlight_propagates = true, walkable = false, buildable_to = true, groups = {snappy = 3, attached_node = 1, flammable = 4}, drop = "farming:seed_cotton", sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-6 / 16, -8 / 16, -6 / 16, 6 / 16, 5 / 16, 6 / 16}, }, })