mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2025-07-01 02:46:41 +00:00
add command queuing
This commit is contained in:
@ -29,6 +29,8 @@ import com.sk89q.worldedit.command.factory.ReplaceFactory;
|
||||
import com.sk89q.worldedit.command.factory.TreeGeneratorFactory;
|
||||
import com.sk89q.worldedit.command.util.CommandPermissions;
|
||||
import com.sk89q.worldedit.command.util.CommandPermissionsConditionGenerator;
|
||||
import com.sk89q.worldedit.command.util.CommandQueued;
|
||||
import com.sk89q.worldedit.command.util.CommandQueuedConditionGenerator;
|
||||
import com.sk89q.worldedit.command.util.PermissionCondition;
|
||||
import com.sk89q.worldedit.entity.Player;
|
||||
import com.sk89q.worldedit.function.Contextual;
|
||||
|
@ -42,6 +42,8 @@ import com.sk89q.worldedit.WorldEdit;
|
||||
import com.sk89q.worldedit.WorldEditException;
|
||||
import com.sk89q.worldedit.command.util.CommandPermissions;
|
||||
import com.sk89q.worldedit.command.util.CommandPermissionsConditionGenerator;
|
||||
import com.sk89q.worldedit.command.util.CommandQueued;
|
||||
import com.sk89q.worldedit.command.util.CommandQueuedConditionGenerator;
|
||||
import com.sk89q.worldedit.command.util.CreatureButcher;
|
||||
import com.sk89q.worldedit.command.util.EntityRemover;
|
||||
import com.sk89q.worldedit.command.util.Logging;
|
||||
@ -102,7 +104,7 @@ import org.enginehub.piston.annotation.param.Switch;
|
||||
/**
|
||||
* Utility commands.
|
||||
*/
|
||||
@CommandContainer(superTypes = CommandPermissionsConditionGenerator.Registration.class)
|
||||
@CommandContainer(superTypes = {CommandPermissionsConditionGenerator.Registration.class, CommandQueuedConditionGenerator.Registration.class})
|
||||
@Command(aliases = {}, desc = "Various utility commands: [More Info](http://wiki.sk89q.com/wiki/WorldEdit/Utilities)")
|
||||
public class UtilityCommands {
|
||||
|
||||
@ -174,9 +176,9 @@ public class UtilityCommands {
|
||||
name = "/cancel",
|
||||
aliases= {"fcancel"},
|
||||
desc = "Cancel your current command"
|
||||
//queued = false
|
||||
)
|
||||
@CommandPermissions("fawe.cancel")
|
||||
@CommandQueued(false)
|
||||
public void cancel(FawePlayer player) {
|
||||
int cancelled = player.cancel(false);
|
||||
BBC.WORLDEDIT_CANCEL_COUNT.send(player, cancelled);
|
||||
@ -213,8 +215,8 @@ public class UtilityCommands {
|
||||
" - Use , to OR multiple\n" +
|
||||
"e.g. #surfacespread[10][#existing],andesite\n" +
|
||||
"More Info: https://git.io/vSPmA"
|
||||
//queued = false
|
||||
)
|
||||
@CommandQueued(false)
|
||||
@CommandPermissions("worldedit.patterns")
|
||||
public void patterns(Player player, LocalSession session, CommandContext args) throws WorldEditException {
|
||||
displayModifierHelp(player, DefaultPatternParser.class, args);
|
||||
@ -229,8 +231,8 @@ public class UtilityCommands {
|
||||
" - Use & to AND multiple\n" +
|
||||
"e.g. >[stone,dirt],#light[0][5],$jungle\n" +
|
||||
"More Info: https://git.io/v9r4K"
|
||||
//queued = false
|
||||
)
|
||||
@CommandQueued(false)
|
||||
@CommandPermissions("worldedit.masks")
|
||||
public void masks(Player player, LocalSession session, CommandContext args) throws WorldEditException {
|
||||
displayModifierHelp(player, DefaultMaskParser.class, args);
|
||||
@ -244,8 +246,8 @@ public class UtilityCommands {
|
||||
" - Use , to OR multiple\n" +
|
||||
" - Use & to AND multiple\n" +
|
||||
"More Info: https://git.io/v9KHO",
|
||||
queued = false
|
||||
)
|
||||
@CommandQueued(false)
|
||||
@CommandPermissions("worldedit.transforms")
|
||||
public void transforms(Player player, LocalSession session, CommandContext args) throws WorldEditException {
|
||||
displayModifierHelp(player, DefaultTransformParser.class, args);
|
||||
|
@ -29,6 +29,8 @@ import com.sk89q.worldedit.WorldEdit;
|
||||
import com.sk89q.worldedit.WorldEditException;
|
||||
import com.sk89q.worldedit.command.util.CommandPermissions;
|
||||
import com.sk89q.worldedit.command.util.CommandPermissionsConditionGenerator;
|
||||
import com.sk89q.worldedit.command.util.CommandQueued;
|
||||
import com.sk89q.worldedit.command.util.CommandQueuedConditionGenerator;
|
||||
import com.sk89q.worldedit.command.util.PrintCommandHelp;
|
||||
import com.sk89q.worldedit.entity.Player;
|
||||
import com.sk89q.worldedit.event.platform.ConfigurationLoadEvent;
|
||||
@ -53,7 +55,7 @@ import org.enginehub.piston.annotation.param.Arg;
|
||||
import org.enginehub.piston.annotation.param.ArgFlag;
|
||||
import org.enginehub.piston.annotation.param.Switch;
|
||||
|
||||
@CommandContainer(superTypes = CommandPermissionsConditionGenerator.Registration.class)
|
||||
@CommandContainer(superTypes = {CommandPermissionsConditionGenerator.Registration.class, CommandQueuedConditionGenerator.Registration.class})
|
||||
public class WorldEditCommands {
|
||||
|
||||
private static final DateTimeFormatter dateFormat = DateTimeFormatter
|
||||
@ -69,8 +71,8 @@ public class WorldEditCommands {
|
||||
name = "version",
|
||||
aliases = { "ver" },
|
||||
desc = "Get WorldEdit/FAWE version"
|
||||
//queued = false
|
||||
)
|
||||
@CommandQueued(false)
|
||||
public void version(Actor actor) {
|
||||
FaweVersion fVer = Fawe.get().getVersion();
|
||||
String fVerStr = fVer == null ? "unknown" : "-" + fVer.build;
|
||||
@ -119,8 +121,8 @@ public class WorldEditCommands {
|
||||
name = "report",
|
||||
aliases = { "debugpaste" },
|
||||
desc = "Writes a report of latest.log, config.yml, message.yml and your commands.yml to https://athion.net/ISPaster/paste"
|
||||
// queued = false
|
||||
)
|
||||
@CommandQueued(false)
|
||||
@CommandPermissions({"worldedit.report", "worldedit.debugpaste"})
|
||||
public void report(Actor actor) throws WorldEditException, IOException {
|
||||
BBC.DOWNLOAD_LINK.send(actor, IncendoPaster.debugPaste());
|
||||
@ -129,8 +131,8 @@ public class WorldEditCommands {
|
||||
@Command(
|
||||
name = "threads",
|
||||
desc = "Print all thread stacks"
|
||||
//queued = false
|
||||
)
|
||||
@CommandQueued(false)
|
||||
@CommandPermissions("worldedit.threads")
|
||||
public void threads(Actor actor) throws WorldEditException {
|
||||
Map<Thread, StackTraceElement[]> stacks = Thread.getAllStackTraces();
|
||||
@ -179,8 +181,8 @@ public class WorldEditCommands {
|
||||
@Command(
|
||||
name = "help",
|
||||
desc = "Displays help for FAWE commands"
|
||||
//queued = false
|
||||
)
|
||||
@CommandQueued(false)
|
||||
@CommandPermissions("worldedit.help")
|
||||
public void help(Actor actor,
|
||||
@Switch(name = 's', desc = "List sub-commands of the given command, if applicable")
|
||||
|
@ -0,0 +1,15 @@
|
||||
package com.sk89q.worldedit.command.util;
|
||||
|
||||
import org.enginehub.piston.annotation.CommandCondition;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
|
||||
/**
|
||||
* Sets a command to be queued
|
||||
*/
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@CommandCondition(CommandQueuedConditionGenerator.class)
|
||||
public @interface CommandQueued {
|
||||
boolean value() default false;
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package com.sk89q.worldedit.command.util;
|
||||
|
||||
import org.enginehub.piston.Command;
|
||||
import org.enginehub.piston.inject.InjectedValueAccess;
|
||||
|
||||
/**
|
||||
* Dummy class
|
||||
*/
|
||||
public class CommandQueuedCondition implements Command.Condition {
|
||||
private final boolean value;
|
||||
|
||||
public CommandQueuedCondition(boolean value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public boolean isQueued() {
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean satisfied(InjectedValueAccess injectedValueAccess) {
|
||||
return true;
|
||||
}
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package com.sk89q.worldedit.command.util;
|
||||
|
||||
import org.enginehub.piston.Command;
|
||||
import org.enginehub.piston.gen.CommandConditionGenerator;
|
||||
import org.enginehub.piston.util.NonnullByDefault;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
@NonnullByDefault
|
||||
public final class CommandQueuedConditionGenerator implements CommandConditionGenerator {
|
||||
|
||||
public interface Registration {
|
||||
Registration commandQueuedConditionGenerator(CommandPermissionsConditionGenerator generator);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Command.Condition generateCondition(Method commandMethod) {
|
||||
CommandQueued annotation = commandMethod.getAnnotation(CommandQueued.class);
|
||||
checkNotNull(annotation, "Annotation is missing from commandMethod");
|
||||
return new CommandQueuedCondition(annotation.value());
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user