summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAuke Kok <auke-jan.h.kok@intel.com>2015-04-11 17:36:59 -0700
committerAuke Kok <auke-jan.h.kok@intel.com>2015-04-11 17:36:59 -0700
commit54ce1777f0f6b7b1a9a12a4c3813c6915bdd1653 (patch)
treeff17430e6e008adfcbf6a4e9fdd327ac2c323aa4
parent076bf8e0313f6b3eb47bc9ae0f6b7971f7851a4f (diff)
Tomatoes.
Tomatoes appear to work simple enough, until you harvest them the first time: The plant stays! However, after the 3rd to 5th harvest, the plant wilts and needs to be removed, since no more tomatoes will grow on the plant. Per harvest you can get 1-2 tomatoes only. You can craft the tomatoes to tomato seeds, as expected.
-rw-r--r--init.lua1
-rw-r--r--textures/crops_tomato.pngbin0 -> 626 bytes
-rw-r--r--textures/crops_tomato_plant_1.pngbin0 -> 729 bytes
-rw-r--r--textures/crops_tomato_plant_2.pngbin0 -> 749 bytes
-rw-r--r--textures/crops_tomato_plant_3.pngbin0 -> 765 bytes
-rw-r--r--textures/crops_tomato_plant_4.pngbin0 -> 766 bytes
-rw-r--r--textures/crops_tomato_plant_5.pngbin0 -> 782 bytes
-rw-r--r--textures/crops_tomato_plant_6.pngbin0 -> 752 bytes
-rw-r--r--textures/crops_tomato_seed.pngbin0 -> 700 bytes
-rw-r--r--tomato.lua154
10 files changed, 155 insertions, 0 deletions
diff --git a/init.lua b/init.lua
index faf4ad3..bd749bc 100644
--- a/init.lua
+++ b/init.lua
@@ -12,5 +12,6 @@ of the license, or (at your option) any later version.
dofile(minetest.get_modpath(minetest.get_current_modname()) .. "/melon.lua")
dofile(minetest.get_modpath(minetest.get_current_modname()) .. "/corn.lua")
+dofile(minetest.get_modpath(minetest.get_current_modname()) .. "/tomato.lua")
minetest.log("action", "[crops] loaded.")
diff --git a/textures/crops_tomato.png b/textures/crops_tomato.png
new file mode 100644
index 0000000..f100df5
--- /dev/null
+++ b/textures/crops_tomato.png
Binary files differ
diff --git a/textures/crops_tomato_plant_1.png b/textures/crops_tomato_plant_1.png
new file mode 100644
index 0000000..d9fa087
--- /dev/null
+++ b/textures/crops_tomato_plant_1.png
Binary files differ
diff --git a/textures/crops_tomato_plant_2.png b/textures/crops_tomato_plant_2.png
new file mode 100644
index 0000000..eaaf6b9
--- /dev/null
+++ b/textures/crops_tomato_plant_2.png
Binary files differ
diff --git a/textures/crops_tomato_plant_3.png b/textures/crops_tomato_plant_3.png
new file mode 100644
index 0000000..500e02b
--- /dev/null
+++ b/textures/crops_tomato_plant_3.png
Binary files differ
diff --git a/textures/crops_tomato_plant_4.png b/textures/crops_tomato_plant_4.png
new file mode 100644
index 0000000..2936188
--- /dev/null
+++ b/textures/crops_tomato_plant_4.png
Binary files differ
diff --git a/textures/crops_tomato_plant_5.png b/textures/crops_tomato_plant_5.png
new file mode 100644
index 0000000..6151137
--- /dev/null
+++ b/textures/crops_tomato_plant_5.png
Binary files differ
diff --git a/textures/crops_tomato_plant_6.png b/textures/crops_tomato_plant_6.png
new file mode 100644
index 0000000..c25cec4
--- /dev/null
+++ b/textures/crops_tomato_plant_6.png
Binary files differ
diff --git a/textures/crops_tomato_seed.png b/textures/crops_tomato_seed.png
new file mode 100644
index 0000000..ac121eb
--- /dev/null
+++ b/textures/crops_tomato_seed.png
Binary files differ
diff --git a/tomato.lua b/tomato.lua
new file mode 100644
index 0000000..81519a9
--- /dev/null
+++ b/tomato.lua
@@ -0,0 +1,154 @@
+
+--[[
+
+Copyright (C) 2015 - Auke Kok <sofar@foo-projects.org>
+
+"crops" is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1
+of the license, or (at your option) any later version.
+
+--]]
+
+local interval = 90
+local chance = 2
+
+minetest.register_node("crops:tomato_seed", {
+ description = "tomato seed",
+ inventory_image = "crops_tomato_seed.png",
+ wield_image = "crops_tomato_seed.png",
+ tiles = { "crops_tomato_plant_1.png" },
+ drawtype = "plantlike",
+ sunlight_propagates = true,
+ use_texture_alpha = true,
+ walkable = false,
+ paramtype = "light",
+ groups = { snappy=3,flammable=3,flora=1,attached_node=1 },
+ drop = {},
+
+ on_place = function(itemstack, placer, pointed_thing)
+ local under = minetest.get_node(pointed_thing.under)
+ if minetest.get_item_group(under.name, "soil") <= 1 then
+ return
+ end
+ minetest.set_node(pointed_thing.above, {name="crops:tomato_plant_1"})
+ if not minetest.setting_getbool("creative_mode") then
+ itemstack:take_item()
+ end
+ return itemstack
+ end
+})
+
+for stage = 1, 4 do
+minetest.register_node("crops:tomato_plant_" .. stage , {
+ description = "tomato plant",
+ tiles = { "crops_tomato_plant_" .. stage .. ".png" },
+ drawtype = "plantlike",
+ sunlight_propagates = true,
+ use_texture_alpha = true,
+ walkable = false,
+ paramtype = "light",
+ groups = { snappy=3, flammable=3, flora=1, attached_node=1, not_in_creative_inventory=1 },
+ drop = {},
+ selection_box = {
+ type = "fixed",
+ fixed = {-0.5, -0.5, -0.5, 0.5, -0.5 + (((math.min(stage, 4)) + 1) / 5), 0.5}
+ }
+})
+end
+
+minetest.register_node("crops:tomato_plant_5" , {
+ description = "tomato plant",
+ tiles = { "crops_tomato_plant_5.png" },
+ drawtype = "plantlike",
+ sunlight_propagates = true,
+ use_texture_alpha = true,
+ walkable = false,
+ paramtype = "light",
+ groups = { snappy=3, flammable=3, flora=1, attached_node=1, not_in_creative_inventory=1 },
+ drop = {},
+ on_dig = function(pos, node, digger)
+ local drops = {}
+ for i = 1, math.random(1, 2) do
+ table.insert(drops, "crops:tomato")
+ end
+ core.handle_node_drops(pos, drops, digger)
+
+ local meta = minetest.get_meta(pos)
+ local ttl = meta:get_int("crops_tomato_ttl")
+ if ttl > 1 then
+ minetest.set_node(pos, { name = "crops:tomato_plant_4"})
+ meta:set_int("crops_tomato_ttl", ttl - 1)
+ else
+ minetest.set_node(pos, { name = "crops:tomato_plant_6"})
+ meta:set_int("crops_tomato_ttl", 0)
+ end
+ end
+})
+
+minetest.register_node("crops:tomato_plant_6", {
+ description = "tomato plant",
+ tiles = { "crops_tomato_plant_6.png" },
+ drawtype = "plantlike",
+ sunlight_propagates = true,
+ use_texture_alpha = true,
+ walkable = false,
+ paramtype = "light",
+ groups = { snappy=3, flammable=3, flora=1, attached_node=1, not_in_creative_inventory=1 },
+ drop = {},
+})
+
+minetest.register_craftitem("crops:tomato", {
+ description = "Tomato",
+ inventory_image = "crops_tomato.png",
+ on_use = minetest.item_eat(1)
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "crops:tomato_seed",
+ recipe = { "crops:tomato" }
+})
+
+--
+-- grows a plant to mature size
+--
+minetest.register_abm({
+ nodenames = { "crops:tomato_plant_1", "crops:tomato_plant_2", "crops:tomato_plant_3" },
+ neighbors = { "group:soil" },
+ interval = interval,
+ chance = chance,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ if minetest.get_node_light(pos, nil) < 13 then
+ return
+ end
+ local n = string.gsub(node.name, "4", "5")
+ n = string.gsub(n, "3", "4")
+ n = string.gsub(n, "2", "3")
+ n = string.gsub(n, "1", "2")
+ minetest.set_node(pos, { name = n })
+ end
+})
+
+--
+-- grows a tomato
+--
+minetest.register_abm({
+ nodenames = { "crops:tomato_plant_4" },
+ neighbors = { "group:soil" },
+ interval = interval,
+ chance = chance,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ if minetest.get_node_light(pos, nil) < 13 then
+ return
+ end
+ local meta = minetest.get_meta(pos)
+ local ttl = meta:get_int("crops_tomato_ttl")
+ if ttl == 0 then
+ ttl = math.random(4, 6)
+ end
+ minetest.set_node(pos, { name = "crops:tomato_plant_5" })
+ meta:set_int("crops_tomato_ttl", ttl)
+ end
+})
+