forked from nalc/homedecor_modpack
		
	add optional support for skinsdb in wardrobe
- All skins are registered in skinsdb, including skins format - But the skins are not in inventory skins list, still available trough wardrobe only - If selected, the skins metadata and preview is shown in inventory - Use skinsdb method to set the skin - Note: skinsdb manages the 3d_armor if both mods found
This commit is contained in:
		
				
					committed by
					
						 Vanessa Dannenberg
						Vanessa Dannenberg
					
				
			
			
				
	
			
			
			
						parent
						
							08bbd0f592
						
					
				
				
					commit
					eb2b3d7980
				
			| @@ -12,3 +12,4 @@ bucket? | |||||||
| beds? | beds? | ||||||
| flowers? | flowers? | ||||||
| 3d_armor? | 3d_armor? | ||||||
|  | skinsdb? | ||||||
|   | |||||||
| @@ -13,9 +13,29 @@ local set_player_textures = | |||||||
| 	or default.player_set_textures | 	or default.player_set_textures | ||||||
|  |  | ||||||
| local armor_mod_path = minetest.get_modpath("3d_armor") | local armor_mod_path = minetest.get_modpath("3d_armor") | ||||||
| local skins = {"male1", "male2", "male3", "male4", "male5"} |  | ||||||
|  | local skinslist = {"male1", "male2", "male3", "male4", "male5"} | ||||||
| local default_skin = "character.png" | local default_skin = "character.png" | ||||||
|  |  | ||||||
|  | local skinsdb_mod_path = minetest.get_modpath("skinsdb") | ||||||
|  | if skinsdb_mod_path then | ||||||
|  | 	for _, shrt in ipairs(skinslist) do | ||||||
|  | 		for _, prefix in ipairs({"", "fe"}) do | ||||||
|  | 			local skin_name = prefix..shrt | ||||||
|  | 			local skin_obj = skins.new("homedecor_clothes_"..skin_name..".png") -- Texture PNG file as key to be compatible in set_player_skin | ||||||
|  | 			skin_obj:set_preview("homedecor_clothes_"..skin_name.."_preview.png") | ||||||
|  | 			skin_obj:set_texture("homedecor_clothes_"..skin_name..".png") | ||||||
|  | 			skin_obj:set_meta("name", "Wardrobe "..skin_name) | ||||||
|  | 			skin_obj:set_meta("author", 'Calinou and Jordach') | ||||||
|  | 			skin_obj:set_meta("license", 'WTFPL') | ||||||
|  | 			local file = io.open(homedecor.modpath.."/textures/homedecor_clothes_"..skin_name..".png", "r") | ||||||
|  | 			skin_obj:set_meta("format", skins.get_skin_format(file)) | ||||||
|  | 			file:close() | ||||||
|  | 			skin_obj:set_meta("in_inventory_list", false) | ||||||
|  | 		end | ||||||
|  | 	end | ||||||
|  | end | ||||||
|  |  | ||||||
| function homedecor.get_player_skin(player) | function homedecor.get_player_skin(player) | ||||||
| 	local skin = player:get_attribute("homedecor:player_skin") | 	local skin = player:get_attribute("homedecor:player_skin") | ||||||
| 	if not skin or skin == "" then | 	if not skin or skin == "" then | ||||||
| @@ -26,7 +46,9 @@ end | |||||||
|  |  | ||||||
| function homedecor.set_player_skin(player, skin, save) | function homedecor.set_player_skin(player, skin, save) | ||||||
| 	skin = skin or default_skin | 	skin = skin or default_skin | ||||||
| 	if armor_mod_path then -- if 3D_armor's installed, let it set the skin | 	if skinsdb_mod_path then | ||||||
|  | 		skins.set_player_skin(player, skin) | ||||||
|  | 	elseif armor_mod_path then -- if 3D_armor's installed, let it set the skin | ||||||
| 		armor.textures[player:get_player_name()].skin = skin | 		armor.textures[player:get_player_name()].skin = skin | ||||||
| 		armor:update_player_visuals(player) | 		armor:update_player_visuals(player) | ||||||
| 	else | 	else | ||||||
| @@ -78,8 +100,8 @@ homedecor.register("wardrobe", { | |||||||
| 		local clothes_strings = "" | 		local clothes_strings = "" | ||||||
| 		for i = 1,5 do | 		for i = 1,5 do | ||||||
| 			clothes_strings = clothes_strings.. | 			clothes_strings = clothes_strings.. | ||||||
| 			  "image_button_exit["..(i-1)..".5,0;1.1,2;homedecor_clothes_"..skins[i].."_preview.png;"..skins[i]..";]".. | 			  "image_button_exit["..(i-1)..".5,0;1.1,2;homedecor_clothes_"..skinslist[i].."_preview.png;"..skinslist[i]..";]".. | ||||||
| 			  "image_button_exit["..(i-1)..".5,2;1.1,2;homedecor_clothes_fe"..skins[i].."_preview.png;fe"..skins[i]..";]" | 			  "image_button_exit["..(i-1)..".5,2;1.1,2;homedecor_clothes_fe"..skinslist[i].."_preview.png;fe"..skinslist[i]..";]" | ||||||
| 		end | 		end | ||||||
| 		meta:set_string("formspec", "size[5.5,8.5]"..default.gui_bg..default.gui_bg_img..default.gui_slots.. | 		meta:set_string("formspec", "size[5.5,8.5]"..default.gui_bg..default.gui_bg_img..default.gui_slots.. | ||||||
| 			"vertlabel[0,0.5;"..minetest.formspec_escape(S("Clothes")).."]".. | 			"vertlabel[0,0.5;"..minetest.formspec_escape(S("Clothes")).."]".. | ||||||
| @@ -97,11 +119,11 @@ homedecor.register("wardrobe", { | |||||||
| 		end | 		end | ||||||
|  |  | ||||||
| 		for i = 1,5 do | 		for i = 1,5 do | ||||||
| 			if fields[skins[i]] then | 			if fields[skinslist[i]] then | ||||||
| 				homedecor.set_player_skin(sender, "homedecor_clothes_"..skins[i]..".png", "player") | 				homedecor.set_player_skin(sender, "homedecor_clothes_"..skinslist[i]..".png", "player") | ||||||
| 				break | 				break | ||||||
| 			elseif fields["fe"..skins[i]] then | 			elseif fields["fe"..skinslist[i]] then | ||||||
| 				homedecor.set_player_skin(sender, "homedecor_clothes_fe"..skins[i]..".png", "player") | 				homedecor.set_player_skin(sender, "homedecor_clothes_fe"..skinslist[i]..".png", "player") | ||||||
| 				break | 				break | ||||||
| 			end | 			end | ||||||
| 		end | 		end | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user