obsidianmese/obsidianmese_chest.lua

86 lines
3.0 KiB
Lua
Raw Normal View History

minetest.register_node("obsidianmese:chest", {
description = "Obsidian Mese Chest",
tiles = {"obsidianmese_chest_top.png", "obsidianmese_chest_top.png", "obsidianmese_chest_side.png",
"obsidianmese_chest_side.png", "obsidianmese_chest_side.png", "obsidianmese_chest_front.png"},
paramtype2 = "facedir",
groups = {cracky = 1, level = 2},
sounds = default.node_sound_stone_defaults(),
2016-11-26 02:47:30 -08:00
light_source = 6,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec",
"size[8,9]"..
default.gui_bg ..
default.gui_bg_img ..
default.gui_slots ..
"list[current_player;obsidianmese:chest;0,0.3;8,4;]"..
"list[current_player;main;0,4.85;8,1;]" ..
"list[current_player;main;0,6.08;8,3;8]" ..
"listring[current_player;obsidianmese:chest]" ..
"listring[current_player;main]" ..
default.get_hotbar_bg(0,4.85))
meta:set_string("infotext", "Obsidian Mese Chest")
-- add particles
local id_effect = obsidianmese.add_effects(pos)
obsidianmese.meta_set_int("id_effect", id_effect, pos)
minetest.get_node_timer(pos):start(10)
end,
on_destruct = function(pos)
-- delete particles
local id_effect = obsidianmese.meta_get_int("id_effect", pos)
if id_effect and id_effect ~= 0 then
minetest.delete_particlespawner(id_effect)
end
end,
on_timer = function(pos, elapsed)
local id_effect = obsidianmese.meta_get_int("id_effect", pos)
local player_near = obsidianmese.check_around_radius(pos)
-- delete particles
if id_effect and id_effect ~= nil and id_effect ~= 0 and player_near == false then
minetest.delete_particlespawner(id_effect)
obsidianmese.meta_set_int("id_effect", 0, pos)
end
-- add particles
if player_near == true then
-- delete particles before adding new ones
if id_effect and id_effect ~= nil then
minetest.delete_particlespawner(id_effect)
end
id_effect = obsidianmese.add_effects(pos)
obsidianmese.meta_set_int("id_effect", id_effect, pos)
end
minetest.get_node_timer(pos):start(10)
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", player:get_player_name()..
" moves stuff in obsidian mese chest chest at "..minetest.pos_to_string(pos))
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" moves stuff to obsidian mese chest at "..minetest.pos_to_string(pos))
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" takes stuff from obsidian mese chest at "..minetest.pos_to_string(pos))
end,
})
minetest.register_craft({
output = 'obsidianmese:chest',
recipe = {
{'default:obsidian','default:obsidian','default:obsidian'},
{'default:obsidian','default:mese','default:obsidian'},
{'default:obsidian','default:obsidian','default:obsidian'}
}
})
minetest.register_on_joinplayer(function(player)
local inv = player:get_inventory()
inv:set_size("obsidianmese:chest", 8*4)
end)