Update Chinese Translation, Add Traditional Chinese Translation (#2596)
[oweals/minetest_game.git] / mods / farming / nodes.lua
1 -- farming/nodes.lua
2
3 -- support for MT game translation.
4 local S = farming.get_translator
5
6 minetest.override_item("default:dirt", {
7         soil = {
8                 base = "default:dirt",
9                 dry = "farming:soil",
10                 wet = "farming:soil_wet"
11         }
12 })
13
14 minetest.override_item("default:dirt_with_grass", {
15         soil = {
16                 base = "default:dirt_with_grass",
17                 dry = "farming:soil",
18                 wet = "farming:soil_wet"
19         }
20 })
21
22 minetest.override_item("default:dirt_with_dry_grass", {
23         soil = {
24                 base = "default:dirt_with_dry_grass",
25                 dry = "farming:soil",
26                 wet = "farming:soil_wet"
27         }
28 })
29
30 minetest.override_item("default:dirt_with_rainforest_litter", {
31         soil = {
32                 base = "default:dirt_with_rainforest_litter",
33                 dry = "farming:soil",
34                 wet = "farming:soil_wet"
35         }
36 })
37
38 minetest.override_item("default:dirt_with_coniferous_litter", {
39         soil = {
40                 base = "default:dirt_with_coniferous_litter",
41                 dry = "farming:soil",
42                 wet = "farming:soil_wet"
43         }
44 })
45
46 minetest.override_item("default:dry_dirt", {
47         soil = {
48                 base = "default:dry_dirt",
49                 dry = "farming:dry_soil",
50                 wet = "farming:dry_soil_wet"
51         }
52 })
53
54 minetest.override_item("default:dry_dirt_with_dry_grass", {
55         soil = {
56                 base = "default:dry_dirt_with_dry_grass",
57                 dry = "farming:dry_soil",
58                 wet = "farming:dry_soil_wet"
59         }
60 })
61
62 minetest.register_node("farming:soil", {
63         description = S("Soil"),
64         tiles = {"default_dirt.png^farming_soil.png", "default_dirt.png"},
65         drop = "default:dirt",
66         groups = {crumbly=3, not_in_creative_inventory=1, soil=2, grassland = 1, field = 1},
67         sounds = default.node_sound_dirt_defaults(),
68         soil = {
69                 base = "default:dirt",
70                 dry = "farming:soil",
71                 wet = "farming:soil_wet"
72         }
73 })
74
75 minetest.register_node("farming:soil_wet", {
76         description = S("Wet Soil"),
77         tiles = {"default_dirt.png^farming_soil_wet.png", "default_dirt.png^farming_soil_wet_side.png"},
78         drop = "default:dirt",
79         groups = {crumbly=3, not_in_creative_inventory=1, soil=3, wet = 1, grassland = 1, field = 1},
80         sounds = default.node_sound_dirt_defaults(),
81         soil = {
82                 base = "default:dirt",
83                 dry = "farming:soil",
84                 wet = "farming:soil_wet"
85         }
86 })
87
88 minetest.register_node("farming:dry_soil", {
89         description = S("Dry Soil"),
90         tiles = {"default_dry_dirt.png^farming_soil.png", "default_dry_dirt.png"},
91         drop = "default:dry_dirt",
92         groups = {crumbly=3, not_in_creative_inventory=1, soil=2, grassland = 1, field = 1},
93         sounds = default.node_sound_dirt_defaults(),
94         soil = {
95                 base = "default:dry_dirt",
96                 dry = "farming:dry_soil",
97                 wet = "farming:dry_soil_wet"
98         }
99 })
100
101 minetest.register_node("farming:dry_soil_wet", {
102         description = S("Wet Dry Soil"),
103         tiles = {"default_dry_dirt.png^farming_soil_wet.png", "default_dry_dirt.png^farming_soil_wet_side.png"},
104         drop = "default:dry_dirt",
105         groups = {crumbly=3, not_in_creative_inventory=1, soil=3, wet = 1, grassland = 1, field = 1},
106         sounds = default.node_sound_dirt_defaults(),
107         soil = {
108                 base = "default:dry_dirt",
109                 dry = "farming:dry_soil",
110                 wet = "farming:dry_soil_wet"
111         }
112 })
113
114 minetest.override_item("default:desert_sand", {
115         groups = {crumbly=3, falling_node=1, sand=1, soil = 1},
116         soil = {
117                 base = "default:desert_sand",
118                 dry = "farming:desert_sand_soil",
119                 wet = "farming:desert_sand_soil_wet"
120         }
121 })
122 minetest.register_node("farming:desert_sand_soil", {
123         description = S("Desert Sand Soil"),
124         drop = "default:desert_sand",
125         tiles = {"farming_desert_sand_soil.png", "default_desert_sand.png"},
126         groups = {crumbly=3, not_in_creative_inventory = 1, falling_node=1, sand=1, soil = 2, desert = 1, field = 1},
127         sounds = default.node_sound_sand_defaults(),
128         soil = {
129                 base = "default:desert_sand",
130                 dry = "farming:desert_sand_soil",
131                 wet = "farming:desert_sand_soil_wet"
132         }
133 })
134
135 minetest.register_node("farming:desert_sand_soil_wet", {
136         description = S("Wet Desert Sand Soil"),
137         drop = "default:desert_sand",
138         tiles = {"farming_desert_sand_soil_wet.png", "farming_desert_sand_soil_wet_side.png"},
139         groups = {crumbly=3, falling_node=1, sand=1, not_in_creative_inventory=1, soil=3, wet = 1, desert = 1, field = 1},
140         sounds = default.node_sound_sand_defaults(),
141         soil = {
142                 base = "default:desert_sand",
143                 dry = "farming:desert_sand_soil",
144                 wet = "farming:desert_sand_soil_wet"
145         }
146 })
147
148 minetest.register_node("farming:straw", {
149         description = S("Straw"),
150         tiles = {"farming_straw.png"},
151         is_ground_content = false,
152         groups = {snappy=3, flammable=4, fall_damage_add_percent=-30},
153         sounds = default.node_sound_leaves_defaults(),
154 })
155
156 do
157         local recipe = "farming:straw"
158         local groups = {snappy = 3, flammable = 4}
159         local images = {"farming_straw.png"}
160         local sounds = default.node_sound_leaves_defaults()
161
162         stairs.register_stair("straw", recipe, groups, images, S("Straw Stair"),
163                 sounds, true)
164         stairs.register_stair_inner("straw", recipe, groups, images, "",
165                 sounds, true, S("Inner Straw Stair"))
166         stairs.register_stair_outer("straw", recipe, groups, images, "",
167                 sounds, true, S("Outer Straw Stair"))
168         stairs.register_slab("straw", recipe, groups, images, S("Straw Slab"),
169                 sounds, true)
170 end
171
172 minetest.register_abm({
173         label = "Farming soil",
174         nodenames = {"group:field"},
175         interval = 15,
176         chance = 4,
177         action = function(pos, node)
178                 local n_def = minetest.registered_nodes[node.name] or nil
179                 local wet = n_def.soil.wet or nil
180                 local base = n_def.soil.base or nil
181                 local dry = n_def.soil.dry or nil
182                 if not n_def or not n_def.soil or not wet or not base or not dry then
183                         return
184                 end
185
186                 pos.y = pos.y + 1
187                 local nn = minetest.get_node_or_nil(pos)
188                 if not nn or not nn.name then
189                         return
190                 end
191                 local nn_def = minetest.registered_nodes[nn.name] or nil
192                 pos.y = pos.y - 1
193
194                 if nn_def and nn_def.walkable and minetest.get_item_group(nn.name, "plant") == 0 then
195                         minetest.set_node(pos, {name = base})
196                         return
197                 end
198                 -- check if there is water nearby
199                 local wet_lvl = minetest.get_item_group(node.name, "wet")
200                 if minetest.find_node_near(pos, 3, {"group:water"}) then
201                         -- if it is dry soil and not base node, turn it into wet soil
202                         if wet_lvl == 0 then
203                                 minetest.set_node(pos, {name = wet})
204                         end
205                 else
206                         -- only turn back if there are no unloaded blocks (and therefore
207                         -- possible water sources) nearby
208                         if not minetest.find_node_near(pos, 3, {"ignore"}) then
209                                 -- turn it back into base if it is already dry
210                                 if wet_lvl == 0 then
211                                         -- only turn it back if there is no plant/seed on top of it
212                                         if minetest.get_item_group(nn.name, "plant") == 0 and minetest.get_item_group(nn.name, "seed") == 0 then
213                                                 minetest.set_node(pos, {name = base})
214                                         end
215
216                                 -- if its wet turn it back into dry soil
217                                 elseif wet_lvl == 1 then
218                                         minetest.set_node(pos, {name = dry})
219                                 end
220                         end
221                 end
222         end,
223 })
224
225
226 for i = 1, 5 do
227         minetest.override_item("default:grass_"..i, {drop = {
228                 max_items = 1,
229                 items = {
230                         {items = {"farming:seed_wheat"},rarity = 5},
231                         {items = {"default:grass_1"}},
232                 }
233         }})
234 end
235
236 minetest.override_item("default:junglegrass", {drop = {
237         max_items = 1,
238         items = {
239                 {items = {"farming:seed_cotton"},rarity = 8},
240                 {items = {"default:junglegrass"}},
241         }
242 }})