Fix Argument.ArgumentBuilder
Dieser Commit ist enthalten in:
Ursprung
7a199d31d1
Commit
76fe648e85
@ -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) +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren