Versions
VotingPlugin 7.0 / Purpur 1.21.10-2535-HEAD (API 1.21.10-R0.1-SNAPSHOT)
Describe the bug
With OnlineMode: false in config, the plugin spams console errors for every player in the database during the Top Voter update cycle. The method getLastOnline calls Bukkit.getOfflinePlayer(name), which internally tries to resolve the player's profile against the Mojang API — this causes errors for every cracked/offline player whose username doesn't exist on Mojang's servers, since the server runs in hybrid mode (premium + cracked players).
To Reproduce
- Set
OnlineMode: false in VotingPlugin's config.yml (hybrid server with premium + cracked players)
- Have cracked players with votes stored in the database
- Wait for the Top Voter update cycle to run
- Observe console spam
Expected behavior
With OnlineMode: false, the plugin should not attempt to resolve player profiles against the Mojang API at all. getLastOnline should resolve players purely by name or UUID from local storage, without making any external HTTP requests.
Screenshots/Configs
[01:32:46] [Craft Scheduler Thread - 43 - VotingPlugin/WARN]: Couldn't find profile with name: lobaodooff
com.mojang.authlib.exceptions.MinecraftClientHttpException: Couldn't find any profile with name lobaodooff
at com.mojang.authlib.minecraft.client.MinecraftClient.readInputStream(MinecraftClient.java:103)
at com.mojang.authlib.yggdrasil.YggdrasilGameProfileRepository.findProfileByName(YggdrasilGameProfileRepository.java:117)
...
at VotingPlugin-7.0.jar/com.bencodez.votingplugin.advancedcore.api.user.AdvancedCoreUser.getOfflinePlayer(AdvancedCoreUser.java:420)
at VotingPlugin-7.0.jar/com.bencodez.votingplugin.advancedcore.api.user.AdvancedCoreUser.getLastOnline(AdvancedCoreUser.java:397)
at VotingPlugin-7.0.jar/com.bencodez.votingplugin.user.VotingPluginUser.getTopVoterPlayer(VotingPluginUser.java:930)
at VotingPlugin-7.0.jar/com.bencodez.votingplugin.VotingPluginMain.lambda$update$0(VotingPluginMain.java:1829)
Repeats for every cracked player in the database. Also triggers HTTP 429 (rate limit) from Mojang after enough requests.
Additional context
- This error does not occur with
OnlineMode: true
- Running
/av MergeOfflineUUIDs true and /av PurgeNoData did not resolve the issue
- The affected usernames are cracked players (e.g. names with dots like
.lucaaszzzzz, non-Mojang names like lobaodooff, raphinhazica) that exist in the vote database but have no Mojang profile
- The spam returns on every Top Voter update cycle
- Expected behavior per the 7.0 changelog: with
OnlineMode: false, all UUID/name resolution should be done locally without Mojang API calls
Versions
VotingPlugin 7.0 / Purpur 1.21.10-2535-HEAD (API 1.21.10-R0.1-SNAPSHOT)
Describe the bug
With
OnlineMode: falsein config, the plugin spams console errors for every player in the database during the Top Voter update cycle. The methodgetLastOnlinecallsBukkit.getOfflinePlayer(name), which internally tries to resolve the player's profile against the Mojang API — this causes errors for every cracked/offline player whose username doesn't exist on Mojang's servers, since the server runs in hybrid mode (premium + cracked players).To Reproduce
OnlineMode: falsein VotingPlugin's config.yml (hybrid server with premium + cracked players)Expected behavior
With
OnlineMode: false, the plugin should not attempt to resolve player profiles against the Mojang API at all.getLastOnlineshould resolve players purely by name or UUID from local storage, without making any external HTTP requests.Screenshots/Configs
Repeats for every cracked player in the database. Also triggers HTTP 429 (rate limit) from Mojang after enough requests.
Additional context
OnlineMode: true/av MergeOfflineUUIDs trueand/av PurgeNoDatadid not resolve the issue.lucaaszzzzz, non-Mojang names likelobaodooff,raphinhazica) that exist in the vote database but have no Mojang profileOnlineMode: false, all UUID/name resolution should be done locally without Mojang API calls