added coffee

master
Juraj Vajda 2017-07-28 00:38:16 +02:00
parent 47062885b7
commit 5c76a4087d
15 changed files with 248 additions and 160 deletions

Binary file not shown.

80
coffee.lua Normal file
View File

@ -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()
}

View File

@ -1,2 +1,3 @@
default
farming
vessels

165
init.lua
View File

@ -1,164 +1,9 @@
local minlight = 13
local maxlight = default.LIGHT_MAX
-- Farming Addons
-- by SaKeL
-- 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,
})
farming.path = minetest.get_modpath("farming_addons")
-- 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
})
dofile(farming.path.."/melon.lua")
dofile(farming.path.."/coffee.lua")
minetest.log("action", "[Mod] farming_addons loaded")

162
melon.lua Normal file
View File

@ -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
})

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B