From 12bcfeab4d14e627c8140b81acd4481bdd714b74 Mon Sep 17 00:00:00 2001
From: Jean-Patrick Guerrero <jeanpatrick.guerrero@gmail.com>
Date: Wed, 23 Mar 2016 19:48:22 +0100
Subject: [PATCH] Shelves: Fix listring functionality + code cleaning

---
 mods/default/nodes.lua | 39 ++++++-----------------------------
 mods/vessels/init.lua  | 47 ++++++++++--------------------------------
 2 files changed, 17 insertions(+), 69 deletions(-)

diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua
index a4b42950..3b15c1af 100644
--- a/mods/default/nodes.lua
+++ b/mods/default/nodes.lua
@@ -1574,43 +1574,16 @@ minetest.register_node("default:bookshelf", {
 		inv:set_size("books", 8 * 2)
 	end,
 	can_dig = function(pos,player)
-		local meta = minetest.get_meta(pos);
-		local inv = meta:get_inventory()
+		local inv = minetest.get_meta(pos):get_inventory()
 		return inv:is_empty("books")
 	end,
-
-	allow_metadata_inventory_put = function(pos, listname, index, stack, player)
-		local meta = minetest.get_meta(pos)
-		local inv = meta:get_inventory()
-		local to_stack = inv:get_stack(listname, index)
-		if listname == "books" then
-			if minetest.get_item_group(stack:get_name(), "book") ~= 0
-					and to_stack:is_empty() then
-				return 1
-			else
-				return 0
-			end
+	allow_metadata_inventory_put = function(pos, listname, index, stack)
+		if minetest.get_item_group(stack:get_name(), "book") ~= 0 then
+			return stack:get_count()
 		end
+		return 0
 	end,
-
-	allow_metadata_inventory_move = function(pos, from_list, from_index,
-			to_list, to_index, count, player)
-		local meta = minetest.get_meta(pos)
-		local inv = meta:get_inventory()
-		local stack = inv:get_stack(from_list, from_index)
-		local to_stack = inv:get_stack(to_list, to_index)
-		if to_list == "books" then
-			if minetest.get_item_group(stack:get_name(), "book") ~= 0
-					and to_stack:is_empty() then
-				return 1
-			else
-				return 0
-			end
-		end
-	end,
-
-	on_metadata_inventory_move = function(pos, from_list, from_index,
-			to_list, to_index, count, player)
+	on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
 		minetest.log("action", player:get_player_name() ..
 			" moves stuff in bookshelf at " .. minetest.pos_to_string(pos))
 	end,
diff --git a/mods/vessels/init.lua b/mods/vessels/init.lua
index 6389a245..bbd677a3 100644
--- a/mods/vessels/init.lua
+++ b/mods/vessels/init.lua
@@ -24,54 +24,29 @@ minetest.register_node("vessels:shelf", {
 		local meta = minetest.get_meta(pos)
 		meta:set_string("formspec", vessels_shelf_formspec)
 		local inv = meta:get_inventory()
-		inv:set_size("vessels", 8*2)
+		inv:set_size("vessels", 8 * 2)
 	end,
 	can_dig = function(pos,player)
-		local meta = minetest.get_meta(pos);
-		local inv = meta:get_inventory()
+		local inv = minetest.get_meta(pos):get_inventory()
 		return inv:is_empty("vessels")
 	end,
-
 	allow_metadata_inventory_put = function(pos, listname, index, stack, player)
-		local meta = minetest.get_meta(pos)
-		local inv = meta:get_inventory()
-		local to_stack = inv:get_stack(listname, index)
-		if listname == "vessels" then
-			if minetest.get_item_group(stack:get_name(), "vessel") ~= 0
-					and to_stack:is_empty() then
-				return 1
-			else
-				return 0
-			end
-		end
-	end,
-
-	allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
-		local meta = minetest.get_meta(pos)
-		local inv = meta:get_inventory()
-		local stack = inv:get_stack(from_list, from_index)
-		local to_stack = inv:get_stack(to_list, to_index)
-		if to_list == "vessels" then
-			if minetest.get_item_group(stack:get_name(), "vessel") ~= 0 
-					and to_stack:is_empty() then
-				return 1
-			else
-				return 0
-			end
+		if minetest.get_item_group(stack:get_name(), "vessel") ~= 0 then
+			return stack:get_count()
 		end
+		return 0
 	end,
-
 	on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
-		minetest.log("action", player:get_player_name()..
-			   " moves stuff in vessels shelf at "..minetest.pos_to_string(pos))
+		minetest.log("action", player:get_player_name() ..
+			   " moves stuff in vessels shelf at ".. minetest.pos_to_string(pos))
 	end,
 	on_metadata_inventory_put = function(pos, listname, index, stack, player)
-		minetest.log("action", player:get_player_name()..
-			   " moves stuff to vessels shelf at "..minetest.pos_to_string(pos))
+		minetest.log("action", player:get_player_name() ..
+			   " moves stuff to vessels shelf at ".. minetest.pos_to_string(pos))
 	end,
 	on_metadata_inventory_take = function(pos, listname, index, stack, player)
-		minetest.log("action", player:get_player_name()..
-			   " takes stuff from vessels shelf at "..minetest.pos_to_string(pos))
+		minetest.log("action", player:get_player_name() ..
+			   " takes stuff from vessels shelf at ".. minetest.pos_to_string(pos))
 	end,
 })
 
-- 
GitLab