]> git.lizzy.rs Git - minetest.git/commitdiff
DevTest: Move detached inv tests to chest mod
authorWuzzy <Wuzzy@disroot.org>
Sat, 8 Oct 2022 17:49:28 +0000 (19:49 +0200)
committersfan5 <sfan5@live.de>
Sun, 23 Oct 2022 19:58:56 +0000 (21:58 +0200)
games/devtest/mods/chest/chest.lua [new file with mode: 0644]
games/devtest/mods/chest/detached.lua [new file with mode: 0644]
games/devtest/mods/chest/init.lua
games/devtest/mods/chest/mod.conf
games/devtest/mods/chest/textures/chest_detached_chest.png [new file with mode: 0644]
games/devtest/mods/experimental/commands.lua
games/devtest/mods/experimental/detached.lua [deleted file]
games/devtest/mods/experimental/init.lua
games/devtest/mods/testtools/privatizer.lua

diff --git a/games/devtest/mods/chest/chest.lua b/games/devtest/mods/chest/chest.lua
new file mode 100644 (file)
index 0000000..c07d4f1
--- /dev/null
@@ -0,0 +1,45 @@
+local function print_to_everything(msg)
+       minetest.log("action", "[chest] " .. msg)
+       minetest.chat_send_all(msg)
+end
+
+minetest.register_node("chest:chest", {
+       description = "Chest" .. "\n" ..
+               "32 inventory slots",
+       tiles ={"chest_chest.png^[sheet:2x2:0,0", "chest_chest.png^[sheet:2x2:0,0",
+               "chest_chest.png^[sheet:2x2:1,0", "chest_chest.png^[sheet:2x2:1,0",
+               "chest_chest.png^[sheet:2x2:1,0", "chest_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[current_name;main;0,0;8,4;]"..
+                               "list[current_player;main;0,5;8,4;]" ..
+                               "listring[]")
+               meta:set_string("infotext", "Chest")
+               local inv = meta:get_inventory()
+               inv:set_size("main", 8*4)
+       end,
+       can_dig = function(pos,player)
+               local meta = minetest.get_meta(pos);
+               local inv = meta:get_inventory()
+               return inv:is_empty("main")
+       end,
+       allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+               print_to_everything("Chest: ".. player:get_player_name() .. " triggered 'allow put' event for " .. stack:to_string())
+               return stack:get_count()
+       end,
+       allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+               print_to_everything("Chest: ".. player:get_player_name() .. " triggered 'allow take' event for " .. stack:to_string())
+               return stack:get_count()
+       end,
+       on_metadata_inventory_put = function(pos, listname, index, stack, player)
+               print_to_everything("Chest: ".. player:get_player_name() .. " put " .. stack:to_string())
+       end,
+       on_metadata_inventory_take = function(pos, listname, index, stack, player)
+               print_to_everything("Chest: ".. player:get_player_name() .. " took " .. stack:to_string())
+       end,
+})
diff --git a/games/devtest/mods/chest/detached.lua b/games/devtest/mods/chest/detached.lua
new file mode 100644 (file)
index 0000000..3740156
--- /dev/null
@@ -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,
+})
+
index 5798c13e79ab36a37850e946fff5c871371e90cb..cb2974c645c25da92688f358c49d59e5014d937d 100644 (file)
@@ -1,40 +1,2 @@
-minetest.register_node("chest:chest", {
-       description = "Chest" .. "\n" ..
-               "32 inventory slots",
-       tiles ={"chest_chest.png^[sheet:2x2:0,0", "chest_chest.png^[sheet:2x2:0,0",
-               "chest_chest.png^[sheet:2x2:1,0", "chest_chest.png^[sheet:2x2:1,0",
-               "chest_chest.png^[sheet:2x2:1,0", "chest_chest.png^[sheet:2x2:0,1"},
-       paramtype2 = "facedir",
-       groups = {dig_immediate=2,choppy=3},
-       is_ground_content = false,
-       on_construct = function(pos)
-               local meta = minetest.get_meta(pos)
-               meta:set_string("formspec",
-                               "size[8,9]"..
-                               "list[current_name;main;0,0;8,4;]"..
-                               "list[current_player;main;0,5;8,4;]" ..
-                               "listring[]")
-               meta:set_string("infotext", "Chest")
-               local inv = meta:get_inventory()
-               inv:set_size("main", 8*4)
-       end,
-       can_dig = function(pos,player)
-               local meta = minetest.get_meta(pos);
-               local inv = meta:get_inventory()
-               return inv:is_empty("main")
-       end,
-       allow_metadata_inventory_put = function(pos, listname, index, stack, player)
-               minetest.chat_send_player(player:get_player_name(), "Allow put: " .. stack:to_string())
-               return stack:get_count()
-       end,
-       allow_metadata_inventory_take = function(pos, listname, index, stack, player)
-               minetest.chat_send_player(player:get_player_name(), "Allow take: " .. stack:to_string())
-               return stack:get_count()
-       end,
-       on_metadata_inventory_put = function(pos, listname, index, stack, player)
-               minetest.chat_send_player(player:get_player_name(), "On put: " .. stack:to_string())
-       end,
-       on_metadata_inventory_take = function(pos, listname, index, stack, player)
-               minetest.chat_send_player(player:get_player_name(), "On take: " .. stack:to_string())
-       end,
-})
+dofile(minetest.get_modpath("chest").."/chest.lua")
+dofile(minetest.get_modpath("chest").."/detached.lua")
index 0d75001646dcd8262fb79f135d24af792ed76d2b..76612976dd68ddb9065bc5cd8495aa2b81fd61b7 100644 (file)
@@ -1,2 +1,2 @@
 name = chest
