diff --git a/pom.xml b/pom.xml index b496607..fa6f9bf 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.alttd AltitudeTag - 1.0.1 + 1.0.2 UTF-8 diff --git a/src/main/java/com/alttd/altitudetag/AltitudeTag.java b/src/main/java/com/alttd/altitudetag/AltitudeTag.java index 0cd9531..4e4dbb7 100644 --- a/src/main/java/com/alttd/altitudetag/AltitudeTag.java +++ b/src/main/java/com/alttd/altitudetag/AltitudeTag.java @@ -114,17 +114,17 @@ public class AltitudeTag extends JavaPlugin * * @param tagger the new tagger. */ - public static void setTagger(UUID tagger) + public static void setTagger(UUID tagger, TagCause cause) { - // announce that a new person is it Player previousPlayer = Bukkit.getPlayer(instance.tagger); if (tagger != null) { - NotificationHandler.sendGlobalNotifications(previousPlayer != null - ? previousPlayer.getName() - : null, Bukkit.getPlayer(tagger).getName()); + NotificationHandler.sendGlobalNotifications(previousPlayer != null ? previousPlayer.getName() : null, + Bukkit.getPlayer(tagger).getName(), + cause); } + instance.tagger = tagger; } diff --git a/src/main/java/com/alttd/altitudetag/NotificationHandler.java b/src/main/java/com/alttd/altitudetag/NotificationHandler.java index 9fd324a..60bc1ad 100644 --- a/src/main/java/com/alttd/altitudetag/NotificationHandler.java +++ b/src/main/java/com/alttd/altitudetag/NotificationHandler.java @@ -64,15 +64,21 @@ public class NotificationHandler }); } - public static void sendGlobalNotifications(String attacker, String victim) + public static void sendGlobalNotifications(String attacker, String victim, TagCause cause) { - if (attacker == null && Config.NOTIFICATION_GLOBAL_CHAT_OTHER_REASON_ENABLED.getValue()) + if (cause == TagCause.DISCONNECT_EMPTY) + { + return; + } + + if (cause != TagCause.NORMAL && Config.NOTIFICATION_GLOBAL_CHAT_OTHER_REASON_ENABLED.getValue()) { // TODO make this actually do what it's supposed to Bukkit.getOnlinePlayers().forEach(p -> p.sendMessage(Lang.renderString(Config.NOTIFICATION_GLOBAL_CHAT_OTHER_REASON_MESSAGE.getValue(), "{target}", victim))); } - if (attacker != null && Config.NOTIFICATION_GLOBAL_CHAT_AFTER_TAG_ENABLED.getValue()) + + if (cause == TagCause.NORMAL && Config.NOTIFICATION_GLOBAL_CHAT_AFTER_TAG_ENABLED.getValue()) { Bukkit.getOnlinePlayers().forEach(p -> p.sendMessage(Lang.renderString(Config.NOTIFICATION_GLOBAL_CHAT_AFTER_TAG_MESSAGE.getValue(), "{target}", victim, diff --git a/src/main/java/com/alttd/altitudetag/TagCause.java b/src/main/java/com/alttd/altitudetag/TagCause.java new file mode 100644 index 0000000..e2503e0 --- /dev/null +++ b/src/main/java/com/alttd/altitudetag/TagCause.java @@ -0,0 +1,10 @@ +package com.alttd.altitudetag; + +public enum TagCause +{ + NORMAL, + TIMEOUT, + DISCONNECT_TRANSFER, + DISCONNECT_EMPTY, + FIRST_CONNECT +} diff --git a/src/main/java/com/alttd/altitudetag/listeners/ConnectionListener.java b/src/main/java/com/alttd/altitudetag/listeners/ConnectionListener.java index cde855b..42f6b77 100644 --- a/src/main/java/com/alttd/altitudetag/listeners/ConnectionListener.java +++ b/src/main/java/com/alttd/altitudetag/listeners/ConnectionListener.java @@ -1,10 +1,10 @@ package com.alttd.altitudetag.listeners; import java.util.Optional; -import java.util.UUID; import com.alttd.altitudetag.AltitudeTag; import com.alttd.altitudetag.NotificationHandler; +import com.alttd.altitudetag.TagCause; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -19,7 +19,7 @@ public class ConnectionListener implements Listener { if (AltitudeTag.getTagger() == null) { - AltitudeTag.setTagger(event.getPlayer().getUniqueId()); + AltitudeTag.setTagger(event.getPlayer().getUniqueId(), TagCause.FIRST_CONNECT); } if (AltitudeTag.getBossBar() != null) { @@ -30,23 +30,24 @@ public class ConnectionListener implements Listener @EventHandler public void onLeave(PlayerQuitEvent event) { - if (event.getPlayer().getUniqueId().equals(AltitudeTag.getTagger())) + if (!event.getPlayer().getUniqueId().equals(AltitudeTag.getTagger())) { - if (Bukkit.getOnlinePlayers().size() == 1) - { - AltitudeTag.setTagger(null); - } - else - { - Optional optional = Bukkit.getOnlinePlayers().stream().filter(p -> p != event.getPlayer()).findAny(); - if (!optional.isPresent()) - { - throw new IllegalStateException("There is more than one player on but for some reason they are all: " + event.getPlayer().getUniqueId()); - } - UUID uuid = optional.get().getUniqueId(); - AltitudeTag.setTagger(uuid); - NotificationHandler.sendVictimTitle(optional.get(), false); - } + return; } + + if (Bukkit.getOnlinePlayers().size() == 1) + { + AltitudeTag.setTagger(null, TagCause.DISCONNECT_EMPTY); + return; + } + + Optional optional = Bukkit.getOnlinePlayers().stream().filter(p -> p != event.getPlayer()).findAny(); + if (!optional.isPresent()) + { + throw new IllegalStateException("There is more than one player on but for some reason they are all: " + event.getPlayer().getUniqueId()); + } + Player player = optional.get(); + AltitudeTag.setTagger(player.getUniqueId(), TagCause.DISCONNECT_TRANSFER); + NotificationHandler.sendVictimTitle(player, false); } } diff --git a/src/main/java/com/alttd/altitudetag/listeners/InteractListener.java b/src/main/java/com/alttd/altitudetag/listeners/InteractListener.java index 3606877..a151d2d 100644 --- a/src/main/java/com/alttd/altitudetag/listeners/InteractListener.java +++ b/src/main/java/com/alttd/altitudetag/listeners/InteractListener.java @@ -2,6 +2,7 @@ package com.alttd.altitudetag.listeners; import com.alttd.altitudetag.AltitudeTag; import com.alttd.altitudetag.NotificationHandler; +import com.alttd.altitudetag.TagCause; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -32,7 +33,7 @@ public class InteractListener implements Listener } }); - AltitudeTag.setTagger(tagged.getUniqueId()); + AltitudeTag.setTagger(tagged.getUniqueId(), TagCause.NORMAL); NotificationHandler.sendVictimTitle(tagged, false); }