ChangeSkinX
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.
Moreover it will be 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.
Features
- Lightweight
- Instant skin updates
- Easy to use
- Implemented cache to benefit performance
- Nearly no mojang rate limits due caching
- No client modification needed
- Possibility to create a standard skin
Commands
- /setskin <uuid > - Sets your skin to be equal to the player with the selected uuid
- /setskin < playerName>
- /setskin < onlinePlayer > < newSkinUUID/newSkinPlayerName >
- /skinupdate - Invalidates the database entry and fetches the fresh skin from the Mojang servers
Permissions
- changeskin.command.skinupdate - Command to refresh the own skin
- 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
Whitelist
- changeskin.skin.whitelist.uuid - Allow this specific skin
- changeskin.skin.whitelist.* - allows all skins
Blacklist
- changeskin.skin.whitelist.*
- -changeskin.skin.whitelist.uuid
Source code
You don't have to decompile the plugin. You can find there the source code with comments and building utilities.
ChangeSkin is open source and hosted on GitHub; feel free to fork, star, or contribute by making pull requests and opening issues.
Video Tutorials (not by me)
Portuguese:
English:
Hi, I know this is probably outdated but i'm not sure. Every time I try using the /skin command it says "An internal error occurred while attempting to perform this command". And when I check console it has a big red error. Can anyone please help? I got it from minehut since it is the only one that seems to work. Thank you!
In reply to crxpticzgg:
Please post the error here. That would be very helpful.
Man, I downloaded this plugin and it doesn't work on my EnxadaHost server, I try, so it just doesn't load, the other plugins that have a smooth load, but this one won't even freeze, can I help you?
In reply to mrswerneck:
Please post your server log. We have a dedicated bug tracker you can use.
I keep getting this error:
[01:21:10 WARN]: [ChangeSkin] Task #3787 for ChangeSkin v3.0 generated an exception
com.comphenix.protocol.reflect.FieldAccessException: No field with type int exists in class PacketPlayOutRespawn.
at com.comphenix.protocol.reflect.StructureModifier.writeInternal(StructureModifier.java:363) ~[?:?]
at com.comphenix.protocol.reflect.StructureModifier.write(StructureModifier.java:343) ~[?:?]
at com.github.games647.changeskin.bukkit.tasks.SkinUpdater.sendPacketsSelf(SkinUpdater.java:169) ~[?:?]
at com.github.games647.changeskin.bukkit.tasks.SkinUpdater.sendUpdateSelf(SkinUpdater.java:121) ~[?:?]
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_15_R1.scheduler.CraftTask.run(CraftTask.java:99) ~[patched_1.15.2.jar:git-Paper-385]
at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:468) ~[patched_1.15.2.jar:git-Paper-385]
at net.minecraft.server.v1_15_R1.MinecraftServer.b(MinecraftServer.java:1265) ~[patched_1.15.2.jar:git-Paper-385]
at net.minecraft.server.v1_15_R1.DedicatedServer.b(DedicatedServer.java:431) ~[patched_1.15.2.jar:git-Paper-385]
at net.minecraft.server.v1_15_R1.MinecraftServer.a(MinecraftServer.java:1182) ~[patched_1.15.2.jar:git-Paper-385]
at net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:971) ~[patched_1.15.2.jar:git-Paper-385]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_221]
any idea why?
In reply to real_ragamuffin:
Update the plugin to a dev build
Im using minehut and have Protocol Lib, but when I go to my server the commands don't work.
"An internal error occured while attempting to perform this command"
In reply to breathripping:
hmm do you have NametagEdit? I'm no developer but the dependencies say you need NametagEdit. (link is there)
In reply to c0d3rb0y:
It's an optional dependencies. Only ProtocolLib is required. For the error above I need the server log where the stack shows up.
I can't find the latest version for this plugin on its GitHub, I don't know how to locate the files in that. What I'm searching for is the latest file, preferably one that'd work with 1.15.2, for Bukkit. If possible, could someone tell me the location of where that'd be (from the file in GitHub)? I'm just not sure which of the files to put directly into the "plugins" folder. Thank you!
In reply to natsukikomoj:
Search for development build. It's website that automatically builds plugin from newest changes
In reply to mozacc:
Sorry to bother again, but I have trouble finding development build. I've been searching the replies in hopes of getting clues to where I could go to it, but I still couldn't find a clear answer. I've searched through Bukkit, Google, and the GitHub project but I still can't find the development build. How exactly do I find development build?
In reply to natsukikomoj:
On the GitHub page of this project. There is a big section below called: "Development builds". There you get to https://ci.codemc.org/job/Games647/job/ChangeSkin/. However those builds are not approved by BukkitDev staff, because they are not uploaded here on this site and the version changes very frequently.
In reply to canadianbananaman:
You are missing the required ProtocolLib dependency.
I can not change the skin when I use Bungee. If i disconnect server from it and run standalone it does work. I see the command in the console without any errors.
I have Bungee 1.14.4 with ChangeSkinBukkit Dev Build 172 and ProtocolLib Dev Build 426 on spigot server, and ChangeskinBungee Dev Build 172 on BungeeCord.
Do I need something like Protocolize-1.4.7 to run protocollib for Bungee? There is not much info for running it on Bungee.
I get a error message 2 times that it won't start Changeskin on Bungee, but the third time it says enabled plugin ChangeSkin.
Error on Paste.org
Does anybody know what is wrong?
In reply to Forge_User_78915063:
ChangeSkin couldn't connect to your database server. Could you please check the database settings and verify the MySQL server is running?
I just installed it on a 1.12.2 server, but nothing happened. I restarted the server several times, but IT did not say anything in the command prompt. It did not create a folder either.
In reply to xx_cake_xx:
Could you please check the server log for any errors?
[16:50:08] [Craft Scheduler Thread - 3/ERROR]: [ChangeSkin] Tried converting player name to uuid
javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching api.mojang.com found
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) ~[?:1.8.0_222]
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1946) ~[?:1.8.0_222]
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:316) ~[?:1.8.0_222]
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:310) ~[?:1.8.0_222]
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1639) ~[?:1.8.0_222]
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:223) ~[?:1.8.0_222]
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1037) ~[?:1.8.0_222]
at sun.security.ssl.Handshaker.process_record(Handshaker.java:965) ~[?:1.8.0_222]
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1064) ~[?:1.8.0_222]
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367) ~[?:1.8.0_222]
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395) ~[?:1.8.0_222]
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379) ~[?:1.8.0_222]
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559) ~[?:1.8.0_222]
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) ~[?:1.8.0_222]
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1570) ~[?:1.8.0_222]
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1498) ~[?:1.8.0_222]
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480) ~[?:1.8.0_222]
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:352) ~[?:1.8.0_222]
at com.github.games647.changeskin.core.MojangSkinApi.getUUID(MojangSkinApi.java:90) [ChangeSkin.jar:?]
at com.github.games647.changeskin.core.shared.SharedNameResolver.run(SharedNameResolver.java:33) [ChangeSkin.jar:?]
at org.bukkit.craftbukkit.v1_14_R1.scheduler.CraftTask.run(CraftTask.java:81) [minecraft_server.jar:git-Spigot-9a643a6-a77ba00]
at org.bukkit.craftbukkit.v1_14_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:54) [minecraft_server.jar:git-Spigot-9a643a6-a77ba00]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_222]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_222]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_222]
Caused by: java.security.cert.CertificateException: No name matching api.mojang.com found
at sun.security.util.HostnameChecker.matchDNS(HostnameChecker.java:231) ~[?:1.8.0_222]
at sun.security.util.HostnameChecker.match(HostnameChecker.java:96) ~[?:1.8.0_222]
at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:462) ~[?:1.8.0_222]
at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:428) ~[?:1.8.0_222]
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:209) ~[?:1.8.0_222]
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:132) ~[?:1.8.0_222]
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1621) ~[?:1.8.0_222]
... 20 more
help?