mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2025-07-05 04:26:42 +00:00
Add comprehensive suggestions to many commands.
All patterns now have suggestions, including recursive patterns. Suggestions will suggest blocks and block states. All masks now have suggestions, though mask intersections are not yet supported due to issues with quotes strings. EntityRemover and ItemFactory now also have completions, as well as all RegistryConverters (though I am unsure how many are actually used). Also use paper's AsyncTabComplete event, if available.
This commit is contained in:
@ -20,7 +20,6 @@
|
||||
package com.sk89q.worldedit.internal.registry;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static org.enginehub.piston.converter.SuggestionHelper.limitByPrefix;
|
||||
|
||||
import com.sk89q.worldedit.WorldEdit;
|
||||
import com.sk89q.worldedit.extension.input.InputParseException;
|
||||
@ -28,11 +27,9 @@ import com.sk89q.worldedit.extension.input.NoMatchException;
|
||||
import com.sk89q.worldedit.extension.input.ParserContext;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* An abstract implementation of a factory for internal usage.
|
||||
@ -81,7 +78,9 @@ public abstract class AbstractFactory<E> {
|
||||
}
|
||||
|
||||
public List<String> getSuggestions(String input) {
|
||||
return limitByPrefix(parsers.stream().flatMap(parser -> parser.getSuggestions(input)), input);
|
||||
return parsers.stream().flatMap(
|
||||
p -> p.getSuggestions(input)
|
||||
).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -23,8 +23,6 @@ import com.sk89q.worldedit.WorldEdit;
|
||||
import com.sk89q.worldedit.extension.input.InputParseException;
|
||||
import com.sk89q.worldedit.extension.input.ParserContext;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
@ -37,7 +35,7 @@ public abstract class InputParser<E> {
|
||||
|
||||
protected final WorldEdit worldEdit;
|
||||
|
||||
public InputParser(WorldEdit worldEdit) {
|
||||
protected InputParser(WorldEdit worldEdit) {
|
||||
this.worldEdit = worldEdit;
|
||||
}
|
||||
|
||||
|
@ -19,12 +19,12 @@
|
||||
|
||||
package com.sk89q.worldedit.internal.registry;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.sk89q.worldedit.WorldEdit;
|
||||
import com.sk89q.worldedit.extension.input.InputParseException;
|
||||
import com.sk89q.worldedit.extension.input.ParserContext;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
@ -34,7 +34,7 @@ import java.util.stream.Stream;
|
||||
*/
|
||||
public abstract class SimpleInputParser<E> extends InputParser<E> {
|
||||
|
||||
public SimpleInputParser(WorldEdit worldEdit) {
|
||||
protected SimpleInputParser(WorldEdit worldEdit) {
|
||||
super(worldEdit);
|
||||
}
|
||||
|
||||
@ -67,6 +67,15 @@ public abstract class SimpleInputParser<E> extends InputParser<E> {
|
||||
|
||||
@Override
|
||||
public Stream<String> getSuggestions(String input) {
|
||||
return Stream.of(getPrimaryMatcher());
|
||||
if (input.isEmpty()) {
|
||||
return Stream.of(getPrimaryMatcher());
|
||||
}
|
||||
final String prefix = input.toLowerCase(Locale.ROOT);
|
||||
for (String alias : getMatchedAliases()) {
|
||||
if (alias.startsWith(prefix)) {
|
||||
return Stream.of(alias);
|
||||
}
|
||||
}
|
||||
return Stream.empty();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user