From feae6993b964f45b2e15d3749054bf3be3fd1d1f Mon Sep 17 00:00:00 2001 From: Austin Mayes Date: Wed, 24 Apr 2019 17:31:21 -0500 Subject: [PATCH] Improve freeze observer excemption --- PGM/src/main/java/tc/oc/pgm/freeze/Freeze.java | 13 +++++++++++++ .../main/java/tc/oc/pgm/freeze/FreezeListener.java | 3 --- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/PGM/src/main/java/tc/oc/pgm/freeze/Freeze.java b/PGM/src/main/java/tc/oc/pgm/freeze/Freeze.java index 546a837..8e80d68 100644 --- a/PGM/src/main/java/tc/oc/pgm/freeze/Freeze.java +++ b/PGM/src/main/java/tc/oc/pgm/freeze/Freeze.java @@ -1,5 +1,6 @@ package tc.oc.pgm.freeze; +import java.util.Optional; import javax.annotation.Nullable; import javax.inject.Inject; import javax.inject.Singleton; @@ -28,6 +29,9 @@ import tc.oc.commons.core.chat.Component; import tc.oc.commons.core.chat.Components; import tc.oc.commons.core.commands.ComponentCommandException; import tc.oc.commons.core.plugin.PluginFacet; +import tc.oc.pgm.PGM; +import tc.oc.pgm.match.MatchPlayer; +import tc.oc.pgm.match.MatchPlayerFinder; @Singleton public class Freeze implements PluginFacet { @@ -85,6 +89,15 @@ public class Freeze implements PluginFacet { final FrozenPlayer frozenPlayer = frozenPlayers.get(freezee); if(frozen && frozenPlayer == null) { + Optional matchPlayer = PGM.getMatchManager().match(freezee) + .flatMap(match -> match.player(freezee)); + if (matchPlayer.isPresent() && matchPlayer.get().isObserving()) { + throw new ComponentCommandException(new TranslatableComponent( + "command.freeze.exempt", + new PlayerComponent(identityProvider.currentIdentity(freezee), NameStyle.VERBOSE) + )); + } + frozenPlayers.put(freezee, playerFreezer.freeze(freezee)); final BaseComponent freezeeMessage = new Component(new TranslatableComponent("freeze.frozen", freezerComponent), ChatColor.RED); diff --git a/PGM/src/main/java/tc/oc/pgm/freeze/FreezeListener.java b/PGM/src/main/java/tc/oc/pgm/freeze/FreezeListener.java index 732a342..4ab8fc6 100644 --- a/PGM/src/main/java/tc/oc/pgm/freeze/FreezeListener.java +++ b/PGM/src/main/java/tc/oc/pgm/freeze/FreezeListener.java @@ -55,11 +55,8 @@ public class FreezeListener implements Listener, PluginFacet { event.getClickedItem().getType() == Material.ICE && event.getPlayer().getBukkit().hasPermission(Freeze.PERMISSION) && event.getClickedPlayer() != null) { - event.setCancelled(true); - if (event.getClickedPlayer().isObserving()) return; - try { freeze.toggleFrozen(event.getPlayer().getBukkit(), event.getClickedPlayer().getBukkit()); } catch(CommandException e) {