2021-01-03 07:21:15 +00:00
package dev.plex.command.impl ;
2020-11-06 03:50:16 +00:00
2022-01-04 03:04:39 +00:00
import com.google.common.collect.ImmutableList ;
import dev.plex.command.PlexCommand ;
2021-01-03 07:21:15 +00:00
import dev.plex.command.annotation.CommandParameters ;
import dev.plex.command.annotation.CommandPermissions ;
import dev.plex.command.exception.CommandFailException ;
import dev.plex.command.source.RequiredCommandSource ;
2022-08-02 12:08:52 +00:00
import dev.plex.event.GameModeUpdateEvent ;
2021-01-03 07:21:15 +00:00
import dev.plex.util.PlexUtils ;
2022-01-27 09:00:50 +00:00
import net.kyori.adventure.text.Component ;
2020-11-06 03:50:16 +00:00
import org.bukkit.Bukkit ;
import org.bukkit.GameMode ;
2022-01-27 09:00:50 +00:00
import org.bukkit.command.CommandSender ;
2020-11-06 03:50:16 +00:00
import org.bukkit.entity.Player ;
2022-01-27 09:00:50 +00:00
import org.jetbrains.annotations.NotNull ;
2022-02-04 04:49:05 +00:00
import org.jetbrains.annotations.Nullable ;
2020-11-06 03:50:16 +00:00
2023-03-08 20:26:10 +00:00
import java.util.List ;
2023-08-25 11:07:56 +00:00
@CommandPermissions ( permission = " plex.gamemode.creative " , source = RequiredCommandSource . ANY )
2022-04-24 06:05:21 +00:00
@CommandParameters ( name = " creative " , aliases = " gmc,egmc,ecreative,eecreative,creativemode,ecreativemode " , description = " Set your own or another player's gamemode to creative mode " )
2020-11-06 03:50:16 +00:00
public class CreativeCMD extends PlexCommand
{
@Override
2022-02-04 04:49:05 +00:00
protected Component execute ( @NotNull CommandSender sender , @Nullable Player playerSender , String [ ] args )
2020-11-06 03:50:16 +00:00
{
if ( args . length = = 0 )
{
2022-01-27 09:00:50 +00:00
if ( isConsole ( sender ) )
2020-11-06 03:50:16 +00:00
{
2022-11-26 10:24:38 +00:00
throw new CommandFailException ( messageString ( " consoleMustDefinePlayer " ) ) ;
2020-11-06 03:50:16 +00:00
}
2022-02-14 05:55:50 +00:00
if ( ! ( playerSender = = null ) )
{
Bukkit . getServer ( ) . getPluginManager ( ) . callEvent ( new GameModeUpdateEvent ( sender , playerSender . getPlayer ( ) , GameMode . CREATIVE ) ) ;
}
return null ;
2020-11-06 03:50:16 +00:00
}
2023-08-25 11:07:56 +00:00
checkPermission ( sender , " plex.gamemode.creative.others " ) ;
if ( args [ 0 ] . equals ( " -a " ) )
2020-11-06 03:50:16 +00:00
{
2023-08-25 11:07:56 +00:00
for ( Player targetPlayer : Bukkit . getServer ( ) . getOnlinePlayers ( ) )
2020-11-06 03:50:16 +00:00
{
2023-08-25 11:07:56 +00:00
targetPlayer . setGameMode ( GameMode . CREATIVE ) ;
messageComponent ( " gameModeSetTo " , " creative " ) ;
2020-11-06 03:50:16 +00:00
}
2023-08-25 11:07:56 +00:00
PlexUtils . broadcast ( messageComponent ( " setEveryoneGameMode " , sender . getName ( ) , " creative " ) ) ;
2022-02-14 05:55:50 +00:00
return null ;
2020-11-06 03:50:16 +00:00
}
2023-08-25 11:07:56 +00:00
Player nPlayer = getNonNullPlayer ( args [ 0 ] ) ;
Bukkit . getServer ( ) . getPluginManager ( ) . callEvent ( new GameModeUpdateEvent ( sender , nPlayer , GameMode . CREATIVE ) ) ;
2022-01-27 09:00:50 +00:00
return null ;
2020-11-06 03:50:16 +00:00
}
@Override
2022-01-27 09:00:50 +00:00
public @NotNull List < String > tabComplete ( @NotNull CommandSender sender , @NotNull String alias , @NotNull String [ ] args ) throws IllegalArgumentException
2020-11-06 03:50:16 +00:00
{
2023-08-25 11:07:56 +00:00
if ( silentCheckPermission ( sender , " plex.gamemode.creative.others " ) )
2020-11-06 03:50:16 +00:00
{
return PlexUtils . getPlayerNameList ( ) ;
}
2020-11-06 04:39:27 +00:00
return ImmutableList . of ( ) ;
2020-11-06 03:50:16 +00:00
}
}