Instead of making the description a long paragraph like every description ever, why don't I make it a little stylized?
Prequisites
What's things I should keep in mind?
-
The plugin is mainly built for Paper. (Paper/Bukkit/Spigot/Purpur/Folia), this is not a Geyser Extention.
-
4D geometry or custom player model support can't and won't be added. It is not possible without server-side (on Forge, NeoForge, Fabric, Quilt servers) or client-side (Forge, NeoForge, Fabric, Quilt) mods anyway.
Are there any incompatibilities?
-
DiscordSRV: Not that it prevents the plugin from functioning, but the updated skin will likely not show up in things like Discord-to-server bridge channels. This is likely a non-issue to clients.
-
SkinsRestorer: Performs a risky and likely incompatible method of teleporting a player character to the void to refresh or load a skin. consider increasing the skin applying delay if this happens.
The Good Stuff
What is this plugin, and how is it doing what it claims to do?
The plugin simply show a Bedrock player's skin on your server, as Floodgate is currently horrible in doing its job.
It grabs your raw skin file via GeyserMC's Global API (Within the Skins Sub-article) and overrides the player's default skin with the corrected version upon certain actions modifiable via a config.
Okay, but why should I use this specifically?
Lightweight plugin (Compatible with the Paper ecosystem, multiversion), plug-and-play; It has config, but all game-changer options are disabled by default.
Other choices arent the best for your goal to just simply fix the dang skins;
-
SkinsRestorer: Requires manually assigning skins, which involves getting your hands on their skin file. Immediately returns to default skin if the player rejoins.
-
BedrockSkinUtility: It can display 4D geometry and accessories, however; To even see it, you must install a client-side mod. Immediately eliminating usabilty. This also entirely relies on my plugin being installed anyway.
-
GeyserSkinManager: It might work on really old Minecraft versions. As of now, it is entirely broken.
-
GeyserExtras, Floodgate (+ auth option in Geyser config): Doesn't work at all. Despite claiming it does.
Config
What can I customize about it?
It has a few things you can do, but usually it is plug-and-play unless you have an exception like the afformentioned Incompatibilities section.
# ---------------------------------------------------------------------------------------------------------------------------
# Bedrock Skin Restorer
# ---------------------------------------------------------------------------------------------------------------------------
fetch-retries: 2
# ^ How many times the plugin tries to fetch the Floodgate player's skin after the first attempt.
# Higher values increase the chance that the skin will be fetched successfully,
# (For example, if an arbitrary error occurs), but may also impact performance via API requests.
fetch-on-join: true
# ^ Whether to attempt to fetch the Floodgate player's skin upon joining.
fetch-on-join-delay-ticks: 15
# ^ How long to wait after a Floodgate player joins before attempting to fetch/apply their skin.
# 20 ticks is roughly 1 second. Keeping this delayed gives Geyser/Floodgate time to finish
# the Bedrock player's initial spawn and session setup. Use alongside compatibility-mode when needed.
fetch-on-character-refresh: false
# ^ Whether to fetch or re-fetch the Floodgate player's skin when respawning,
# changing dimensions, or switching servers/hubs.
fetch-on-character-refresh-delay-ticks: 15
# ^ How long to wait after a Floodgate player "refreshes" before attempting to fetch/apply their skin.
# 20 ticks is roughly 1 second. Keeping this delayed gives Geyser/Floodgate time to finish
# the Bedrock player's initial spawn and session setup. Use alongside compatibility-mode when needed.
compatibility-mode:
skins-restorer: false
bedrock-auto-auth: false
# ^ Only enable if you experience issues, these are experimental patches.
# Do not add an entry, it does nothing.
# SkinsRestorer - Skips automatic join/respawn skin fetches when SkinsRestorer is already busy.
# Bedrock Auto-Auth - Checks that Bukkit still considers the player entity valid.
# ---------------------------------------------------------------------------------------------------------------------------
manual-fetch: false
# ^ Whether to allow the Floodgate players to fetch manually.
# If *false*, ONLY OPs* can run the command below.
manual-fetch-command: "/bedrockskin"
# ^ The command players can call to attempt to fetch their skin, customizable.
manual-fetch-command-java: "[Bedrock Skin Restorer] You are not a Floodgate user!"
# ^ Error message if a Java player tries to run the command
manual-fetch-command-noperm: "[Bedrock Skin Restorer] You don't have permission to execute this command!"
# ^ Error message if they don't have permission for manual fetching
manual-fetch-command-error: "[Bedrock Skin Restorer] Failed to fetch skin from GeyserMC's API, try again later."
# ^ General error message if it fails to fetch.
# ---------------------------------------------------------------------------------------------------------------------------
### Arbitrary Changes
- Update logs will be more polished from now on.
- The .jar file will now use a new naming scheme, instead of "bedrockskinrestorer.jar"; it is now "BedrockSkinRestorer[X.X.X].jar". X indicates the version of the file.
- None.
- Full **Folia** support, reach out if this breaks any other plugin loaders.
- Plugin won't try to apply the skin again if the returned skin is the exact same as the previous fetch. Won't meaningly effect fetch-retries config. Hopefully getting out of GeyserMC's way.
- Fixed a startup warning caused by a missing internal class. Event listeners now register correctly on startup.
- Compatibility Modes for mods
fetch-retries ` config. Hopefully getting out of GeyserMC's way.
Situational values replaced with hastags in this example.
`
[##:##:## WARN]: [Geyser-Spigot] Expected tag to be a literal string, a list of components, or a component object with a text/translate key: {
"extra": [
""
],
"player": {
"properties": [
{
"name": "textures",
"value": "###################################################################"
}
]
}
}
````
[BedrockSkinRestorer] Failed to register events for class net.mcreator.bedrockskinsrestorer.BedrockskinsrestorerMod because net/mcreator/bedrockskinsrestorer/BedrockskinsrestorerMod$SkinProperty does not exist.
``The first working version, not recommended.