MySkin [1.8 - 1.14.1] 2.7

Lightweight solution for skins on your Minecraft server.

  1. Blackfire62
    Native Minecraft Version:
    1.14
    Tested Minecraft Versions:
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    • 1.12
    • 1.13
    • 1.14
    [​IMG]
    About MySkin

    This plugin was made as a lightweight solution for skins on offline mode servers. Skins are seeminglessly restored to players who should have them, and instantly changed to those, who set a skin via command. Plugin is also capable of changing your skin even on online mode servers, which will change your head icon in TAB list as well.

    What does the plugin do
    Restores skins for premium players, respects skins set by /skin command and makes skins visible instantly upon setting.
    Skin data is properly cached, you can choose between the default, file caching or MySQL database based one!

    Minecraft version support

    Plugin supports all versions ranging from 1.8 to latest 1.14
    Why doesnt the plugin support 1.7 and less?
    To change your skin in those versions, the plugin would have to mess with your name tag (text above your head), and it would only be visible to other players. Due to insufficient requests and actual uses, this feature is not included, and the plugin will only support versions 1.8 onwards.


    Installation
    To install MySkin, just place the .jar file into /plugins/ folder of your BungeeCord/Bukkit server.

    BungeeCord support
    If your players are connected via BungeeCord, and you want instant skin updates, you need to install MySkin on your desired Bukkit servers as well.
    MySkin will detect BungeeCord mode if its set in spigot.yml in "bungeecord: enabled" and will help out with skin updating automatically.

    Localization
    You can translate all messages which are located in the file "localize.yml" inside MySkin folder.

    Skin Caching options
    Plugin defaults to file based caching, with 3 separate folders inside plugins datafolder, which is done automatically.

    Caching with MySQL is recommended for multiple servers to share.
    So, if you wish to use MySQL for caching instead, you can edit config file and fill information about the MySQL database you want the plugin to connect to.
    Don't forget to enable MYSQL_ENABLED and reload the plugin with /myskin reload, if you want to see instant changes.

    SkinSearch
    Thanks to mcskinsearch.com, we have an option to display random skins in a nice menu in-game.
    This feature is still WorkInProgress, and currently, it only works for 1.13+.
    Thus, its disabled by default. If you want to use this feature, enable it in config. You can configure the amount of rows displayed as well. After accessing the menu with /skinsearch, skins will slowly load as the plugin processess them. The entire process is optimized, so you shouldnt get many rate limited errors despite loading so many skins!
    Please report in anything you like/dislike/want/miss about this feature.

    Commands
    Permissions work for both Bukkit and BungeeCord versions.
    • /skin - Change your or another player's skin
      • Permissions:
        • myskin.skincommand.self - Set skin for yourself
        • myskin.skincommand.other - Set skin for other players
        • myskin.skincommand - For both
    • /myskin - Plugin management
      • Permissions:
        • myskin.myskincommand.reload - Reload config and localization
        • myskin.myskincommand.clearcache - Clear cache
        • myskin.myskincommand.skinof - Show skin of player
        • myskin.myskincommand - Everything
    • /skinseach - Search for a random skin you might like
    • Other permissions:
      • myskin.skinsearchcommand - Everything search related
      • myskin.blacklisted.SKIN_NAME - allow to set blacklisted name
      • myskin.blacklisted* - Allow to set all blacklisted names
    Developer API
    Include MySkin.jar in your project, and do the following to acquire MySkin plugin object.

    For Bukkit:
    Code (Java):
    MySkin myskin = (MySkin) Bukkit.getPluginManager().getPlugin("MySkin");
    For BungeeCord:
    Code (Java):
    MySkin myskin = (MySkin) BungeeCord.getInstance().getPluginManager().getPlugin("MySkin");
    MySkin object exposes these methods:
    Code (Java):
     /**
       * @return MySkin configuration
       */

      public SkinConfig getSkinConfig();
     
      /**
       * @return Skin & Player data cache
       */

      public SkinCache getCache();
     
      /**
       * @return Handler forskin changing
       */

      public SkinHandler getHandler();
     
      /**
       * @return Localization
       */

      public SkinLocalize getLocalize();
     
      public boolean isBungeeMode();
     
      public boolean isOutdated();
    SkinCache and SkinHandler expose these helpful methods:

    Code (Java):
    public abstract interface SkinCache {
        /**
         * Loads the UUID of player's custom set skin.
         *
         * @param player - Player's UUID
         * @return skin's UUID or null if no custom skin is set
        */

        public UUID loadSkinOfPlayer(UUID player);
       
        /**
         * Reset player's custom skin.
         *
         * Reseting custom skin of player casuses plugin to use players default skin (for premium players its their own skin, for non-premium its Steve/Alexa)
         *
         * @param player - Player's UUID
         */

        public void resetSkinOfPlayer(UUID player);
       
        /**
         * Saves the UUID of player's custom set skin.
         *
         * Plugin will now use this skin as player's skin.
         *
         * @param player - Player's UUID
         * @param skin - skin's UUID
         */

        public void saveSkinOfPlayer(UUID player, UUID skin);
       
        /**
         * Loads UUID of skin by name.
         *
         * @param skinname - Name of the skin
         * @return skin's UUID or null if does not exist
         */

        public UUID loadUUID(String skinname);
       
        /**
         * Saves UUID of skin by its name.
         *
         * @param skinname - Name of the skin
         * @param uuid - skin's UUID
         */

        public void saveUUID(String skinname, UUID uuid);
       
        /**
         * Loads SkinProperty by skin's UUID.
         *
         * @param skin - skin's UUID
         * @return SkinProperty object or null if does not exist
         */

        public SkinProperty loadSkinProperty(UUID skin);
       
        /**
         * Saves SkinProperty by skin's UUID.
         *
         * @param skin - skin's UUID
         * @param property - SkinProperty object
         */

        public void saveSkinProperty(UUID skin, SkinProperty property);
    }
    Code (Java):
    public abstract interface SkinHandler
    {  
        /**
         *
         * Changes player's skin data on server.
         *
         * This function does NOT visibly update player skin. Use the update() function for that.
         *
         * @see #update(Object)
         *
         * @param player - Player object (ie. ProxiedPlayer, InitialHandler, Player from Bukkit)
         * @param skinProperty - Skin property object, containing name, value and signature
         */

      public abstract void setSkinProperty(Object player, SkinProperty skinProperty);
     
      /**
       * Updates player's skin.
       *
       * Use this in combinaton with setSkinProperty() to instantly change a player's skin.
       *
       * @see #setSkinProperty(Object, SkinProperty)
       *
       * @param player - Player object (ie. ProxiedPlayer, InitialHandler, Player from Bukkit)
       */

      public abstract void update(Object player);
    }
     
    If you have any questions about usage, which are not explained in comments, or anything else, feel free to ask!



    If you have any feature ideas, please let me know.

    Thanks and have fun!
    Alvarado_321, Osqai, MrWakeCZ and 2 others like this.

