SkinChanger

Run Settings
LanguageJava
Language Version
Run Command
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); } }
import com.google.gson.Gson; 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.event.Listener; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.util.List; import java.util.UUID; /* jsonをorg.jsonではなくGsonを使って書いたバージョン こっちの方がすっきりしてる気がする */ public class PluginMain extends JavaPlugin implements Listener { @Override public void onEnable() { getCommand("skin").setExecutor(this); getServer().getPluginManager().registerEvents(this,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("-",""))); Profile profile = new Gson().fromJson(new InputStreamReader(url.openStream()),Profile.class); player.getProfile().getProperties().removeAll("textures"); player.getProfile().getProperties().put("textures",profile.properties.get(0)); } catch (IOException ex) { ex.printStackTrace(); } for (Player p : Bukkit.getOnlinePlayers()) { p.showPlayer(plugin, target); } } public class Profile { public String id; public String name; public List<Property> properties; } }
Editor Settings
Theme
Key bindings
Full width
Lines