001package fr.aumgn.bukkitutils.command.arg.impl; 002 003import java.util.Collections; 004import java.util.List; 005 006import org.bukkit.command.CommandSender; 007 008import fr.aumgn.bukkitutils.command.arg.MatchingArg; 009import fr.aumgn.bukkitutils.command.arg.SenderArg; 010import fr.aumgn.bukkitutils.command.arg.SenderMatchingArg; 011import fr.aumgn.bukkitutils.command.exception.CommandError; 012 013public abstract class AbstractSenderMatchingArg<V> 014 extends AsbtractSenderArg<V> 015 implements MatchingArg<V>, SenderArg<V>, SenderMatchingArg<V> { 016 017 public AbstractSenderMatchingArg(String string) { 018 super(string); 019 } 020 021 @Override 022 public List<V> matchOr(V def) { 023 if (string == null) { 024 return Collections.singletonList(def); 025 } 026 027 return match(); 028 } 029 030 @Override 031 public List<V> matchOr(List<V> def) { 032 if (string == null) { 033 return def; 034 } 035 036 return match(); 037 } 038 039 @Override 040 public List<V> matchOr(CommandSender sender) { 041 if (string != null) { 042 return match(); 043 } 044 045 return Collections.singletonList(defaultFor(sender)); 046 } 047 048 @Override 049 public List<V> matchWithPermOr(String permission, CommandSender sender) { 050 if (string != null) { 051 if (!sender.hasPermission(permission)) { 052 throw new CommandError(missingPermOtherMessage(permission)); 053 } 054 055 return match(); 056 } 057 058 return Collections.singletonList(defaultFor(sender)); 059 } 060}