Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class SkinGrabber {
- private static final Gson GSON = new GsonBuilder()
- .setPrettyPrinting()
- .serializeNulls()
- .disableHtmlEscaping()
- .create();
- private final Player player;
- private BiConsumer<SkinData, BufferedImage> callback;
- public SkinGrabber(@Nonnull Player player) {
- this.player = player;
- }
- public void setCallback(@Nonnull BiConsumer<SkinData, BufferedImage> callback) {
- this.callback = callback;
- }
- public void grab(@Nonnull Plugin plugin) {
- GameProfile gameProfile = ((CraftPlayer) player).getProfile();
- String textureValue = gameProfile.getProperties().get("textures").iterator().next().getValue();
- String data = new String(Base64.getDecoder().decode(textureValue));
- MojangAccountData mojangAccountData = GSON.fromJson(data, MojangAccountData.class);
- System.out.println(mojangAccountData.toString());
- String skinUrl = mojangAccountData.getTextures().getSkin().getUrl();
- if (this.callback == null) {
- return;
- }
- Bukkit.getScheduler()
- .runTaskAsynchronously(plugin, () -> {
- try {
- BufferedImage bufferedImage = ImageIO.read(new URL(skinUrl));
- SkinData skinData = new SkinData();
- skinData.texture = new Texture();
- skinData.texture.value = textureValue;
- skinData.texture.url = skinUrl;
- skinData.uuid = gameProfile.getId();
- Bukkit.getScheduler().runTask(plugin, () -> this.callback.accept(skinData, bufferedImage));
- } catch (IOException exception) {
- exception.printStackTrace();
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement