summaryrefslogtreecommitdiff
path: root/src/main/java/com/redstoner/bungeeBans/listeners/BanJoinListener.java
diff options
context:
space:
mode:
authorDavid Panić <david@panic.tk>2019-04-07 20:44:13 +0200
committerDavid Panić <david@panic.tk>2019-04-07 20:44:13 +0200
commit0418d124148fce1fc352a92806eedc2414b8a005 (patch)
tree05d3768355554b24aa53c87aaf53e247a07c6c82 /src/main/java/com/redstoner/bungeeBans/listeners/BanJoinListener.java
parentdf36c6d3d431179f4be5f081424c506b4d415029 (diff)
Made Main file more generic + disabled joining on severe load error
Diffstat (limited to 'src/main/java/com/redstoner/bungeeBans/listeners/BanJoinListener.java')
-rw-r--r--src/main/java/com/redstoner/bungeeBans/listeners/BanJoinListener.java59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/main/java/com/redstoner/bungeeBans/listeners/BanJoinListener.java b/src/main/java/com/redstoner/bungeeBans/listeners/BanJoinListener.java
new file mode 100644
index 0000000..22dd212
--- /dev/null
+++ b/src/main/java/com/redstoner/bungeeBans/listeners/BanJoinListener.java
@@ -0,0 +1,59 @@
+package com.redstoner.bungeeBans.listeners;
+
+import com.mojang.api.profiles.Profile;
+import com.redstoner.bungeeBans.BanManager;
+import com.redstoner.bungeeBans.Util;
+import com.redstoner.bungeeBans.json.Ban;
+import net.md_5.bungee.api.ChatColor;
+import net.md_5.bungee.api.chat.ComponentBuilder;
+import net.md_5.bungee.api.connection.PendingConnection;
+import net.md_5.bungee.api.event.PreLoginEvent;
+import net.md_5.bungee.api.plugin.Listener;
+import net.md_5.bungee.event.EventHandler;
+import net.md_5.bungee.event.EventPriority;
+
+public class BanJoinListener<T extends Ban> implements Listener {
+ private BanManager<T> bm;
+
+ public BanJoinListener(BanManager<T> bm) {
+ this.bm = bm;
+ }
+
+ @EventHandler (priority = EventPriority.HIGHEST)
+ public void onJoin(PreLoginEvent event) {
+ event.setCancelled(true);
+
+ PendingConnection conn = event.getConnection();
+ String name = conn.getName();
+
+ Profile[] profiles = Util.findProfilesByNames(name);
+
+ if (profiles.length != 1) {
+ event.setCancelReason(
+ new ComponentBuilder(ChatColor.RED + "Server error occured while joining: ")
+ .append(ChatColor.AQUA + "The mojang API does not know your UUID!")
+ .create()
+ );
+
+ return;
+ }
+
+ T ban = bm.getBan(Util.dashUUID(profiles[0].getId()));
+
+ if (ban != null) {
+ event.setCancelReason(
+ new ComponentBuilder(ChatColor.RED + "You were banned by ")
+ .append(ChatColor.AQUA + ban.getSource())
+ .append(ChatColor.RED + " for ")
+ .append(ChatColor.AQUA + ban.getReason())
+ .append(ChatColor.RED + " on ")
+ .append(ChatColor.AQUA + ban.getCreated())
+ .append(ChatColor.RED + " until ")
+ .append(ChatColor.AQUA + ban.getExpires())
+ .create()
+ );
+ } else {
+ event.setCancelled(false);
+ }
+ }
+}