Change bungeecord leave event priority to wait longer before unloading data

This commit is contained in:
Luck 2017-02-26 21:53:03 +00:00
parent 2862f0dfae
commit ec8273aa9f
No known key found for this signature in database
GPG Key ID: EFA9B3EC5FD90F8B
3 changed files with 9 additions and 4 deletions

View File

@ -143,7 +143,8 @@ class BukkitListener extends AbstractListener implements Listener {
}
}
@EventHandler(priority = EventPriority.MONITOR) // Allow other plugins to see data when this event gets called.
// Wait until the last priority to unload, so plugins can still perform permission checks on this event
@EventHandler(priority = EventPriority.MONITOR)
public void onPlayerQuit(PlayerQuitEvent e) {
final Player player = e.getPlayer();

View File

@ -54,7 +54,7 @@ public class BungeeListener extends AbstractListener implements Listener {
this.plugin = plugin;
}
@EventHandler
@EventHandler(priority = EventPriority.HIGH)
public void onPlayerPermissionCheck(PermissionCheckEvent e) {
if (!(e.getSender() instanceof ProxiedPlayer)) {
e.setHasPermission(true);
@ -158,7 +158,8 @@ public class BungeeListener extends AbstractListener implements Listener {
}
}
@EventHandler
// Wait until the last priority to unload, so plugins can still perform permission checks on this event
@EventHandler(priority = EventPriority.HIGHEST)
public void onPlayerQuit(PlayerDisconnectEvent e) {
onLeave(e.getPlayer().getUniqueId());
}

View File

@ -113,10 +113,13 @@ public class SpongeListener extends AbstractListener {
@Listener(order = Order.LAST)
public void onClientLeave(ClientConnectionEvent.Disconnect e) {
/* We don't actually remove the user instance here, as Sponge likes to keep performing checks
on players when they disconnect. The instance gets cleared up on a housekeeping task
after a period of inactivity. */
try (Timing ignored = plugin.getTimings().time(LPTiming.ON_CLIENT_LEAVE)) {
final UuidCache cache = plugin.getUuidCache();
// Unload the user from memory when they disconnect;
// Unload the user from memory when they disconnect
cache.clearCache(e.getTargetEntity().getUniqueId());
}
}