package net.craftminecraft.bungee.bungeeban.listener;

import com.google.common.eventbus.Subscribe;

import net.craftminecraft.bungee.bungeeban.BanManager;
import net.craftminecraft.bungee.bungeeban.banstore.BanEntry;
import net.craftminecraft.bungee.bungeeban.util.Utils;
import net.md_5.bungee.api.event.LoginEvent;
import net.md_5.bungee.api.event.ServerConnectEvent;
import net.md_5.bungee.api.plugin.Listener;

public class ProxiedPlayerListener implements Listener {
	public ProxiedPlayerListener() {
	}
	
	@Subscribe
	public void onPlayerJoin(LoginEvent e) {
		BanEntry ban = BanManager.getBan(e.getConnection().getName(), "(GLOBAL)");
		if (ban != null) {
			e.setCancelled(true);
			e.setCancelReason(ban.getReason());
		}
	}
	
	@Subscribe
	public void onServerConnect(ServerConnectEvent e) {
		BanEntry ban = BanManager.getBan(e.getPlayer().getName(), e.getTarget().getName());
		if (ban != null) {
			e.getPlayer().disconnect(Utils.formatMessage(ban.getReason(), ban));
			return;
		} 
		ban = BanManager.getBan(e.getPlayer().getAddress().getAddress().getHostAddress(), e.getTarget().getName());
		if (ban != null) {
			e.getPlayer().disconnect(Utils.formatMessage(ban.getReason(), ban));
		}
		return;
	}
}

@@ -723,30 +723,289 @@
 lReason(
-ban.getReason(
+Utils.formatMessage(ban.getReason(), ban));%0D%0A%09%09%09return;%0D%0A%09%09%7D%0D%0A%09%09ban = BanManager.getBan(e.getConnection().getAddress().getAddress().getHostAddress(), %22(GLOBAL)%22);%0D%0A%09%09if (ban != null) %7B%0D%0A%09%09%09e.setCancelled(true);%0D%0A%09%09%09e.setCancelReason(Utils.formatMessage(ban.getReason(), ban
 ));%0D%0A%09%09%7D

Fix Global IPBan checking. Fix reason not being formatted for global bans.