aboutsummaryrefslogtreecommitdiff
path: root/games/devtest/mods/chest/detached.lua
diff options
context:
space:
mode:
authorWuzzy <Wuzzy@disroot.org>2022-10-08 19:49:28 +0200
committersfan5 <sfan5@live.de>2022-10-23 21:58:56 +0200
commita23701b5e654139158ba934155ecd99c8f4b8fd7 (patch)
tree94e387f3e363661b79f3e9c0e5ec7492a7ca0565 /games/devtest/mods/chest/detached.lua
parentc1e732448ca3cfc1c7e2b1a8c19b8f80ac06bd06 (diff)
downloadminetest-a23701b5e654139158ba934155ecd99c8f4b8fd7.tar.xz
DevTest: Move detached inv tests to chest mod
Diffstat (limited to 'games/devtest/mods/chest/detached.lua')
-rw-r--r--games/devtest/mods/chest/detached.lua58
1 files changed, 58 insertions, 0 deletions
diff --git a/games/devtest/mods/chest/detached.lua b/games/devtest/mods/chest/detached.lua
new file mode 100644
index 000000000..37401566b
--- /dev/null
+++ b/games/devtest/mods/chest/detached.lua
@@ -0,0 +1,58 @@
+local ALLOW_PUT_MAX = 1
+local ALLOW_TAKE_MAX = 4
+
+local function print_to_everything(msg)
+ minetest.log("action", "[chest] " .. msg)
+ minetest.chat_send_all(msg)
+end
+
+-- Create a detached inventory
+local inv = minetest.create_detached_inventory("detached_inventory", {
+ allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
+ print_to_everything("Detached inventory: "..player:get_player_name().." triggered allow_move")
+ return count -- Allow all
+ end,
+ allow_put = function(inv, listname, index, stack, player)
+ print_to_everything("Detached inventory: "..player:get_player_name().." triggered allow_put for "..stack:to_string().." (max. allowed: "..ALLOW_PUT_MAX..")")
+ return ALLOW_PUT_MAX -- Allow to put a limited amount of items
+ end,
+ allow_take = function(inv, listname, index, stack, player)
+ print_to_everything("Detached inventory: "..player:get_player_name().." triggered allow_take for "..stack:to_string().." (max. allowed: "..ALLOW_TAKE_MAX..")")
+ return ALLOW_TAKE_MAX -- Allow to take a limited amount of items
+ end,
+ on_move = function(inv, from_list, from_index, to_list, to_index, count, player)
+ print_to_everything("Detached inventory: " .. player:get_player_name().." moved item(s)")
+ end,
+ on_put = function(inv, listname, index, stack, player)
+ print_to_everything("Detached inventory: " .. player:get_player_name().." put "..stack:to_string())
+ end,
+ on_take = function(inv, listname, index, stack, player)
+ print_to_everything("Detached inventory: " .. player:get_player_name().." took "..stack:to_string())
+ end,
+})
+inv:set_size("main", 8*3)
+
+
+-- Add a special chest to grant access to this inventory
+minetest.register_node("chest:detached_chest", {
+ description = "Detached Chest" .. "\n" ..
+ "Grants access to a shared detached inventory" .."\n" ..
+ "Max. item put count: "..ALLOW_PUT_MAX .."\n"..
+ "Max. item take count: "..ALLOW_TAKE_MAX,
+ tiles = {"chest_detached_chest.png^[sheet:2x2:0,0", "chest_detached_chest.png^[sheet:2x2:0,0",
+ "chest_detached_chest.png^[sheet:2x2:1,0", "chest_detached_chest.png^[sheet:2x2:1,0",
+ "chest_detached_chest.png^[sheet:2x2:1,0", "chest_detached_chest.png^[sheet:2x2:0,1"},
+ paramtype2 = "facedir",
+ groups = {dig_immediate=2,choppy=3,meta_is_privatizable=1},
+ is_ground_content = false,
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec",
+ "size[8,9]"..
+ "list[detached:detached_inventory;main;0,0;8,3;0]"..
+ "list[current_player;main;0,5;8,4;]"..
+ "listring[]")
+ meta:set_string("infotext", "Detached Chest")
+ end,
+})
+