2017-10-13 18:35:11 +00:00
package me.totalfreedom.totalfreedommod.command ;
import me.totalfreedom.totalfreedommod.player.FPlayer ;
2018-07-31 07:01:29 +00:00
import me.totalfreedom.totalfreedommod.rank.Rank ;
2017-10-13 18:35:11 +00:00
import me.totalfreedom.totalfreedommod.util.FUtil ;
2019-07-31 16:19:23 +00:00
import org.apache.commons.lang.ArrayUtils ;
import org.apache.commons.lang.StringUtils ;
2018-07-31 07:01:29 +00:00
import org.bukkit.ChatColor ;
2017-10-13 18:35:11 +00:00
import org.bukkit.command.Command ;
import org.bukkit.command.CommandSender ;
2018-07-31 07:01:29 +00:00
import org.bukkit.entity.Player ;
2017-10-13 18:35:11 +00:00
@CommandPermissions ( level = Rank . SUPER_ADMIN , source = SourceType . BOTH )
2020-03-30 23:43:57 +00:00
@CommandParameters ( description = " Restricts/unrestricts block modification abilities for everyone on the server or a certain player. " , usage = " /<command> [[-s] <player> [reason] | list | purge | all] " )
2017-10-13 18:35:11 +00:00
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 " ) )
{
2017-12-28 05:50:39 +00:00
msg ( " The following have block modification abilities restricted: " ) ;
2017-10-13 18:35:11 +00:00
int count = 0 ;
2017-12-28 05:50:39 +00:00
for ( Player player : server . getOnlinePlayers ( ) )
2017-12-23 04:07:36 +00:00
{
2017-12-28 05:50:39 +00:00
final FPlayer info = plugin . pl . getPlayer ( player ) ;
2017-12-23 04:07:36 +00:00
if ( info . isEditBlocked ( ) )
{
2017-12-28 05:50:39 +00:00
msg ( " - " + player . 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-12-28 05:50:39 +00:00
FUtil . adminAction ( sender . getName ( ) , " Unblocking block modification abilities for all players. " , true ) ;
2017-10-13 18:35:11 +00:00
int count = 0 ;
2017-12-28 05:50:39 +00:00
for ( final Player player : this . server . getOnlinePlayers ( ) )
2017-12-23 04:07:36 +00:00
{
2017-12-28 05:50:39 +00:00
final FPlayer info = plugin . pl . getPlayer ( player ) ;
2017-12-23 04:07:36 +00:00
if ( info . isEditBlocked ( ) )
{
2017-10-13 18:35:11 +00:00
info . setEditBlocked ( false ) ;
+ + count ;
}
}
2017-12-28 05:50:39 +00:00
msg ( " Unblocked all block modification abilities 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-12-28 05:50:39 +00:00
FUtil . adminAction ( sender . getName ( ) , " Blocking block modification abilities for all non-admins. " , true ) ;
2017-10-13 18:35:11 +00:00
int counter = 0 ;
2017-12-23 04:07:36 +00:00
for ( final Player player : this . server . getOnlinePlayers ( ) )
{
2020-04-23 11:18:03 +00:00
if ( ! plugin . al . isAdmin ( player ) )
2017-12-23 04:07:36 +00:00
{
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
2017-12-28 05:50:39 +00:00
msg ( " Blocked block modification abilities 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 )
{
2020-04-23 11:18:03 +00:00
args = ( String [ ] ) ArrayUtils . subarray ( args , 1 , args . length ) ;
2017-12-23 04:07:36 +00:00
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 )
{
2020-04-23 11:18:03 +00:00
reason = StringUtils . join ( args , " " , 1 , args . length ) ;
2017-10-13 18:35:11 +00:00
}
2017-12-23 04:07:36 +00:00
2017-12-28 05:50:39 +00:00
final FPlayer pd = plugin . pl . getPlayer ( player2 ) ;
if ( pd . isEditBlocked ( ) )
2017-12-23 04:07:36 +00:00
{
2017-12-28 05:50:39 +00:00
FUtil . adminAction ( sender . getName ( ) , " Unblocking block modification abilities for " + player2 . getName ( ) , true ) ;
pd . setEditBlocked ( false ) ;
msg ( " Unblocking block modification abilities for " + player2 . getName ( ) ) ;
msg ( player2 , " Your block modification abilities have been restored. " , ChatColor . RED ) ;
2017-10-13 18:35:11 +00:00
}
2017-12-23 04:07:36 +00:00
else
{
2020-04-23 11:18:03 +00:00
if ( plugin . al . isAdmin ( player2 ) )
2017-12-23 04:07:36 +00:00
{
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-12-28 05:50:39 +00:00
FUtil . adminAction ( sender . getName ( ) , " Blocking block modification abilities for " + player2 . getName ( ) , true ) ;
pd . 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
2017-12-28 05:50:39 +00:00
msg ( player2 , " Your block modification abilities have been blocked. " , ChatColor . RED ) ;
msg ( " Blocked all block modification abilities for " + player2 . getName ( ) ) ;
2017-10-13 18:35:11 +00:00
}
return true ;
}
}