ChangeSkin 3.0

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:
    https://github.com/games647/ChangeSkin
    Contributors:
    games647, kicjow, Shynixn, Bodyash
    Languages Supported:
    Configurable in language file
    [​IMG]

    Description


    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.

    Development-Builds
    https://ci.codemc.org/job/ChangeSkin/

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

    Features
    • 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
    [​IMG]
    https://github.com/games647/ChangeSkin

    Commands

    • /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
    Permissions

    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.
    Whitelist
    • changeskin.skin.whitelist.uuid - Allow this specific skin
    • changeskin.skin.whitelist.* - allows all skins
    Blacklist
    • changeskin.skin.whitelist.*
    • -changeskin.skin.whitelist.uuid
    => This means all skins are allowed except the ones with the uuid in the blacklist list

    Requirements
    [​IMG]
    or using Bitcoin:
    1H1JdC1fLVu1aDa7AjF2VngifoErvMXL5e
    donate-changeskin-spigot.png
    Thank you very much for those who already donated:
    • Name removed - 20$
    • xion987 - 15$
    • PigParty - 11$
    • andramil - 10$
    • Name removed - 10$
    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. kite
    kite
    2/5,
    Version: 3.0
    [19:33:46 ERROR]: [ChangeSkin] Tried downloading skin data from Mojang
    java.io.IOException: Server returned HTTP response code: 429 for URL: https://sessionserver.mojang.com/session/minecraft/profile/4eb059aeec39405e926563df510f44e8?unsigned=false
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_152]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_152]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_152]
    at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_152]
    at sun.net.www.protocol.http.HttpURLConnection$10.run(Unknown Source) ~[?:1.8.0_152]
    at sun.net.www.protocol.http.HttpURLConnection$10.run(Unknown Source) ~[?:1.8.0_152]
    at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_152]
    at sun.net.www.protocol.http.HttpURLConnection.getChainedException(Unknown Source) ~[?:1.8.0_152]
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source) ~[?:1.8.0_152]
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) ~[?:1.8.0_152]
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source) ~[?:1.8.0_152]
    at com.github.games647.changeskin.core.MojangSkinApi.downloadSkin(MojangSkinApi.java:133) [ChangeSkin.jar:?]
    at com.github.games647.changeskin.core.shared.SharedDownloader.run(SharedDownloader.java:27) [ChangeSkin.jar:?]
    at com.github.games647.changeskin.bukkit.tasks.NameResolver.scheduleDownloader(NameResolver.java:44) [ChangeSkin.jar:?]
    at com.github.games647.changeskin.core.shared.SharedNameResolver.run(SharedNameResolver.java:58) [ChangeSkin.jar:?]
    at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:71) [craftbukkit.jar:git-Spigot-21fe707-e1ebe52]
    at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:53) [craftbukkit.jar:git-Spigot-21fe707-e1ebe52]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_152]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_152]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_152]
    Caused by: java.io.IOException: Server returned HTTP response code: 429 for URL: https://sessionserver.mojang.com/session/minecraft/profile/4eb059aeec39405e926563df510f44e8?unsigned=false
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source) ~[?:1.8.0_152]
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) ~[?:1.8.0_152]
    at java.net.HttpURLConnection.getResponseCode(Unknown Source) ~[?:1.8.0_152]
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source) ~[?:1.8.0_152]
    at com.github.games647.changeskin.core.MojangSkinApi.downloadSkin(MojangSkinApi.java:127) ~[?:?]
    ... 8 more
    [19:33:46 WARN]: [ChangeSkin] Task #567 for ChangeSkin v3.0 generated an exception
    java.lang.NoSuchMethodError: com.nametagedit.plugin.api.INametagApi.reloadNametag(Lorg/bukkit/entity/Player;)V
    at com.github.games647.changeskin.bukkit.tasks.SkinUpdater.sendUpdateSelf(SkinUpdater.java:144) ~[?:?]
    at com.github.games647.changeskin.bukkit.tasks.SkinUpdater.sendUpdate(SkinUpdater.java:102) ~[?:?]
    at com.github.games647.changeskin.bukkit.tasks.SkinUpdater.onInstantUpdate(SkinUpdater.java:94) ~[?:?]
    at com.github.games647.changeskin.bukkit.tasks.SkinUpdater.run(SkinUpdater.java:80) ~[?:?]
    at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:71) ~[craftbukkit.jar:git-Spigot-21fe707-e1ebe52]
    at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:350) [craftbukkit.jar:git-Spigot-21fe707-e1ebe52]
    at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:723) [craftbukkit.jar:git-Spigot-21fe707-e1ebe52]
    at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [craftbukkit.jar:git-Spigot-21fe707-e1ebe52]
    at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [craftbukkit.jar:git-Spigot-21fe707-e1ebe52]
    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [craftbukkit.jar:git-Spigot-21fe707-e1ebe52]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_152]
    >
    1. games647
      Author's Response
      Please use the bug tracker or the forums and wait at least 24 hours.

      First you have an outdated NameTagEdit version and second two plugins accessed the same player skin within same minute (or you restarted the server too often during this time period). This is a rate-limit by Mojang and cannot be fixed in the plugin.
  2. Betob89
    Betob89
    4/5,
    Version: 3.0
    Cant you fix this spam console



    [13:58:37 INFO]: [ChangeSkin] Instant update for null
    [13:58:37 INFO]: [ChangeSkin] Instant update for null
    [13:58:37 INFO]: [ChangeSkin] Instant update for null
    [13:58:38 INFO]: [ChangeSkin] Instant update for null
    [13:58:38 INFO]: [ChangeSkin] Instant update for null
    [13:58:38 INFO]: [ChangeSkin] Instant update for null
    [13:58:38 INFO]: [ChangeSkin] Instant update for null
    [13:58:38 INFO]: [ChangeSkin] Instant update for null
    [13:58:39 INFO]: [ChangeSkin] Instant update for null
    [13:58:39 INFO]: [ChangeSkin] Instant update for null
    [13:58:39 INFO]: [ChangeSkin] Instant update for null
    1. games647
      Author's Response
      Please use the forums or the bug tracker and wait at least 24 hours. There are many relevant details missing here like the used version and server version. I cannot fix it without those things. That's why the **bug tracker** has a issue template:
      https://raw.githubusercontent.com/games647/ChangeSkin/master/.github/ISSUE_TEMPLATE.md

      I **guess** your BungeeCord version isn't the same as the spigot version or the plugin is conflict with other bungee plugins.
  3. GenFormil
    GenFormil
    4/5,
    Version: 3.0
    Nice plugin, however i dont like the mojang api and its never working. Is possible to just only use third-party api's? You should also add a extra function for /skull since servers that dont have bungeecord can't forward skins. This is causing that that their skull is just steve or alex. I made my own patch for this with skript, its just giving a renamed skull of the premium player. However, i cant get it done to change the skull-owner name in the skull metadata. so after placing than taking it it is renaming it again. Maybe you can do a great job on this
    1. games647
      Author's Response
      Well previous version included third-party APIs, but all (three) shutdown because of rate-limits. The Mojang API workings most of the time. You just should keep in mind that you are only allowed to make 600 requests per 10 minutes. If you find a third-party API that doesn't have those issues, I'm happy to include it.

      Servers without BungeeCord doesn't need to forward skins. They can download and use them directly. The ChangeSkin module for BungeeCord only needs to do that in case for instant updates (without relogin).
  4. Wichier
    Wichier
    5/5,
    Version: 2.4.2
    This plugin is better than SkinRestorer i think. You deserve more downloads, just keep working on this! ;)
  5. jerryui
    jerryui
    5/5,
    Version: 2.4.2
    This plugin is 1000% better than skinrestorer, and the author has issued a fix almost instantly. So let me tell you why you shall use changeskin:
    1. The author is smart and he is 10000% better at knowing what he is doing than the xxxxrestorer authors, who only know "LOL I did not make this error. LOL I did not make this part"
    2. The plugin is 10000% more efficient than skinrestorer, and it will not lag your server through the skin fetching process, especially if you are having a big network (bungeecord)
    3. The MySQL is 10000% better than the xxxxrestorer, as it is error free and is able to enhance the performance of the whole process. The xxxrestorer MySql is a joke as it will spam connections until you will get a delay to your database :)))
    4. Changeskin allows you to stop loading skin at lobby to avoid unwanted resources consumption during a bot attack while xxxrestorer will lag or crash your server in this case :)
    5. No more problems related to Rate limiting
    6. Because, in every aspects, changeskin is 10000% better :p

    That's why, Please use changeskin. I have used skinrestorer for a long time and I am already regretting why haven't I found this awesome plugin at the first place :) Awesome plugins with brilliant author.
    1. games647
      Author's Response
      Thank you very much ^^
  6. i0xHeX
    i0xHeX
    5/5,
    Version: 2.4.2
    Nice plugin. Love it. No problems with skins, author fixes issues quickly. Important feature for me and cons of SkinsRestorer - ability to change skin only with rejoinig. Saves nerves and less visual bugs. Thanks for keeping this feature. One thing - push here latest build, which fixes skin display I opened issue on github. People may not understand, that plugin is working, but only from Jenkins. And other thing - add reload command, because from build 54 I can't reload it with Plugman without errors.
    1. games647
      Author's Response
      What errors do you got after a reload?
  7. DazzleFun
    DazzleFun
    5/5,
    Version: 2.4.2
    Excellent replacement SkinsRestorer, as it unnecessarily loaded the server, I was insane after trying out your plugin, I recommend to use it)
  8. RafricOFC
    RafricOFC
    5/5,
    Version: 2.4.2
    Best SkinChanger Plugin of all!
    Easy, simple, small ♥
    I love it!! ♥
    ---

    Sorry for my bad inglesh ahahah
    Big hugs from Brazil for dev! ♥ :D
  9. Betob89
    Betob89
    4/5,
    Version: 2.4.2
    Good but i have this error <3




    [19:07:17 WARN]: [ChangeSkin] Task #21060 for ChangeSkin v2.4.2 generated an exception
    java.lang.NoSuchFieldError: COLOR_UPDATE
    at com.github.games647.changeskin.bukkit.tasks.SkinUpdater.getMaxHealth(SkinUpdater.java:241) ~[?:?]
    at com.github.games647.changeskin.bukkit.tasks.SkinUpdater.getHealth(SkinUpdater.java:228) ~[?:?]
    at com.github.games647.changeskin.bukkit.tasks.SkinUpdater.sendUpdateSelf(SkinUpdater.java:134) ~[?:?]
    at com.github.games647.changeskin.bukkit.tasks.SkinUpdater.sendUpdate(SkinUpdater.java:104) ~[?:?]
    at com.github.games647.changeskin.bukkit.tasks.SkinUpdater.onInstantUpdate(SkinUpdater.java:96) ~[?:?]
    at com.github.games647.changeskin.bukkit.tasks.SkinUpdater.run(SkinUpdater.java:80) ~[?:?]
    at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:71) ~[registro1.jar:git-Spigot-db6de12-18fbb24]
    at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:350) [registro1.jar:git-Spigot-db6de12-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:723) [registro1.jar:git-Spigot-db6de12-18fbb24]
    at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [registro1.jar:git-Spigot-db6de12-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [registro1.jar:git-Spigot-db6de12-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [registro1.jar:git-Spigot-db6de12-18fbb24]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
    1. games647
      Author's Response
      Update ProtocolLib. Please use forum or the bug tracker and wait at least 24 hours before positing a review with a bug report. This was already answered some time ago.
  10. AlbertBlue
    AlbertBlue
    5/5,
    Version: 2.4.2
    The best skin plugin Ive ever seen! Very lightweight and it has a lot
    of wonderful features! 100% recommended!