001package fr.aumgn.bukkitutils.command.arg.impl; 002 003import org.bukkit.command.CommandSender; 004 005import fr.aumgn.bukkitutils.command.arg.SenderArg; 006import fr.aumgn.bukkitutils.command.exception.CommandError; 007 008public abstract class AsbtractSenderArg<V> 009 extends AbstractCommandArg<V> implements SenderArg<V> { 010 011 public AsbtractSenderArg(String string) { 012 super(string); 013 } 014 015 protected abstract V defaultFor(CommandSender sender); 016 017 protected abstract String missingPermOtherMessage(String permission); 018 019 @Override 020 public V valueOr(CommandSender sender) { 021 if (string != null) { 022 return value(); 023 } 024 025 return defaultFor(sender); 026 } 027 028 @Override 029 public V valueWithPermOr(String permission, CommandSender sender) { 030 if (string != null) { 031 if (!sender.hasPermission(permission)) { 032 throw new CommandError(missingPermOtherMessage(permission)); 033 } 034 035 return value(); 036 } 037 038 return defaultFor(sender); 039 } 040}