forked from mtcontrib/connected_chests
		
	Merge remote-tracking branch 'upstream/master'
This commit is contained in:
		| @@ -1,2 +1,2 @@ | ||||
| read_globals = {"minetest", "table", "default", "pipeworks"} | ||||
| read_globals = {"minetest", "table", "vector", "default", "hopper", "pipeworks"} | ||||
| globals = {"connected_chests"} | ||||
|   | ||||
							
								
								
									
										110
									
								
								init.lua
									
									
									
									
									
								
							
							
						
						
									
										110
									
								
								init.lua
									
									
									
									
									
								
							| @@ -1,3 +1,6 @@ | ||||
| -- for translation | ||||
| local S = minetest.get_translator("connected_chests") | ||||
|  | ||||
| -- param_tab maps the x and z offset to a param2 value | ||||
| local param_tab = { | ||||
| 	["-1 0"] = 0, | ||||
| @@ -136,6 +139,8 @@ end | ||||
| connected_chests = {chestdata = chestdata} | ||||
| --[[ | ||||
| connected_chests.register_chest(<original_node>, { | ||||
| 	description = <string>, -- The name of the connected chest as shown to the | ||||
| 		-- player, i.e. the node metadata infotext | ||||
| 	get_formspec = function(metatable, pos) | ||||
| 		return <formspec_of_big> | ||||
| 	end, | ||||
| @@ -156,6 +161,13 @@ function connected_chests.register_chest(fromname, data) | ||||
| 	data.left = name_left | ||||
| 	data.right = name_right | ||||
|  | ||||
| 	local description = data.description | ||||
| 	if not description then | ||||
| 		minetest.log("deprecated", | ||||
| 			"Missing connected chest description for " .. fromname) | ||||
| 		description = "Big " .. minetest.registered_nodes[fromname].description | ||||
| 	end | ||||
|  | ||||
| 	-- executed when connecting the chest | ||||
| 	data.on_connect = function(pu, pa, par, metatable) | ||||
| 		minetest.add_node(pu, {name=name_left, param2=par}) | ||||
| @@ -164,7 +176,7 @@ function connected_chests.register_chest(fromname, data) | ||||
| 		if not data.add_open_chest then | ||||
| 			metatable.fields.formspec = data.get_formspec(metatable, pu) | ||||
| 		end | ||||
| 		metatable.fields.infotext = "Big " .. metatable.fields.infotext | ||||
| 		metatable.fields.infotext = description | ||||
| 		local meta = minetest.get_meta(pu) | ||||
| 		meta:from_table(metatable) | ||||
| 		local inv = meta:get_inventory() | ||||
| @@ -215,7 +227,7 @@ function connected_chests.register_chest(fromname, data) | ||||
| 	local inside_texture | ||||
|  | ||||
|  | ||||
| 	chest.description = "Big " .. chest.description | ||||
| 	chest.description = description | ||||
| 	chest.groups = table.copy(chest.groups) | ||||
| 	chest.groups.not_in_creative_inventory = 1 | ||||
| 	chest.legacy_facedir_simple = nil | ||||
| @@ -365,14 +377,6 @@ function connected_chests.register_chest(fromname, data) | ||||
| 			end | ||||
| 		end | ||||
|  | ||||
| 		--~ def_opened.tiles[1] = "default_mese.png" -- top, passt | ||||
| 		--~ def_opened.tiles[2] = "default_wood.png" -- bottom | ||||
| 		--~ def_opened.tiles[3] = "default_stone.png" -- right and left side or so | ||||
| 		--~ def_opened.tiles[4] = "default_obsidian.png" -- back side | ||||
|  | ||||
| 		--~ def_opened.tiles[5] = "default_cobble.png" -- front side | ||||
| 		--~ def_opened.tiles[6] = "default_leaves.png" -- inside | ||||
|  | ||||
| 		-- fix right side, somehow | ||||
| 		def_opened.tiles[4] = def_opened.tiles[3] | ||||
| 		def_opened.tiles[4].name = def_opened.tiles[4].name .. "^[transformFX" | ||||
| @@ -515,6 +519,7 @@ end) | ||||
| local chest_lid_obstructed = default.chest | ||||
| 	and default.chest.chest_lid_obstructed | ||||
| connected_chests.register_chest("default:chest", { | ||||
| 	description = S("Big Chest"), | ||||
| 	add_open_chest = true, | ||||
| 	on_rightclick = function(pos, _, player) | ||||
| 		minetest.sound_play("default_chest_open", | ||||
| @@ -556,6 +561,7 @@ connected_chests.register_chest("default:chest", { | ||||
| }) | ||||
|  | ||||
| connected_chests.register_chest("default:chest_locked", { | ||||
| 	description = S("Big Locked Chest"), | ||||
| 	lock = true, | ||||
| 	add_open_chest = true, | ||||
| 	on_rightclick = function(pos, _, player) | ||||
| @@ -618,7 +624,8 @@ if not chest_lid_obstructed then | ||||
| 				(def.drawtype == "airlike" or | ||||
| 				def.drawtype == "signlike" or | ||||
| 				def.drawtype == "torchlike" or | ||||
| 				(def.drawtype == "nodebox" and def.paramtype2 == "wallmounted")) then | ||||
| 				(def.drawtype == "nodebox" | ||||
| 					and def.paramtype2 == "wallmounted")) then | ||||
| 			return false | ||||
| 		end | ||||
| 		return true | ||||
| @@ -631,7 +638,80 @@ minetest.register_alias("connected_chests:chest_left", | ||||
| 	"default:chest_connected_left") | ||||
| minetest.register_alias("connected_chests:chest_right", | ||||
| 	"default:chest_connected_right") | ||||
| minetest.register_alias("connected_chests:chest_left_locked", "default:chest_locked_connected_left") | ||||
| minetest.register_alias("connected_chests:chest_right_locked", "default:chest_locked_connected_right") | ||||
| minetest.register_alias("connected_chests:chest_locked_left", "default:chest_locked_connected_left") | ||||
| minetest.register_alias("connected_chests:chest_locked_right", "default:chest_locked_connected_right") | ||||
| minetest.register_alias("connected_chests:chest_left_locked", | ||||
| 	"default:chest_locked_connected_left") | ||||
| minetest.register_alias("connected_chests:chest_right_locked", | ||||
| 	"default:chest_locked_connected_right") | ||||
| minetest.register_alias("connected_chests:chest_locked_left", | ||||
| 	"default:chest_locked_connected_left") | ||||
| minetest.register_alias("connected_chests:chest_locked_right", | ||||
| 	"default:chest_locked_connected_right") | ||||
|  | ||||
| if minetest.global_exists("hopper") and hopper.set_extra_container_info then | ||||
| 	local function get_inventory(chest_right_pos) | ||||
| 		local node_right = minetest.get_node(chest_right_pos) | ||||
| 		if node_right.param2 > 3 then | ||||
| 			-- The right connected chest node has an invalid param2 value | ||||
| 			-- Cannot determine the inventory | ||||
| 			return | ||||
| 		end | ||||
| 		local x, z = unpack(param_tab2[node_right.param2]) | ||||
| 		local chest_left_pos = {x=chest_right_pos.x+x, y=chest_right_pos.y, | ||||
| 			z=chest_right_pos.z+z} | ||||
| 		local node_left = minetest.get_node(chest_left_pos) | ||||
| 		if node_left.name ~= "default:chest_connected_left" | ||||
| 		and node_left.name ~= "default:chest_connected_left_open" then | ||||
| 			minetest.log("error","The left chest is not a chest: " .. | ||||
| 				node_left.name .. " at " .. vector.to_string(chest_left_pos)) | ||||
| 			return | ||||
| 		end | ||||
| 		if node_left.param2 ~= node_right.param2 then | ||||
| 			minetest.log("error", "The chests are pointing in different " .. | ||||
| 				"directions: node_left.param2:" .. node_left.param2 .. | ||||
| 				", node_right.param2:" .. node_right.param2) | ||||
| 			return | ||||
| 		end | ||||
| 		return minetest.get_meta(chest_left_pos):get_inventory() | ||||
| 	end | ||||
| 	hopper:add_container({ | ||||
| 		{"top", "default:chest_connected_left", "main"}, | ||||
| 		{"bottom", "default:chest_connected_left", "main"}, | ||||
| 		{"side", "default:chest_connected_left", "main"}, | ||||
| 		{"top", "default:chest_connected_right", "main", | ||||
| 			get_inventory = get_inventory}, | ||||
| 		{"bottom", "default:chest_connected_right", "main", | ||||
| 			get_inventory = get_inventory}, | ||||
| 		{"side", "default:chest_connected_right", "main", | ||||
| 			get_inventory = get_inventory}, | ||||
| 		{"top", "default:chest_connected_left_open", "main"}, | ||||
| 		{"bottom", "default:chest_connected_left_open", "main"}, | ||||
| 		{"side", "default:chest_connected_left_open", "main"}, | ||||
| 		{"top", "default:chest_connected_right_open", "main", | ||||
| 			get_inventory = get_inventory}, | ||||
| 		{"bottom", "default:chest_connected_right_open", "main", | ||||
| 			get_inventory = get_inventory}, | ||||
| 		{"side", "default:chest_connected_right_open", "main", | ||||
| 			get_inventory = get_inventory}, | ||||
| 	}) | ||||
| 	local function set_hopper_param2(hopper_pos, chest_left_pos) | ||||
| 		local param2_by_offset = { | ||||
| 			[vector.new(-1, 0, 0):to_string()] = 0, | ||||
| 			[vector.new( 0, 0, 1):to_string()] = 1, | ||||
| 			[vector.new( 1, 0, 0):to_string()] = 2, | ||||
| 			[vector.new( 0, 0,-1):to_string()] = 3, | ||||
| 		} | ||||
| 		local hopper_param2 = param2_by_offset[ | ||||
| 			(chest_left_pos - hopper_pos):to_string()] | ||||
| 		if hopper_param2 then | ||||
| 			return hopper_param2 | ||||
| 		end | ||||
| 		local x, z = unpack( | ||||
| 			param_tab2[minetest.get_node(chest_left_pos).param2]) | ||||
| 		local chest_right_pos = {x=chest_left_pos.x-x, y=chest_left_pos.y, | ||||
| 			z=chest_left_pos.z-z} | ||||
| 		return param2_by_offset[(chest_right_pos - hopper_pos):to_string()] | ||||
| 	end | ||||
| 	hopper:set_extra_container_info({ | ||||
| 		{"default:chest_connected_left", set_hopper_param2 = set_hopper_param2}, | ||||
| 	}) | ||||
| end | ||||
|   | ||||
							
								
								
									
										3
									
								
								locale/connected_chests.eo.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								locale/connected_chests.eo.tr
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| # textdomain: connected_chests | ||||
| Big Chest=Kestego | ||||
| Big Locked Chest=Ŝlosita kestego | ||||
							
								
								
									
										3
									
								
								locale/connected_chests.ru.tr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								locale/connected_chests.ru.tr
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| # textdomain: connected_chests | ||||
| Big Chest=Большой сундук | ||||
| Big Locked Chest=Большой запертый сундук | ||||
							
								
								
									
										3
									
								
								locale/template.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								locale/template.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| # textdomain: connected_chests | ||||
| Big Chest= | ||||
| Big Locked Chest= | ||||
		Reference in New Issue
	
	Block a user