package pluginbase.bukkit.minecraft; import pluginbase.minecraft.BasePlayer; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; /** * An abstract implementation of BasePlayer for Bukkit. * <p/> * This will be implemented separately for each CommandSender type as required. * * @param <S> The implementation of CommandSender used. Should be implemented as non-generic in the concrete * implementation of AbstractBukkitCommandSender. */ abstract class AbstractBukkitCommandSender<S extends CommandSender> extends BasePlayer { @NotNull private final S sender; AbstractBukkitCommandSender(@NotNull final S sender) { this.sender = sender; } /** * Gets the sender represented by this BasePlayer. * * @return the sender represented by this BasePlayer. */ @NotNull protected S getSender() { return this.sender; } /** {@inheritDoc} */ @Override @NotNull public String getName() { return getSender().getName(); } /** {@inheritDoc} */ @Override public boolean hasPermission(@NotNull final String perm) { return getSender().hasPermission(perm); } /** {@inheritDoc} */ @Override public void sendMessage(@NotNull final String message) { getSender().sendMessage(message); } }