-description = A simple chest to store items
+description = A simple chest to store items. Also adds a detached inventory test
diff --git a/games/devtest/mods/chest/textures/chest_detached_chest.png b/games/devtest/mods/chest/textures/chest_detached_chest.png
new file mode 100644 (file)
index 0000000..8e5dafe
Binary files /dev/null and b/games/devtest/mods/chest/textures/chest_detached_chest.png differ
index 5badff7e39627685fcff7a5551a87dd23f57aebb..3b00bd9e3e2934117b63fdfbf60e35d60b2a2bfc 100644 (file)
@@ -1,24 +1,3 @@
-minetest.register_chatcommand("test_inv", {
-       params = "",
-       description = "Test: Modify player's inventory formspec",
-       func = function(name, param)
-               local player = minetest.get_player_by_name(name)
-               if not player then
-                       return false, "No player."
-               end
-               player:set_inventory_formspec(
-                       "size[13,7.5]"..
-                       "image[6,0.6;1,2;player.png]"..
-                       "list[current_player;main;5,3.5;8,4;]"..
-                       "list[current_player;craft;8,0;3,3;]"..
-                       "list[current_player;craftpreview;12,1;1,1;]"..
-                       "list[detached:test_inventory;main;0,0;4,6;0]"..
-                       "button[0.5,7;2,1;button1;Button 1]"..
-                       "button_exit[2.5,7;2,1;button2;Exit Button]")
-               return true, "Done."
-       end,
-})
-
 minetest.register_chatcommand("test_bulk_set_node", {
        params = "",
        description = "Test: Bulk-set 9×9×9 stone nodes",
diff --git a/games/devtest/mods/experimental/detached.lua b/games/devtest/mods/experimental/detached.lua
deleted file mode 100644 (file)
index 673adfd..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
--- Create a detached inventory
-local inv = minetest.create_detached_inventory("test_inventory", {
-       allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
-               experimental.print_to_everything("allow move asked")
-               return count -- Allow all
-       end,
-       allow_put = function(inv, listname, index, stack, player)
-               experimental.print_to_everything("allow put asked")
-               return 1 -- Allow only 1
-       end,
-       allow_take = function(inv, listname, index, stack, player)
-               experimental.print_to_everything("allow take asked")
-               return 4 -- Allow 4 at max
-       end,
-       on_move = function(inv, from_list, from_index, to_list, to_index, count, player)
-               experimental.print_to_everything(player:get_player_name().." moved items")
-       end,
-       on_put = function(inv, listname, index, stack, player)
-               experimental.print_to_everything(player:get_player_name().." put items")
-       end,
-       on_take = function(inv, listname, index, stack, player)
-               experimental.print_to_everything(player:get_player_name().." took items")
-       end,
-})
-inv:set_size("main", 4*6)
-inv:add_item("main", "experimental:callback_node")
-inv:add_item("main", "experimental:particle_spawner")
-
-
index e37d85dbfac15699b136de32db66044067c08e1f..b321fea8e9bc3719bff3023d2f94b6cdc608d1e1 100644 (file)
@@ -2,14 +2,5 @@
 -- Experimental things
 --
 
-experimental = {}
-
-dofile(minetest.get_modpath("experimental").."/detached.lua")
 dofile(minetest.get_modpath("experimental").."/commands.lua")
 
-function experimental.print_to_everything(msg)
-       minetest.log("action", msg)
-       minetest.chat_send_all(msg)
-end
-
-
index bd6e2377a9789724f775330caa234780135a0a85..33196dfc4f0d0b032a8be9c3a44d3453ea6f9c77 100644 (file)
@@ -6,7 +6,7 @@ minetest.register_tool("testtools:privatizer", {
        on_use = function(itemstack, user, pointed_thing)
                if pointed_thing.type == "node" then
                        local node = minetest.get_node(pointed_thing.under)
-                       if node.name == "chest:chest" then
+                       if minetest.get_item_group(node.name, "meta_is_privatizable") == 1 then
                                local p = pointed_thing.under
                                minetest.log("action", "[testtools] Privatizer used at "..minetest.pos_to_string(p))
                                minetest.get_meta(p):mark_as_private({"infotext", "formspec"})