diff --git a/shop.lua b/shop.lua index 30f6870..01b2453 100644 --- a/shop.lua +++ b/shop.lua @@ -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 })