BlueMapOfflineSkinSupport is a plugin that adds proper support to BlueMap for displaying player heads in offline-mode Minecraft servers.
Player heads are generated in the exact same way as BlueMap's native player heads, and the web root directory, among other options are fully configurable.
- Paper (recommended) / Spigot / CraftBukkit for Minecraft 1.8 or higher
- Optionally: SkinsRestorer or CustomSkinsManager
- Completely shut down your Minecraft server using
- Download the latest *.jar file from the GitHub releases page.
- Copy the *.jar file to your
- If you changed your BlueMap web root directory, you'll want to make sure that the value also matches in the configuration file located at
/plugins/BlueMapOfflineSkinSupport/config.yml. ※ For reference, here are the default contents of
- Start your server and enjoy having the correct player heads appear on BlueMap's web UI!
- IntelliJ IDEA (Community Edition is free!)
- If you're experienced enough with the CLI, you can just simply use the Maven CLI directly
- AdoptOpenJDK 8 LTS + HotSpot (newer JDK versions also work, but I targeted JDK 8 here for compatibility reasons)
- Clone the Git repository by running
git clone https://github.com/akemin-dayo/BlueMapOfflineSkinSupport.gitin a Terminal instance, or use a Git frontend like SourceTree.
- Open the cloned project directory in IntelliJ IDEA.
- Click on the Maven panel on the right side and go to "Lifecycle", then double-click on
- You will find your newly-built JAR in the
git clone https://github.com/akemin-dayo/BlueMapOfflineSkinSupport.git cd BlueMapOfflineSkinSupport mvn package
You will then find your newly-built JAR in the
Licensed under the MIT License.
When I initially noticed the problem with BlueMap and player skins on offline-mode Minecraft servers, I looked around to see if there was already an existing solution and found a plugin written by otDan called BlueMap Skins (which I will call BMS from hereon forward) that claimed to fix the problem.
While it did technically do that, there were unfortunately… a few major issues with BMS that made it unsuitable for my use.
- It is not possible to configure the web root directory that BMS writes to. It's hard-coded to use
bluemap/web. I figured that this at least could be… worked around via symlinks and was about to move on, but then I found another bug…
- I have my Minecraft server (which uses Multiverse) configured to use a world container, so that all the worlds on the server go in a subdirectory (
/worlds/in my case), which makes everything much neater. Unfortunately, BMS appears to attempt to derive the root directory of the Minecraft server by using
getWorldContainer(), which results in it incorrectly writing to the
/worlds/subdirectory. (🍍˃̶͈̀ロ˂̶͈́)੭ꠥ⁾⁾ But again, with symlinks, this too can be worked around, I thought… until I discovered the next issue.
- For any player that is using a custom SkinsRestorer skin, BMS will incorrectly treat the skin name as a player name(!?!?), causing a completely incorrect player head to be generated. This issue was really what made BMS unusable for me.
There were various other minor issues, too (for instance, the generated images are 20 times larger than they should be, and so on), but the above 3 were what bothered me the most. Of course, I looked around to see if the plugin was open-source, so I could help fix these issues, but it was not.
At this point, I figured it'd be easier to just write my own plugin from scratch, and so… that's what I did. After a few hours, this project was finished, and now you're seeing it here.
Disclaimer: While BlueMapOfflineSkinSupport contains only my own original code/implementation, technically the core idea of "just simply overwrite the player head images in BlueMap's webroot" was otDan's to begin with, so I decided to speak with him first to notify him of this project and make sure he was okay with me releasing it publicly. He gave his full approval.