From 0fe42e4f30c2896e66b84e67af27defc8340d9bd Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 13 Mar 2017 22:36:34 +0100 Subject: [PATCH] Melons now also make use of the gourd API --- mods/ITEMS/mcl_farming/melon.lua | 244 ++++--------------------------- 1 file changed, 26 insertions(+), 218 deletions(-) diff --git a/mods/ITEMS/mcl_farming/melon.lua b/mods/ITEMS/mcl_farming/melon.lua index 3f1016d4..83c6f698 100644 --- a/mods/ITEMS/mcl_farming/melon.lua +++ b/mods/ITEMS/mcl_farming/melon.lua @@ -1,4 +1,19 @@ -minetest.register_node("mcl_farming:melon", { +-- Seeds +minetest.register_craftitem("mcl_farming:melon_seeds", { + description = "Melon Seeds", + _doc_items_longdesc = "Grows into a melon. Chickens like melon seeds.", + _doc_items_usagehelp = "Place the melon seeds on farmland (which can be created with a hoe) to plant a melon stem. Melons grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it melon seeds.", + stack_max = 64, + groups = { craftitem=1 }, + inventory_image = "farming_melon_seed.png", + on_place = function(itemstack, placer, pointed_thing) + return mcl_farming:place_seed(itemstack, placer, pointed_thing, "mcl_farming:melontige_1") + end, +}) + +-- Melon template (will be fed into mcl_farming.register_gourd + +local melon_base_def = { description = "Melon", _doc_items_longdesc = "A melon is a block which has been grown from melon seeds. It has reached its full size and can be harvested for melon slices.", stack_max = 64, @@ -14,32 +29,12 @@ minetest.register_node("mcl_farming:melon", { { items = {'mcl_farming:melon_item 3'} }, } }, - after_dig_node = function(pos, oldnode, oldmetadata, user) - local have_change = 0 - for x=-1,1 do - local p = {x=pos.x+x, y=pos.y, z=pos.z} - local n = minetest.get_node(p) - if string.find(n.name, "melontige_linked_") and have_change == 0 then - have_change = 1 - minetest.add_node(p, {name="mcl_farming:melontige_unconnect"}) - end - end - if have_change == 0 then - for z=-1,1 do - local p = {x=pos.x, y=pos.y, z=pos.z+z} - local n = minetest.get_node(p) - if string.find(n.name, "melontige_linked_") and have_change == 0 then - have_change = 1 - minetest.add_node(p, {name="mcl_farming:melontige_unconnect"}) - end - end - end - end, sounds = mcl_sounds.node_sound_wood_defaults(), _mcl_blast_resistance = 5, _mcl_hardness = 1, -}) +} +-- Drop proabilities for melon stem local stemdrop = { max_items = 1, -- FIXME: The probabilities are slightly off from the original. @@ -61,6 +56,7 @@ local stemdrop = { }, } +-- Growing unconnected stems minetest.register_node("mcl_farming:melontige_1", { description = "Melon Stem (1)", _doc_items_entry_name = "Melon Stem", @@ -101,8 +97,9 @@ minetest.register_node("mcl_farming:melontige_2", { _mcl_blast_resistance = 0, }) +-- Full melon stem, able to spawn melons minetest.register_node("mcl_farming:melontige_unconnect", { - description = "Melon Stem (unconnected)", + description = "Mature Melon Stem", _doc_items_create_entry = false, paramtype = "light", walkable = false, @@ -115,146 +112,13 @@ minetest.register_node("mcl_farming:melontige_unconnect", { _mcl_blast_resistance = 0, }) -minetest.register_node("mcl_farming:melontige_linked_r", { - description = "Melon Stem (linked to the right)", - _doc_items_create_entry = false, - paramtype = "light", - sunlight_propagates = true, - walkable = false, - drop = stemdrop, - drawtype = "nodebox", - paramtype = "light", - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, 0, 0.5, 0.5, 0}, -- NodeBox1 - } - }, - selection_box = { - type = "fixed", - fixed = {-0.2, -0.5, -0.2, 0.2, 0.2, 0.2} - }, - tiles = { - "farming_tige_connnect.png", --top - "farming_tige_connnect.png", -- bottom - "farming_tige_connnect.png", -- right - "farming_tige_connnect.png", -- left - "farming_tige_connnect.png", -- back - "farming_tige_connnect.png^[transformFX90" --front - }, - groups = {dig_immediate=3, not_in_creative_inventory=1 ,dig_by_water=1}, - sounds = mcl_sounds.node_sound_leaves_defaults(), - _mcl_blast_resistance = 0, -}) +-- Register stem growth +mcl_farming:add_plant("mcl_farming:melontige_unconnect", {"mcl_farming:melontige_1", "mcl_farming:melontige_2"}, 50, 20) -minetest.register_node("mcl_farming:melontige_linked_l", { - description = "Melon Stem (linked to the left)", - _doc_items_create_entry = false, - paramtype = "light", - walkable = false, - sunlight_propagates = true, - drop = stemdrop, - drawtype = "nodebox", - paramtype = "light", - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, 0, 0.5, 0.5, 0}, -- NodeBox1 - } - }, - selection_box = { - type = "fixed", - fixed = {-0.2, -0.5, -0.2, 0.2, 0.2, 0.2} - }, - tiles = { - "farming_tige_connnect.png", --top - "farming_tige_connnect.png", -- bottom - "farming_tige_connnect.png", -- right - "farming_tige_connnect.png", -- left - "farming_tige_connnect.png^[transformFX90", -- back - "farming_tige_connnect.png" --front - }, - groups = {dig_immediate=3, not_in_creative_inventory=1 ,dig_by_water=1}, - sounds = mcl_sounds.node_sound_leaves_defaults(), - _mcl_blast_resistance = 0, -}) - -minetest.register_node("mcl_farming:melontige_linked_t", { - description = "Melon Stem (linked to the top)", - _doc_items_create_entry = false, - paramtype = "light", - walkable = false, - sunlight_propagates = true, - drop = stemdrop, - drawtype = "nodebox", - paramtype = "light", - node_box = { - type = "fixed", - fixed = { - {0, -0.5, -0.5, 0, 0.5, 0.5}, -- NodeBox1 - } - }, - selection_box = { - type = "fixed", - fixed = {-0.2, -0.5, -0.2, 0.2, 0.2, 0.2} - }, - tiles = { - "farming_tige_connnect.png", --top - "farming_tige_connnect.png", -- bottom - "farming_tige_connnect.png^[transformFX90", -- right - "farming_tige_connnect.png", -- left - "farming_tige_connnect.png", -- back - "farming_tige_connnect.png" --front - }, - groups = {dig_immediate=3, not_in_creative_inventory=1 ,dig_by_water=1}, - sounds = mcl_sounds.node_sound_leaves_defaults(), - _mcl_blast_resistance = 0, -}) - -minetest.register_node("mcl_farming:melontige_linked_b", { - description = "Melon Stem (linked to the bottom)", - _doc_items_create_entry = false, - paramtype = "light", - walkable = false, - sunlight_propagates = true, - drop = stemdrop, - drawtype = "nodebox", - paramtype = "light", - node_box = { - type = "fixed", - fixed = { - {0, -0.5, -0.5, 0, 0.5, 0.5}, -- NodeBox1 - } - }, - selection_box = { - type = "fixed", - fixed = {-0.2, -0.5, -0.2, 0.2, 0.2, 0.2} - }, - tiles = { - "farming_tige_connnect.png", --top - "farming_tige_connnect.png", -- bottom - "farming_tige_connnect.png", -- right - "farming_tige_connnect.png^[transformFX90", -- left - "farming_tige_connnect.png", -- back - "farming_tige_connnect.png" --front - }, - groups = {dig_immediate=3, not_in_creative_inventory=1 ,dig_by_water=1}, - sounds = mcl_sounds.node_sound_leaves_defaults(), - _mcl_blast_resistance = 0, -}) - -minetest.register_craftitem("mcl_farming:melon_seeds", { - description = "Melon Seeds", - _doc_items_longdesc = "Grows into a melon. Chickens like melon seeds.", - _doc_items_usagehelp = "Place the melon seeds on farmland (which can be created with a hoe) to plant a melon stem. Melons grow in sunlight and grow faster on hydrated farmland. Rightclick an animal to feed it melon seeds.", - stack_max = 64, - groups = { craftitem=1 }, - inventory_image = "farming_melon_seed.png", - on_place = function(itemstack, placer, pointed_thing) - return mcl_farming:place_seed(itemstack, placer, pointed_thing, "mcl_farming:melontige_1") - end, -}) +-- Register actual melon, connected stems and stem-to-melon growth +mcl_farming.register_gourd("mcl_farming:melontige_unconnect", "mcl_farming:melontige_linked", stemdrop, "mcl_farming:melon", melon_base_def) +-- Items and crafting minetest.register_craftitem("mcl_farming:melon_item", { -- Original name: “Melon” description = "Melon Slice", @@ -265,62 +129,6 @@ minetest.register_craftitem("mcl_farming:melon_item", { groups = { food = 2, eatable = 2 }, }) -minetest.register_abm({ - nodenames = {"mcl_farming:melontige_unconnect"}, - neighbors = {"air"}, - interval = 25, - chance = 15, - action = function(pos) - local have_change = 0 - local newpos = {x=pos.x, y=pos.y, z=pos.z} - local light = minetest.get_node_light(pos) - if light or light > 10 then - for x=-1,1 do - local p = {x=pos.x+x, y=pos.y-1, z=pos.z} - newpos = {x=pos.x+x, y=pos.y, z=pos.z} - local n = minetest.get_node(p) - local nod = minetest.get_node(newpos) - local soilgroup = minetest.get_item_group(n.name, "soil") - - if n.name=="mcl_core:dirt_with_grass" and nod.name=="air" and have_change == 0 - or n.name=="mcl_core:dirt" and nod.name=="air" and have_change == 0 - or (soilgroup == 2 or soilgroup == 3) and nod.name=="air" and have_change == 0 then - have_change = 1 - minetest.add_node(newpos, {name="mcl_farming:melon"}) - if x == 1 then - minetest.add_node(pos, {name="mcl_farming:melontige_linked_r" }) - else - minetest.add_node(pos, {name="mcl_farming:melontige_linked_l"}) - end - end - end - if have_change == 0 then - for z=-1,1 do - local p = {x=pos.x, y=pos.y-1, z=pos.z+z} - newpos = {x=pos.x, y=pos.y, z=pos.z+z} - local n = minetest.get_node(p) - local nod2 = minetest.get_node(newpos) - local soilgroup = minetest.get_item_group(n.name, "soil") - - if n.name=="mcl_core:dirt_with_grass" and nod2.name=="air" and have_change == 0 - or n.name=="mcl_core:dirt" and nod2.name=="air" and have_change == 0 - or (soilgroup == 2 or soilgroup == 3) and nod2.name=="air" and have_change == 0 then - have_change = 1 - minetest.add_node(newpos, {name="mcl_farming:melon"}) - if z == 1 then - minetest.add_node(pos, {name="mcl_farming:melontige_linked_t" }) - else - minetest.add_node(pos, {name="mcl_farming:melontige_linked_b" }) - end - end - end - end - end - end, -}) - -mcl_farming:add_plant("mcl_farming:melontige_unconnect", {"mcl_farming:melontige_1", "mcl_farming:melontige_2"}, 50, 20) - minetest.register_craft({ output = "mcl_farming:melon_seeds", recipe = {{"mcl_farming:melon_item"}}