2022-05-08 23:34:03 +00:00
package dev.plex.command.sub ;
import dev.plex.Guilds ;
import dev.plex.command.PlexCommand ;
import dev.plex.command.annotation.CommandParameters ;
import dev.plex.command.annotation.CommandPermissions ;
import dev.plex.command.source.RequiredCommandSource ;
import dev.plex.rank.enums.Rank ;
import dev.plex.util.CustomLocation ;
import dev.plex.util.minimessage.SafeMiniMessage ;
import net.kyori.adventure.text.Component ;
2022-06-14 04:14:06 +00:00
import org.apache.commons.lang3.StringUtils ;
2022-05-08 23:34:03 +00:00
import org.bukkit.command.CommandSender ;
import org.bukkit.entity.Player ;
import org.jetbrains.annotations.NotNull ;
import org.jetbrains.annotations.Nullable ;
2022-05-08 23:59:03 +00:00
import java.util.Locale ;
import java.util.regex.Pattern ;
2022-05-09 00:52:08 +00:00
@CommandParameters ( name = " setwarp " , aliases = " makewarp,createwarp " , usage = " /guild <command> <name> " , description = " Creates a new warp at player's location with a specified name " )
2022-05-08 23:34:03 +00:00
@CommandPermissions ( level = Rank . OP , source = RequiredCommandSource . IN_GAME , permission = " plex.guilds.setwarp " )
public class SetWarpSubCommand extends PlexCommand
{
2022-05-08 23:59:03 +00:00
2022-05-08 23:34:03 +00:00
public SetWarpSubCommand ( )
{
super ( false ) ;
}
@Override
protected Component execute ( @NotNull CommandSender commandSender , @Nullable Player player , @NotNull String [ ] args )
{
if ( args . length = = 0 )
{
return usage ( ) ;
}
assert player ! = null ;
Guilds . get ( ) . getGuildHolder ( ) . getGuild ( player . getUniqueId ( ) ) . ifPresentOrElse ( guild - > {
2022-05-09 00:15:22 +00:00
if ( ! guild . getOwner ( ) . getUuid ( ) . equals ( player . getUniqueId ( ) ) )
2022-05-08 23:34:03 +00:00
{
send ( player , messageComponent ( " guildNotOwner " ) ) ;
return ;
}
2022-05-08 23:59:03 +00:00
String warpName = StringUtils . join ( args , " " ) ;
if ( warpName . length ( ) > 16 )
2022-05-08 23:34:03 +00:00
{
send ( player , mmString ( " <red>The max length of a warp name is 16 characters! " ) ) ;
return ;
}
2022-05-08 23:59:03 +00:00
if ( guild . getWarps ( ) . containsKey ( warpName . toLowerCase ( ) ) )
{
send ( player , messageComponent ( " guildWarpExists " , warpName ) ) ;
return ;
}
if ( ! StringUtils . isAlphanumericSpace ( warpName . toLowerCase ( Locale . ROOT ) ) )
2022-05-08 23:34:03 +00:00
{
2022-05-08 23:59:03 +00:00
send ( player , messageComponent ( " guildWarpAlphanumeric " ) ) ;
2022-05-08 23:34:03 +00:00
return ;
}
2022-05-08 23:59:03 +00:00
guild . getWarps ( ) . put ( warpName . toLowerCase ( ) , CustomLocation . fromLocation ( player . getLocation ( ) ) ) ;
send ( player , messageComponent ( " guildWarpCreated " , warpName ) ) ;
2022-05-08 23:34:03 +00:00
} , ( ) - > send ( player , messageComponent ( " guildNotFound " ) ) ) ;
return null ;
}
}