2012-03-09 19:01:04 +00:00
package me.StevenLawson.TotalFreedomMod.Commands ;
import java.util.ArrayList ;
import java.util.List ;
2012-12-09 03:42:29 +00:00
import me.StevenLawson.TotalFreedomMod.TFM_ServerInterface ;
import me.StevenLawson.TotalFreedomMod.TFM_SuperadminList ;
2014-04-04 14:48:39 +00:00
import me.StevenLawson.TotalFreedomMod.TFM_PlayerList ;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerList.PlayerEntry ;
2012-03-09 19:01:04 +00:00
import me.StevenLawson.TotalFreedomMod.TFM_Util ;
2013-12-01 11:13:39 +00:00
import net.minecraft.util.org.apache.commons.lang3.StringUtils ;
2012-03-09 19:01:04 +00:00
import org.bukkit.command.Command ;
import org.bukkit.command.CommandSender ;
import org.bukkit.entity.Player ;
2013-03-19 22:05:20 +00:00
@CommandPermissions ( level = AdminLevel . SUPER , source = SourceType . BOTH )
2013-04-10 02:05:24 +00:00
@CommandParameters ( description = " Ban/Unban any player, even those who are not logged in anymore. " , usage = " /<command> <purge | <ban | unban> <username>> " )
2012-03-09 19:01:04 +00:00
public class Command_glist extends TFM_Command
{
@Override
public boolean run ( CommandSender sender , Player sender_p , Command cmd , String commandLabel , String [ ] args , boolean senderIsConsole )
{
2012-03-12 06:26:13 +00:00
if ( args . length < 1 )
2012-03-09 19:01:04 +00:00
{
return false ;
}
2012-11-24 01:22:52 +00:00
if ( args . length = = 1 )
2012-03-09 19:01:04 +00:00
{
2012-11-24 01:22:52 +00:00
if ( args [ 0 ] . equalsIgnoreCase ( " purge " ) )
2012-03-12 06:26:13 +00:00
{
2012-11-24 01:22:52 +00:00
//Purge does not clear the banlist! This is not for clearing bans! This is for clearing the yaml file that stores the player/IP database!
2012-12-09 03:42:29 +00:00
if ( TFM_SuperadminList . isSeniorAdmin ( sender ) )
{
2014-04-04 14:48:39 +00:00
TFM_PlayerList . getInstance ( ) . purgeAll ( ) ;
2012-12-09 03:42:29 +00:00
}
else
{
2013-01-07 14:56:53 +00:00
playerMsg ( " Only Senior Admins may purge the userlist. " ) ;
2012-12-09 03:42:29 +00:00
}
2012-11-24 01:22:52 +00:00
return true ;
2012-03-12 06:26:13 +00:00
}
2012-11-24 01:22:52 +00:00
else
2012-03-12 06:26:13 +00:00
{
return false ;
}
2012-11-24 01:22:52 +00:00
}
2012-12-09 03:42:29 +00:00
else if ( args . length = = 2 )
2012-11-24 01:22:52 +00:00
{
2012-12-09 03:42:29 +00:00
String username ;
List < String > ip_addresses = new ArrayList < String > ( ) ;
2012-03-12 06:26:13 +00:00
2012-12-09 03:42:29 +00:00
try
{
2013-08-14 14:01:42 +00:00
Player player = getPlayer ( args [ 1 ] ) ;
2012-03-09 19:01:04 +00:00
2013-08-14 14:01:42 +00:00
username = player . getName ( ) ;
ip_addresses . add ( player . getAddress ( ) . getAddress ( ) . getHostAddress ( ) ) ;
2012-12-09 03:42:29 +00:00
}
2013-08-14 13:28:19 +00:00
catch ( PlayerNotFoundException ex )
2012-12-09 03:42:29 +00:00
{
2014-04-04 14:48:39 +00:00
PlayerEntry entry = TFM_PlayerList . getInstance ( ) . getEntry ( args [ 1 ] ) ;
2012-03-09 19:01:04 +00:00
2012-12-09 03:42:29 +00:00
if ( entry = = null )
{
TFM_Util . playerMsg ( sender , " Can't find that user. If target is not logged in, make sure that you spelled the name exactly. " ) ;
return true ;
}
2012-03-09 19:01:04 +00:00
2014-04-04 14:48:39 +00:00
username = entry . getLastJoinName ( ) ;
ip_addresses = entry . getIps ( ) ;
2012-03-09 19:01:04 +00:00
}
2012-12-09 03:42:29 +00:00
String mode = args [ 0 ] . toLowerCase ( ) ;
if ( mode . equalsIgnoreCase ( " ban " ) )
{
TFM_Util . adminAction ( sender . getName ( ) , " Banning " + username + " and IPs: " + StringUtils . join ( ip_addresses , " , " ) , true ) ;
2012-03-12 06:26:13 +00:00
2013-08-14 14:01:42 +00:00
Player player = server . getPlayerExact ( username ) ;
if ( player ! = null )
2012-12-09 03:42:29 +00:00
{
2013-08-14 14:01:42 +00:00
TFM_ServerInterface . banUsername ( player . getName ( ) , null , null , null ) ;
player . kickPlayer ( " You have been banned by " + sender . getName ( ) + " \ n If you think you have been banned wrongly, appeal here: http://www.totalfreedom.boards.net " ) ;
2012-12-09 03:42:29 +00:00
}
else
{
TFM_ServerInterface . banUsername ( username , null , null , null ) ;
}
2012-03-09 19:01:04 +00:00
2012-12-09 03:42:29 +00:00
for ( String ip_address : ip_addresses )
{
TFM_ServerInterface . banIP ( ip_address , null , null , null ) ;
String [ ] ip_address_parts = ip_address . split ( " \\ . " ) ;
TFM_ServerInterface . banIP ( ip_address_parts [ 0 ] + " . " + ip_address_parts [ 1 ] + " .*.* " , null , null , null ) ;
}
}
else if ( mode . equalsIgnoreCase ( " unban " ) | | mode . equalsIgnoreCase ( " pardon " ) )
2012-11-24 01:22:52 +00:00
{
2012-12-09 03:42:29 +00:00
TFM_Util . adminAction ( sender . getName ( ) , " Unbanning " + username + " and IPs: " + StringUtils . join ( ip_addresses , " , " ) , true ) ;
TFM_ServerInterface . unbanUsername ( username ) ;
for ( String ip_address : ip_addresses )
{
TFM_ServerInterface . unbanIP ( ip_address ) ;
String [ ] ip_address_parts = ip_address . split ( " \\ . " ) ;
TFM_ServerInterface . unbanIP ( ip_address_parts [ 0 ] + " . " + ip_address_parts [ 1 ] + " .*.* " ) ;
}
2012-03-09 19:01:04 +00:00
}
2012-11-24 01:22:52 +00:00
else
2012-03-09 19:01:04 +00:00
{
2012-12-09 03:42:29 +00:00
return false ;
2012-11-24 01:22:52 +00:00
}
2012-03-09 19:01:04 +00:00
2012-12-09 03:42:29 +00:00
return true ;
2012-03-09 19:01:04 +00:00
}
2012-12-09 03:42:29 +00:00
else
2012-03-09 19:01:04 +00:00
{
2012-12-09 03:42:29 +00:00
return false ;
2012-03-09 19:01:04 +00:00
}
}
}