2016-03-02 19:28:01 +00:00
package me.totalfreedom.totalfreedommod.command ;
2015-10-19 17:43:46 +00:00
2015-11-15 23:32:04 +00:00
import me.totalfreedom.totalfreedommod.rank.PlayerRank ;
2015-10-19 17:43:46 +00:00
import java.util.ArrayList ;
import java.util.List ;
2015-11-15 23:32:04 +00:00
import me.totalfreedom.totalfreedommod.banning.Ban ;
2015-10-19 17:43:46 +00:00
import me.totalfreedom.totalfreedommod.config.ConfigEntry ;
import me.totalfreedom.totalfreedommod.player.PlayerData ;
import me.totalfreedom.totalfreedommod.util.FUtil ;
import org.apache.commons.lang3.StringUtils ;
2016-02-29 20:48:17 +00:00
import org.bukkit.Bukkit ;
2015-10-19 17:43:46 +00:00
import org.bukkit.command.Command ;
import org.bukkit.command.CommandSender ;
import org.bukkit.entity.Player ;
@CommandPermissions ( level = PlayerRank . SUPER_ADMIN , source = SourceType . BOTH , blockHostConsole = true )
@CommandParameters ( description = " Bans or unbans any player, even those who are not logged in anymore. " , usage = " /<command> <purge | <ban | unban> <username>> " )
public class Command_glist extends FreedomCommand
{
2015-11-22 18:26:47 +00:00
2015-10-19 17:43:46 +00:00
@Override
2015-11-22 18:26:47 +00:00
public boolean run ( CommandSender sender , Player playerSender , Command cmd , String commandLabel , String [ ] args , boolean senderIsConsole )
2015-10-19 17:43:46 +00:00
{
if ( args . length < 1 )
{
return false ;
}
if ( args . length = = 1 )
{
if ( args [ 0 ] . equalsIgnoreCase ( " purge " ) )
{
if ( getAdmin ( sender ) . getRank ( ) = = PlayerRank . SENIOR_ADMIN )
{
plugin . pl . purgeAllData ( ) ;
2016-03-02 19:28:01 +00:00
msg ( " Purged playerbase. " ) ;
2015-10-19 17:43:46 +00:00
}
else
{
2016-03-02 19:28:01 +00:00
msg ( " Only Senior Admins may purge the userlist. " ) ;
2015-10-19 17:43:46 +00:00
}
return true ;
}
else
{
return false ;
}
}
else if ( args . length = = 2 )
{
String username ;
2016-03-02 19:28:01 +00:00
final List < String > ips = new ArrayList < > ( ) ;
2015-10-19 17:43:46 +00:00
final Player player = getPlayer ( args [ 1 ] ) ;
if ( player = = null )
{
final PlayerData entry = plugin . pl . getData ( args [ 1 ] ) ;
if ( entry = = null )
{
2016-03-02 19:28:01 +00:00
msg ( " Can't find that user. If target is not logged in, make sure that you spelled the name exactly. " ) ;
2015-10-19 17:43:46 +00:00
return true ;
}
username = entry . getUsername ( ) ;
ips . addAll ( entry . getIps ( ) ) ;
}
else
{
username = player . getName ( ) ;
final PlayerData entry = plugin . pl . getData ( player ) ;
ips . addAll ( entry . getIps ( ) ) ;
}
String mode = args [ 0 ] . toLowerCase ( ) ;
if ( mode . equalsIgnoreCase ( " ban " ) )
{
FUtil . adminAction ( sender . getName ( ) , " Banning " + username + " and IPs: " + StringUtils . join ( ips , " , " ) , true ) ;
2016-02-29 20:48:17 +00:00
final Player target = Bukkit . getPlayer ( username ) ;
2015-10-19 17:43:46 +00:00
if ( target ! = null )
{
target . kickPlayer ( " You have been banned by " + sender . getName ( ) + " \ n If you think you have been banned wrongly, appeal here: " + ConfigEntry . SERVER_BAN_URL . getString ( ) ) ;
}
2015-11-15 23:32:04 +00:00
Ban ban = Ban . forPlayerFuzzy ( player , sender , null , null ) ;
2015-10-19 17:43:46 +00:00
for ( String ip : ips )
{
ban . addIp ( ip ) ;
ban . addIp ( FUtil . getFuzzyIp ( ip ) ) ;
}
plugin . bm . addBan ( ban ) ;
}
else if ( mode . equalsIgnoreCase ( " unban " ) )
{
FUtil . adminAction ( sender . getName ( ) , " Unbanning " + username + " and IPs: " + StringUtils . join ( ips , " , " ) , true ) ;
plugin . bm . removeBan ( plugin . bm . getByUsername ( username ) ) ;
for ( String ip : ips )
{
2015-11-15 23:32:04 +00:00
Ban ban = plugin . bm . getByIp ( ip ) ;
2015-10-19 17:43:46 +00:00
if ( ban ! = null )
{
plugin . bm . removeBan ( ban ) ;
}
}
}
else
{
return false ;
}
return true ;
}
else
{
return false ;
}
}
}