2017-10-13 18:35:11 +00:00
package me.totalfreedom.totalfreedommod.command ;
import me.totalfreedom.totalfreedommod.player.FPlayer ;
import org.bukkit.ChatColor ;
import org.apache.commons.lang3.StringUtils ;
import org.apache.commons.lang3.ArrayUtils ;
import me.totalfreedom.totalfreedommod.util.FUtil ;
import org.bukkit.command.Command ;
import org.bukkit.entity.Player ;
import org.bukkit.command.CommandSender ;
import me.totalfreedom.totalfreedommod.rank.Rank ;
@CommandPermissions ( level = Rank . SUPER_ADMIN , source = SourceType . BOTH )
@CommandParameters ( description = " Blocks all block placing for player with brute force. " , usage = " /<command> [[-s] <player> [reason] | list | purge | all] " , aliases = " editmute " )
public class Command_blockedit extends FreedomCommand
{
2017-12-23 04:07:36 +00:00
@Override
public boolean run ( final CommandSender sender , final Player playerSender , final Command cmd , final String commandLabel , String [ ] args , final boolean senderIsConsole )
{
if ( args . length = = 0 )
{
2017-10-13 18:35:11 +00:00
return false ;
}
2017-12-23 04:07:36 +00:00
if ( args [ 0 ] . equals ( " list " ) )
{
msg ( " Block edits blocked for players: " ) ;
2017-10-13 18:35:11 +00:00
int count = 0 ;
2017-12-23 04:07:36 +00:00
for ( Player mp : server . getOnlinePlayers ( ) )
{
final FPlayer info = plugin . pl . getPlayer ( mp ) ;
if ( info . isEditBlocked ( ) )
{
msg ( " - " + mp . getName ( ) ) ;
2017-10-13 18:35:11 +00:00
+ + count ;
}
}
2017-12-23 04:07:36 +00:00
if ( count = = 0 )
{
msg ( " - none " ) ;
2017-10-13 18:35:11 +00:00
}
return true ;
}
2017-12-23 04:07:36 +00:00
if ( args [ 0 ] . equals ( " purge " ) )
{
2017-10-13 18:35:11 +00:00
FUtil . adminAction ( sender . getName ( ) , " Unblocking block edits for all players. " , true ) ;
int count = 0 ;
2017-12-23 04:07:36 +00:00
for ( final Player mp : this . server . getOnlinePlayers ( ) )
{
final FPlayer info = plugin . pl . getPlayer ( mp ) ;
if ( info . isEditBlocked ( ) )
{
2017-10-13 18:35:11 +00:00
info . setEditBlocked ( false ) ;
+ + count ;
}
}
2017-12-23 04:07:36 +00:00
msg ( " Unblocked all block edit for " + count + " players. " ) ;
2017-10-13 18:35:11 +00:00
return true ;
}
2017-12-23 04:07:36 +00:00
if ( args [ 0 ] . equals ( " all " ) )
{
2017-10-13 18:35:11 +00:00
FUtil . adminAction ( sender . getName ( ) , " Blocking block edits for all non-admins. " , true ) ;
int counter = 0 ;
2017-12-23 04:07:36 +00:00
for ( final Player player : this . server . getOnlinePlayers ( ) )
{
if ( ! plugin . al . isAdmin ( ( CommandSender ) player ) )
{
final FPlayer playerdata = plugin . pl . getPlayer ( player ) ;
2017-10-13 18:35:11 +00:00
playerdata . setEditBlocked ( true ) ;
+ + counter ;
}
}
2017-12-23 04:07:36 +00:00
msg ( " Blocked block edits for " + counter + " players. " ) ;
2017-10-13 18:35:11 +00:00
return true ;
}
2017-12-23 04:07:36 +00:00
2017-10-13 18:35:11 +00:00
final boolean smite = args [ 0 ] . equals ( " -s " ) ;
2017-12-23 04:07:36 +00:00
if ( smite )
{
args = ( String [ ] ) ArrayUtils . subarray ( ( Object [ ] ) args , 1 , args . length ) ;
if ( args . length < 1 )
{
2017-10-13 18:35:11 +00:00
return false ;
}
}
2017-12-23 04:07:36 +00:00
final Player player2 = getPlayer ( args [ 0 ] ) ;
if ( player2 = = null )
{
2017-10-13 18:35:11 +00:00
sender . sendMessage ( FreedomCommand . PLAYER_NOT_FOUND ) ;
return true ;
}
2017-12-23 04:07:36 +00:00
2017-10-13 18:35:11 +00:00
String reason = null ;
2017-12-23 04:07:36 +00:00
if ( args . length > 1 )
{
reason = StringUtils . join ( ( Object [ ] ) args , " " , 1 , args . length ) ;
2017-10-13 18:35:11 +00:00
}
2017-12-23 04:07:36 +00:00
final FPlayer playerdata2 = plugin . pl . getPlayer ( player2 ) ;
if ( playerdata2 . isEditBlocked ( ) )
{
2017-10-13 18:35:11 +00:00
FUtil . adminAction ( sender . getName ( ) , " Unblocking block edits for " + player2 . getName ( ) , true ) ;
playerdata2 . setEditBlocked ( false ) ;
2017-12-23 04:07:36 +00:00
msg ( " Unblocking block edits for " + player2 . getName ( ) ) ;
msg ( player2 , " Your block edits have been unblocked. " , ChatColor . RED ) ;
2017-10-13 18:35:11 +00:00
}
2017-12-23 04:07:36 +00:00
else
{
if ( plugin . al . isAdmin ( ( CommandSender ) player2 ) )
{
msg ( player2 . getName ( ) + " is an admin, and cannot have their block edits blocked. " ) ;
2017-10-13 18:35:11 +00:00
return true ;
}
2017-12-23 04:07:36 +00:00
2017-10-13 18:35:11 +00:00
FUtil . adminAction ( sender . getName ( ) , " Blocking block edits for " + player2 . getName ( ) , true ) ;
playerdata2 . setEditBlocked ( true ) ;
2017-12-23 04:07:36 +00:00
if ( smite )
{
Command_smite . smite ( sender , player2 , reason ) ;
2017-10-13 18:35:11 +00:00
}
2017-12-23 04:07:36 +00:00
msg ( player2 , " Your block edits have been blocked. " , ChatColor . RED ) ;
msg ( " Blocked all block edits for " + player2 . getName ( ) ) ;
2017-10-13 18:35:11 +00:00
}
return true ;
}
}