diff --git a/src/de/steamwar/command/AbstractTypeMapper.java b/src/de/steamwar/command/AbstractTypeMapper.java index e5735fe..a9c326c 100644 --- a/src/de/steamwar/command/AbstractTypeMapper.java +++ b/src/de/steamwar/command/AbstractTypeMapper.java @@ -1,6 +1,6 @@ package de.steamwar.command; -import java.util.List; +import java.util.Collection; public interface AbstractTypeMapper { /** @@ -8,5 +8,5 @@ public interface AbstractTypeMapper { */ T map(K sender, String[] previousArguments, String s); - List tabCompletes(K sender, String[] previousArguments, String s); + Collection tabCompletes(K sender, String[] previousArguments, String s); } diff --git a/src/de/steamwar/command/CommandPart.java b/src/de/steamwar/command/CommandPart.java index 6a8ff4b..8a00c14 100644 --- a/src/de/steamwar/command/CommandPart.java +++ b/src/de/steamwar/command/CommandPart.java @@ -5,6 +5,7 @@ import lombok.Setter; import java.lang.reflect.Array; import java.util.Arrays; +import java.util.Collection; import java.util.List; class CommandPart { @@ -138,7 +139,7 @@ class CommandPart { return; } } - List strings = typeMapper.tabCompletes(sender, Arrays.copyOf(args, args.length - 1), args[args.length - 1]); + Collection strings = typeMapper.tabCompletes(sender, Arrays.copyOf(args, args.length - 1), args[args.length - 1]); if (strings != null) { current.addAll(strings); } @@ -157,7 +158,7 @@ class CommandPart { return; } - List strings = typeMapper.tabCompletes(sender, Arrays.copyOf(args, startIndex), args[startIndex]); + Collection strings = typeMapper.tabCompletes(sender, Arrays.copyOf(args, startIndex), args[startIndex]); if (strings != null) { current.addAll(strings); } diff --git a/src/de/steamwar/command/SWCommandUtils.java b/src/de/steamwar/command/SWCommandUtils.java index 4a6088a..25bb3a3 100644 --- a/src/de/steamwar/command/SWCommandUtils.java +++ b/src/de/steamwar/command/SWCommandUtils.java @@ -9,7 +9,6 @@ import java.lang.reflect.Parameter; import java.util.*; import java.util.function.BiFunction; import java.util.function.Function; -import java.util.stream.Collectors; @UtilityClass public class SWCommandUtils { @@ -198,20 +197,19 @@ public class SWCommandUtils { } public static AbstractTypeMapper> createEnumMapper(Class> enumClass) { - Enum[] enums = enumClass.getEnumConstants(); - List strings = Arrays.stream(enums).map(Enum::name).map(String::toLowerCase).collect(Collectors.toList()); + Map> enumMap = new HashMap<>(); + for (Enum e : enumClass.getEnumConstants()) { + enumMap.put(e.name(), e); + } return new AbstractTypeMapper>() { @Override public Enum map(Object commandSender, String[] previousArguments, String s) { - for (Enum e : enums) { - if (e.name().equalsIgnoreCase(s)) return e; - } - return null; + return enumMap.get(s); } @Override - public List tabCompletes(Object commandSender, String[] previousArguments, String s) { - return strings; + public Collection tabCompletes(Object commandSender, String[] previousArguments, String s) { + return enumMap.keySet(); } }; }