Recent Reviews

  1. VidTu
    VidTu
    5/5,
    Version: 2.7
    Thanks for update option!
    80 charsrsrsrsrsrsrsrsrsrsrsrsrsrssssssssssssssssssssssssss
  2. VidTu
    VidTu
    5/5,
    Version: 2.6
    Good! Please add option to disable update notifications!
    ([MySkin] You are running up to date version x.x)
    1. Blackfire62
      Author's Response
      Thanks, I will likely add it in future update.
  3. ajud123
    ajud123
    5/5,
    Version: 2.5
    Very good plugin! Could it be made so that it would be possible to apply a skin texture from a local file on the computer to a player in the future?
    1. Blackfire62
      Author's Response
      Thank you, I will consider that, its not the first time its been requested.
  4. MilaDesign
    MilaDesign
    4/5,
    Version: 2.4
    Good plugin but!
    skin search not working in 1.14 version!
    its say cant find Inventory.getName()
    1. Blackfire62
      Author's Response
      Fixed in latest update.
  5. VidTu
    VidTu
    5/5,
    Version: 2.3
    Good plugin!
    Can you add SkinPreChangeEvent(Cancellable) and SkinChangeEvent?
    Sorry for my english :)
    1. Blackfire62
      Author's Response
      Thank you for the review, will consider in next release.
  6. Osqai
    Osqai
    5/5,
    Version: 2.2
    Nice plugin ! Please add blacklist.yml for add name skin blacklist
    Super plugin ! Ajouter un fichier pour bloquer les pseudos de skin que nous souhaitons pas que les joueurs puissent avoir.
    1. Blackfire62
      Author's Response
      Thank you, will consider adding in following updates.
  7. Red_lnn
    Red_lnn
    5/5,
    Version: 2.1
    Hello, I think this is a very good plugin, I used it on my server. And can I repost it on a Chinese Minecraft forum named MCBBS(http://www.mcbbs.net/forum.php)? I will indicate the link to SpigotMC.
    1. Blackfire62
      Author's Response
      Thank you for the review, and yes, of course.
  8. CrazyWords
    CrazyWords
    5/5,
    Version: 2.1
    Very good skin plugin, and very good developer, thk u for u resource!
    Sorry, for spam in this resource , but i'm very need !

    I'm delete this in review, when u answer me

    I have my minecraft server , and i wan't use u plugin "https://www.spigotmc.org/resources/fastconnect.26795/"
    But, this plugin have some bugs, for example "Chunks not loading normal, Chunks from another server, entity not loading normal (Holo) and very serious bug, when i connect to my server from lobby, player's are not move, until i'm not updates chunks (F3+A) "
    Server online ~150
    Fix bugs please, if you have free time, pleeeasee
    And sorry for mistakes, I'm from Russia
    1. Blackfire62
      Author's Response
      I'll consider fixing that in the future, no ETA though.
  9. sfBanjo
    sfBanjo
    5/5,
    Version: 2.0
    What to say.... tried other plugins but this is the best.
    Always updating, good communication with the dev and a great GUI to select the skin that players love!
    1. Blackfire62
      Author's Response
      Thanks for the review!
  10. Francy1978
    Francy1978
    3/5,
    Version: 2.0
    Whwn i execute /skin i get some message with &4 &l etc...
    Colors not works, please fix.
    1. Blackfire62
      Author's Response
      &4 &l means the message will have red and bold color, colors in names do not work because names do not have color codes in them