Advertisement
Guest User

Untitled

a guest
May 26th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 KB | None | 0 0
  1. public class SkinGrabber {
  2.  
  3. private static final Gson GSON = new GsonBuilder()
  4. .setPrettyPrinting()
  5. .serializeNulls()
  6. .disableHtmlEscaping()
  7. .create();
  8.  
  9. private final Player player;
  10.  
  11. private BiConsumer<SkinData, BufferedImage> callback;
  12.  
  13. public SkinGrabber(@Nonnull Player player) {
  14. this.player = player;
  15. }
  16.  
  17. public void setCallback(@Nonnull BiConsumer<SkinData, BufferedImage> callback) {
  18. this.callback = callback;
  19. }
  20.  
  21. public void grab(@Nonnull Plugin plugin) {
  22. GameProfile gameProfile = ((CraftPlayer) player).getProfile();
  23.  
  24. String textureValue = gameProfile.getProperties().get("textures").iterator().next().getValue();
  25.  
  26. String data = new String(Base64.getDecoder().decode(textureValue));
  27.  
  28. MojangAccountData mojangAccountData = GSON.fromJson(data, MojangAccountData.class);
  29.  
  30. System.out.println(mojangAccountData.toString());
  31.  
  32. String skinUrl = mojangAccountData.getTextures().getSkin().getUrl();
  33.  
  34. if (this.callback == null) {
  35. return;
  36. }
  37. Bukkit.getScheduler()
  38. .runTaskAsynchronously(plugin, () -> {
  39. try {
  40. BufferedImage bufferedImage = ImageIO.read(new URL(skinUrl));
  41.  
  42. SkinData skinData = new SkinData();
  43.  
  44. skinData.texture = new Texture();
  45.  
  46. skinData.texture.value = textureValue;
  47. skinData.texture.url = skinUrl;
  48. skinData.uuid = gameProfile.getId();
  49.  
  50. Bukkit.getScheduler().runTask(plugin, () -> this.callback.accept(skinData, bufferedImage));
  51. } catch (IOException exception) {
  52. exception.printStackTrace();
  53. }
  54. });
  55. }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement