- Баллы
- 76
- Имя в Minecraft
- Namer_PRO
Добрый вечер.
Пишу плагин на смену скина игрока. Скин сам по себе меняется, но возникла проблема:
Новый скин виден только другим игрокам, но не ему самому.
Как это исправить?
Вот мой код:
Пишу плагин на смену скина игрока. Скин сам по себе меняется, но возникла проблема:
Новый скин виден только другим игрокам, но не ему самому.
Как это исправить?
Вот мой код:
PHP:
public static void setSkin(Player player, String name)
{
try
{
String uuid = getPlayerUUID(name);
if(uuid.equalsIgnoreCase("204"))
{
player.sendMessage(ChatColor.RED + "This player doesn't exist!");
return;
}
HttpsURLConnection connection = (HttpsURLConnection) new URL(String.format("https://sessionserver.mojang.com/session/minecraft/profile/" + uuid + "?unsigned=false")).openConnection();
if (connection.getResponseCode() == HttpsURLConnection.HTTP_OK)
{
String reply = new BufferedReader(new InputStreamReader(connection.getInputStream())).readLine();
String skin = reply.split("\"value\":\"")[1].split("\"")[0];
String signature = reply.split("\"signature\":\"")[1].split("\"")[0];
GameProfile profile = ((CraftPlayer) player).getHandle().getProfile();
profile.getProperties().removeAll("textures");
profile.getProperties().put("textures", new Property("textures", skin, signature));
Plugin plugin = Bukkit.getPluginManager().getPlugin("MyPlugin");
Bukkit.getOnlinePlayers().stream().filter(p -> p.getUniqueId() != player.getUniqueId()).forEach(p -> {
((CraftPlayer) p).getHandle().playerConnection.sendPacket(new PacketPlayOutEntityDestroy(p.getEntityId()));
((CraftPlayer) p).getHandle().playerConnection.sendPacket(new PacketPlayOutNamedEntitySpawn(((CraftPlayer) player).getHandle()));
Bukkit.getServer().getScheduler().runTask(plugin, () -> p.hidePlayer(plugin, player));
Bukkit.getServer().getScheduler().runTaskLater(plugin, () -> p.showPlayer(plugin, player), 5);
});
player.sendMessage(ChatColor.GREEN + "Skin was successfully changed! You look like " + name + " now!");
return;
}
else
{
if(connection.getResponseCode() == 429)
{
player.sendMessage(ChatColor.RED + "Don't change skin so fast!");
return;
}
else
{
System.out.println("Couldn't open connection with response code: " + connection.getResponseCode() + " (" + connection.getResponseMessage() + ")");
return;
}
}
}
catch (IOException e)
{
e.printStackTrace();
return;
}
}
public static String getPlayerUUID(String name)
{
try
{
HttpsURLConnection connection = (HttpsURLConnection) new URL(String.format("https://api.mojang.com/users/profiles/minecraft/" + name)).openConnection();
if (connection.getResponseCode() == HttpsURLConnection.HTTP_OK)
{
String reply = new BufferedReader(new InputStreamReader(connection.getInputStream())).readLine();
String uuid = reply.split("\"id\":\"")[1].split("\"")[0];
return uuid;
}
else
{
return connection.getResponseCode() + "";
}
}
catch(IOException e)
{
e.printStackTrace();
return null;
}
}
Последнее редактирование: