2021-05-29 17:12:33 +03:00
local S = minetest.get_translator ( minetest.get_current_modname ( ) )
2019-03-08 02:00:09 +03:00
2017-03-14 00:36:34 +03:00
-- Seeds
minetest.register_craftitem ( " mcl_farming:melon_seeds " , {
2019-03-08 02:00:09 +03:00
description = S ( " Melon Seeds " ) ,
2020-03-12 03:35:11 +03:00
_tt_help = S ( " Grows on farmland " ) ,
2019-03-15 05:41:24 +03:00
_doc_items_longdesc = S ( " Grows into a melon stem which in turn grows melons. Chickens like melon seeds. " ) ,
_doc_items_usagehelp = S ( " Place the melon seeds on farmland (which can be created with a hoe) to plant a melon stem. Melon stems grow in sunlight and grow faster on hydrated farmland. When mature, the stem will attempt to grow a melon at the side. Rightclick an animal to feed it melon seeds. " ) ,
2017-03-14 00:36:34 +03:00
stack_max = 64 ,
groups = { craftitem = 1 } ,
2019-02-05 06:06:28 +03:00
inventory_image = " mcl_farming_melon_seeds.png " ,
2017-03-14 00:36:34 +03:00
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 = {
2019-03-08 02:00:09 +03:00
description = S ( " Melon " ) ,
_doc_items_longdesc = S ( " A melon is a block which can be grown from melon stems, which in turn are grown from melon seeds. It can be harvested for melon slices. " ) ,
2015-06-29 20:55:56 +03:00
stack_max = 64 ,
tiles = { " farming_melon_top.png " , " farming_melon_top.png " , " farming_melon_side.png " , " farming_melon_side.png " , " farming_melon_side.png " , " farming_melon_side.png " } ,
2017-07-05 21:14:37 +03:00
groups = { handy = 1 , axey = 1 , plant = 1 , building_block = 1 , enderman_takable = 1 , dig_by_piston = 1 } ,
2015-06-29 20:55:56 +03:00
drop = {
max_items = 1 ,
items = {
2021-05-29 17:12:33 +03:00
{ items = { " mcl_farming:melon_item 7 " } , rarity = 14 } ,
{ items = { " mcl_farming:melon_item 6 " } , rarity = 10 } ,
{ items = { " mcl_farming:melon_item 5 " } , rarity = 5 } ,
{ items = { " mcl_farming:melon_item 4 " } , rarity = 2 } ,
{ items = { " mcl_farming:melon_item 3 " } } ,
2015-06-29 20:55:56 +03:00
}
} ,
2017-02-19 23:27:31 +03:00
sounds = mcl_sounds.node_sound_wood_defaults ( ) ,
2020-04-17 22:40:13 +03:00
_mcl_blast_resistance = 1 ,
2017-02-27 03:26:07 +03:00
_mcl_hardness = 1 ,
2020-11-02 21:09:23 +03:00
_mcl_silk_touch_drop = true ,
2020-11-06 15:46:52 +03:00
_mcl_fortune_drop = {
discrete_uniform_distribution = true ,
items = { " mcl_farming:melon_item " } ,
min_count = 3 ,
max_count = 7 ,
cap = 9 ,
}
2017-03-14 00:36:34 +03:00
}
2015-06-29 20:55:56 +03:00
2017-03-14 00:36:34 +03:00
-- Drop proabilities for melon stem
2017-03-14 06:17:35 +03:00
local stem_drop = {
2017-02-22 16:46:21 +03:00
max_items = 1 ,
2019-10-16 09:33:22 +03:00
-- The probabilities are slightly off from the original.
2017-02-22 16:46:21 +03:00
-- Update this drop list when the Minetest drop probability system
-- is more powerful.
items = {
-- 1 seed: Approximation to 20/125 chance
-- 20/125 = 0.16
-- Approximation: 1/6 = ca. 0.166666666666667
{ items = { " mcl_farming:melon_seeds 1 " } , rarity = 6 } ,
-- 2 seeds: Approximation to 4/125 chance
-- 4/125 = 0.032
-- Approximation: 1/31 = ca. 0.032258064516129
{ items = { " mcl_farming:melon_seeds 2 " } , rarity = 31 } ,
-- 3 seeds: 1/125 chance
{ items = { " mcl_farming:melon_seeds 3 " } , rarity = 125 } ,
} ,
}
2017-03-14 00:36:34 +03:00
-- Growing unconnected stems
2017-03-14 07:46:57 +03:00
2017-07-21 20:47:20 +03:00
local startcolor = { r = 0x2E , g = 0x9D , b = 0x2E }
local endcolor = { r = 0xFF , g = 0xA8 , b = 0x00 }
2017-03-14 04:37:42 +03:00
for s = 1 , 7 do
local h = s / 8
2017-03-14 07:46:57 +03:00
local doc = s == 1
local longdesc , entry_name
if doc then
2019-03-08 02:00:09 +03:00
entry_name = S ( " Premature Melon Stem " )
longdesc = S ( " Melon stems grow on farmland in 8 stages. On hydrated farmland, the growth is a bit quicker. Mature melon stems are able to grow melons. " )
2017-03-14 07:46:57 +03:00
end
2017-07-21 20:47:20 +03:00
local colorstring = mcl_farming : stem_color ( startcolor , endcolor , s , 8 )
2018-10-24 19:16:39 +03:00
local texture = " ([combine:16x16:0, " .. ( ( 8 - s ) * 2 ) .. " =mcl_farming_melon_stem_disconnected.png)^[colorize: " .. colorstring .. " :127 "
2017-03-14 04:37:42 +03:00
minetest.register_node ( " mcl_farming:melontige_ " .. s , {
2019-03-08 02:00:09 +03:00
description = S ( " Premature Melon Stem (Stage @1) " , s ) ,
2017-03-14 07:46:57 +03:00
_doc_items_create_entry = doc ,
_doc_items_entry_name = entry_name ,
_doc_items_longdesc = longdesc ,
2017-03-14 04:37:42 +03:00
paramtype = " light " ,
walkable = false ,
drawtype = " plantlike " ,
sunlight_propagates = true ,
2017-03-14 06:17:35 +03:00
drop = stem_drop ,
2018-10-24 19:16:39 +03:00
tiles = { texture } ,
wield_image = texture ,
inventory_image = texture ,
2017-03-14 04:37:42 +03:00
selection_box = {
type = " fixed " ,
fixed = {
{ - 0.15 , - 0.5 , - 0.15 , 0.15 , - 0.5 + h , 0.15 }
} ,
2015-06-29 20:55:56 +03:00
} ,
2017-05-20 05:11:14 +03:00
groups = { dig_immediate = 3 , not_in_creative_inventory = 1 , plant = 1 , attached_node = 1 , dig_by_water = 1 , destroy_by_lava_flow = 1 , plant_melon_stem = s } ,
2017-03-14 04:37:42 +03:00
sounds = mcl_sounds.node_sound_leaves_defaults ( ) ,
_mcl_blast_resistance = 0 ,
} )
end
2015-06-29 20:55:56 +03:00
2017-03-14 00:36:34 +03:00
-- Full melon stem, able to spawn melons
2017-03-14 06:17:35 +03:00
local stem_def = {
2019-03-08 02:00:09 +03:00
description = S ( " Mature Melon Stem " ) ,
2017-03-14 07:46:57 +03:00
_doc_items_create_entry = true ,
2019-03-08 02:00:09 +03:00
_doc_items_longdesc = S ( " A mature melon stem attempts to grow a melon at one of its four adjacent blocks. A melon can only grow on top of farmland, dirt, or a grass block. When a melon is next to a melon stem, the melon stem immediately bends and connects to the melon. While connected, a melon stem can't grow another melon. As soon all melons around the stem have been removed, it loses the connection and is ready to grow another melon. " ) ,
2017-07-21 20:47:20 +03:00
tiles = { " mcl_farming_melon_stem_disconnected.png^[colorize:#FFA800:127 " } ,
2018-10-24 19:16:39 +03:00
wield_image = " mcl_farming_melon_stem_disconnected.png^[colorize:#FFA800:127 " ,
inventory_image = " mcl_farming_melon_stem_disconnected.png^[colorize:#FFA800:127 " ,
2017-03-14 06:17:35 +03:00
}
2015-06-29 20:55:56 +03:00
2017-03-14 00:36:34 +03:00
-- Register stem growth
2017-04-01 04:54:58 +03:00
mcl_farming : add_plant ( " plant_melon_stem " , " mcl_farming:melontige_unconnect " , { " mcl_farming:melontige_1 " , " mcl_farming:melontige_2 " , " mcl_farming:melontige_3 " , " mcl_farming:melontige_4 " , " mcl_farming:melontige_5 " , " mcl_farming:melontige_6 " , " mcl_farming:melontige_7 " } , 30 , 5 )
2015-06-29 20:55:56 +03:00
2017-03-14 00:36:34 +03:00
-- Register actual melon, connected stems and stem-to-melon growth
2017-07-21 20:47:20 +03:00
mcl_farming : add_gourd ( " mcl_farming:melontige_unconnect " , " mcl_farming:melontige_linked " , " mcl_farming:melontige_unconnect " , stem_def , stem_drop , " mcl_farming:melon " , melon_base_def , 25 , 15 , " mcl_farming_melon_stem_connected.png^[colorize:#FFA800:127 " )
2015-06-29 20:55:56 +03:00
2017-03-14 00:36:34 +03:00
-- Items and crafting
2017-01-31 14:35:59 +03:00
minetest.register_craftitem ( " mcl_farming:melon_item " , {
2017-02-19 23:29:56 +03:00
-- Original name: “Melon”
2019-03-08 02:00:09 +03:00
description = S ( " Melon Slice " ) ,
_doc_items_longdesc = S ( " This is a food item which can be eaten. " ) ,
2015-06-29 20:55:56 +03:00
stack_max = 64 ,
inventory_image = " farming_melon.png " ,
2017-02-16 19:45:33 +03:00
on_place = minetest.item_eat ( 2 ) ,
on_secondary_use = minetest.item_eat ( 2 ) ,
2017-01-16 16:29:41 +03:00
groups = { food = 2 , eatable = 2 } ,
2017-05-20 18:45:04 +03:00
_mcl_saturation = 1.2 ,
2015-06-29 20:55:56 +03:00
} )
minetest.register_craft ( {
2017-02-10 19:00:29 +03:00
output = " mcl_farming:melon_seeds " ,
2017-02-07 21:08:28 +03:00
recipe = { { " mcl_farming:melon_item " } }
2015-06-29 20:55:56 +03:00
} )
minetest.register_craft ( {
2021-05-29 17:12:33 +03:00
output = " mcl_farming:melon " ,
2015-06-29 20:55:56 +03:00
recipe = {
2021-05-29 17:12:33 +03:00
{ " mcl_farming:melon_item " , " mcl_farming:melon_item " , " mcl_farming:melon_item " } ,
{ " mcl_farming:melon_item " , " mcl_farming:melon_item " , " mcl_farming:melon_item " } ,
{ " mcl_farming:melon_item " , " mcl_farming:melon_item " , " mcl_farming:melon_item " } ,
2015-06-29 20:55:56 +03:00
}
2017-01-04 08:39:52 +03:00
} )
2017-01-07 06:55:58 +03:00
2017-03-21 06:56:16 +03:00
if minetest.get_modpath ( " doc " ) then
for i = 2 , 8 do
doc.add_entry_alias ( " nodes " , " mcl_farming:melontige_1 " , " nodes " , " mcl_farming:melontige_ " .. i )
end
end