2017-10-13 18:35:11 +00:00
2016-03-02 19:28:01 +00:00
package me.totalfreedom.totalfreedommod.command ;
2011-10-19 00:37:00 +00:00
2017-10-13 18:35:11 +00:00
import me.totalfreedom.totalfreedommod.rank.Displayable ;
import java.util.Iterator ;
2012-09-18 01:33:01 +00:00
import java.util.List ;
2016-05-12 19:40:39 +00:00
import me.totalfreedom.totalfreedommod.config.ConfigEntry ;
2017-10-13 18:35:11 +00:00
import me.totalfreedom.totalfreedommod.TotalFreedomMod ;
2011-10-19 00:37:00 +00:00
import org.bukkit.ChatColor ;
2017-10-13 18:35:11 +00:00
import org.apache.commons.lang3.StringUtils ;
import java.util.ArrayList ;
import me.totalfreedom.totalfreedommod.util.FUtil ;
2011-10-19 00:37:00 +00:00
import org.bukkit.command.Command ;
import org.bukkit.entity.Player ;
2017-10-13 18:35:11 +00:00
import org.bukkit.command.CommandSender ;
import me.totalfreedom.totalfreedommod.rank.Rank ;
2011-10-19 00:37:00 +00:00
2016-05-12 19:40:39 +00:00
@CommandPermissions ( level = Rank . IMPOSTOR , source = SourceType . BOTH )
@CommandParameters ( description = " Lists the real names of all online players. " , usage = " /<command> [-a | -i | -f] " , aliases = " who " )
2015-10-19 17:43:46 +00:00
public class Command_list extends FreedomCommand
2011-10-19 00:37:00 +00:00
{
2017-10-13 18:35:11 +00:00
public boolean run ( final CommandSender sender , final Player playerSender , final Command cmd , final String commandLabel , final String [ ] args , final boolean senderIsConsole ) {
if ( args . length > 1 ) {
2013-12-01 12:00:02 +00:00
return false ;
}
2017-10-13 18:35:11 +00:00
if ( FUtil . isFromHostConsole ( sender . getName ( ) ) ) {
final List < String > names = new ArrayList < String > ( ) ;
for ( final Player player : this . server . getOnlinePlayers ( ) ) {
2013-12-01 12:00:02 +00:00
names . add ( player . getName ( ) ) ;
2012-12-02 01:33:36 +00:00
}
2017-10-13 18:35:11 +00:00
this . msg ( " There are " + names . size ( ) + " / " + this . server . getMaxPlayers ( ) + " players online: \ n " + StringUtils . join ( ( Iterable ) names , " , " ) , ChatColor . WHITE ) ;
2012-12-01 23:07:27 +00:00
return true ;
}
2017-10-13 18:35:11 +00:00
ListFilter listFilter = null ;
if ( args . length = = 1 ) {
final String s = args [ 0 ] ;
switch ( s ) {
case " -a " : {
2016-05-12 19:40:39 +00:00
listFilter = ListFilter . ADMINS ;
break ;
2017-10-13 18:35:11 +00:00
}
case " -v " : {
listFilter = ListFilter . VANISHED_ADMINS ;
break ;
}
case " -i " : {
2016-05-12 19:40:39 +00:00
listFilter = ListFilter . IMPOSTORS ;
break ;
2017-10-13 18:35:11 +00:00
}
case " -f " : {
2016-05-12 19:40:39 +00:00
listFilter = ListFilter . FAMOUS_PLAYERS ;
break ;
2017-10-13 18:35:11 +00:00
}
default : {
2016-05-12 19:40:39 +00:00
return false ;
2017-10-13 18:35:11 +00:00
}
2014-06-22 16:07:02 +00:00
}
}
2017-10-13 18:35:11 +00:00
else {
2016-05-12 19:40:39 +00:00
listFilter = ListFilter . PLAYERS ;
2014-06-22 16:07:02 +00:00
}
2017-10-13 18:35:11 +00:00
if ( listFilter = = ListFilter . VANISHED_ADMINS & & ! ( ( TotalFreedomMod ) this . plugin ) . al . isAdmin ( ( CommandSender ) playerSender ) ) {
this . msg ( " /list [-a | -i | -f ] " , ChatColor . WHITE ) ;
return true ;
}
2013-12-01 12:00:02 +00:00
final StringBuilder onlineStats = new StringBuilder ( ) ;
final StringBuilder onlineUsers = new StringBuilder ( ) ;
2017-10-13 18:35:11 +00:00
onlineStats . append ( ChatColor . BLUE ) . append ( " There are " ) . append ( ChatColor . RED ) . append ( this . server . getOnlinePlayers ( ) . size ( ) - Command_vanish . vanished . size ( ) ) ;
onlineStats . append ( ChatColor . BLUE ) . append ( " out of a maximum " ) . append ( ChatColor . RED ) . append ( this . server . getMaxPlayers ( ) ) ;
2012-09-18 01:33:01 +00:00
onlineStats . append ( ChatColor . BLUE ) . append ( " players online. " ) ;
2017-10-13 18:35:11 +00:00
final List < String > names2 = new ArrayList < String > ( ) ;
for ( final Player player2 : this . server . getOnlinePlayers ( ) ) {
if ( listFilter = = ListFilter . ADMINS & & ! ( ( TotalFreedomMod ) this . plugin ) . al . isAdmin ( ( CommandSender ) player2 ) ) {
2014-06-22 16:07:02 +00:00
continue ;
}
2017-10-13 18:35:11 +00:00
if ( listFilter = = ListFilter . ADMINS & & Command_vanish . vanished . contains ( player2 ) ) {
2013-04-02 23:09:39 +00:00
continue ;
}
2017-10-13 18:35:11 +00:00
if ( listFilter = = ListFilter . VANISHED_ADMINS & & ! Command_vanish . vanished . contains ( player2 ) ) {
2016-05-12 19:40:39 +00:00
continue ;
}
2017-10-13 18:35:11 +00:00
if ( listFilter = = ListFilter . IMPOSTORS & & ! ( ( TotalFreedomMod ) this . plugin ) . al . isAdminImpostor ( player2 ) ) {
continue ;
}
if ( listFilter = = ListFilter . FAMOUS_PLAYERS & & ! ConfigEntry . FAMOUS_PLAYERS . getList ( ) . contains ( player2 . getName ( ) . toLowerCase ( ) ) ) {
continue ;
}
if ( listFilter = = ListFilter . PLAYERS & & Command_vanish . vanished . contains ( player2 ) ) {
continue ;
}
final Displayable display = ( ( TotalFreedomMod ) this . plugin ) . rm . getDisplay ( ( CommandSender ) player2 ) ;
names2 . add ( display . getColoredTag ( ) + player2 . getName ( ) ) ;
2011-10-19 00:37:00 +00:00
}
2017-10-13 18:35:11 +00:00
final String playerType = ( listFilter = = null ) ? " players " : listFilter . toString ( ) . toLowerCase ( ) . replace ( '_' , ' ' ) ;
2013-12-01 12:00:02 +00:00
onlineUsers . append ( " Connected " ) ;
2016-05-12 19:40:39 +00:00
onlineUsers . append ( playerType + " : " ) ;
2017-10-13 18:35:11 +00:00
onlineUsers . append ( StringUtils . join ( ( Iterable ) names2 , ChatColor . WHITE + " , " ) ) ;
if ( senderIsConsole ) {
2012-09-18 01:33:01 +00:00
sender . sendMessage ( ChatColor . stripColor ( onlineStats . toString ( ) ) ) ;
sender . sendMessage ( ChatColor . stripColor ( onlineUsers . toString ( ) ) ) ;
}
2017-10-13 18:35:11 +00:00
else {
2012-09-18 01:33:01 +00:00
sender . sendMessage ( onlineStats . toString ( ) ) ;
sender . sendMessage ( onlineUsers . toString ( ) ) ;
}
2017-10-13 18:35:11 +00:00
names2 . clear ( ) ;
2011-10-19 00:37:00 +00:00
return true ;
}
2017-10-13 18:35:11 +00:00
private enum ListFilter
{
PLAYERS ,
ADMINS ,
VANISHED_ADMINS ,
FAMOUS_PLAYERS ,
IMPOSTORS ;
}
2011-10-19 00:37:00 +00:00
}