ChangeSkin 2.4.2

Allows your players to change their skins by command | Restore cracked skins | Instant updates

  1. games647
    Tested Minecraft Versions:
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    • 1.12
    Source Code:


    This plugin allows your players to change their skins by command. These skins have to be downloaded from Mojang, because Minecraft clients only accept from Mojang signed skins. But you can choose every skin that another minecraft user currently has or had.

    Moreover it's possible to set a custom standard skin. If you want to, this plugin can set this standard skin for all players who still have the default steve or alex skin.

    If you like the project, leave a star on Github and contribute there.


    (you need the version with the name ChangeSkin.jar without any suffix)

    • Instant skin updates
    • Works on offline mode (can restore skins) and online mode servers
    • Nearly no mojang rate limits due caching
    • Specify standard skins
    • Change your skin - Every skin which was uploaded to Mojang is allowed
    • Lightweight
    • BungeeCord support
    • Implemented cache to benefit performance
    • No client modification needed
    • Tested with Spigot, PaperSpigot and TacoSpigot
    • Easy to use
    • Open Source
    Source code


    • /setskin <uuid>
    • /setskin <playerName>
    • /setskin <onlinePlayer> <newSkinUUID/newSkinPlayerName>
    • /skinupdate - Downloads the fresh skin from Mojang
    How to install on BungeeCord
    1. Install the plugin on both BungeeCord and Bukkit server
    2. Activate BungeeCord support in your spigot configuration
    3. Check the settings of the ChangeSkin config in the BungeeCord instance
      • For example BungeeCord doesn't support SQLite by default

    changeskin.command.skinupdate - Request a fresh skin from mojang
    changeskin.command.setskin.* - All the commands below
    changeskin.command.setskin - Set your own skin
    changeskin.command.setskin.other - Set the skin of other players

    Whitelist and blacklist permissions
    For this you have to skin permissions.
    • - Allow this specific skin
    •* - allows all skins
    => This means all skins are allowed except the ones with the uuid in the blacklist list

    or using Bitcoin:
    Thank you very much for those who already donated:
    • Name removed - 20$
    • PigParty - 11$
    • andramil - 10$
    • xion987 - 5$
    For privacy reasons I remove the first and last name. If you don't want to be listed, message me or write it directly into the donation message.

Recent Reviews

  1. AlbertBlue
    Version: 2.4.2
    The best skin plugin Ive ever seen! Very lightweight and it has a lot
    of wonderful features! 100% recommended!
  2. mraureliusr
    Version: 2.4.2
    Updated review. As the "bug" I had was purely my own fault, I'm revising this up to 5 stars from 4. The performance is 1000% better than SkinsRestorer (I suspect that SR is blocking the main server thread when getting skins from the server instead of doing it asynchronously), it's more stable, it uses UUIDs, there's a million reasons why this plugin is better!
  3. Betob89
    Version: 2.4.2

    02:15:00 [SEVERE] Dec 03, 2017 2:15:00 AM net.md_5.bungee.event.EventBus post
    WARNING: Error dispatching event ServerConnectEvent(player=k1000hg, target=BungeeServerInfo(name=Registro1, address=localhost/, restricted=false), cancelled=false) to listener com.[email protected]797501a
    at com.github.games647.changeskin.bungee.listener.ServerSwitchListener.onServerConnect(
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(
    at java.lang.reflect.Method.invoke(
    at net.md_5.bungee.event.EventHandlerMethod.invoke(
    at net.md_5.bungee.api.plugin.PluginManager.callEvent(
    at net.md_5.bungee.UserConnection.connect(
    at net.md_5.bungee.connection.InitialHandler$6$
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(
    at io.netty.util.concurrent.SingleThreadEventExecutor$
    1. games647
      Author's Response
      Already fixed. Just update. Please use the bug tracker next time.
  4. LuckyZeeRo
    Version: 2.4.2
    Good plugin. Why I choosed this but not SkinsRestorer? One reason - no online skin request on the main thread. So no impact on perfomance.
  5. Gerolf
    Version: 2.4.2
    I used SkinsRestorer before, but this plugin is much much better! Two major advantages: no duplication bug and no performance impact, unlike the newest SkinsRestorer version...
  6. angelosilva09
    Version: 2.4.2
    hi fix skin
    1. games647
      Author's Response
      Please use the bug tracker or the forum, explain your situation and wait at least 24 hours.

      I cannot help you if I don't know what doesn't work. I need your server log and configuration.
      What did you tried?
      If you use BungeeCord, do you followed the setup guide?
      Do you installed ProtocolLib if you don't use BungeeCord?
      Do you have any errors in the server log?
      What version do you use, dev-build or lastest version?
      Do you use SQLite or MySQL?
  7. Cry_Sis
    Version: 2.4.1
    Great plugin, everything is working great. Even if I didnt understand something or didnt know how to configure it, creator helped me rlly fast.
  8. demobuild
    Version: 2.4.1
    Very good plugin that works very well in 1.12 on my server.
    Developer listening.
  9. Lorenzo314
    Version: 2.3.2
    Thank you developer to made me fix this. Now i have the plugin working. This plugin is good and the developer is too!
  10. hugogaymer
    Version: 2.3.2
    Super useful plugin! Working fine on my sever! Thank you :) .