summaryrefslogtreecommitdiff
path: root/farming_plus/pumpkin.lua
diff options
context:
space:
mode:
Diffstat (limited to 'farming_plus/pumpkin.lua')
-rw-r--r--farming_plus/pumpkin.lua480
1 files changed, 480 insertions, 0 deletions
diff --git a/farming_plus/pumpkin.lua b/farming_plus/pumpkin.lua
new file mode 100644
index 0000000..4a68b99
--- /dev/null
+++ b/farming_plus/pumpkin.lua
@@ -0,0 +1,480 @@
+-- main `S` code in init.lua
+local S
+S = farming.S
+
+minetest.register_craftitem(":farming:pumpkin_seed", {
+ description = S("Pumpkin Seed"),
+ inventory_image = "farming_pumpkin_seed.png",
+ on_place = function(itemstack, placer, pointed_thing)
+ return farming.place_seed(itemstack, placer, pointed_thing, "farming:pumpkin_1")
+ end
+})
+
+minetest.register_node(":farming:pumpkin_1", {
+ paramtype = "light",
+ sunlight_propagates = true,
+ drawtype = "nodebox",
+ drop = "",
+ tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png"},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.2, -0.5, -0.2, 0.2, -0.1, 0.2}
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.2, -0.5, -0.2, 0.2, -0.1, 0.2}
+ },
+ },
+ groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2, not_in_creative_inventory=1, plant=1},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_node(":farming:pumpkin_2", {
+ paramtype = "light",
+ sunlight_propagates = true,
+ drawtype = "nodebox",
+ drop = "",
+ tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png"},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.35, -0.5, -0.35, 0.35, 0.2, 0.35}
+ },
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.35, -0.5, -0.35, 0.35, 0.2, 0.35}
+ },
+ },
+ groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2, not_in_creative_inventory=1, plant=1},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_node(":farming:pumpkin", {
+ description = S("Pumpkin"),
+ paramtype2 = "facedir",
+ tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png"},
+ groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2, plant=1},
+ sounds = default.node_sound_wood_defaults(),
+
+ on_punch = function(pos, node, puncher)
+ local tool = puncher:get_wielded_item():get_name()
+ if tool and string.match(tool, "sword") then
+ node.name = "farming:pumpkin_face"
+ minetest.set_node(pos, node)
+ puncher:get_inventory():add_item("main", ItemStack("farming:pumpkin_seed"))
+ if math.random(1, 5) == 1 then
+ puncher:get_inventory():add_item("main", ItemStack("farming:pumpkin_seed"))
+ end
+ end
+ end
+})
+
+farming.add_plant("farming:pumpkin", {"farming:pumpkin_1", "farming:pumpkin_2"}, 80, 20)
+
+minetest.register_node(":farming:pumpkin_face", {
+ description = S("Pumpkin Face"),
+ paramtype2 = "facedir",
+ tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_face.png"},
+ groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2, plant=1},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_node(":farming:pumpkin_face_light", {
+ description = S("Pumpkin Face With Light"),
+ paramtype2 = "facedir",
+ light_source = LIGHT_MAX-2,
+ tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_face_light.png"},
+ groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2},
+ sounds = default.node_sound_wood_defaults(),
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "farming:pumpkin_face_light",
+ recipe = {"farming:pumpkin_face", "default:torch"}
+})
+
+-- ========= BIG PUMPKIN =========
+minetest.register_node(":farming:big_pumpkin", {
+ description = S("Big Pumpkin"),
+ paramtype2 = "facedir",
+ tiles = {"farming_pumpkin_big_side.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-1, -0.5, -1, 1, 1.5, 1}
+ }
+ },
+ groups = {choppy=1, oddly_breakable_by_hand=1, flammable=2},
+ sounds = default.node_sound_wood_defaults(),
+
+ after_place_node = function(pos, placer)
+ for dx=-1,1 do
+ for dy=0,1 do
+ for dz=-1,1 do
+ pos.x = pos.x+dx
+ pos.y = pos.y+dy
+ pos.z = pos.z+dz
+ if dx ~= 0 or dy ~= 0 or dz ~= 0 then
+ if minetest.get_node(pos).name ~= "air" then
+ pos.x = pos.x-dx
+ pos.y = pos.y-dy
+ pos.z = pos.z-dz
+ minetest.remove_node(pos)
+ minetest.after(0.1, function(placer)
+ local inv = placer:get_inventory()
+ local index = placer:get_wield_index()
+ inv:set_stack("main", index, ItemStack("farming:big_pumpkin"))
+ end, placer)
+ return
+ end
+ end
+ pos.x = pos.x-dx
+ pos.y = pos.y-dy
+ pos.z = pos.z-dz
+ end
+ end
+ end
+ for dy=0,1 do
+ pos.y = pos.y+dy
+ pos.z = pos.z+1
+ minetest.set_node(pos, {name="farming:big_pumpkin_side", param2=2})
+ pos.x = pos.x-1
+ minetest.set_node(pos, {name="farming:big_pumpkin_corner", param2=2})
+ pos.x = pos.x+1
+ pos.z = pos.z-2
+ minetest.set_node(pos, {name="farming:big_pumpkin_side", param2=4})
+ pos.x = pos.x+1
+ minetest.set_node(pos, {name="farming:big_pumpkin_corner", param2=4})
+ pos.z = pos.z+1
+ minetest.set_node(pos, {name="farming:big_pumpkin_side", param2=3})
+ pos.z = pos.z+1
+ minetest.set_node(pos, {name="farming:big_pumpkin_corner", param2=3})
+ pos.z = pos.z-1
+ pos.x = pos.x-2
+ minetest.set_node(pos, {name="farming:big_pumpkin_side", param2=1})
+ pos.z = pos.z-1
+ minetest.set_node(pos, {name="farming:big_pumpkin_corner", param2=1})
+ pos.z = pos.z+1
+ pos.x = pos.x+1
+ pos.y = pos.y-dy
+ end
+ pos.y = pos.y+1
+ minetest.set_node(pos, {name="farming:big_pumpkin_top"})
+ end,
+
+ after_destruct = function(pos, oldnode)
+ for dx=-1,1 do
+ for dy=0,1 do
+ for dz=-1,1 do
+ pos.x = pos.x+dx
+ pos.y = pos.y+dy
+ pos.z = pos.z+dz
+ local name = minetest.get_node(pos).name
+ if string.find(name, "farming:big_pumpkin") then
+ minetest.remove_node(pos)
+ end
+ pos.x = pos.x-dx
+ pos.y = pos.y-dy
+ pos.z = pos.z-dz
+ end
+ end
+ end
+ end
+})
+
+minetest.register_node(":farming:big_pumpkin_side", {
+ paramtype = "light",
+ sunlight_propagates = true,
+ paramtype2 = "facedir",
+ tiles = {"farming_pumpkin_big_top_side.png", "farming_pumpkin_big_side.png"},
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, 0, 0.5, 0.5, 0.5}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {0, 0, 0, 0, 0, 0}
+ }
+ },
+ groups = {not_in_creative_inventory=1},
+})
+minetest.register_node(":farming:big_pumpkin_corner", {
+ paramtype = "light",
+ sunlight_propagates = true,
+ paramtype2 = "facedir",
+ tiles = {"farming_pumpkin_big_top_corner.png", "farming_pumpkin_big_side.png"},
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, 0, 0, 0.5, 0.5}
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {0, 0, 0, 0, 0, 0}
+ }
+ },
+ groups = {not_in_creative_inventory=1},
+})
+
+minetest.register_node(":farming:big_pumpkin_top", {
+ paramtype = "light",
+ sunlight_propagates = true,
+ tiles = {"farming_pumpkin_big_top.png"},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {0, 0, 0, 0, 0, 0}
+ }
+ },
+ groups = {not_in_creative_inventory=1},
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "farming:big_pumpkin",
+ recipe = {"bucket:bucket_water", "farming:pumpkin"},
+ replacements = {
+ {"bucket:bucket_water", "bucket:bucket_empty"}
+ }
+})
+
+-- ========= SCARECROW =========
+local box1 = {
+ {-1, -8, -1, 1, 8, 1},
+}
+
+local box2 = {
+ {-1, -8, -1, 1, 8, 1},
+ {-12, -8, -1, 12, -7, 1},
+ {-5, -2, -5, 5, 8, 5}
+}
+
+for j,list in ipairs(box1) do
+ for i,int in ipairs(list) do
+ list[i] = int/16
+ end
+ box1[j] = list
+end
+
+for j,list in ipairs(box2) do
+ for i,int in ipairs(list) do
+ list[i] = int/16
+ end
+ box2[j] = list
+end
+
+minetest.register_node(":farming:scarecrow", {
+ description = S("Scarecrow"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ paramtype2 = "facedir",
+ tiles = {"farming_scarecrow_top.png", "farming_scarecrow_top.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_front.png"},
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = box2
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-12/16, -1.5, -0.5, 12/16, 0.5, 0.5}
+ }
+ },
+ groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2},
+
+ after_place_node = function(pos, placer)
+ local node = minetest.get_node(pos)
+ local param2 = node.param2
+ pos.y = pos.y+1
+ if minetest.get_node(pos).name ~= "air" then
+ pos.y = pos.y-1
+ minetest.remove_node(pos)
+ minetest.after(0.1, function(placer)
+ local inv = placer:get_inventory()
+ local index = placer:get_wield_index()
+ inv:set_stack("main", index, ItemStack("farming:scarecrow"))
+ end, placer)
+ return
+ end
+ minetest.set_node(pos, node)
+ pos.y = pos.y-1
+ node.name = "farming:scarecrow_bottom"
+ minetest.set_node(pos, node)
+ end,
+
+ after_destruct = function(pos, oldnode)
+ pos.y = pos.y-1
+ if minetest.get_node(pos).name == "farming:scarecrow_bottom" then
+ minetest.remove_node(pos)
+ end
+ end
+})
+
+minetest.register_node(":farming:scarecrow_bottom", {
+ paramtype = "light",
+ sunlight_propagates = true,
+ paramtype2 = "facedir",
+ tiles = {"default_wood.png"},
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = box1
+ },
+ groups = {not_in_creative_inventory=1},
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {0, 0, 0, 0, 0, 0}
+ }
+ }
+})
+
+minetest.register_craft({
+ output = "farming:scarecrow",
+ recipe = {
+ {"", "farming:pumpkin_face", "",},
+ {"default:stick", "default:stick", "default:stick",},
+ {"", "default:stick", "",}
+ }
+})
+
+minetest.register_node(":farming:scarecrow_light", {
+ description = S("Scarecrow With light"),
+ paramtype = "light",
+ sunlight_propagates = true,
+ paramtype2 = "facedir",
+ light_source = LIGHT_MAX-2,
+ tiles = {"farming_scarecrow_top.png", "farming_scarecrow_top.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_front_light.png"},
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = box2
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-12/16, -1.5, -0.5, 12/16, 0.5, 0.5}
+ }
+ },
+ groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2},
+
+ after_place_node = function(pos, placer)
+ local node = minetest.get_node(pos)
+ local param2 = node.param2
+ pos.y = pos.y+1
+ if minetest.get_node(pos).name ~= "air" then
+ pos.y = pos.y-1
+ minetest.remove_node(pos)
+ minetest.after(0.1, function(placer)
+ local inv = placer:get_inventory()
+ local index = placer:get_wield_index()
+ inv:set_stack("main", index, ItemStack("farming:scarecrow_light"))
+ end, placer)
+ return
+ end
+ minetest.set_node(pos, node)
+ pos.y = pos.y-1
+ node.name = "farming:scarecrow_bottom"
+ minetest.set_node(pos, node)
+ end,
+
+ after_destruct = function(pos, oldnode)
+ pos.y = pos.y-1
+ if minetest.get_node(pos).name == "farming:scarecrow_bottom" then
+ minetest.remove_node(pos)
+ end
+ end
+})
+
+minetest.register_craft({
+ output = "farming:scarecrow_light",
+ recipe = {
+ {"", "farming:pumpkin_face_light", "",},
+ {"default:stick", "default:stick", "default:stick",},
+ {"", "default:stick", "",}
+ }
+})
+
+--===============
+minetest.register_craftitem(":farming:pumpkin_bread", {
+ description = S("Pumpkin Bread"),
+ inventory_image = "farming_bread_pumpkin.png",
+ stack_max = 1,
+ on_use = minetest.item_eat(8)
+})
+
+minetest.register_craftitem(":farming:pumpkin_flour", {
+ description = "Pumpkin Flour",
+ inventory_image = "farming_cake_mix_pumpkin.png",
+})
+minetest.register_alias("farming:pumpkin_cake_mix", "farming:pumpkin_flour")
+
+minetest.register_craft({
+ output = "farming:pumpkin_flour",
+ type = "shapeless",
+ recipe = {"farming:flour", "farming:pumpkin"}
+})
+
+minetest.register_craft({
+ type = "cooking",
+ output = "farming:pumpkin_bread",
+ recipe = "farming:pumpkin_flour",
+ cooktime = 10
+})
+
+
+-- ========= FUEL =========
+minetest.register_craft({
+ type = "fuel",
+ recipe = "farming:pumpkin_seed",
+ burntime = 1
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "farming:pumpkin",
+ burntime = 5
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "farming:pumpkin_face",
+ burntime = 5
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "farming:pumpkin_face_light",
+ burntime = 7
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "farming:big_pumpkin",
+ burntime = 10
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "farming:scarecrow",
+ burntime = 5
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "farming:scarecrow_light",
+ burntime = 5
+})