added coffee
|
@ -0,0 +1,80 @@
|
||||||
|
-- COFFEE
|
||||||
|
farming.register_plant("farming_addons:coffee", {
|
||||||
|
description = "Coffee Seed",
|
||||||
|
paramtype2 = "meshoptions",
|
||||||
|
inventory_image = "farming_addons_coffee_seed.png",
|
||||||
|
steps = 5,
|
||||||
|
minlight = 13,
|
||||||
|
maxlight = default.LIGHT_MAX,
|
||||||
|
fertility = {"grassland"},
|
||||||
|
groups = {flammable = 4},
|
||||||
|
place_param2 = 3,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- cold cup of coffee
|
||||||
|
minetest.register_node("farming_addons:coffee_cup", {
|
||||||
|
description = "Cold Cup of Coffee",
|
||||||
|
drawtype = "plantlike",
|
||||||
|
tiles = {"farming_coffee_cup.png"},
|
||||||
|
inventory_image = "farming_coffee_cup.png",
|
||||||
|
wield_image = "farming_coffee_cup.png",
|
||||||
|
paramtype = "light",
|
||||||
|
walkable = false,
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.25, 0.25}
|
||||||
|
},
|
||||||
|
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
|
||||||
|
on_use = minetest.item_eat(2, "vessels:drinking_glass"),
|
||||||
|
sounds = default.node_sound_glass_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft( {
|
||||||
|
output = "farming_addons:coffee_cup",
|
||||||
|
recipe = {
|
||||||
|
{"vessels:drinking_glass", "farming_addons:coffee","bucket:bucket_water"},
|
||||||
|
},
|
||||||
|
replacements = {{"bucket:bucket_water", "bucket:bucket_empty"}}
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "cooking",
|
||||||
|
cooktime = 5,
|
||||||
|
output = "farming_addons:coffee_cup_hot",
|
||||||
|
recipe = "farming_addons:coffee_cup"
|
||||||
|
})
|
||||||
|
|
||||||
|
-- hot cup of coffee
|
||||||
|
minetest.register_node("farming_addons:coffee_cup_hot", {
|
||||||
|
description = "Hot Cup of Coffee",
|
||||||
|
drawtype = "plantlike",
|
||||||
|
tiles = {"farming_coffee_cup_hot.png"},
|
||||||
|
inventory_image = "farming_coffee_cup_hot.png",
|
||||||
|
wield_image = "farming_coffee_cup_hot.png",
|
||||||
|
paramtype = "light",
|
||||||
|
walkable = false,
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.25, 0.25}
|
||||||
|
},
|
||||||
|
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
|
||||||
|
on_use = minetest.item_eat(3, "vessels:drinking_glass"),
|
||||||
|
sounds = default.node_sound_glass_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
-- coffee definition
|
||||||
|
local crop_def = {
|
||||||
|
drawtype = "plantlike",
|
||||||
|
tiles = {"farming_coffee_1.png"},
|
||||||
|
paramtype = "light",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
walkable = false,
|
||||||
|
buildable_to = true,
|
||||||
|
drop = "",
|
||||||
|
selection_box = farming.select,
|
||||||
|
groups = {
|
||||||
|
snappy = 3, flammable = 2, plant = 1, attached_node = 1,
|
||||||
|
not_in_creative_inventory = 1, growing = 1
|
||||||
|
},
|
||||||
|
sounds = default.node_sound_leaves_defaults()
|
||||||
|
}
|
|
@ -1,2 +1,3 @@
|
||||||
default
|
default
|
||||||
farming
|
farming
|
||||||
|
vessels
|
||||||
|
|
165
init.lua
|
@ -1,164 +1,9 @@
|
||||||
local minlight = 13
|
-- Farming Addons
|
||||||
local maxlight = default.LIGHT_MAX
|
-- by SaKeL
|
||||||
|
|
||||||
-- MELON
|
farming.path = minetest.get_modpath("farming_addons")
|
||||||
farming.register_plant("farming_addons:melon", {
|
|
||||||
description = "Melon Seed",
|
|
||||||
paramtype2 = "meshoptions",
|
|
||||||
inventory_image = "farming_addons_melon_seed.png",
|
|
||||||
steps = 8,
|
|
||||||
minlight = minlight,
|
|
||||||
maxlight = maxlight,
|
|
||||||
fertility = {"grassland"},
|
|
||||||
groups = {flammable = 4},
|
|
||||||
place_param2 = 3,
|
|
||||||
})
|
|
||||||
|
|
||||||
-- MELON BLOCK
|
dofile(farming.path.."/melon.lua")
|
||||||
minetest.register_node("farming_addons:melon_fruit", {
|
dofile(farming.path.."/coffee.lua")
|
||||||
description = "Melon Fruit",
|
|
||||||
tiles = {"farming_addons_melon_fruit_top.png", "farming_addons_melon_fruit_top.png", "farming_addons_melon_fruit_side.png", "farming_addons_melon_fruit_side.png", "farming_addons_melon_fruit_side.png", "farming_addons_melon_fruit_side.png"},
|
|
||||||
sounds = default.node_sound_wood_defaults(),
|
|
||||||
is_ground_content = false,
|
|
||||||
groups = {snappy=3, flammable=4, fall_damage_add_percent=-30},
|
|
||||||
drop = {
|
|
||||||
max_items = 7, -- Maximum number of items to drop.
|
|
||||||
items = { -- Choose max_items randomly from this list.
|
|
||||||
{
|
|
||||||
items = {"farming_addons:melon"}, -- Items to drop.
|
|
||||||
rarity = 1, -- Probability of dropping is 1 / rarity.
|
|
||||||
},
|
|
||||||
{
|
|
||||||
items = {"farming_addons:melon"}, -- Items to drop.
|
|
||||||
rarity = 2, -- Probability of dropping is 1 / rarity.
|
|
||||||
},
|
|
||||||
{
|
|
||||||
items = {"farming_addons:melon"}, -- Items to drop.
|
|
||||||
rarity = 2, -- Probability of dropping is 1 / rarity.
|
|
||||||
},
|
|
||||||
{
|
|
||||||
items = {"farming_addons:melon"}, -- Items to drop.
|
|
||||||
rarity = 2, -- Probability of dropping is 1 / rarity.
|
|
||||||
},
|
|
||||||
{
|
|
||||||
items = {"farming_addons:melon"}, -- Items to drop.
|
|
||||||
rarity = 3, -- Probability of dropping is 1 / rarity.
|
|
||||||
},
|
|
||||||
{
|
|
||||||
items = {"farming_addons:melon"}, -- Items to drop.
|
|
||||||
rarity = 3, -- Probability of dropping is 1 / rarity.
|
|
||||||
},
|
|
||||||
{
|
|
||||||
items = {"farming_addons:melon"}, -- Items to drop.
|
|
||||||
rarity = 3, -- Probability of dropping is 1 / rarity.
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craftitem("farming_addons:golden_melon", {
|
|
||||||
description = "Golden Melon - Restores Hearts",
|
|
||||||
drawtype = "plantlike",
|
|
||||||
tiles = {"farming_addons_golden_melon.png"},
|
|
||||||
inventory_image = "farming_addons_golden_melon.png",
|
|
||||||
groups = {fleshy = 3, dig_immediate = 3, flammable = 2},
|
|
||||||
on_use = minetest.item_eat(2),
|
|
||||||
sounds = default.node_sound_leaves_defaults(),
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
output = "farming_addons:golden_melon",
|
|
||||||
recipe = {
|
|
||||||
{"default:gold_lump", "default:gold_lump", "default:gold_lump"},
|
|
||||||
{"default:gold_lump", "farming_addons:melon", "default:gold_lump"},
|
|
||||||
{"default:gold_lump", "default:gold_lump", "default:gold_lump"}
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
output = "farming_addons:melon_fruit",
|
|
||||||
recipe = {
|
|
||||||
{"farming_addons:melon", "farming_addons:melon", "farming_addons:melon"},
|
|
||||||
{"farming_addons:melon", "farming_addons:melon", "farming_addons:melon"},
|
|
||||||
{"farming_addons:melon", "farming_addons:melon", "farming_addons:melon"}
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.override_item("farming_addons:melon", {
|
|
||||||
on_use = minetest.item_eat(2),
|
|
||||||
})
|
|
||||||
|
|
||||||
local function grow_melon(pos, elapsed)
|
|
||||||
local node = minetest.get_node(pos)
|
|
||||||
local random_pos = false
|
|
||||||
local spawn_positions = {}
|
|
||||||
local right = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z})
|
|
||||||
local front = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1})
|
|
||||||
local left = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z})
|
|
||||||
local back = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1})
|
|
||||||
|
|
||||||
if right.name == "farming_addons:melon_fruit"
|
|
||||||
or front.name == "farming_addons:melon_fruit"
|
|
||||||
or left.name == "farming_addons:melon_fruit"
|
|
||||||
or back.name == "farming_addons:melon_fruit" then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
-- make sure that at least one side of the plant has space to put melon
|
|
||||||
if right.name == "air" then
|
|
||||||
table.insert(spawn_positions, {x=pos.x+1, y=pos.y, z=pos.z})
|
|
||||||
end
|
|
||||||
if front.name == "air" then
|
|
||||||
table.insert(spawn_positions, {x=pos.x, y=pos.y, z=pos.z+1})
|
|
||||||
end
|
|
||||||
if left.name == "air" then
|
|
||||||
table.insert(spawn_positions, {x=pos.x-1, y=pos.y, z=pos.z})
|
|
||||||
end
|
|
||||||
if back.name == "air" then
|
|
||||||
table.insert(spawn_positions, {x=pos.x, y=pos.y, z=pos.z-1})
|
|
||||||
end
|
|
||||||
|
|
||||||
if #spawn_positions < 1 then
|
|
||||||
-- plant is closed from all sides
|
|
||||||
return false
|
|
||||||
else
|
|
||||||
-- pick random from the open sides
|
|
||||||
local pick_random
|
|
||||||
|
|
||||||
if #spawn_positions == 1 then
|
|
||||||
pick_random = #spawn_positions
|
|
||||||
else
|
|
||||||
pick_random = math.random(1,#spawn_positions)
|
|
||||||
end
|
|
||||||
|
|
||||||
for k, v in pairs (spawn_positions) do
|
|
||||||
if k == pick_random then
|
|
||||||
random_pos = v
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- check light
|
|
||||||
local light = minetest.get_node_light(pos)
|
|
||||||
if not light or light < minlight or light > maxlight then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
if random_pos then
|
|
||||||
-- spawn melon
|
|
||||||
minetest.set_node(random_pos, {name="farming_addons:melon_fruit"})
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
minetest.register_abm({
|
|
||||||
label = "melon_growing_abm",
|
|
||||||
nodenames = {"farming_addons:melon_8"},
|
|
||||||
neighbors = {"air"},
|
|
||||||
interval = 300,
|
|
||||||
chance = 2,
|
|
||||||
catch_up = true,
|
|
||||||
action = grow_melon
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.log("action", "[Mod] farming_addons loaded")
|
minetest.log("action", "[Mod] farming_addons loaded")
|
||||||
|
|
|
@ -0,0 +1,162 @@
|
||||||
|
local minlight = 13
|
||||||
|
local maxlight = default.LIGHT_MAX
|
||||||
|
|
||||||
|
-- MELON
|
||||||
|
farming.register_plant("farming_addons:melon", {
|
||||||
|
description = "Melon Seed",
|
||||||
|
paramtype2 = "meshoptions",
|
||||||
|
inventory_image = "farming_addons_melon_seed.png",
|
||||||
|
steps = 8,
|
||||||
|
minlight = minlight,
|
||||||
|
maxlight = maxlight,
|
||||||
|
fertility = {"grassland"},
|
||||||
|
groups = {flammable = 4},
|
||||||
|
place_param2 = 3,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- MELON BLOCK
|
||||||
|
minetest.register_node("farming_addons:melon_fruit", {
|
||||||
|
description = "Melon Fruit",
|
||||||
|
tiles = {"farming_addons_melon_fruit_top.png", "farming_addons_melon_fruit_top.png", "farming_addons_melon_fruit_side.png", "farming_addons_melon_fruit_side.png", "farming_addons_melon_fruit_side.png", "farming_addons_melon_fruit_side.png"},
|
||||||
|
sounds = default.node_sound_wood_defaults(),
|
||||||
|
is_ground_content = false,
|
||||||
|
groups = {snappy=3, flammable=4, fall_damage_add_percent=-30},
|
||||||
|
drop = {
|
||||||
|
max_items = 7, -- Maximum number of items to drop.
|
||||||
|
items = { -- Choose max_items randomly from this list.
|
||||||
|
{
|
||||||
|
items = {"farming_addons:melon"}, -- Items to drop.
|
||||||
|
rarity = 1, -- Probability of dropping is 1 / rarity.
|
||||||
|
},
|
||||||
|
{
|
||||||
|
items = {"farming_addons:melon"}, -- Items to drop.
|
||||||
|
rarity = 2, -- Probability of dropping is 1 / rarity.
|
||||||
|
},
|
||||||
|
{
|
||||||
|
items = {"farming_addons:melon"}, -- Items to drop.
|
||||||
|
rarity = 2, -- Probability of dropping is 1 / rarity.
|
||||||
|
},
|
||||||
|
{
|
||||||
|
items = {"farming_addons:melon"}, -- Items to drop.
|
||||||
|
rarity = 2, -- Probability of dropping is 1 / rarity.
|
||||||
|
},
|
||||||
|
{
|
||||||
|
items = {"farming_addons:melon"}, -- Items to drop.
|
||||||
|
rarity = 3, -- Probability of dropping is 1 / rarity.
|
||||||
|
},
|
||||||
|
{
|
||||||
|
items = {"farming_addons:melon"}, -- Items to drop.
|
||||||
|
rarity = 3, -- Probability of dropping is 1 / rarity.
|
||||||
|
},
|
||||||
|
{
|
||||||
|
items = {"farming_addons:melon"}, -- Items to drop.
|
||||||
|
rarity = 3, -- Probability of dropping is 1 / rarity.
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craftitem("farming_addons:golden_melon", {
|
||||||
|
description = "Golden Melon - Restores Hearts",
|
||||||
|
drawtype = "plantlike",
|
||||||
|
tiles = {"farming_addons_golden_melon.png"},
|
||||||
|
inventory_image = "farming_addons_golden_melon.png",
|
||||||
|
groups = {fleshy = 3, dig_immediate = 3, flammable = 2},
|
||||||
|
on_use = minetest.item_eat(2),
|
||||||
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "farming_addons:golden_melon",
|
||||||
|
recipe = {
|
||||||
|
{"default:gold_lump", "default:gold_lump", "default:gold_lump"},
|
||||||
|
{"default:gold_lump", "farming_addons:melon", "default:gold_lump"},
|
||||||
|
{"default:gold_lump", "default:gold_lump", "default:gold_lump"}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "farming_addons:melon_fruit",
|
||||||
|
recipe = {
|
||||||
|
{"farming_addons:melon", "farming_addons:melon", "farming_addons:melon"},
|
||||||
|
{"farming_addons:melon", "farming_addons:melon", "farming_addons:melon"},
|
||||||
|
{"farming_addons:melon", "farming_addons:melon", "farming_addons:melon"}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.override_item("farming_addons:melon", {
|
||||||
|
on_use = minetest.item_eat(2),
|
||||||
|
})
|
||||||
|
|
||||||
|
local function grow_melon(pos, elapsed)
|
||||||
|
local node = minetest.get_node(pos)
|
||||||
|
local random_pos = false
|
||||||
|
local spawn_positions = {}
|
||||||
|
local right = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z})
|
||||||
|
local front = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1})
|
||||||
|
local left = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z})
|
||||||
|
local back = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1})
|
||||||
|
|
||||||
|
if right.name == "farming_addons:melon_fruit"
|
||||||
|
or front.name == "farming_addons:melon_fruit"
|
||||||
|
or left.name == "farming_addons:melon_fruit"
|
||||||
|
or back.name == "farming_addons:melon_fruit" then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- make sure that at least one side of the plant has space to put melon
|
||||||
|
if right.name == "air" then
|
||||||
|
table.insert(spawn_positions, {x=pos.x+1, y=pos.y, z=pos.z})
|
||||||
|
end
|
||||||
|
if front.name == "air" then
|
||||||
|
table.insert(spawn_positions, {x=pos.x, y=pos.y, z=pos.z+1})
|
||||||
|
end
|
||||||
|
if left.name == "air" then
|
||||||
|
table.insert(spawn_positions, {x=pos.x-1, y=pos.y, z=pos.z})
|
||||||
|
end
|
||||||
|
if back.name == "air" then
|
||||||
|
table.insert(spawn_positions, {x=pos.x, y=pos.y, z=pos.z-1})
|
||||||
|
end
|
||||||
|
|
||||||
|
if #spawn_positions < 1 then
|
||||||
|
-- plant is closed from all sides
|
||||||
|
return false
|
||||||
|
else
|
||||||
|
-- pick random from the open sides
|
||||||
|
local pick_random
|
||||||
|
|
||||||
|
if #spawn_positions == 1 then
|
||||||
|
pick_random = #spawn_positions
|
||||||
|
else
|
||||||
|
pick_random = math.random(1,#spawn_positions)
|
||||||
|
end
|
||||||
|
|
||||||
|
for k, v in pairs (spawn_positions) do
|
||||||
|
if k == pick_random then
|
||||||
|
random_pos = v
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- check light
|
||||||
|
local light = minetest.get_node_light(pos)
|
||||||
|
if not light or light < minlight or light > maxlight then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if random_pos then
|
||||||
|
-- spawn melon
|
||||||
|
minetest.set_node(random_pos, {name="farming_addons:melon_fruit"})
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_abm({
|
||||||
|
label = "melon_growing_abm",
|
||||||
|
nodenames = {"farming_addons:melon_8"},
|
||||||
|
neighbors = {"air"},
|
||||||
|
interval = 300,
|
||||||
|
chance = 2,
|
||||||
|
catch_up = true,
|
||||||
|
action = grow_melon
|
||||||
|
})
|
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 201 B |
After Width: | Height: | Size: 228 B |
After Width: | Height: | Size: 319 B |
After Width: | Height: | Size: 331 B |
After Width: | Height: | Size: 331 B |
After Width: | Height: | Size: 257 B |
After Width: | Height: | Size: 164 B |
After Width: | Height: | Size: 183 B |