12
0

Fix Argument.ArgumentBuilder

Dieser Commit ist enthalten in:
jojo 2020-12-28 17:04:28 +01:00
Ursprung 7a199d31d1
Commit 76fe648e85

Datei anzeigen

@ -23,10 +23,7 @@ package de.steamwar.command;
import org.bukkit.Bukkit;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.*;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@ -100,9 +97,33 @@ public class Argument<T> {
}
}
public void generate(int n, Argument<?>[] elements) {
if (n == 1 || n == 0) {
options.add(Arrays.copyOf(elements, elements.length));
return;
}
for (int i = 0; i < n - 1; i++) {
generate(n - 1, elements);
if (n % 2 == 0) {
swap(elements, i, n - 1);
} else {
swap(elements, 0, n - 1);
}
}
generate(n - 1, elements);
}
private void swap(Argument<?>[] elements, int a, int b) {
Argument<?> tmp = elements[a];
elements[a] = elements[b];
elements[b] = tmp;
}
private void generate(Argument<?>[] arguments, int length, int startPosition, Argument<?>[] result) {
if (length == 0) {
options.add(Arrays.copyOf(result, result.length));
Set<Argument<?>> argumentSet = new HashSet<>(Arrays.asList(result));
if (argumentSet.size() != result.length) return;
generate(result.length, Arrays.copyOf(result, result.length));
return;
}
for (int i = startPosition; i <= arguments.length - length; i++) {
@ -131,4 +152,11 @@ public class Argument<T> {
}
@Override
public String toString() {
return "Argument{" +
"tabCompletes=" + Arrays.toString(tabCompletes) +
'}';
}
}