fix: reset

This commit is contained in:
ineanto 2025-06-29 14:04:20 +02:00
parent 03a8eb9b7d
commit 436fc91556
Signed by: ineanto
GPG key ID: E511F9CAA2F9CE84
2 changed files with 21 additions and 4 deletions

2
TODO
View file

@ -1,5 +1,3 @@
la fonctionnalité pour retirer les déguisements fonctionne pas (admin comme via la tnt côté utilisateur)
l'item favori explose si skin == null
les messages d'erreurs ne contiennent pas la raison (est affiché null en raison, pb de trad ?)
impossible de s'équiper d'un favori
les chat session sont baisées (https://github.com/retrooper/packetevents/issues/1271)

View file

@ -33,11 +33,16 @@ public class AppearanceManager {
final PlayerResetDisguiseEvent event = new PlayerResetDisguiseEvent(player);
Bukkit.getPluginManager().callEvent(event);
final String playerName = nameStore.getStoredName(player);
profile.setName(playerName);
profile.setSkin(playerName);
final ActionResult resetSkinUpdate = update(true);
profile.setName(null);
profile.setSkin(null);
dataStore.getCache().cache(player.getUniqueId(), profile);
return ActionResult.ok();
return resetSkinUpdate;
}
public ActionResult update(boolean skinChange) {
@ -50,7 +55,7 @@ public class AppearanceManager {
final ActionResult propertiesUpdateResult = packetSender.updatePlayerProfileProperties();
if (propertiesUpdateResult.isError()) {
return reset();
return resetWithoutUpdate();
}
}
@ -63,6 +68,20 @@ public class AppearanceManager {
return result;
}
private ActionResult resetWithoutUpdate() {
final NickoProfile profile = getNickoProfile();
// Call the event.
final PlayerResetDisguiseEvent event = new PlayerResetDisguiseEvent(player);
Bukkit.getPluginManager().callEvent(event);
profile.setName(null);
profile.setSkin(null);
dataStore.getCache().cache(player.getUniqueId(), profile);
return ActionResult.ok();
}
private NickoProfile getNickoProfile() {
final Optional<NickoProfile> optionalProfile = dataStore.getData(player.getUniqueId());
return optionalProfile.orElse(NickoProfile.EMPTY_PROFILE.clone());