diff --git a/functions.lua b/functions.lua index a3b1619..1dc7ca0 100644 --- a/functions.lua +++ b/functions.lua @@ -148,3 +148,45 @@ function emeraldbank.transfer_emeralds(player1, player2, num) core.chat_send_player(name1, S("Invalid pay")) end end + + + +-- Shops API + +function emeraldbank.inv_emeralds_to_stonks(pos) + local meta = core.get_meta(pos) + local inv = meta:get_inventory() + local stonks = meta:get_int("stonks") + local fancy_inv = inv:get_list("main") + if not fancy_inv then return end + local has_emerald = inv:contains_item("main", "mcl_core:emerald 1", true) + if has_emerald then + meta:set_int("stonks", stonks+1) + inv:remove_item("main", "mcl_core:emerald 1") + emeraldbank.inv_emeralds_to_stonks(pos) + return true + else + return false + end +end + +function emeraldbank.get_stonks(pos) + local meta = core.get_meta(pos) + local owner = meta:get_string("owner") + local player = core.get_player_by_name(owner) + local is_online = core.player_exists(owner) + emeraldbank.inv_emeralds_to_stonks(pos) + local stonks = meta:get_int("stonks") + if not player or player.is_fake_player then return end + if is_online and stonks > 0 then + core.sound_play("cash", { + to_player = owner, + gain = 1.0, + fade = 0.0, + pitch = 1.0, + }) + emeraldbank.add_emeralds(player, stonks) + meta:set_int("stonks", 0) + core.chat_send_player(owner, S("You've earned @1 Emeralds with your shops.", stonks)) + end +end