SteamWar/SpigotCore
Archiviert
13
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 org.bukkit.Bukkit;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.function.Function; import java.util.function.Function;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.stream.Collectors; 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) { private void generate(Argument<?>[] arguments, int length, int startPosition, Argument<?>[] result) {
if (length == 0) { 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; return;
} }
for (int i = startPosition; i <= arguments.length - length; i++) { 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) +
'}';
}
} }