Quick actions

cmd+k|ctrl+k

Navigation

Languages

SkinChanger

Snippet info

Language

Java

Visibility

public

Author

tagucha.dev

Created

2020-05-24T07:36:06Z

Updated

2022-02-02T06:28:04.04771Z

import com.mojang.authlib.properties.Property;
import net.minecraft.server.v1_14_R1.EntityPlayer;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Iterator;
import java.util.UUID;

//1.14.4前提です...書き忘れてた
// コマンド /skin <player名> でスキンを変えることができます

public class PluginMain extends JavaPlugin{
    @Override
    public void onEnable() {
        getCommand("skin").setExecutor(this);
    }

    @Override
    public void onDisable() {

    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        boolean isPlayer = sender instanceof Player;
        if (!isPlayer) {
            sender.sendMessage(ChatColor.RED + "プレイヤーのみ実行可能です");
            return true;
        }
        if (args.length != 1) return false;
        changeSkin(this,(Player)sender,Bukkit.getOfflinePlayer(args[0]).getUniqueId());
        return true;
    }

    public void changeSkin(Plugin plugin, Player target, UUID skin) {
        for (Player p:Bukkit.getOnlinePlayers()) p.hidePlayer(plugin,target);
        EntityPlayer player = ((CraftPlayer)target).getHandle();
        try {
            URL url = new URL(String.format("https://sessionserver.mojang.com/session/minecraft/profile/%s?unsigned=false", skin.toString().replace("-","")));
            Iterator<String> it = new BufferedReader(new InputStreamReader(url.openStream())).lines().iterator();
            String arg = "";
            while (it.hasNext()) arg += it.next();
            JSONObject object = new JSONObject(arg).getJSONArray("properties").getJSONObject(0);
            player.getProfile().getProperties().removeAll("textures");
            player.getProfile().getProperties().put("textures", new Property("textures", object.getString("value"), object.getString("signature")));
        } catch (IOException | JSONException ex) {
            ex.printStackTrace();
        }
        for (Player p : Bukkit.getOnlinePlayers()) p.showPlayer(plugin, target);
    }
}
INFO