2011-10-19 00:37:00 +00:00
package me.StevenLawson.TotalFreedomMod.Commands ;
2014-07-26 03:11:44 +00:00
import java.util.Iterator ;
2014-04-14 19:11:41 +00:00
import me.StevenLawson.TotalFreedomMod.TFM_BanManager ;
2013-01-21 18:58:42 +00:00
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData ;
2011-10-19 00:37:00 +00:00
import me.StevenLawson.TotalFreedomMod.TFM_Util ;
2014-08-27 09:40:25 +00:00
import me.StevenLawson.TotalFreedomMod.TFM_UuidManager ;
2011-10-19 00:37:00 +00:00
import org.bukkit.ChatColor ;
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 (
2014-07-26 03:11:44 +00:00
description = " Use admin commands on someone by hash. Use mode 'list' to get a player's hash. Other modes are kick, nameban, ipban, ban, op, deop, ci, fr, smite. " ,
usage = " /<command> [list | [<kick | nameban | ipban | ban | op | deop | ci | fr | smite> <targethash>] ] " )
2011-10-19 00:37:00 +00:00
public class Command_gadmin extends TFM_Command
{
2014-07-26 03:11:44 +00:00
private enum GadminMode
{
LIST ( " list " ) ,
KICK ( " kick " ) ,
NAMEBAN ( " nameban " ) ,
IPBAN ( " ipban " ) ,
BAN ( " ban " ) ,
OP ( " op " ) ,
DEOP ( " deop " ) ,
CI ( " ci " ) ,
FR ( " fr " ) ,
SMITE ( " smite " ) ;
private final String modeName ;
private GadminMode ( String command )
{
this . modeName = command ;
}
public String getModeName ( )
{
return modeName ;
}
public static GadminMode findMode ( String needle )
{
for ( final GadminMode mode : GadminMode . values ( ) )
{
if ( needle . equalsIgnoreCase ( mode . getModeName ( ) ) )
{
return mode ;
}
}
return null ;
}
}
2011-10-19 00:37:00 +00:00
@Override
public boolean run ( CommandSender sender , Player sender_p , Command cmd , String commandLabel , String [ ] args , boolean senderIsConsole )
{
if ( args . length = = 0 )
{
return false ;
}
2014-07-26 03:11:44 +00:00
final GadminMode mode = GadminMode . findMode ( args [ 0 ] . toLowerCase ( ) ) ;
if ( mode = = null )
2011-10-19 00:37:00 +00:00
{
2014-07-26 03:11:44 +00:00
playerMsg ( " Invalid mode: " + args [ 0 ] , ChatColor . RED ) ;
return true ;
2012-11-24 01:22:52 +00:00
}
2014-12-21 09:23:50 +00:00
final Iterator < ? extends Player > it = server . getOnlinePlayers ( ) . iterator ( ) ;
2014-07-26 03:11:44 +00:00
if ( mode = = GadminMode . LIST )
2012-11-24 01:22:52 +00:00
{
2014-07-26 03:11:44 +00:00
playerMsg ( " [ Real Name ] : [ Display Name ] - Hash: " ) ;
while ( it . hasNext ( ) )
2011-10-19 00:37:00 +00:00
{
2014-07-26 03:11:44 +00:00
final Player player = it . next ( ) ;
2014-08-27 09:40:25 +00:00
final String hash = TFM_UuidManager . getUniqueId ( player ) . toString ( ) . substring ( 0 , 4 ) ;
2012-11-24 01:22:52 +00:00
sender . sendMessage ( ChatColor . GRAY + String . format ( " [ %s ] : [ %s ] - %s " ,
2013-08-14 14:01:42 +00:00
player . getName ( ) ,
ChatColor . stripColor ( player . getDisplayName ( ) ) ,
2014-08-02 14:27:43 +00:00
hash ) ) ;
2011-10-19 00:37:00 +00:00
}
2014-07-26 03:11:44 +00:00
return true ;
}
2014-06-28 10:00:16 +00:00
2014-07-26 03:11:44 +00:00
if ( args . length < 2 )
{
return false ;
}
Player target = null ;
while ( it . hasNext ( ) & & target = = null )
{
final Player player = it . next ( ) ;
2014-08-27 09:40:25 +00:00
final String hash = TFM_UuidManager . getUniqueId ( player ) . toString ( ) . substring ( 0 , 4 ) ;
2014-07-26 03:11:44 +00:00
if ( hash . equalsIgnoreCase ( args [ 1 ] ) )
2014-06-28 10:00:16 +00:00
{
2014-07-26 03:11:44 +00:00
target = player ;
2014-06-28 10:00:16 +00:00
}
2014-07-26 03:11:44 +00:00
}
2014-06-28 10:00:16 +00:00
2014-07-26 03:11:44 +00:00
if ( target = = null )
{
playerMsg ( " Invalid player hash: " + args [ 1 ] , ChatColor . RED ) ;
return true ;
}
2014-06-28 10:00:16 +00:00
2014-07-26 03:11:44 +00:00
switch ( mode )
{
case KICK :
2011-10-19 00:37:00 +00:00
{
2014-07-26 03:11:44 +00:00
TFM_Util . adminAction ( sender . getName ( ) , String . format ( " Kicking: %s. " , target . getName ( ) ) , false ) ;
target . kickPlayer ( " Kicked by Administrator " ) ;
2014-06-29 08:53:39 +00:00
2014-07-26 03:11:44 +00:00
break ;
}
case NAMEBAN :
{
TFM_BanManager . addUuidBan ( target ) ;
TFM_Util . adminAction ( sender . getName ( ) , String . format ( " Banning Name: %s. " , target . getName ( ) ) , true ) ;
target . kickPlayer ( " Username banned by Administrator. " ) ;
break ;
}
case IPBAN :
{
String ip = target . getAddress ( ) . getAddress ( ) . getHostAddress ( ) ;
String [ ] ip_parts = ip . split ( " \\ . " ) ;
if ( ip_parts . length = = 4 )
2012-11-24 01:22:52 +00:00
{
2014-07-26 03:11:44 +00:00
ip = String . format ( " %s.%s.*.* " , ip_parts [ 0 ] , ip_parts [ 1 ] ) ;
2012-11-24 01:22:52 +00:00
}
2014-08-16 02:53:57 +00:00
TFM_Util . adminAction ( sender . getName ( ) , String . format ( " Banning IP: %s. " , ip ) , true ) ;
2014-07-26 03:11:44 +00:00
TFM_BanManager . addIpBan ( target ) ;
target . kickPlayer ( " IP address banned by Administrator. " ) ;
break ;
}
case BAN :
{
String ip = target . getAddress ( ) . getAddress ( ) . getHostAddress ( ) ;
String [ ] ip_parts = ip . split ( " \\ . " ) ;
if ( ip_parts . length = = 4 )
2012-11-24 01:22:52 +00:00
{
2014-07-26 03:11:44 +00:00
ip = String . format ( " %s.%s.*.* " , ip_parts [ 0 ] , ip_parts [ 1 ] ) ;
2012-11-24 01:22:52 +00:00
}
2014-07-26 03:11:44 +00:00
TFM_Util . adminAction ( sender . getName ( ) , String . format ( " Banning Name: %s, IP: %s. " , target . getName ( ) , ip ) , true ) ;
2011-10-19 00:37:00 +00:00
2014-07-26 03:11:44 +00:00
TFM_BanManager . addUuidBan ( target ) ;
TFM_BanManager . addIpBan ( target ) ;
2011-10-19 00:37:00 +00:00
2014-07-26 03:11:44 +00:00
target . kickPlayer ( " IP and username banned by Administrator. " ) ;
break ;
2011-10-19 00:37:00 +00:00
}
2014-07-26 03:11:44 +00:00
case OP :
{
TFM_Util . adminAction ( sender . getName ( ) , String . format ( " Opping %s. " , target . getName ( ) ) , false ) ;
target . setOp ( false ) ;
2014-08-23 18:19:25 +00:00
target . sendMessage ( TFM_Command . YOU_ARE_OP ) ;
2012-11-24 01:22:52 +00:00
2014-07-26 03:11:44 +00:00
break ;
}
case DEOP :
{
TFM_Util . adminAction ( sender . getName ( ) , String . format ( " Deopping %s. " , target . getName ( ) ) , false ) ;
target . setOp ( false ) ;
2014-08-23 18:19:25 +00:00
target . sendMessage ( TFM_Command . YOU_ARE_NOT_OP ) ;
2014-07-26 03:11:44 +00:00
break ;
}
case CI :
{
target . getInventory ( ) . clear ( ) ;
break ;
}
case FR :
{
TFM_PlayerData playerdata = TFM_PlayerData . getPlayerData ( target ) ;
playerdata . setFrozen ( ! playerdata . isFrozen ( ) ) ;
playerMsg ( target . getName ( ) + " has been " + ( playerdata . isFrozen ( ) ? " frozen " : " unfrozen " ) + " . " ) ;
target . sendMessage ( ChatColor . AQUA + " You have been " + ( playerdata . isFrozen ( ) ? " frozen " : " unfrozen " ) + " . " ) ;
break ;
}
case SMITE :
{
Command_smite . smite ( target ) ;
break ;
}
2011-10-19 00:37:00 +00:00
}
return true ;
}
}