Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

I've been trying to make a mod where you could "steal" parts of the player, and get them as items, but I've run into a problem: I don't have a single clue on how to get player's skin texture, nor how to apply it to the item model. I tried to seek examples on this forum and even look up how SkullBlockRenderer class works, but I didn't find an exact answer to my question anywhere

Edited by AppleBeanie

  • AppleBeanie changed the title to [1.20.1] Getting players skin texture by their UUID
  • 2 months later...

Just a few months ago I was creating my own plugin for Minecraft 1.20.2 spigot that did the same thing, but the skins were not saved, if you can understand this code that I made a long time ago it may help you.

 

//This is a class method
	private static String APIRequest(String value, String url, String toSearch) {
        try {
            URL api = new URL(url + value);
            HttpURLConnection connection = (HttpURLConnection) api.openConnection();

            connection.setRequestMethod("GET");

            int responseCode = connection.getResponseCode();

            if (responseCode == HttpURLConnection.HTTP_OK) {
                BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));

                StringBuilder response = new StringBuilder();

                for (String responseChar; (responseChar = reader.readLine()) != null; ) response.append(responseChar);

                reader.close();

                JSONObject responseObject = new JSONObject(response.toString());

                if (!toSearch.equals("id"))
                    return responseObject
                            .getJSONArray("properties")
                            .getJSONObject(0)
                            .getString("value");
                else return responseObject.getString("id");
            }
            else {
                AntiGianka.ConsoleMessage(ChatColor.RED, String.format(
                        "Could not get %s. Response code: %s",
                        ((toSearch.equals("id")) ? "UUID" : "texture"),
                        responseCode
                ));
            }
        } catch (MalformedURLException error) {
            AntiGianka.ConsoleMessage(ChatColor.RED, "An error occurred while trying to access the URL. Error: " + error);
        } catch (IOException error) {
            AntiGianka.ConsoleMessage(ChatColor.RED, "An error occurred while attempting to connect to the URL. Error: " + error);
        }
        return "";
    }

//other class method
    private void SkinGetter() {
        String uuid;
        String textureCoded;

        if ((uuid = APIRequest(args[0], "https://api.mojang.com/users/profiles/minecraft/", "id")).isEmpty() ||
                (textureCoded = APIRequest(uuid, "https://sessionserver.mojang.com/session/minecraft/profile/", "value")).isEmpty()
        ) sender.sendMessage(ChatColor.RED +
                String.format(
                        "An error has occurred while trying to obtain the %s player skin, please check if the name %s is spelled correctly or try again later.",
                        args[0], args[0]
                )
        );
        else SkinSetter(textureCoded);
    }

//other more
    private void SkinSetter(String textureCoded) {
        JSONObject profile = new JSONObject(new String(Base64.getDecoder().decode(textureCoded)));

        try {
            URL textureUrl = new URL(profile.getJSONObject("textures").
                    getJSONObject("SKIN").
                    getString("url"));

            if (sender instanceof Player && args.length == 1) {
                PlayerTextures playerTextures = ((Player) sender).getPlayerProfile().getTextures();
                playerTextures.setSkin(textureUrl);

                ((Player) sender).getPlayerProfile().setTextures(playerTextures);

                if (((Player) sender).getPlayerProfile().getTextures().getSkin() != null) sender.sendMessage(((Player) sender).getPlayerProfile().getTextures().getSkin().toString());
                else sender.sendMessage("Null");

                sender.sendMessage("Skin changed successfully.a");
            }
            else {

            }
            AntiGianka.ConsoleMessage(ChatColor.GREEN, "Skin command executed successfully.");
        } catch (MalformedURLException error) {
            sender.sendMessage(ChatColor.RED +
                    String.format(
                            "An error has occurred while trying to obtain the %s player skin, please check if the name %s is spelled correctly or try again later.",
                            args[0], args[0]
                    )
            );
            AntiGianka.ConsoleMessage(ChatColor.RED, "An error occurred while trying to access the URL. Error: " + error);
        }
    }

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.