on take item remove shop_item
on punch call get_stonks()
can_dig defined
fix owner in get_stonks()
This commit is contained in:
Nathaniel Freeman 2021-10-21 19:06:05 +02:00
parent 180dbbbf34
commit bfe60227d4

@ -77,13 +77,22 @@ local function set_item(pos, listname, index, stack, player)
core.show_formspec(player:get_player_name(), formspec_prefix..core.pos_to_string(pos), emeraldbank.get_shop_fs(pos, player) )
end
local function get_stonks(pos, clicker)
local name = clicker:get_player_name()
local owner = clicker:get_player_name()
local function check_empty(pos, listname, index, stack, player)
local meta = core.get_meta(pos)
local inv = meta:get_inventory()
if inv:is_empty("stock") then
meta:set_string("shop_item", "")
end
core.show_formspec(player:get_player_name(), formspec_prefix..core.pos_to_string(pos), emeraldbank.get_shop_fs(pos, player) )
end
local function get_stonks(pos, player)
local name = player:get_player_name()
local meta = core.get_meta(pos)
local owner = meta:get_string("owner")
local stonks = meta:get_int("stonks")
if name == owner and stonks > 0 then
emeraldbank.add_emeralds(clicker, stonks)
emeraldbank.add_emeralds(player, stonks)
meta:set_int("stonks", 0)
core.chat_send_player(name, S("You've earned @1 Emeralds with this shop.", stonks) )
end
@ -119,24 +128,24 @@ core.register_node("emeraldbank:shop", {
get_stonks(pos, clicker)
core.show_formspec(clicker:get_player_name(), formspec_prefix..core.pos_to_string(pos), emeraldbank.get_shop_fs(pos, clicker) )
end,
on_punch = function(pos, node, puncher, pointed_thing)
get_stonks(pos, puncher)
end,
on_metadata_inventory_put = set_item,
-- on_metadata_inventory_take = set_item,
on_metadata_inventory_take = check_empty,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
can_dig = function(pos, player)
local name = player:get_player_name()
local meta = core.get_meta(pos)
local meta2 = meta
meta:from_table(oldmetadata)
local owner = meta:get_string("owner")
local inv = meta:get_inventory()
for _, listname in ipairs({"stock"}) do
local stack = inv:get_stack(listname, 1)
if not stack:is_empty() then
local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5}
core.add_item(p, stack)
end
if inv:is_empty("stock") and name == owner then
return true
end
meta:from_table(meta2:to_table())
end,
end
})