mirror of
				https://github.com/luanti-org/minetest_game.git
				synced 2025-11-04 09:15:29 +01:00 
			
		
		
		
	Add vessels shelf
This commit is contained in:
		@@ -1,6 +1,87 @@
 | 
			
		||||
-- Minetest 0.4 mod: vessels
 | 
			
		||||
-- See README.txt for licensing and other information.
 | 
			
		||||
 | 
			
		||||
local vessels_shelf_formspec =
 | 
			
		||||
	"size[8,7;]"..
 | 
			
		||||
	default.gui_bg..
 | 
			
		||||
	default.gui_bg_img..
 | 
			
		||||
	default.gui_slots..
 | 
			
		||||
	"list[context;vessels;0,0.3;8,2;]"..
 | 
			
		||||
	"list[current_player;main;0,2.85;8,1;]"..
 | 
			
		||||
	"list[current_player;main;0,4.08;8,3;8]"..
 | 
			
		||||
	default.get_hotbar_bg(0,2.85)
 | 
			
		||||
 | 
			
		||||
minetest.register_node("vessels:shelf", {
 | 
			
		||||
	description = "Vessels shelf",
 | 
			
		||||
	tiles = {"default_wood.png", "default_wood.png", "default_wood.png^vessels_shelf.png"},
 | 
			
		||||
	is_ground_content = false,
 | 
			
		||||
	groups = {choppy=3,oddly_breakable_by_hand=2,flammable=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
 | 
			
		||||
	on_construct = function(pos)
 | 
			
		||||
		local meta = minetest.get_meta(pos)
 | 
			
		||||
		meta:set_string("formspec", vessels_shelf_formspec)
 | 
			
		||||
		local inv = meta:get_inventory()
 | 
			
		||||
		inv:set_size("vessels", 8*2)
 | 
			
		||||
	end,
 | 
			
		||||
	can_dig = function(pos,player)
 | 
			
		||||
		local meta = minetest.get_meta(pos);
 | 
			
		||||
		local inv = meta: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
 | 
			
		||||
		end
 | 
			
		||||
	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))
 | 
			
		||||
	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))
 | 
			
		||||
	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))
 | 
			
		||||
	end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = 'vessels:shelf',
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{'group:wood', 'group:wood', 'group:wood'},
 | 
			
		||||
		{'group:vessel', 'group:vessel', 'group:vessel'},
 | 
			
		||||
		{'group:wood', 'group:wood', 'group:wood'},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("vessels:glass_bottle", {
 | 
			
		||||
	description = "Glass Bottle (empty)",
 | 
			
		||||
	drawtype = "plantlike",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								mods/vessels/textures/vessels_shelf.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								mods/vessels/textures/vessels_shelf.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 354 B  | 
		Reference in New Issue
	
	Block a user