317 lines
8.2 KiB
Lua
317 lines
8.2 KiB
Lua
-------------------------------------------------------------
|
|
local function is_owner(pos, name)
|
|
local owner = minetest.get_meta(pos):get_string("owner")
|
|
if owner == "" or owner == name or minetest.check_player_privs(name, "protection_bypass") then
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
---------------------------------------------------
|
|
local function get_storage_formspec(pos)
|
|
local formspec ="size[8,7]" ..
|
|
default.gui_bg ..
|
|
default.gui_bg_img ..
|
|
default.gui_slots ..
|
|
"list[current_name;main;0,0.3;8,2]" ..
|
|
"list[current_player;main;0,2.85;8,1]" ..
|
|
"list[current_player;main;0,4.08;8,3;8]" ..
|
|
"listring[current_name;main]" ..
|
|
"listring[current_player;main]"
|
|
return formspec
|
|
end
|
|
|
|
|
|
-------------------------------------------------------------
|
|
--Storage Pot
|
|
|
|
--Unfired pot (not usuable... must be cooked)
|
|
|
|
minetest.register_craftitem("earthbuild:storage_pot_unfired", {
|
|
description = "Unfired Clay Storage Pot",
|
|
inventory_image = "earthbuild_storage_pot_unfired.png",
|
|
stack_max = 99,
|
|
})
|
|
|
|
|
|
|
|
|
|
--Finished Pot
|
|
minetest.register_node("earthbuild:storage_pot", {
|
|
description = "Clay Storage Pot",
|
|
tiles = {"earthbuild_storage_pot_top.png",
|
|
"earthbuild_storage_pot_top.png",
|
|
"earthbuild_storage_pot.png",
|
|
"earthbuild_storage_pot.png",
|
|
"earthbuild_storage_pot.png"},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.375, -0.5, -0.375, 0.375, -0.375, 0.375},
|
|
{-0.375, 0.375, -0.375, 0.375, 0.5, 0.375},
|
|
{-0.4375, -0.375, -0.4375, 0.4375, -0.25, 0.4375},
|
|
{-0.4375, 0.25, -0.4375, 0.4375, 0.375, 0.4375},
|
|
{-0.5, -0.25, -0.5, 0.5, 0.25, 0.5},
|
|
}
|
|
},
|
|
groups = {oddly_breakable_by_hand = 3},
|
|
sounds = default.node_sound_stone_defaults(),
|
|
|
|
on_construct = function(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
meta:set_string("formspec", get_storage_formspec(pos, 8, 2))
|
|
local inv = meta:get_inventory()
|
|
inv:set_size("main", 8*3)
|
|
meta:set_string("infotext", "Clay Storage Pot")
|
|
end,
|
|
|
|
can_dig = function(pos, player)
|
|
local inv = minetest.get_meta(pos):get_inventory()
|
|
local name = ""
|
|
if player then
|
|
name = player:get_player_name()
|
|
end
|
|
return is_owner(pos, name) and inv:is_empty("main")
|
|
end,
|
|
|
|
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
|
if is_owner(pos, player:get_player_name()) then
|
|
return count
|
|
end
|
|
return 0
|
|
end,
|
|
|
|
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
|
if is_owner(pos, player:get_player_name())
|
|
and not string.match(stack:get_name(), "backpacks:") then
|
|
return stack:get_count()
|
|
end
|
|
return 0
|
|
end,
|
|
|
|
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
|
|
if is_owner(pos, player:get_player_name()) then
|
|
return stack:get_count()
|
|
end
|
|
return 0
|
|
end,
|
|
|
|
on_blast = function(pos)
|
|
end,
|
|
})
|
|
|
|
|
|
|
|
--Craft unfired pot
|
|
|
|
minetest.register_craft({
|
|
output = "earthbuild:storage_pot_unfired",
|
|
recipe = {
|
|
{"default:clay_lump", "default:clay_lump", "default:clay_lump"},
|
|
{"default:clay_lump", "", "default:clay_lump"},
|
|
{"default:clay_lump", "default:clay_lump", "default:clay_lump"},
|
|
}
|
|
})
|
|
|
|
|
|
|
|
--Recycle unfired pot
|
|
|
|
minetest.register_craft({
|
|
output = "default:clay_lump 8",
|
|
recipe = {
|
|
{"earthbuild:storage_pot_unfired"}}
|
|
})
|
|
|
|
|
|
--Cook unfired pot to give the useable pot
|
|
minetest.register_craft({
|
|
type = "cooking",
|
|
output = "earthbuild:storage_pot",
|
|
recipe = "earthbuild:storage_pot_unfired",
|
|
cooktime = 10,
|
|
})
|
|
|
|
|
|
|
|
--------------------------------------------
|
|
--Basket
|
|
minetest.register_node("earthbuild:basket", {
|
|
description = "Basket",
|
|
tiles = {"earthbuild_basket_top.png",
|
|
"earthbuild_basket_top.png",
|
|
"earthbuild_basket.png",
|
|
"earthbuild_basket.png",
|
|
"earthbuild_basket.png"},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.25, 0.375, -0.25, 0.25, 0.5, 0.25},
|
|
{-0.375, -0.25, -0.375, 0.375, 0.3125, 0.375},
|
|
{-0.3125, -0.375, -0.3125, 0.3125, -0.25, 0.3125},
|
|
{-0.25, -0.5, -0.25, 0.25, -0.375, 0.25},
|
|
{-0.3125, 0.3125, -0.3125, 0.3125, 0.375, 0.3125},
|
|
}
|
|
},
|
|
|
|
groups = {oddly_breakable_by_hand = 3},
|
|
sounds = default.node_sound_leaves_defaults(),
|
|
|
|
on_construct = function(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
meta:set_string("formspec", get_storage_formspec(pos, 8, 2))
|
|
local inv = meta:get_inventory()
|
|
inv:set_size("main", 8*2)
|
|
meta:set_string("infotext", "Basket")
|
|
end,
|
|
|
|
can_dig = function(pos, player)
|
|
local inv = minetest.get_meta(pos):get_inventory()
|
|
local name = ""
|
|
if player then
|
|
name = player:get_player_name()
|
|
end
|
|
return is_owner(pos, name) and inv:is_empty("main")
|
|
end,
|
|
|
|
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
|
if is_owner(pos, player:get_player_name()) then
|
|
return count
|
|
end
|
|
return 0
|
|
end,
|
|
|
|
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
|
if is_owner(pos, player:get_player_name())
|
|
and not string.match(stack:get_name(), "backpacks:") then
|
|
return stack:get_count()
|
|
end
|
|
return 0
|
|
end,
|
|
|
|
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
|
|
if is_owner(pos, player:get_player_name()) then
|
|
return stack:get_count()
|
|
end
|
|
return 0
|
|
end,
|
|
|
|
on_blast = function(pos)
|
|
end,
|
|
})
|
|
|
|
|
|
--Craft basket
|
|
minetest.register_craft({
|
|
output = "earthbuild:basket",
|
|
recipe = {
|
|
{"earthbuild:woven_mat", "earthbuild:woven_mat", "earthbuild:woven_mat"},
|
|
{"earthbuild:woven_mat", "", "earthbuild:woven_mat"},
|
|
{"earthbuild:woven_mat", "earthbuild:woven_mat", "earthbuild:woven_mat"},
|
|
}
|
|
})
|
|
|
|
--burn basket
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "earthbuild:basket",
|
|
burntime = 8,
|
|
})
|
|
|
|
|
|
|
|
-----------------------------------------------------
|
|
--Gourd Container
|
|
|
|
--Vessel
|
|
minetest.register_node("earthbuild:bottlegourd_container", {
|
|
description = "Bottlegourd Container",
|
|
drawtype = "nodebox",
|
|
tiles = { "earthbuild_bottlegourd_container_top.png",
|
|
"earthbuild_bottlegourd_bot.png",
|
|
"earthbuild_bottlegourd_container.png",
|
|
"earthbuild_bottlegourd_container.png",
|
|
"earthbuild_bottlegourd_container.png",
|
|
"earthbuild_bottlegourd_container.png",
|
|
"earthbuild_bottlegourd_container.png",
|
|
"earthbuild_bottlegourd_container.png",
|
|
},
|
|
inventory_image = "earthbuild_bottlegourd_container.png",
|
|
wield_image = "earthbuild_bottlegourd_container.png",
|
|
paramtype = "light",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.25, -0.5, -0.25, 0.25, -0.0, 0.25},
|
|
}
|
|
},
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.25, -0.5, -0.25, 0.25, -0.0, 0.25},
|
|
}
|
|
},
|
|
groups = {dig_immediate = 3,},
|
|
sounds = default.node_sound_wood_defaults(),
|
|
|
|
on_construct = function(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
meta:set_string("formspec", get_storage_formspec(pos, 8, 2))
|
|
local inv = meta:get_inventory()
|
|
inv:set_size("main", 1*1)
|
|
meta:set_string("infotext", "Bottle Gourd")
|
|
end,
|
|
|
|
can_dig = function(pos, player)
|
|
local inv = minetest.get_meta(pos):get_inventory()
|
|
local name = ""
|
|
if player then
|
|
name = player:get_player_name()
|
|
end
|
|
return is_owner(pos, name) and inv:is_empty("main")
|
|
end,
|
|
|
|
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
|
if is_owner(pos, player:get_player_name()) then
|
|
return count
|
|
end
|
|
return 0
|
|
end,
|
|
|
|
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
|
if is_owner(pos, player:get_player_name())
|
|
and not string.match(stack:get_name(), "backpacks:") then
|
|
return stack:get_count()
|
|
end
|
|
return 0
|
|
end,
|
|
|
|
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
|
|
if is_owner(pos, player:get_player_name()) then
|
|
return stack:get_count()
|
|
end
|
|
return 0
|
|
end,
|
|
|
|
on_blast = function(pos)
|
|
end,
|
|
})
|
|
|
|
|
|
minetest.register_craft({
|
|
output = 'earthbuild:bottlegourd_container',
|
|
recipe = {
|
|
{'earthbuild:bottlegourd_cup', 'earthbuild:bottlegourd_cup'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "earthbuild:bottlegourd_container",
|
|
burntime = 1,
|
|
})
|