mirror of
				https://github.com/SmallJoker/minetest-u_skinsdb.git
				synced 2025-11-04 07:35:30 +01:00 
			
		
		
		
	Add hacky skin preview, update README
This commit is contained in:
		
							
								
								
									
										11
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								README
									
									
									
									
									
								
							@@ -8,11 +8,12 @@ https://github.com/minetest-technic/unified_inventory
 | 
			
		||||
 | 
			
		||||
This is the "u_skindb" branch, it is ment to download the skins from addi's skin database (http://minetest.fensta.bplaced.net).
 | 
			
		||||
 | 
			
		||||
To re-download the latest skins you may want to run:
 | 
			
		||||
 "./update_from_db.py" OR
 | 
			
		||||
 "./update_from_db2.py"
 | 
			
		||||
 script, then "./generate_previews.sh" before using the mod.
 | 
			
		||||
 | 
			
		||||
To re-download the latest skins you have 2 ways:
 | 
			
		||||
	1, if you have blender) Run the script "update_from_db.py" OR "update_from_db2.py"
 | 
			
		||||
	and then "./generate_previews.sh"
 | 
			
		||||
	
 | 
			
		||||
	2, if you are lazy) Run the script "update_from_db_hacky.py"
 | 
			
		||||
	and then make sure, you have set "u_skins.used_hacky" to "true" in "./u_skins/init.lua"
 | 
			
		||||
 | 
			
		||||
Credits:
 | 
			
		||||
MirceaKitsune (WTFPL) + bundled script by Zeg9 (WTFPL too):
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,7 @@ u_skins = {}
 | 
			
		||||
u_skins.type = { SPRITE=0, MODEL=1 }
 | 
			
		||||
u_skins.pages = {}
 | 
			
		||||
u_skins.u_skins = {}
 | 
			
		||||
u_skins.used_hacky = false -- set to true if used hacky way to update skins
 | 
			
		||||
 | 
			
		||||
u_skins.get_type = function(texture)
 | 
			
		||||
	if not texture then return end
 | 
			
		||||
@@ -34,6 +35,7 @@ u_skins.update_player_skin = function(player)
 | 
			
		||||
	elseif u_skins.get_type(u_skins.u_skins[name]) == u_skins.type.MODEL then
 | 
			
		||||
		player:set_properties({
 | 
			
		||||
			visual = "mesh",
 | 
			
		||||
			mesh = "character.x",
 | 
			
		||||
			textures = {u_skins.u_skins[name]..".png"},
 | 
			
		||||
			visual_size = {x=1, y=1},
 | 
			
		||||
		})
 | 
			
		||||
@@ -47,11 +49,13 @@ unified_inventory.register_page("u_skins", {
 | 
			
		||||
		name = player:get_player_name()
 | 
			
		||||
		local formspec = "background[0.06,0.99;7.92,7.52;ui_misc_form.png]"
 | 
			
		||||
		if u_skins.get_type(u_skins.u_skins[name]) == u_skins.type.MODEL then
 | 
			
		||||
			formspec = formspec
 | 
			
		||||
				.. "image[0,.75;1,2;"..u_skins.u_skins[name].."_preview.png]"
 | 
			
		||||
				.. "image[1,.75;1,2;"..u_skins.u_skins[name].."_preview_back.png]"
 | 
			
		||||
				.. "label[6,.5;Raw texture:]"
 | 
			
		||||
				.. "image[6,1;2,1;"..u_skins.u_skins[name]..".png]"
 | 
			
		||||
			formspec = formspec.."image[0,.75;1,2;"..u_skins.u_skins[name].."_preview.png]"
 | 
			
		||||
			if not u_skins.used_hacky then
 | 
			
		||||
				-- player back view
 | 
			
		||||
				formspec = formspec.."image[1,.75;1,2;"..u_skins.u_skins[name].."_preview_back.png]"
 | 
			
		||||
			end
 | 
			
		||||
			formspec = formspec.."label[6,.5;Raw texture:]"
 | 
			
		||||
				.."image[6,1;2,1;"..u_skins.u_skins[name]..".png]"
 | 
			
		||||
			
 | 
			
		||||
		else
 | 
			
		||||
			formspec = formspec
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										59
									
								
								update_from_db_hacky.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								update_from_db_hacky.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,59 @@
 | 
			
		||||
#!/usr/bin/python3
 | 
			
		||||
from http.client import HTTPConnection
 | 
			
		||||
import json
 | 
			
		||||
import base64
 | 
			
		||||
 | 
			
		||||
server = "minetest.fensta.bplaced.net"
 | 
			
		||||
skinsdir = "u_skins/textures/"
 | 
			
		||||
metadir = "u_skins/meta/"
 | 
			
		||||
i = 1
 | 
			
		||||
pages = 0
 | 
			
		||||
 | 
			
		||||
c = HTTPConnection(server)
 | 
			
		||||
def addpage(page):
 | 
			
		||||
	global i, pages
 | 
			
		||||
	print( "Page: "+str(page))
 | 
			
		||||
	try:
 | 
			
		||||
		c.request("GET","/api/get.json.php?getlist&page="+str(page)+"&outformat=base64")
 | 
			
		||||
		r = c.getresponse()
 | 
			
		||||
	except StandardError:
 | 
			
		||||
		c.request("GET","/api/get.json.php?getlist&page="+str(page)+"&outformat=base64")
 | 
			
		||||
		r = c.getresponse()
 | 
			
		||||
		if r.status != 200:
 | 
			
		||||
			print("Error", r.status)
 | 
			
		||||
			exit(r.status)
 | 
			
		||||
	data = r.read().decode()
 | 
			
		||||
	l = json.loads(data)
 | 
			
		||||
	if not l["success"]:
 | 
			
		||||
		print("Success != True")
 | 
			
		||||
		exit(1)
 | 
			
		||||
	pages = int(l["pages"])
 | 
			
		||||
	for s in l["skins"]:
 | 
			
		||||
		f = open(skinsdir+"character_"+str(i)+".png",'wb')
 | 
			
		||||
		f.write(base64.b64decode(s["img"]))
 | 
			
		||||
		f.close()
 | 
			
		||||
		f = open(metadir+"character_"+str(i)+".txt",'w')
 | 
			
		||||
		f.write('name = "'+s["name"]+'",\n')
 | 
			
		||||
		f.write('author = "'+s["author"]+'",\n')
 | 
			
		||||
		f.write('comment = "'+s["license"]+'",\n')
 | 
			
		||||
		f.close()
 | 
			
		||||
		try:
 | 
			
		||||
			c.request("GET","/skins/1/"+str(s["id"])+".png")
 | 
			
		||||
			r = c.getresponse()
 | 
			
		||||
		except StandardError:
 | 
			
		||||
			c.request("GET","/skins/1/"+str(s["id"])+".png")
 | 
			
		||||
			r = c.getresponse()
 | 
			
		||||
			if r.status != 200:
 | 
			
		||||
				print("Error", r.status)
 | 
			
		||||
				exit(r.status)
 | 
			
		||||
		data = r.read()
 | 
			
		||||
		f = open(skinsdir+"character_"+str(i)+"_preview.png",'wb')
 | 
			
		||||
		f.write(data)
 | 
			
		||||
		f.close()
 | 
			
		||||
		i = i + 1
 | 
			
		||||
addpage(1)
 | 
			
		||||
if pages > 1:
 | 
			
		||||
	for p in range(pages-1):
 | 
			
		||||
		addpage(p+2)
 | 
			
		||||
print("Skins have been updated!")
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user