summaryrefslogtreecommitdiff
path: root/src/main/java/com/redstoner/bungeeBans/BanJoinListener.java
blob: c868c4bc8b943f109755df0a1d443561ae3fb94a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package com.redstoner.bungeeBans;

import com.mojang.api.profiles.Profile;
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;

	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);
		}
	}
}