fix(identity): clear managed presentation on logout
This commit is contained in:
@@ -12,6 +12,7 @@ import org.bukkit.event.EventPriority;
|
|||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent;
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
|
||||||
/** Handles player lifecycle events that affect Leaf protection. */
|
/** Handles player lifecycle events that affect Leaf protection. */
|
||||||
public final class LeafListener implements Listener {
|
public final class LeafListener implements Listener {
|
||||||
@@ -38,6 +39,11 @@ public final class LeafListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onQuit(PlayerQuitEvent event) {
|
||||||
|
runtime.removePresentation(event.getPlayer());
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||||
public void onDamage(EntityDamageEvent event) {
|
public void onDamage(EntityDamageEvent event) {
|
||||||
if (event.isCancelled() || event.getFinalDamage() <= 0.0
|
if (event.isCancelled() || event.getFinalDamage() <= 0.0
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package games.dmg.leaf;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
import java.time.Clock;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
final class LeafListenerLifecycleTest {
|
||||||
|
@Test
|
||||||
|
void removesSessionOwnedPresentationWhenAPlayerQuits() {
|
||||||
|
LeafRuntime runtime = mock(LeafRuntime.class);
|
||||||
|
Player player = mock(Player.class);
|
||||||
|
PlayerQuitEvent event = mock(PlayerQuitEvent.class);
|
||||||
|
org.mockito.Mockito.when(event.getPlayer()).thenReturn(player);
|
||||||
|
|
||||||
|
new LeafListener(runtime, Clock.systemUTC(), Logger.getAnonymousLogger()).onQuit(event);
|
||||||
|
|
||||||
|
verify(runtime).removePresentation(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user