geforkt von Mirrors/FastAsyncWorldEdit
Improve fullycopy pattern parsing
- Don't attempt ClipboardFormats#loadAllFromInput if the user is typing #copy or #clipboard to avoid needless "File dialogs are not supported in your environment." message
Dieser Commit ist enthalten in:
Ursprung
abaa98d2a9
Commit
f405994346
@ -18,6 +18,7 @@ import javax.annotation.Nonnull;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
public class RandomFullClipboardPatternParser extends RichParser<Pattern> {
|
public class RandomFullClipboardPatternParser extends RichParser<Pattern> {
|
||||||
@ -34,6 +35,16 @@ public class RandomFullClipboardPatternParser extends RichParser<Pattern> {
|
|||||||
@Override
|
@Override
|
||||||
protected Stream<String> getSuggestions(String argumentInput, int index) {
|
protected Stream<String> getSuggestions(String argumentInput, int index) {
|
||||||
switch (index) {
|
switch (index) {
|
||||||
|
case 0:
|
||||||
|
if (argumentInput.equals("#") || argumentInput.equals("#c")) {
|
||||||
|
return Stream.of("#copy", "#clipboard");
|
||||||
|
} else if ("#copy".startsWith(argumentInput.toUpperCase(Locale.ROOT))) {
|
||||||
|
return Stream.of("#copy");
|
||||||
|
} else if ("#clipboard".startsWith(argumentInput.toUpperCase(Locale.ROOT))) {
|
||||||
|
return Stream.of("#clipboard");
|
||||||
|
} else {
|
||||||
|
return Stream.empty();
|
||||||
|
}
|
||||||
case 1:
|
case 1:
|
||||||
case 2:
|
case 2:
|
||||||
return SuggestionHelper.suggestBoolean(argumentInput);
|
return SuggestionHelper.suggestBoolean(argumentInput);
|
||||||
@ -54,16 +65,14 @@ public class RandomFullClipboardPatternParser extends RichParser<Pattern> {
|
|||||||
boolean rotate = arguments.length >= 2 && Boolean.getBoolean(arguments[1]);
|
boolean rotate = arguments.length >= 2 && Boolean.getBoolean(arguments[1]);
|
||||||
boolean flip = arguments.length == 3 && Boolean.getBoolean(arguments[2]);
|
boolean flip = arguments.length == 3 && Boolean.getBoolean(arguments[2]);
|
||||||
List<ClipboardHolder> clipboards;
|
List<ClipboardHolder> clipboards;
|
||||||
switch (arguments[0].toLowerCase()) {
|
if ("#copy".startsWith(arguments[0].toUpperCase(Locale.ROOT)) ||
|
||||||
case "#copy":
|
"#clipboard".startsWith(arguments[0].toUpperCase(Locale.ROOT))) {
|
||||||
case "#clipboard":
|
|
||||||
ClipboardHolder clipboard = context.requireSession().getExistingClipboard();
|
ClipboardHolder clipboard = context.requireSession().getExistingClipboard();
|
||||||
if (clipboard == null) {
|
if (clipboard == null) {
|
||||||
throw new InputParseException(Caption.of("fawe.error.parse.no-clipboard", getPrefix()));
|
throw new InputParseException(Caption.of("fawe.error.parse.no-clipboard", getPrefix()));
|
||||||
}
|
}
|
||||||
clipboards = Collections.singletonList(clipboard);
|
clipboards = Collections.singletonList(clipboard);
|
||||||
break;
|
} else {
|
||||||
default:
|
|
||||||
Actor player = context.requireActor();
|
Actor player = context.requireActor();
|
||||||
MultiClipboardHolder multi = ClipboardFormats.loadAllFromInput(player,
|
MultiClipboardHolder multi = ClipboardFormats.loadAllFromInput(player,
|
||||||
arguments[0], ClipboardFormats.findByAlias("fast"), false
|
arguments[0], ClipboardFormats.findByAlias("fast"), false
|
||||||
@ -82,7 +91,6 @@ public class RandomFullClipboardPatternParser extends RichParser<Pattern> {
|
|||||||
throw new InputParseException(Caption.of("fawe.error.parse.no-clipboard-source", arguments[0]));
|
throw new InputParseException(Caption.of("fawe.error.parse.no-clipboard-source", arguments[0]));
|
||||||
}
|
}
|
||||||
clipboards = multi.getHolders();
|
clipboards = multi.getHolders();
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return new RandomFullClipboardPattern(clipboards, rotate, flip);
|
return new RandomFullClipboardPattern(clipboards, rotate, flip);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren