297 lines
8.0 KiB
Lua

local S = minetest.get_translator("rp_farming")
local NS = function(s) return s end
--
-- Nodes
--
-- Wheat
farming.register_plant_nodes("rp_farming:wheat", {
description_stage_1 = S("Wheat Seed"),
description_general = NS("Wheat Plant (stage @1)"),
tooltip_stage_1 = S("Grows on dirt; it likes water"),
texture_prefix = "farming_wheat",
drop_stages = {
[1] = {
items = {
{items = {"rp_farming:wheat"}, rarity = 3}
}
},
[2] = {
items = {
{items = {"rp_farming:wheat"}, rarity = 2}
},
},
[3] = {
items = {
{items = {"rp_farming:wheat"}, rarity = 1}
},
},
[4] = {
items = {
-- 1-3 wheat, 1-2 wheat seed
{items = {"rp_farming:wheat"}, rarity = 1},
{items = {"rp_farming:wheat 2"}, rarity = 4},
{items = {"rp_farming:wheat_1"}, rarity = 1},
{items = {"rp_farming:wheat_1"}, rarity = 2},
}
},
},
})
-- Potato
farming.register_plant_nodes("rp_farming:potato", {
description_stage_1 = S("Potato"),
description_general = NS("Potato Plant (stage @1)"),
tooltip_stage_1 = S("Grows on dirt and swamp dirt; it likes water"),
texture_prefix = "farming_potato",
meshoptions = 1,
drop_stages = {
[1] = {
items = {
{items = {"rp_farming:potato_1"}, rarity = 1}
}
},
[2] = {
items = {
{items = {"rp_farming:potato_1"}, rarity = 1}
},
},
[3] = {
items = {
{items = {"rp_farming:potato_1"}, rarity = 1}
},
},
[4] = {
items = {
-- 2-4 potatos
{items = {"rp_farming:potato_1 2"}, rarity = 1},
{items = {"rp_farming:potato_1"}, rarity = 2},
{items = {"rp_farming:potato_1"}, rarity = 5},
}
},
},
-- Potato is both a "seed" and food item at the same time
stage_extras = {
[1] = {
_rp_hunger_food = 3,
_rp_hunger_sat = 30,
on_use = minetest.item_eat(0),
},
},
stage_extra_groups = {
[1] = {
food = 2,
},
},
sound_seed_place = { name = "rp_farming_place_nonseed", gain = 0.4 },
})
-- Carrot
farming.register_plant_nodes("rp_farming:carrot", {
description_stage_1 = S("Carrot"),
description_general = NS("Carrot Plant (stage @1)"),
tooltip_stage_1 = S("Grows on dry dirt; it likes water"),
texture_prefix = "farming_carrot",
meshoptions = 2,
drop_stages = {
[1] = {
items = {
{items = {"rp_farming:carrot_1"}, rarity = 1}
}
},
[2] = {
items = {
{items = {"rp_farming:carrot_1"}, rarity = 1}
},
},
[3] = {
items = {
{items = {"rp_farming:carrot_1"}, rarity = 1}
},
},
[4] = {
items = {
-- 2-5 carrots
{items = {"rp_farming:carrot_1 2"}, rarity = 1},
{items = {"rp_farming:carrot_1"}, rarity = 2},
{items = {"rp_farming:carrot_1"}, rarity = 3},
{items = {"rp_farming:carrot_1"}, rarity = 4},
}
},
},
-- Carrot is both a "seed" and food item at the same time
stage_extras = {
[1] = {
_rp_hunger_food = 2,
_rp_hunger_sat = 20,
on_use = minetest.item_eat(0),
},
},
stage_extra_groups = {
[1] = {
food = 2,
},
},
sound_seed_place = { name = "rp_farming_place_nonseed", gain = 0.4 },
})
-- Asparagus
farming.register_plant_nodes("rp_farming:asparagus", {
description_stage_1 = S("Asparagus Seed"),
description_general = NS("Asparagus Plant (stage @1)"),
tooltip_stage_1 = S("Grows on swamp dirt; it likes water"),
texture_prefix = "farming_asparagus",
drop_stages = {
[1] = {
items = {
{items = {"rp_farming:asparagus_1"}, rarity = 4}
}
},
[2] = {
items = {
{items = {"rp_farming:asparagus_1"}, rarity = 3}
},
},
[3] = {
items = {
{items = {"rp_farming:asparagus_1"}, rarity = 2}
},
},
[4] = {
items = {
-- 1-4 asparagus, 1-3 asparagus seed
{items = {"rp_farming:asparagus"}, rarity = 1},
{items = {"rp_farming:asparagus"}, rarity = 2},
{items = {"rp_farming:asparagus"}, rarity = 3},
{items = {"rp_farming:asparagus"}, rarity = 4},
{items = {"rp_farming:asparagus_1"}, rarity = 1},
{items = {"rp_farming:asparagus_1"}, rarity = 3},
{items = {"rp_farming:asparagus_1"}, rarity = 3},
}
},
},
})
-- Cotton
local trim_cotton = function(pos, node, player, tool)
-- This cuts down the cotton plant to stage 1 and might drop some bonus goodies
local name = tool:get_name()
minetest.sound_play({name = "default_shears_cut", gain = 0.5}, {pos = player:get_pos(), max_hear_distance = 8}, true)
minetest.set_node(pos, {name = "rp_farming:cotton_2"})
-- Drop some seeds
if math.random(1, 2) == 1 then
item_drop.drop_item(pos, "rp_farming:cotton_1")
end
-- Drop an extra cotton ball
for i = 1, 2 do
if math.random(1, 4) == 1 then -- 25% chance of dropping 2x
item_drop.drop_item(pos, "rp_farming:cotton 2")
else
item_drop.drop_item(pos, "rp_farming:cotton")
end
end
-- Add wear
if not minetest.is_creative_enabled(player:get_player_name()) then
local def = tool:get_definition()
tool:add_wear_by_uses(def.tool_capabilities.groupcaps.snappy.uses)
end
-- Keep it growing
farming.begin_growing_plant(pos)
return tool
end
farming.register_plant_nodes("rp_farming:cotton", {
description_stage_1 = S("Cotton Seed"),
description_general = NS("Cotton Plant (stage @1)"),
tooltip_stage_1 = S("Grows on dirt, dry dirt and sand; it likes water"),
texture_prefix = "farming_cotton",
drop_stages = {
[1] = {
items = {
{items = {"rp_farming:cotton"}, rarity = 3}
}
},
[2] = {
items = {
{items = {"rp_farming:cotton"}, rarity = 2}
},
},
[3] = {
items = {
{items = {"rp_farming:cotton"}, rarity = 1}
},
},
[4] = {
items = {
-- 1-3 cotton, 1-2 cotton seed
{items = {"rp_farming:cotton"}, rarity = 1},
{items = {"rp_farming:cotton 2"}, rarity = 4},
{items = {"rp_farming:cotton_1"}, rarity = 1},
{items = {"rp_farming:cotton_1"}, rarity = 2},
}
},
},
stage_extras = {
[4] = {
_on_trim = trim_cotton,
},
},
stage_extra_groups = {
[4] = {
unmagnetic = 1,
},
},
})
minetest.register_node(
"rp_farming:cotton_bale",
{
description = S("Cotton Bale"),
tiles ={"farming_cotton_bale.png"},
-- HACK: This is a workaround to fix the coloring of the crack overlay
overlay_tiles = {{name="rp_textures_blank_paintable_overlay.png",color="white"}},
is_ground_content = false,
groups = {snappy = 2, oddly_breakable_by_hand = 3,
fall_damage_add_percent = -15, fuzzy = 1,
unmagnetic = 1, paintable = 1},
sounds = rp_sounds.node_sound_fuzzy_defaults({
footstep = { name = "rp_sounds_footstep_fuzzy", gain = 0.7, pitch = 1.3 },
dig = {name="rp_sounds_dig_fuzzy", gain=0.5, pitch = 1.3 },
dug = {name="rp_sounds_dug_fuzzy", gain=0.4, pitch = 1.3 },
place = {name="rp_sounds_place_fuzzy", gain=0.4, pitch = 1.3 },
}),
paramtype2 = "color",
palette = "rp_paint_palette_256.png",
-- clear the color when breaking
drop = "rp_farming:cotton_bale",
}
)
minetest.register_node(
"rp_farming:straw",
{
description = S("Straw"),
tiles = {"rp_farming_straw.png"},
is_ground_content = false,
groups = {snappy = 3, fall_damage_add_percent = -15},
sounds = rp_sounds.node_sound_straw_defaults(),
}
)