2017-10-13 18:35:11 +00:00
package me.totalfreedom.totalfreedommod.command ;
import me.totalfreedom.totalfreedommod.player.FPlayer ;
2018-02-09 08:21:44 +00:00
import me.totalfreedom.totalfreedommod.rank.Rank ;
2017-10-13 18:35:11 +00:00
import me.totalfreedom.totalfreedommod.util.FUtil ;
2018-02-09 08:21:44 +00:00
import org.apache.commons.lang3.ArrayUtils ;
import org.apache.commons.lang3.StringUtils ;
import org.bukkit.ChatColor ;
2017-10-13 18:35:11 +00:00
import org.bukkit.command.Command ;
import org.bukkit.command.CommandSender ;
2018-02-09 08:21:44 +00:00
import org.bukkit.entity.Player ;
2017-10-13 18:35:11 +00:00
2020-09-28 03:17:01 +00:00
@CommandPermissions ( level = Rank . ADMIN , source = SourceType . BOTH )
2020-03-30 23:43:57 +00:00
@CommandParameters ( description = " Toggle PVP mode for everyone or a certain player. " , usage = " /<command> [[-s] <player> [reason] | list | purge | all] " , aliases = " pvpblock,pvpmode " )
2017-10-13 18:35:11 +00:00
public class Command_blockpvp 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 ( " PVP is blocked for players: " ) ;
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 . isPvpBlocked ( ) )
{
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 )
{
2017-12-28 05:50:39 +00:00
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 " ) )
{
2020-12-04 00:28:53 +00:00
FUtil . adminAction ( sender . getName ( ) , " Enabling PVP for all players. " , true ) ;
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 . isPvpBlocked ( ) )
{
info . setPvpBlocked ( false ) ;
2017-10-13 18:35:11 +00:00
+ + count ;
}
}
2017-12-23 04:07:36 +00:00
msg ( " Enabled PVP 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 " ) )
{
2020-12-04 00:28:53 +00:00
FUtil . adminAction ( sender . getName ( ) , " Disabling PVP 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 ( Player player : server . getOnlinePlayers ( ) )
{
2020-12-04 00:28:53 +00:00
if ( ! plugin . al . isAdmin ( player ) )
2017-12-23 04:07:36 +00:00
{
final FPlayer playerdata = plugin . pl . getPlayer ( player ) ;
playerdata . setPvpBlocked ( true ) ;
2017-10-13 18:35:11 +00:00
+ + counter ;
}
}
2017-12-23 04:07:36 +00:00
msg ( " Disabling PVP 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 )
{
2018-02-09 08:21:44 +00:00
args = 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
2017-12-28 05:50:39 +00:00
final Player p = getPlayer ( args [ 0 ] ) ;
if ( p = = null )
2017-12-23 04:07:36 +00:00
{
2021-04-05 23:13:26 +00:00
msg ( PLAYER_NOT_FOUND ) ;
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
String reason = null ;
2017-12-23 04:07:36 +00:00
if ( args . length > 1 )
{
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 ( p ) ;
if ( pd . isPvpBlocked ( ) )
2017-12-23 04:07:36 +00:00
{
2020-12-04 00:28:53 +00:00
FUtil . adminAction ( sender . getName ( ) , " Enabling PVP for " + p . getName ( ) , true ) ;
2017-12-28 05:50:39 +00:00
pd . setPvpBlocked ( false ) ;
2020-12-04 00:28:53 +00:00
msg ( " Enabling PVP for " + p . getName ( ) ) ;
2018-02-09 08:21:44 +00:00
msg ( p , " Your PVP have been enabled. " , ChatColor . GREEN ) ;
2017-10-13 18:35:11 +00:00
}
2017-12-23 04:07:36 +00:00
else
{
2020-12-04 00:28:53 +00:00
if ( plugin . al . isAdmin ( p ) )
2017-12-23 04:07:36 +00:00
{
2020-12-04 00:28:53 +00:00
msg ( p . getName ( ) + " is an admin, and cannot have their PVP disabled. " ) ;
2017-10-13 18:35:11 +00:00
return true ;
}
2017-12-23 04:07:36 +00:00
2020-12-04 00:28:53 +00:00
FUtil . adminAction ( sender . getName ( ) , " Disabling PVP for " + p . getName ( ) , true ) ;
2017-12-28 05:50:39 +00:00
pd . setPvpBlocked ( true ) ;
2017-12-23 04:07:36 +00:00
if ( smite )
{
2017-12-28 05:50:39 +00:00
Command_smite . smite ( sender , p , 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 ( p , " Your PVP has been disabled. " , ChatColor . RED ) ;
msg ( " Disabled PVP for " + p . getName ( ) ) ;
2017-10-13 18:35:11 +00:00
}
return true ;
}
2020-08-15 16:35:48 +00:00
}