farming/grains.lua

198 lines
5.0 KiB
Lua

local S = farming.intllib
-- fuels
minetest.register_craft({
type = "fuel",
recipe = "farming:straw",
burntime = 3,
})
-- flour
minetest.register_craftitem("farming:flour", {
description = S("Flour"),
inventory_image = "farming_flour.png",
groups = {food_flour = 1, flammable = 1},
})
minetest.register_craft({
type = "shapeless",
output = "farming:flour",
recipe = {
"group:seed", "group:seed", "group:seed",
"group:seed", "farming:mortar_pestle"
},
replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}},
})
-- bread
minetest.register_craftitem("farming:bread", {
description = S("Bread"),
inventory_image = "farming_bread.png",
on_use = minetest.item_eat(5),
groups = {food_bread = 1, flammable = 2},
})
minetest.register_craft({
type = "cooking",
cooktime = 15,
output = "farming:bread",
recipe = "farming:flour"
})
-- sliced bread
minetest.register_craftitem("farming:bread_slice", {
description = S("Sliced Bread"),
inventory_image = "farming_bread_slice.png",
on_use = minetest.item_eat(1),
groups = {food_bread_slice = 1, flammable = 2},
})
minetest.register_craft({
type = "shapeless",
output = "farming:bread_slice 5",
recipe = {"farming:bread", "group:food_cutting_board"},
replacements = {{"group:food_cutting_board", "farming:cutting_board"}},
})
-- toast
minetest.register_craftitem("farming:toast", {
description = S("Toast"),
inventory_image = "farming_toast.png",
on_use = minetest.item_eat(1),
groups = {food_toast = 1, flammable = 2},
})
minetest.register_craft({
type = "cooking",
cooktime = 3,
output = "farming:toast",
recipe = "farming:bread_slice"
})
-- toast sandwich
minetest.register_craftitem("farming:toast_sandwich", {
description = S("Toast Sandwich"),
inventory_image = "farming_toast_sandwich.png",
on_use = minetest.item_eat(4),
groups = {flammable = 2},
})
minetest.register_craft({
output = "farming:toast_sandwich",
recipe = {
{"farming:bread_slice"},
{"farming:toast"},
{"farming:bread_slice"},
}
})
local function register_grain(grain_name_in,bwild,max_level,harvest_threshold,seed_threshold,seed_rarity)
local grain_name=string.lower(grain_name_in)
local print_name=string.upper(string.sub(grain_name,1,1))..string.sub(grain_name,2,99)
local modname=minetest.get_current_modname()
local farming_name=modname..":"..grain_name
local seed_name=modname..":seed_"..grain_name
print("registering "..seed_name)
local seed_png="farming_"..grain_name.."_seed.png"
-- seeds
minetest.register_node(seed_name, {
description = S(print_name.." Seed"),
tiles = {seed_png},
inventory_image = seed_png,
wield_image = seed_png,
drawtype = "signlike",
groups = {seed = 1, snappy = 3, attached_node = 1, flammable = 4},
paramtype = "light",
paramtype2 = "wallmounted",
walkable = false,
sunlight_propagates = true,
selection_box = farming.select,
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "farming:"..grain_name.."_1")
end,
})
-- harvested
minetest.register_craftitem(farming_name, {
description = S(print_name),
inventory_image = "farming_"..grain_name..".png",
groups = {food_harvested = 1, flammable = 4},
})
-- roasted
minetest.register_craftitem(seed_name.."_roasted", {
description = S(print_name.." roasted"),
inventory_image = "farming_"..grain_name.."_seed_roasted.png",
groups = {food_grain_roasted = 1, flammable = 4},
})
minetest.register_craft({
type = "cooking",
cooktime = 15,
output = seed_name.."_roasted",
recipe = seed_name
})
minetest.register_craft({
type = "shapeless",
output = seed_name,
recipe = {
farming_name, farming_name, farming_name,
farming_name, modname..":flail"
},
replacements = {{"group:flail", "farming:flail"},
{"group:harvested",modname..":straw"}},
})
-- grain definition
local crop_def = {
drawtype = "plantlike",
tiles = {"farming_"..grain_name.."_1.png"},
paramtype = "light",
paramtype2 = "meshoptions",
place_param2 = 3,
sunlight_propagates = true,
walkable = false,
buildable_to = true,
drop = "",
selection_box = farming.select,
groups = {
snappy = 3, flammable = 4, plant = 1, attached_node = 1,
not_in_creative_inventory = 1, growing = 1
},
sounds = default.node_sound_leaves_defaults()
}
-- stages
for level=1,max_level,1 do
crop_def.tiles = {"farming_"..grain_name.."_"..level..".png"}
if (level >= harvest_threshold) and (level < seed_threshold) then
crop_def.drop={items={items = {items = {farming_name},rarity=1}}}
end
if (level >= seed_threshold) then
crop_def.drop={ items = {
{items = {farming_name},rarity=1},
{items = {farming_name},rarity=3},
{items = {seed_name},rarity=seed_rarity}
}
}
end
if (level == max_level) then
crop_def.groups.growing = 0
end
minetest.register_node(farming_name.."_"..level, table.copy(crop_def))
end
-- fuels
minetest.register_craft({
type = "fuel",
recipe = farming_name,
burntime = 1,
})
end
register_grain("wheat",true,8,5,7,2)
print("register grain spelt")
register_grain("spelt",true,7,5,6,2)