Mirror von
https://github.com/IntellectualSites/FastAsyncWorldEdit.git
synchronisiert 2024-12-24 18:10:08 +01:00
Fix suggestions on Bukkit for good
Dieser Commit ist enthalten in:
Ursprung
3a5170a0e8
Commit
76b608f90b
@ -335,7 +335,7 @@ public class WorldEditPlugin extends JavaPlugin implements TabCompleter {
|
|||||||
// code of WorldEdit expects it
|
// code of WorldEdit expects it
|
||||||
String[] split = new String[args.length + 1];
|
String[] split = new String[args.length + 1];
|
||||||
System.arraycopy(args, 0, split, 1, args.length);
|
System.arraycopy(args, 0, split, 1, args.length);
|
||||||
split[0] = "/" + cmd.getName();
|
split[0] = "/" + commandLabel;
|
||||||
|
|
||||||
CommandEvent event = new CommandEvent(wrapCommandSender(sender), Joiner.on(" ").join(split));
|
CommandEvent event = new CommandEvent(wrapCommandSender(sender), Joiner.on(" ").join(split));
|
||||||
getWorldEdit().getEventBus().post(event);
|
getWorldEdit().getEventBus().post(event);
|
||||||
@ -349,7 +349,7 @@ public class WorldEditPlugin extends JavaPlugin implements TabCompleter {
|
|||||||
// code of WorldEdit expects it
|
// code of WorldEdit expects it
|
||||||
String[] split = new String[args.length + 1];
|
String[] split = new String[args.length + 1];
|
||||||
System.arraycopy(args, 0, split, 1, args.length);
|
System.arraycopy(args, 0, split, 1, args.length);
|
||||||
split[0] = "/" + cmd.getName();
|
split[0] = "/" + commandLabel;
|
||||||
|
|
||||||
String arguments = Joiner.on(" ").join(split);
|
String arguments = Joiner.on(" ").join(split);
|
||||||
CommandSuggestionEvent event = new CommandSuggestionEvent(wrapCommandSender(sender), arguments);
|
CommandSuggestionEvent event = new CommandSuggestionEvent(wrapCommandSender(sender), arguments);
|
||||||
|
@ -21,7 +21,6 @@ package com.sk89q.worldedit.internal.command;
|
|||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.google.common.collect.Iterables;
|
import com.google.common.collect.Iterables;
|
||||||
import com.google.common.collect.Iterators;
|
|
||||||
import com.sk89q.worldedit.extension.platform.PlatformCommandManager;
|
import com.sk89q.worldedit.extension.platform.PlatformCommandManager;
|
||||||
import com.sk89q.worldedit.internal.util.Substring;
|
import com.sk89q.worldedit.internal.util.Substring;
|
||||||
import com.sk89q.worldedit.util.formatting.text.Component;
|
import com.sk89q.worldedit.util.formatting.text.Component;
|
||||||
@ -70,18 +69,29 @@ public class CommandUtil {
|
|||||||
CommandArgParser.spaceSplit(arguments)
|
CommandArgParser.spaceSplit(arguments)
|
||||||
);
|
);
|
||||||
return suggestions.stream()
|
return suggestions.stream()
|
||||||
|
// Re-map suggestions to only operate on the last non-quoted word
|
||||||
|
.map(CommandUtil::onlyOnLastQuotedWord)
|
||||||
.map(suggestion -> CommandUtil.suggestLast(lastArg, suggestion))
|
.map(suggestion -> CommandUtil.suggestLast(lastArg, suggestion))
|
||||||
.filter(Optional::isPresent)
|
.filter(Optional::isPresent)
|
||||||
.map(Optional::get)
|
.map(Optional::get)
|
||||||
.collect(toList());
|
.collect(toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Substring onlyOnLastQuotedWord(Substring suggestion) {
|
||||||
|
String substr = suggestion.getSubstring();
|
||||||
|
int sp = substr.lastIndexOf(' ');
|
||||||
|
if (sp < 0) {
|
||||||
|
return suggestion;
|
||||||
|
}
|
||||||
|
return Substring.wrap(substr.substring(sp + 1), suggestion.getStart() + sp + 1, suggestion.getEnd());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given the last word of a command, mutate the suggestion to replace the last word, if
|
* Given the last word of a command, mutate the suggestion to replace the last word, if
|
||||||
* possible.
|
* possible.
|
||||||
*/
|
*/
|
||||||
private static Optional<String> suggestLast(Substring last, Substring suggestion) {
|
private static Optional<String> suggestLast(Substring last, Substring suggestion) {
|
||||||
if (suggestion.getStart() == last.getEnd()) {
|
if (suggestion.getStart() == last.getEnd() && !last.getSubstring().equals("\"")) {
|
||||||
// this suggestion is for the next argument.
|
// this suggestion is for the next argument.
|
||||||
if (last.getSubstring().isEmpty()) {
|
if (last.getSubstring().isEmpty()) {
|
||||||
return Optional.of(suggestion.getSubstring());
|
return Optional.of(suggestion.getSubstring());
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren