2017-10-13 18:35:11 +00:00
package me.totalfreedom.totalfreedommod.command ;
2023-04-10 06:18:06 +00:00
import me.totalfreedom.totalfreedommod.command.handling.CommandParameters ;
import me.totalfreedom.totalfreedommod.command.handling.CommandPermissions ;
import me.totalfreedom.totalfreedommod.command.handling.FreedomCommand ;
import me.totalfreedom.totalfreedommod.command.handling.SourceType ;
2017-10-13 18:35:11 +00:00
import me.totalfreedom.totalfreedommod.player.FPlayer ;
2021-06-17 12:56:52 +00:00
import me.totalfreedom.totalfreedommod.punishments.Punishment ;
import me.totalfreedom.totalfreedommod.punishments.PunishmentType ;
2017-10-13 18:35:11 +00:00
import me.totalfreedom.totalfreedommod.util.FUtil ;
2023-03-28 05:23:34 +00:00
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder ;
2017-10-13 18:35:11 +00:00
import org.bukkit.command.Command ;
import org.bukkit.command.CommandSender ;
2023-03-28 05:23:34 +00:00
import org.bukkit.entity.HumanEntity ;
2018-07-31 07:01:29 +00:00
import org.bukkit.entity.Player ;
2017-10-13 18:35:11 +00:00
2022-11-13 11:49:58 +00:00
import java.util.List ;
import java.util.Optional ;
2023-03-29 05:46:32 +00:00
@CommandPermissions ( permission = " blockedit " , source = SourceType . BOTH )
2022-11-13 13:19:10 +00:00
@CommandParameters ( description = " Restricts/restores block modification abilities for everyone on the server or a certain player. " , usage = " /<command> [<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 )
{
2022-11-13 11:49:58 +00:00
if ( args . length > 0 )
2017-12-23 04:07:36 +00:00
{
2022-11-13 11:49:58 +00:00
switch ( args [ 0 ] . toLowerCase ( ) )
2017-12-23 04:07:36 +00:00
{
2022-11-13 11:49:58 +00:00
case " list " - >
2017-12-23 04:07:36 +00:00
{
2022-11-13 11:49:58 +00:00
List < ? extends Player > list = server . getOnlinePlayers ( ) . stream ( ) . filter ( player - >
plugin . pl . getPlayer ( player ) . isEditBlocked ( ) ) . sorted ( ) . toList ( ) ;
2017-12-23 04:07:36 +00:00
2023-03-28 05:23:34 +00:00
boolean plural = list . size ( ) ! = 1 ;
msgNew ( " There <grammar> <count> player<plural> online with restricted block modification abilities: <players> " ,
Placeholder . unparsed ( " grammar " , plural ? " are " : " is " ) ,
Placeholder . unparsed ( " count " , String . valueOf ( list . size ( ) ) ) ,
Placeholder . unparsed ( " plural " , plural ? " s " : " " ) ,
Placeholder . unparsed ( " colon " , list . size ( ) > 0 ? " : " : " . " ) ,
Placeholder . unparsed ( " players " , FUtil . listToString ( list . stream ( ) . map ( HumanEntity : : getName ) . toList ( ) ) ) ) ;
2017-10-13 18:35:11 +00:00
}
2022-11-13 11:49:58 +00:00
case " purge " - >
2017-12-23 04:07:36 +00:00
{
2022-11-13 11:49:58 +00:00
FUtil . adminAction ( sender . getName ( ) , " Restoring block modification abilities for all players " , true ) ;
List < ? extends Player > list = server . getOnlinePlayers ( ) . stream ( ) . filter ( player - >
plugin . pl . getPlayer ( player ) . isEditBlocked ( ) ) . toList ( ) ;
list . forEach ( player - >
{
plugin . pl . getPlayer ( player ) . setEditBlocked ( false ) ;
2023-03-28 05:23:34 +00:00
msgNew ( player , " <green>Your block modification abilities have been restored. " ) ;
2022-11-13 11:49:58 +00:00
} ) ;
2023-03-28 05:23:34 +00:00
msgNew ( " Restored block modification abilities for <count> player<plural>. " ,
Placeholder . unparsed ( " count " , String . valueOf ( list . size ( ) ) ) ,
Placeholder . unparsed ( " plural " , list . size ( ) ! = 1 ? " s " : " " ) ) ;
2017-10-13 18:35:11 +00:00
}
2022-11-13 11:49:58 +00:00
case " all " , " -a " - >
{
FUtil . adminAction ( sender . getName ( ) , " Restricting block modification abilities for all non-admins " , true ) ;
2017-12-23 04:07:36 +00:00
2022-11-13 11:49:58 +00:00
List < ? extends Player > list = server . getOnlinePlayers ( ) . stream ( ) . filter ( player - >
! plugin . al . isAdmin ( player ) ) . toList ( ) ;
2017-12-23 04:07:36 +00:00
2022-11-13 11:49:58 +00:00
list . forEach ( player - >
{
plugin . pl . getPlayer ( player ) . setEditBlocked ( true ) ;
2023-03-28 05:23:34 +00:00
msgNew ( player , " <red>Your block modification abilities have been restricted. " ) ;
2022-11-13 11:49:58 +00:00
} ) ;
2023-03-28 05:23:34 +00:00
msgNew ( " Restricted block modification abilities for <count> player<plural>. " ,
Placeholder . unparsed ( " count " , String . valueOf ( list . size ( ) ) ) ,
Placeholder . unparsed ( " plural " , list . size ( ) ! = 1 ? " s " : " " ) ) ;
2022-11-13 11:49:58 +00:00
}
default - > Optional . ofNullable ( getPlayer ( args [ 0 ] ) ) . ifPresentOrElse ( player - >
{
FPlayer fPlayer = plugin . pl . getPlayer ( player ) ;
if ( fPlayer . isEditBlocked ( ) )
{
FUtil . adminAction ( sender . getName ( ) , " Restoring block modification abilities for " + player . getName ( ) , true ) ;
fPlayer . setEditBlocked ( false ) ;
2023-03-28 05:23:34 +00:00
msgNew ( " Restored block modification abilities for <player>. " , Placeholder . unparsed ( " player " , player . getName ( ) ) ) ;
msgNew ( player , " <green>Your block modification abilities have been restored. " ) ;
2023-05-04 01:38:51 +00:00
} else
2022-11-13 11:49:58 +00:00
{
if ( plugin . al . isAdmin ( player ) )
{
2023-03-28 05:23:34 +00:00
msgNew ( " <red><player> is an admin, and as such cannot have their block modification abilities restricted. " , Placeholder . unparsed ( " player " , player . getName ( ) ) ) ;
2023-05-04 01:38:51 +00:00
} else
2022-11-13 11:49:58 +00:00
{
FUtil . adminAction ( sender . getName ( ) , " Restricting block modification abilities for " + player . getName ( ) , true ) ;
fPlayer . setEditBlocked ( true ) ;
2023-03-28 05:23:34 +00:00
msgNew ( " Restricted block modification abilities for <player>. " , Placeholder . unparsed ( " player " , player . getName ( ) ) ) ;
msgNew ( player , " <red>Your block modification abilities have been restricted. " ) ;
2022-11-13 11:49:58 +00:00
plugin . pul . logPunishment ( new Punishment ( player . getName ( ) , FUtil . getIp ( player ) ,
sender . getName ( ) , PunishmentType . BLOCKEDIT , null ) ) ;
}
}
} , ( ) - > msg ( PLAYER_NOT_FOUND ) ) ;
2017-10-13 18:35:11 +00:00
}
2017-12-23 04:07:36 +00:00
2017-10-13 18:35:11 +00:00
return true ;
2023-05-04 01:38:51 +00:00
} else
2017-12-23 04:07:36 +00:00
{
2022-11-13 11:49:58 +00:00
return false ;
2017-10-13 18:35:11 +00:00
}
}
2020-08-15 16:35:48 +00:00
}