index.jade 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  1. extends layout
  2. block content
  3. .jumbotron
  4. .container
  5. h1 Crafatar
  6. p A blazing fast API for Minecraft faces!
  7. .avatar-wrapper
  8. .avatar.redstone_sheep
  9. .avatar.jake0oo0
  10. .avatar.sk89q
  11. .avatar.md_5
  12. .avatar.notch
  13. .avatar.jeb
  14. .avatar.dinnerbone.flipped
  15. .avatar.ez
  16. .avatar.grumm.flipped
  17. .avatar.themogmimer
  18. .avatar.searge
  19. .avatar.xlson
  20. .avatar.krisjelbring
  21. .avatar.minecraftchick
  22. .avatar.kappe
  23. .avatar.marc
  24. .avatar.mollstam
  25. .avatar.evilseph
  26. .avatar.thinkofdeath
  27. .container
  28. section(id="documentation")
  29. h2 Documentation
  30. .row
  31. section
  32. a(id="avatars", class="anchor")
  33. a(href="#avatars")
  34. h3 Avatars
  35. | Replace
  36. mark.green id
  37. | with a Mojang <b>UUID</b> or <b>username</b> to get the related head. All images are PNGs.
  38. .code
  39. | #{domain}/avatars/
  40. mark.green id
  41. section
  42. a(id="avatar-parameters" class="anchor")
  43. a(href="#avatar-parameters")
  44. h4 Avatar Parameters
  45. table(class="table table-striped")
  46. thead
  47. tr
  48. td parameter
  49. td type
  50. td default
  51. td description
  52. tbody
  53. tr
  54. td size
  55. td integer
  56. td #{config.default_size}
  57. td The size of the image in pixels, #{config.min_size} - #{config.max_size}.
  58. tr
  59. td default
  60. td string
  61. td
  62. | The standard value is calculated based on the UUID (even = alex, odd = steve).<br>
  63. | Usernames always default to steve.
  64. td
  65. | The image to be served when the id has no skin (404).<br>
  66. | Valid options are
  67. a(href="/avatars/0?default=steve") steve
  68. | ,
  69. a(href="/avatars/0?default=alex") alex
  70. | , or a custom URL.
  71. tr
  72. td helm
  73. td null
  74. td
  75. td Apply the "second" layer (hat) to the avatar.
  76. section
  77. a(id="avatar-examples", class="anchor")
  78. a(href="#avatar-examples")
  79. h4 Avatar Examples
  80. .code
  81. #avatar-example-1.example-wrapper
  82. .example #{domain}/avatars/jeb_
  83. p.preview Jeb's avatar
  84. #avatar-example-2.example-wrapper
  85. .example #{domain}/avatars/jeb_?helm
  86. p.preview Jeb's avatar with helm
  87. #avatar-example-3.example-wrapper
  88. .example #{domain}/avatars/jeb_?size=128
  89. p.preview Jeb's avatar, 128 × 128
  90. #avatar-example-4.example-wrapper
  91. .example #{domain}/avatars/853c80ef3c3749fdaa49938b674adae6
  92. p.preview Jeb's avatar by UUID
  93. #avatar-example-5.example-wrapper
  94. .example #{domain}/avatars/jeb_?default=alex
  95. p.preview Jeb's avatar, or fall back to alex <i>(this example assumes jeb_ does not exist)</i>
  96. #avatar-example-6.example-wrapper
  97. .example #{domain}/avatars/jeb_?default=https://i.imgur.com/ocJVWAc.png
  98. p.preview
  99. | Jeb's avatar, or fall back to a custom image <i>(this example assumes jeb_ does not exist)</i>
  100. p.preview-placeholder
  101. | Hover over the examples for a preview!
  102. .preview-background
  103. section
  104. a(id="renders" class="anchor")
  105. a(href="#renders")
  106. h3 3D Renders
  107. p
  108. | Crafatar also provides support for 3D renders of Minecraft skins.<br>
  109. | Please note that <b>this feature is currently beta</b>!<br>
  110. | Replace
  111. mark.green id
  112. | with a Mojang <b>UUID</b> or <b>username</b> to get a render of the skin.
  113. | The <b>head</b> render type returns a render of the skin's head.
  114. span.code
  115. | #{domain}/renders/head/
  116. mark.green id
  117. | The <b>body</b> render returns a render of the entire skin.
  118. span.code
  119. | #{domain}/renders/body/
  120. mark.green id
  121. section
  122. a(id="render-parameters" class="anchor")
  123. a(href="#render-parameters")
  124. h4 Render Parameters
  125. table(class="table table-striped")
  126. thead
  127. tr
  128. td parameter
  129. td type
  130. td default
  131. td description
  132. tbody
  133. tr
  134. td scale
  135. td integer
  136. td #{config.default_scale}. The actual size differs between the type of render.
  137. td The scale factor of the image #{config.min_scale} - #{config.max_scale}.
  138. tr
  139. td helm
  140. td null
  141. td
  142. td Apply the "second" layer (hat) to the avatar.
  143. section
  144. a(id="render-examples", class="anchor")
  145. a(href="#render-examples")
  146. h4 Render Examples
  147. .code
  148. #render-example-1.example-wrapper
  149. .example #{domain}/renders/body/jeb_?helm&amp;scale=4
  150. p.preview Jeb's body, with helmet, scale 4
  151. #render-example-2.example-wrapper
  152. .example #{domain}/renders/head/853c80ef3c3749fdaa49938b674adae6?scale=8
  153. p.preview Jeb's head, by UUID, scale 8
  154. p.preview-placeholder
  155. | Hover over the examples for a preview!
  156. .preview-background
  157. section
  158. a(id="skins" class="anchor")
  159. a(href="#skins")
  160. h3 Skins
  161. p
  162. | You can also get the full skin file of a player.<br>
  163. | Replace
  164. mark.green id
  165. | with a Mojang <b>UUID</b> or <b>username</b> to get the related skin.<br>
  166. | The user's skin is returned, or the default image is served.<br>
  167. | You can use the default parameter here as well.
  168. span.code
  169. | #{domain}/skins/
  170. mark.green id
  171. section
  172. a(id="skin-parameters" class="anchor")
  173. a(href="#skin-parameters")
  174. h4 Skin Parameters
  175. table(class="table table-striped")
  176. thead
  177. tr
  178. td parameter
  179. td type
  180. td default
  181. td description
  182. tbody
  183. tr
  184. td default
  185. td string
  186. td
  187. | The standard value is calculated based on the UUID (even = alex, odd = steve).<br>
  188. | Usernames always default to steve.
  189. td
  190. | The image to be served when the id has no skin (404).<br>
  191. | Valid options are
  192. a(href="/skins/0?default=steve") steve
  193. | ,
  194. a(href="/skins/0?default=alex") alex
  195. | , or a custom URL.
  196. section
  197. a(id="skin-examples", class="anchor")
  198. a(href="#skin-examples")
  199. h4 Skin Examples
  200. .code
  201. #skin-example-1.example-wrapper
  202. .example #{domain}/skins/jeb_
  203. p.preview Jeb's skin
  204. #skin-example-2.example-wrapper
  205. .example #{domain}/skins/jeb_?default=alex
  206. p.preview Jeb's skin, or fall back to alex <i>(this example assumes jeb_ does not exist)</i>
  207. p.preview-placeholder
  208. | Hover over the examples for a preview!
  209. .preview-background
  210. section
  211. a(id="meta" class="anchor")
  212. a(href="#meta")
  213. h2 Meta
  214. section
  215. a(id="meta-http-headers" class="anchor")
  216. a(href="#meta-http-headers")
  217. h3 HTTP Headers
  218. p
  219. | Responses come with these HTTP headers, useful for debugging.<br>
  220. | Please note that these headers are cached by CloudFlare <small>(CF-Cache-Status: HIT)</small>.
  221. section
  222. a(id="meta-response-time" class="anchor")
  223. a(href="#meta-response-time")
  224. h4 Response-Time
  225. p The time, in milliseconds, it took Crafatar to process the request.
  226. section
  227. a(id="meta-x-storage-type" class="anchor")
  228. a(href="#meta-x-storage-type")
  229. h4 X-Storage-Type
  230. ul
  231. li <b>none</b>: No external requests. Cached: User has no skin.
  232. li <b>cached</b>: No external requests. Skin cached and stored locally.
  233. li
  234. | <b>checked</b>: 1 external request. Skin cached, checked for updates, no skin downloaded.<br>
  235. | This happens either when the user removed their skin or when it didn't change.
  236. li <b>downloaded</b>: 2 external requests. Skin changed or unknown, downloaded.
  237. li
  238. | <b>error</b>: This can happen, for example, when Mojang's servers are down.<br>
  239. | If possible, an outdated image is served instead.
  240. section
  241. a(id="meta-about-usernames" class="anchor")
  242. a(href="#meta-about-usernames")
  243. h3 About Usernames
  244. p
  245. | We strongly advise you to use UUIDs instead of usernames in production.<br>
  246. | Usernames are deprecated by Mojang and you should only use usernames for testing.<br>
  247. | Malformed usernames are rejected.
  248. section
  249. a(id="meta-about-uuids" class="anchor")
  250. a(href="#meta-about-uuids")
  251. h3 About UUIDs
  252. p
  253. | UUIDs may use the blank or dashed format.<br>
  254. | Malformed UUIDs are rejected.
  255. section
  256. a(id="meta-about-caching" class="anchor")
  257. a(href="#meta-about-caching")
  258. h3 About Caching
  259. p
  260. | Crafatar caches skins for #{config.local_cache_time/60} minutes before checking for skin changes.<br>
  261. | Images are cached in your browser for #{config.browser_cache_time/60} minutes until a new request to Crafatar is made.<br>
  262. | When you changed your skin you can try clearing your browser cache to see the change faster.
  263. footer
  264. hr
  265. p(class="pull-right") Copyright Craftatar #{new Date().getFullYear()}
  266. // preload hover images
  267. img.preload(src="/avatars/jeb_", alt="preloaded image")
  268. img.preload(src="/avatars/jeb_?helm", alt="preloaded image")
  269. img.preload(src="/avatars/jeb_?size=128", alt="preloaded image")
  270. img.preload(src="/avatars/853c80ef3c3749fdaa49938b674adae6", alt="preloaded image")
  271. img.preload(src="/avatars/0?default=alex", alt="preloaded image")
  272. img.preload(src="/avatars/0?default=https%3A%2F%2Fi.imgur.com%2FocJVWAc.png", alt="preloaded image")
  273. img.preload(src="/renders/body/jeb_?helm&scale=4", alt="preloaded image")
  274. img.preload(src="/renders/head/853c80ef3c3749fdaa49938b674adae6?scale=8", alt="preloaded image")
  275. img.preload(src="/skins/jeb_", alt="preloaded image")
  276. img.preload(src="/skins/0?default=alex", alt="preloaded image")
  277. img.preload(src="/avatars/ae795aa86327408e92ab25c8a59f3ba1?size=64", alt="preloaded image")
  278. img.preload(src="/avatars/ae795aa86327408e92ab25c8a59f3ba1?size=64&helm", alt="preloaded image")
  279. img.preload(src="/avatars/2d5aa9cdaeb049189930461fc9b91cc5?size=64", alt="preloaded image")
  280. img.preload(src="/avatars/2d5aa9cdaeb049189930461fc9b91cc5?size=64&helm", alt="preloaded image")
  281. img.preload(src="/avatars/0ea8eca3dbf647cc9d1ac64551ca975c?size=64", alt="preloaded image")
  282. img.preload(src="/avatars/0ea8eca3dbf647cc9d1ac64551ca975c?size=64&helm", alt="preloaded image")
  283. img.preload(src="/avatars/af74a02d19cb445bb07f6866a861f783?size=64", alt="preloaded image")
  284. img.preload(src="/avatars/af74a02d19cb445bb07f6866a861f783?size=64&helm", alt="preloaded image")
  285. img.preload(src="/avatars/853c80ef3c3749fdaa49938b674adae6?size=64", alt="preloaded image")
  286. img.preload(src="/avatars/853c80ef3c3749fdaa49938b674adae6?size=64&helm", alt="preloaded image")
  287. img.preload(src="/avatars/069a79f444e94726a5befca90e38aaf5?size=64", alt="preloaded image")
  288. img.preload(src="/avatars/61699b2ed3274a019f1e0ea8c3f06bc6?size=64", alt="preloaded image")
  289. img.preload(src="/avatars/61699b2ed3274a019f1e0ea8c3f06bc6?size=64&helm", alt="preloaded image")
  290. img.preload(src="/avatars/7d043c7389524696bfba571c05b6aec0?size=64", alt="preloaded image")
  291. img.preload(src="/avatars/7d043c7389524696bfba571c05b6aec0?size=64&helm", alt="preloaded image")
  292. img.preload(src="/avatars/e6b5c088068044df9e1b9bf11792291b?size=64", alt="preloaded image")
  293. img.preload(src="/avatars/e6b5c088068044df9e1b9bf11792291b?size=64&helm", alt="preloaded image")
  294. img.preload(src="/avatars/1c1bd09a6a0f4928a7914102a35d2670?size=64", alt="preloaded image")
  295. img.preload(src="/avatars/1c1bd09a6a0f4928a7914102a35d2670?size=64&helm", alt="preloaded image")
  296. img.preload(src="/avatars/b05881186e75410db2db4d3066b223f7?size=64", alt="preloaded image")
  297. img.preload(src="/avatars/b05881186e75410db2db4d3066b223f7?size=64&helm", alt="preloaded image")
  298. img.preload(src="/avatars/696a82ce41f44b51aa31b8709b8686f0?size=64", alt="preloaded image")
  299. img.preload(src="/avatars/696a82ce41f44b51aa31b8709b8686f0?size=64&helm", alt="preloaded image")
  300. img.preload(src="/avatars/b9583ca43e64488a9c8c4ab27e482255?size=64", alt="preloaded image")
  301. img.preload(src="/avatars/b9583ca43e64488a9c8c4ab27e482255?size=64&helm", alt="preloaded image")
  302. img.preload(src="/avatars/c9b54008fd8047428b238787b5f2401c?size=64", alt="preloaded image")
  303. img.preload(src="/avatars/c9b54008fd8047428b238787b5f2401c?size=64&helm", alt="preloaded image")
  304. img.preload(src="/avatars/d8f9a4340f2d415f9acfcd70341c75ec?size=64", alt="preloaded image")
  305. img.preload(src="/avatars/d8f9a4340f2d415f9acfcd70341c75ec?size=64&helm", alt="preloaded image")
  306. img.preload(src="/avatars/7125ba8b1c864508b92bb5c042ccfe2b?size=64", alt="preloaded image")
  307. img.preload(src="/avatars/7125ba8b1c864508b92bb5c042ccfe2b?size=64&helm", alt="preloaded image")
  308. img.preload(src="/avatars/4566e69fc90748ee8d71d7ba5aa00d20?size=64", alt="preloaded image")
  309. img.preload(src="/avatars/4566e69fc90748ee8d71d7ba5aa00d20?size=64&helm", alt="preloaded image")
  310. img.preload(src="/avatars/020242a17b9441799eff511eea1221da?size=64", alt="preloaded image")
  311. img.preload(src="/avatars/020242a17b9441799eff511eea1221da?size=64&helm", alt="preloaded image")
  312. img.preload(src="/avatars/9769ecf6331448f3ace67ae06cec64a3?size=64", alt="preloaded image")
  313. img.preload(src="/avatars/9769ecf6331448f3ace67ae06cec64a3?size=64&helm", alt="preloaded image")
  314. img.preload(src="/avatars/f8cdb6839e9043eea81939f85d9c5d69?size=64", alt="preloaded image")
  315. img.preload(src="/avatars/f8cdb6839e9043eea81939f85d9c5d69?size=64&helm", alt="preloaded image")