From d56150a8b105f5ad63a8c3a21b6833f388a83225 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Sun, 15 Jan 2023 20:45:29 +0100 Subject: [PATCH] Fix one weird behaviour --- .../steamwar/command/PreviousArguments.java | 23 +++++++++++++++++++ src/de/steamwar/command/SWCommandUtils.java | 5 ++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/de/steamwar/command/PreviousArguments.java b/src/de/steamwar/command/PreviousArguments.java index 24701c0..e9851c0 100644 --- a/src/de/steamwar/command/PreviousArguments.java +++ b/src/de/steamwar/command/PreviousArguments.java @@ -19,6 +19,10 @@ package de.steamwar.command; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + public class PreviousArguments { public final String[] userArgs; @@ -36,4 +40,23 @@ public class PreviousArguments { public T getMappedArg(int index) { return (T) mappedArgs[mappedArgs.length - index - 1]; } + + public Optional getFirst(Class clazz) { + for (Object o : mappedArgs) { + if (clazz.isInstance(o)) { + return Optional.of((T) o); + } + } + return Optional.empty(); + } + + public List getAll(Class clazz) { + List list = new ArrayList<>(); + for (Object o : mappedArgs) { + if (clazz.isInstance(o)) { + list.add((T) o); + } + } + return list; + } } diff --git a/src/de/steamwar/command/SWCommandUtils.java b/src/de/steamwar/command/SWCommandUtils.java index 5bedbe6..32b7fcc 100644 --- a/src/de/steamwar/command/SWCommandUtils.java +++ b/src/de/steamwar/command/SWCommandUtils.java @@ -23,7 +23,6 @@ import lombok.Getter; import lombok.experimental.UtilityClass; import java.lang.annotation.Annotation; -import java.lang.reflect.Array; import java.lang.reflect.Method; import java.lang.reflect.Parameter; import java.util.*; @@ -42,12 +41,12 @@ public class SWCommandUtils { private SWTypeMapperCreator swTypeMapperCreator = (mapper, tabCompleter) -> new AbstractTypeMapper() { @Override - public Object map(Object sender, String[] previousArguments, String s) { + public Object map(Object sender, PreviousArguments previousArguments, String s) { return mapper.apply(s); } @Override - public Collection tabCompletes(Object sender, String[] previousArguments, String s) { + public Collection tabCompletes(Object sender, PreviousArguments previousArguments, String s) { return ((BiFunction>) tabCompleter).apply(sender, s); } };