From cb51d78a27c2626515a29acb7aa89f2635693446 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Fri, 17 Jul 2020 00:44:34 +0100 Subject: [PATCH] Prevent players from putting class items in furnaces (#620) --- mods/ctf/ctf_classes/items.lua | 28 ++++++++++++++++++++++++++++ mods/ctf/ctf_classes/mod.conf | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/mods/ctf/ctf_classes/items.lua b/mods/ctf/ctf_classes/items.lua index dc76613..228b31a 100644 --- a/mods/ctf/ctf_classes/items.lua +++ b/mods/ctf/ctf_classes/items.lua @@ -1,3 +1,5 @@ +local S = minetest.get_translator("ctf") + local function stack_list_to_map(stacks) local map = {} for i = 1, #stacks do @@ -84,3 +86,29 @@ end dropondie.register_drop_filter(function(player, itemname) return not is_class_blacklisted(player, itemname) end) + + +local function protect_metadata_inventory(nodename) + local def = assert(minetest.registered_nodes[nodename]) + + local function wrap(defname) + local old = def[defname] + def[defname] = function(pos, listname, index, stack, player, ...) + if is_class_blacklisted(player, stack:get_name()) then + minetest.chat_send_player(player:get_player_name(), + S("You're not allowed to put class items in @1!", def.description or "?")) + return 0 + end + + return old(pos, listname, index, stack, player, ...) + end + end + + wrap("allow_metadata_inventory_put") + wrap("allow_metadata_inventory_take") + + minetest.register_node(":" .. nodename, def) +end + +protect_metadata_inventory("furnace:furnace") +protect_metadata_inventory("furnace:furnace_active") diff --git a/mods/ctf/ctf_classes/mod.conf b/mods/ctf/ctf_classes/mod.conf index cecd372..91d54a6 100644 --- a/mods/ctf/ctf_classes/mod.conf +++ b/mods/ctf/ctf_classes/mod.conf @@ -1,3 +1,3 @@ name = ctf_classes -depends = ctf, ctf_flag, ctf_colors, ctf_map_core, ctf_stats, ctf_bandages, physics, shooter, hpregen, give_initial_stuff, dropondie, crafting, sniper_rifles, grenades +depends = ctf, ctf_flag, ctf_colors, ctf_map_core, ctf_stats, ctf_bandages, physics, shooter, hpregen, give_initial_stuff, dropondie, crafting, sniper_rifles, grenades, furnace description = Adds classes, including knight, shooter, and medic