mirror of
				https://github.com/mt-mods/homedecor_modpack.git
				synced 2025-10-31 05:35:24 +01:00 
			
		
		
		
	add hopper support (#18)
				
					
				
			This commit is contained in:
		| @@ -148,7 +148,8 @@ function homedecor.register_furnace(name, furnacedef) | ||||
| 		can_dig = furnace_can_dig, | ||||
| 		allow_metadata_inventory_put = furnace_allow_put, | ||||
| 		allow_metadata_inventory_move = furnace_allow_move, | ||||
| 		inventory = { lockable = true } | ||||
| 		inventory = { lockable = true }, | ||||
| 		is_furnace = true | ||||
| 	} | ||||
|  | ||||
| 	local def_active = { | ||||
| @@ -162,7 +163,8 @@ function homedecor.register_furnace(name, furnacedef) | ||||
| 		can_dig = furnace_can_dig, | ||||
| 		allow_metadata_inventory_put = furnace_allow_put, | ||||
| 		allow_metadata_inventory_move = furnace_allow_move, | ||||
| 		inventory = { lockable = true } | ||||
| 		inventory = { lockable = true }, | ||||
| 		is_furnace = true | ||||
| 	} | ||||
|  | ||||
| 	if furnacedef.extra_nodedef_fields then | ||||
|   | ||||
| @@ -1,5 +1,12 @@ | ||||
| local S = minetest.get_translator("homedecor_common") | ||||
|  | ||||
| local has_hopper = minetest.get_modpath("hopper") | ||||
| local has_safe_hopper = has_hopper and | ||||
| 	-- mod from https://github.com/minetest-mods/hopper respects the owner | ||||
| 	(hopper.neighbors or | ||||
| 	-- mod from https://notabug.org/TenPlus1/hopper respects the owner since 20220123 | ||||
| 	(hopper.version and hopper.version >= "20220123")) | ||||
|  | ||||
| local default_can_dig = function(pos,player) | ||||
| 	local meta = minetest.get_meta(pos) | ||||
| 	return meta:get_inventory():is_empty("main") | ||||
| @@ -97,6 +104,23 @@ function homedecor.handle_inventory(name, def, original_def) | ||||
| 	end | ||||
|  | ||||
| 	local locked = inventory.locked | ||||
|  | ||||
| 	if has_hopper and (not locked or has_safe_hopper) then | ||||
| 		if inventory.size then | ||||
| 			hopper:add_container({ | ||||
| 				{"top",  "homedecor:"..name, "main"}, | ||||
| 				{"bottom", "homedecor:"..name, "main"}, | ||||
| 				{"side", "homedecor:"..name, "main"}, | ||||
| 			}) | ||||
| 		elseif original_def.is_furnace then | ||||
| 			hopper:add_container({ | ||||
| 				{"top", "homedecor:"..name, "dst"}, | ||||
| 				{"bottom", "homedecor:"..name, "src"}, | ||||
| 				{"side", "homedecor:"..name, "fuel"}, | ||||
| 			}) | ||||
| 		end | ||||
| 	end | ||||
|  | ||||
| 	if locked then | ||||
| 		local after_place_node = def.after_place_node | ||||
| 		def.after_place_node = function(pos, placer) | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| name = homedecor_common | ||||
| description = Homedecor mod: common | ||||
| depends = default, creative | ||||
| optional_depends = screwdriver | ||||
| optional_depends = screwdriver, hopper | ||||
|   | ||||
| @@ -6,6 +6,8 @@ local placeholder_node = "homedecor:expansion_placeholder" | ||||
| function homedecor.register(name, original_def) | ||||
| 	local def = table.copy(original_def) | ||||
|  | ||||
| 	def.is_furnace = nil | ||||
|  | ||||
| 	def.drawtype = def.drawtype | ||||
| 		or (def.mesh and "mesh") | ||||
| 		or (def.node_box and "nodebox") | ||||
|   | ||||
		Reference in New Issue
	
	Block a user