package admincommands; import com.aionemu.gameserver.dao.PlayerDAO; import com.aionemu.gameserver.model.gameobjects.player.Player; import com.aionemu.gameserver.network.loginserver.LoginServer; import com.aionemu.gameserver.utils.PacketSendUtility; import com.aionemu.gameserver.utils.Util; import com.aionemu.gameserver.utils.chathandlers.AdminCommand; import com.aionemu.gameserver.world.World; /** * @author Watson */ public class Ban extends AdminCommand { public Ban() { super("ban"); } @Override public void execute(Player admin, String... params) { if (params == null || params.length < 1) { PacketSendUtility.sendMessage(admin, "Syntax: //ban [account|ip|full] [time in minutes]"); return; } // We need to get player's account ID String name = Util.convertName(params[0]); int accountId = 0; String accountIp = ""; // First, try to find player in the World Player player = World.getInstance().getPlayer(name); if (player != null) { accountId = player.getClientConnection().getAccount().getId(); accountIp = player.getClientConnection().getIP(); } // Second, try to get account ID of offline player from database if (accountId == 0) accountId = PlayerDAO.getAccountIdByName(name); // Third, fail if (accountId == 0) { PacketSendUtility.sendMessage(admin, "Player " + name + " was not found!"); PacketSendUtility.sendMessage(admin, "Syntax: //ban [account|ip|full] [time in minutes]"); return; } byte type = 3; // Default: full if (params.length > 1) { // Smart Matching String stype = params[1].toLowerCase(); if (("account").startsWith(stype)) type = 1; else if (("ip").startsWith(stype)) type = 2; else if (("full").startsWith(stype)) type = 3; else { PacketSendUtility.sendMessage(admin, "Syntax: //ban [account|ip|full] [time in minutes]"); return; } } int time = 0; // Default: infinity if (params.length > 2) { try { time = Integer.parseInt(params[2]); } catch (NumberFormatException e) { PacketSendUtility.sendMessage(admin, "Syntax: //ban [account|ip|full] [time in minutes]"); return; } } if (time == 0) { time = 60 * 24 * 365 * 10; // pseudo infinity. TODO: rework } LoginServer.getInstance().sendBanPacket(type, accountId, accountIp, time, admin.getObjectId()); } @Override public void info(Player player, String message) { PacketSendUtility.sendMessage(player, "Syntax: //ban [account|ip|full] [time in minutes]"); } }