Make flags command executor-specific.

This commit is contained in:
Albert Pham
2015-10-28 13:37:58 -07:00
parent f4bb5272e1
commit 874408ad10
6 changed files with 264 additions and 234 deletions

View File

@ -19,37 +19,35 @@
package com.sk89q.worldedit.command.argument;
import com.google.common.collect.Lists;
import com.sk89q.minecraft.util.commands.CommandException;
import com.sk89q.minecraft.util.commands.CommandLocals;
import com.sk89q.worldedit.util.command.argument.CommandArgs;
import com.sk89q.worldedit.util.command.composition.CommandExecutor;
import java.util.Collections;
import java.util.List;
public class BooleanFlag implements CommandExecutor<Boolean> {
private final char flag;
private final String description;
public BooleanFlag(char flag, String description) {
this.flag = flag;
public BooleanFlag(String description) {
this.description = description;
}
@Override
public Boolean call(CommandArgs args, CommandLocals locals) throws CommandException {
return args.containsFlag(flag);
return true;
}
@Override
public List<String> getSuggestions(CommandArgs args, CommandLocals locals) {
return Lists.newArrayList("-" + flag);
return Collections.emptyList();
}
@Override
public String getUsage() {
return "[-" + flag + "]";
return "";
}
@Override

View File

@ -30,19 +30,22 @@ import com.sk89q.worldedit.extension.platform.Actor;
import com.sk89q.worldedit.function.factory.Deform;
import com.sk89q.worldedit.function.factory.Deform.Mode;
import com.sk89q.worldedit.util.command.argument.CommandArgs;
import com.sk89q.worldedit.util.command.composition.FlagParser.Flag;
import com.sk89q.worldedit.util.command.composition.FlagParser.FlagData;
import com.sk89q.worldedit.util.command.composition.SimpleCommand;
public class DeformArg extends SimpleCommand<Deform> {
private final BooleanFlag rawCoordsFlag = addParameter(new BooleanFlag('r', "Raw coords mode"));
private final BooleanFlag offsetFlag = addParameter(new BooleanFlag('o', "Offset mode"));
private final Flag<Boolean> rawCoordsFlag = addFlag('r', new BooleanFlag("Raw coords mode"));
private final Flag<Boolean> offsetFlag = addFlag('o', new BooleanFlag("Offset mode"));
private final StringArg expressionParser = addParameter(new StringArg("expression", "Expression to apply"));
@Override
public Deform call(CommandArgs args, CommandLocals locals) throws CommandException {
FlagData flagData = getFlagParser().call(args, locals);
String expression = expressionParser.call(args, locals);
boolean rawCoords = rawCoordsFlag.call(args, locals);
boolean offset = offsetFlag.call(args, locals);
boolean rawCoords = rawCoordsFlag.get(flagData, false);
boolean offset = offsetFlag.get(flagData, false);
Deform deform = new Deform(expression);