Skip to content

Commit

Permalink
Adds resolver to BukkitCommandSender for unknown senders.
Browse files Browse the repository at this point in the history
  • Loading branch information
469512345 committed Jun 28, 2023
1 parent 55fd6ff commit 276d18a
Showing 1 changed file with 39 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,45 @@
package dev.jorel.commandapi.commandsenders;

import dev.jorel.commandapi.wrappers.NativeProxyCommandSender;
import org.bukkit.command.BlockCommandSender;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.command.ProxiedCommandSender;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.Nullable;

public interface BukkitCommandSender<Source extends CommandSender> extends AbstractCommandSender<Source> {

/**
* This method will attempt to return the relevant wrapped command sender for a given bukkit command sender. If not
* appropriate wrapper is found it will return null.
*
* @param source bukkit command sender
*
* @return wrapper command sender
*/
static @Nullable BukkitCommandSender<?> fromUnknownCommandSender(CommandSender source) {
if(source instanceof BlockCommandSender blockCommandSender) {
return new BukkitBlockCommandSender(blockCommandSender);
}
if(source instanceof ConsoleCommandSender consoleCommandSender) {
return new BukkitConsoleCommandSender(consoleCommandSender);
}
//Player needs to go before entity as player extends entity
if(source instanceof Player player) {
return new BukkitPlayer(player);
}
if(source instanceof Entity entity) {
return new BukkitEntity(entity);
}
if(source instanceof NativeProxyCommandSender nativeProxyCommandSender) {
return new BukkitNativeProxyCommandSender(nativeProxyCommandSender);
}
if(source instanceof ProxiedCommandSender proxiedCommandSender) {
return new BukkitProxiedCommandSender(proxiedCommandSender);
}
return null;
}

}

0 comments on commit 276d18a

Please sign in to comment.