From dac343c284a09c76fa7362398f17c6cd26ea5563 Mon Sep 17 00:00:00 2001 From: Freeman Date: Sun, 5 Nov 2023 17:37:43 +0100 Subject: [PATCH] shops get emeralds from bank --- fancyshop.lua | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/fancyshop.lua b/fancyshop.lua index e748fc7..cd50678 100644 --- a/fancyshop.lua +++ b/fancyshop.lua @@ -615,6 +615,7 @@ local function run_inv_checks(pos, player, lots) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() local player_inv = player:get_inventory() + local player_emeralds = emeraldbank.get_emeralds(player:get_player_name()) local ct = {} @@ -624,6 +625,9 @@ local function run_inv_checks(pos, player, lots) -- Perform inventory checks ct.player_has, ct.player_item_table = inv_contains_items(player_inv, "main", settings.input_item, input_qty, settings.accept_worn_input) + if settings.input_item == "mcl_core:emerald" then + ct.player_has = player_emeralds >= input_qty + end ct.vendor_has, ct.vendor_item_table = inv_contains_items(inv, "main", settings.output_item, output_qty, settings.accept_worn_output) ct.player_fits = free_slots(player_inv, "main", settings.output_item, output_qty) ct.vendor_fits = free_slots(inv, "main", settings.input_item, input_qty) @@ -656,6 +660,8 @@ local function make_purchase(pos, player, lots) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() local player_inv = player:get_inventory() + local name = player:get_player_name() + local player_emeralds = emeraldbank.get_emeralds(name) local status, errorcode = get_vendor_status(pos) -- Double check settings, vendors which were incorrectly set up before this bug fix won't matter anymore @@ -673,9 +679,13 @@ local function make_purchase(pos, player, lots) if ct.player_has then if ct.player_fits then if settings.admin_vendor then - minetest.log("action", player:get_player_name().." trades "..settings.input_item_qty.." "..settings.input_item.." for "..settings.output_item_qty.." "..settings.output_item.." using vendor at "..minetest.pos_to_string(pos)) + minetest.log("action", name.." trades "..settings.input_item_qty.." "..settings.input_item.." for "..settings.output_item_qty.." "..settings.output_item.." using vendor at "..minetest.pos_to_string(pos)) - inv_remove(player_inv, "main", ct.player_item_table, settings.input_item, input_qty) + if settings.input_item == "mcl_core:emerald" then + emeraldbank.add_emeralds(player, - input_qty) + else + inv_remove(player_inv, "main", ct.player_item_table, settings.input_item, input_qty) + end inv_insert(player_inv, "main", ItemStack(settings.output_item), output_qty, nil) if minetest.get_modpath("digilines") then @@ -685,10 +695,14 @@ local function make_purchase(pos, player, lots) return true, "Trade successful" elseif ct.vendor_has then if ct.vendor_fits then - minetest.log("action", player:get_player_name().." trades "..settings.input_item_qty.." "..settings.input_item.." for "..settings.output_item_qty.." "..settings.output_item.." using vendor at "..minetest.pos_to_string(pos)) + minetest.log("action", name.." trades "..settings.input_item_qty.." "..settings.input_item.." for "..settings.output_item_qty.." "..settings.output_item.." using vendor at "..minetest.pos_to_string(pos)) inv_remove(inv, "main", ct.vendor_item_table, settings.output_item, output_qty) - inv_remove(player_inv, "main", ct.player_item_table, settings.input_item, input_qty) + if settings.input_item == "mcl_core:emerald" then + emeraldbank.add_emeralds(player, - input_qty) + else + inv_remove(player_inv, "main", ct.player_item_table, settings.input_item, input_qty) + end inv_insert(player_inv, "main", ItemStack(settings.output_item), output_qty, ct.vendor_item_table) inv_insert(inv, "main", ItemStack(settings.input_item), input_qty, ct.player_item_table, pos, (minetest.get_modpath("pipeworks") and settings.currency_eject)) @@ -1454,7 +1468,8 @@ player_depo.tiles = { "player_depo.png", "player_depo.png", "player_depo.png^mcl_core_emerald.png", "player_depo.png^mcl_core_emerald.png", "player_depo.png^mcl_core_emerald.png", "player_depo_front.png", - } +} + player_depo.groups.not_in_creative_inventory = 1 local admin_vendor = table.copy(vendor_template)