2022-05-08 23:34:03 +00:00
package dev.plex.command.sub ;
2024-03-06 11:28:16 +00:00
import com.google.common.collect.Lists ;
2022-05-08 23:34:03 +00:00
import dev.plex.Guilds ;
2024-03-06 11:28:16 +00:00
import dev.plex.command.SubCommand ;
2022-05-08 23:34:03 +00:00
import dev.plex.command.annotation.CommandParameters ;
import dev.plex.command.annotation.CommandPermissions ;
import dev.plex.command.source.RequiredCommandSource ;
2024-03-06 11:28:16 +00:00
import dev.plex.guild.GuildMember ;
2022-05-08 23:34:03 +00:00
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 ;
2024-03-06 11:28:16 +00:00
import java.util.Collections ;
import java.util.List ;
@CommandParameters ( name = " warp " , usage = " /guild <command> [name] " , description = " List existing warps under your guild or warp to a specified guild warp location " )
2023-09-08 22:40:39 +00:00
@CommandPermissions ( source = RequiredCommandSource . IN_GAME , permission = " plex.guilds.warp " )
2024-03-06 11:28:16 +00:00
public class WarpSubCommand extends SubCommand
2022-05-08 23:34:03 +00:00
{
@Override
2024-03-06 11:28:16 +00:00
public Component run ( CommandSender sender , Player player , String [ ] args )
2022-05-08 23:34:03 +00:00
{
assert player ! = null ;
2024-03-06 11:28:16 +00:00
GuildMember member = Guilds . get ( ) . getMemberData ( ) . getMember ( player ) . orElseThrow ( ) ;
member . getGuild ( ) . ifPresentOrElse ( guild - >
{
if ( args . length = = 0 )
{
send ( player , guild . getWarps ( ) ) ;
return ;
}
String name = StringUtils . join ( args , " " ) . toLowerCase ( ) ;
guild . getWarp ( name ) . ifPresentOrElse ( warp - >
{
player . teleportAsync ( warp . getLocation ( ) ) ;
send ( player , messageComponent ( " guildWarpSuccess " , name ) ) ;
} ,
( ) - > send ( player , messageComponent ( " guildWarpNotFound " , name ) ) ) ;
} ,
( ) - > send ( player , messageComponent ( " guildNotFound " ) ) ) ;
2022-05-08 23:34:03 +00:00
return null ;
}
2024-01-20 21:10:23 +00:00
@Override
2024-03-06 11:28:16 +00:00
public @NotNull List < String > smartTabComplete ( @NotNull CommandSender sender , @NotNull String s , @NotNull String [ ] args ) throws IllegalArgumentException
2024-01-20 21:10:23 +00:00
{
2024-03-06 11:28:16 +00:00
if ( args . length = = 1 & & silentCheckPermission ( sender , getPermission ( ) ) )
{
GuildMember member = Guilds . get ( ) . getMemberData ( ) . getMember ( ( Player ) sender ) . orElseThrow ( ) ;
List < String > names = Lists . newArrayList ( ) ;
member . getGuild ( ) . ifPresent ( guild - > names . addAll ( guild . getWarpNames ( ) ) ) ;
return names ;
}
2024-01-20 21:10:23 +00:00
return Collections . emptyList ( ) ;
}
2022-05-08 23:34:03 +00:00
}