fix conflicts

This commit is contained in:
Jesse Boyd
2019-07-22 16:39:43 +10:00
56 changed files with 1202 additions and 1057 deletions

View File

@ -22,6 +22,7 @@ package com.sk89q.worldedit.extension.platform;
import static com.google.common.base.Preconditions.checkNotNull;
import com.boydti.fawe.Fawe;
import com.boydti.fawe.command.AnvilCommands;
import com.boydti.fawe.config.BBC;
import com.boydti.fawe.config.Settings;
import com.boydti.fawe.object.FawePlayer;
@ -30,22 +31,55 @@ import com.boydti.fawe.util.TaskManager;
import com.boydti.fawe.wrappers.LocationMaskedPlayerWrapper;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.google.common.reflect.TypeToken;
import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.IncompleteRegionException;
import com.sk89q.worldedit.LocalConfiguration;
import com.sk89q.worldedit.LocalSession;
import com.sk89q.worldedit.WorldEdit;
//import com.sk89q.worldedit.command.BiomeCommandsRegistration;
//import com.sk89q.worldedit.command.ChunkCommandsRegistration;
//import com.sk89q.worldedit.command.ClipboardCommandsRegistration;
//import com.sk89q.worldedit.command.GeneralCommandsRegistration;
//import com.sk89q.worldedit.command.HistoryCommandsRegistration;
//import com.sk89q.worldedit.command.NavigationCommandsRegistration;
//import com.sk89q.worldedit.command.SchematicCommandsRegistration;
//import com.sk89q.worldedit.command.SnapshotCommandsRegistration;
//import com.sk89q.worldedit.command.SuperPickaxeCommandsRegistration;
//import com.sk89q.worldedit.command.WorldEditCommandsRegistration;
import com.sk89q.worldedit.command.ApplyBrushCommands;
import com.sk89q.worldedit.command.BiomeCommands;
import com.sk89q.worldedit.command.BiomeCommandsRegistration;
import com.sk89q.worldedit.command.BrushCommands;
import com.sk89q.worldedit.command.BrushCommandsRegistration;
import com.sk89q.worldedit.command.BrushOptionsCommands;
import com.sk89q.worldedit.command.ChunkCommands;
import com.sk89q.worldedit.command.ChunkCommandsRegistration;
import com.sk89q.worldedit.command.ClipboardCommands;
import com.sk89q.worldedit.command.ClipboardCommandsRegistration;
import com.sk89q.worldedit.command.ExpandCommands;
import com.sk89q.worldedit.command.GeneralCommands;
import com.sk89q.worldedit.command.GeneralCommandsRegistration;
import com.sk89q.worldedit.command.GenerationCommands;
import com.sk89q.worldedit.command.GenerationCommandsRegistration;
import com.sk89q.worldedit.command.HistoryCommands;
import com.sk89q.worldedit.command.HistoryCommandsRegistration;
import com.sk89q.worldedit.command.NavigationCommands;
import com.sk89q.worldedit.command.NavigationCommandsRegistration;
import com.sk89q.worldedit.command.PaintBrushCommands;
import com.sk89q.worldedit.command.RegionCommands;
import com.sk89q.worldedit.command.RegionCommandsRegistration;
import com.sk89q.worldedit.command.SchematicCommands;
import com.sk89q.worldedit.command.SchematicCommandsRegistration;
import com.sk89q.worldedit.command.ScriptingCommands;
import com.sk89q.worldedit.command.ScriptingCommandsRegistration;
import com.sk89q.worldedit.command.SelectionCommands;
import com.sk89q.worldedit.command.SelectionCommandsRegistration;
import com.sk89q.worldedit.command.SnapshotCommands;
import com.sk89q.worldedit.command.SnapshotCommandsRegistration;
import com.sk89q.worldedit.command.SnapshotUtilCommands;
import com.sk89q.worldedit.command.SnapshotUtilCommandsRegistration;
import com.sk89q.worldedit.command.SuperPickaxeCommands;
import com.sk89q.worldedit.command.SuperPickaxeCommandsRegistration;
import com.sk89q.worldedit.command.ToolCommands;
import com.sk89q.worldedit.command.ToolCommandsRegistration;
import com.sk89q.worldedit.command.ToolUtilCommands;
import com.sk89q.worldedit.command.ToolUtilCommandsRegistration;
import com.sk89q.worldedit.command.TransformCommands;
import com.sk89q.worldedit.command.UtilityCommands;
import com.sk89q.worldedit.command.UtilityCommandsRegistration;
import com.sk89q.worldedit.command.WorldEditCommands;
import com.sk89q.worldedit.command.WorldEditCommandsRegistration;
import com.sk89q.worldedit.command.argument.Arguments;
import com.sk89q.worldedit.command.argument.BooleanConverter;
import com.sk89q.worldedit.command.argument.CommaSeparatedValuesConverter;
@ -71,6 +105,7 @@ import com.sk89q.worldedit.extension.platform.binding.CommandBindings;
import com.sk89q.worldedit.extension.platform.binding.ConsumeBindings;
import com.sk89q.worldedit.extension.platform.binding.ProvideBindings;
import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.internal.annotation.Selection;
import com.sk89q.worldedit.internal.command.CommandArgParser;
import com.sk89q.worldedit.internal.command.CommandLoggingHandler;
import com.sk89q.worldedit.internal.command.CommandRegistrationHandler;
@ -126,9 +161,11 @@ import org.enginehub.piston.part.SubCommandPart;
import org.enginehub.piston.suggestion.Suggestion;
import org.enginehub.piston.util.HelpGenerator;
import org.enginehub.piston.util.ValueProvider;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Handles the registration and invocation of commands.
*
@ -152,14 +189,9 @@ public final class PlatformCommandManager {
private final InjectedValueStore globalInjectedValues;
private final DynamicStreamHandler dynamicHandler = new DynamicStreamHandler();
private final WorldEditExceptionConverter exceptionConverter;
private final CommandRegistrationHandler registration;
public final CommandRegistrationHandler registration;
private static PlatformCommandManager INSTANCE;
/*
Command types
*/
/**
* Create a new instance.
*
@ -203,7 +235,7 @@ public final class PlatformCommandManager {
DirectionConverter.register(worldEdit, commandManager);
FactoryConverter.register(worldEdit, commandManager);
for (int count = 2; count <= 3; count++) {
commandManager.registerConverter(Key.of(double.class, com.sk89q.worldedit.extension.platform.Annotations.radii(count)),
commandManager.registerConverter(Key.of(double.class, Annotations.radii(count)),
CommaSeparatedValuesConverter.wrapAndLimit(ArgumentConverters.get(
TypeToken.of(double.class)
), count)
@ -218,8 +250,9 @@ public final class PlatformCommandManager {
RegionFactoryConverter.register(commandManager);
}
private void registerAlwaysInjectedValues() {
globalInjectedValues.injectValue(Key.of(InjectedValueAccess.class), context -> Optional.of(context));
public void register(Object classWithMethods) {
globalInjectedValues.injectValue(Key.of(InjectedValueAccess.class), Optional::of);
// TODO NOT IMPLEMENTED - register the following using a custom processor / annotations
register(new AnnotatedBindings(worldEdit));
register(new CommandBindings(worldEdit));
register(new ConsumeBindings(worldEdit));
@ -227,10 +260,6 @@ public final class PlatformCommandManager {
register(new ProvideBindings(worldEdit));
}
public void register(Object classWithMethods) {
// TODO NOT IMPLEMENTED - register the following using a custom processor / annotations
}
private <CI> void registerSubCommands(String name, List<String> aliases, String desc,
CommandRegistration<CI> registration, CI instance) {
registerSubCommands(name, aliases, desc, registration, instance, m -> {});
@ -266,121 +295,141 @@ public final class PlatformCommandManager {
public void registerAllCommands() {
if (Settings.IMP.ENABLED_COMPONENTS.COMMANDS) {
// TODO NOT IMPLEMENTED dunno why these have issues generating
// registerSubCommands(
// "schematic",
// ImmutableList.of("schem", "/schematic", "/schem"),
// "Schematic commands for saving/loading areas",
// SchematicCommandsRegistration.builder(),
// new SchematicCommands(worldEdit)
// );
// registerSubCommands(
// "snapshot",
// ImmutableList.of("snap"),
// "Snapshot commands for restoring backups",
// SnapshotCommandsRegistration.builder(),
// new SnapshotCommands(worldEdit)
// );
// registerSubCommands(
// "superpickaxe",
// ImmutableList.of("pickaxe", "sp"),
// "Super-pickaxe commands",
// SuperPickaxeCommandsRegistration.builder(),
// new SuperPickaxeCommands(worldEdit)
// );
// registerSubCommands(
// "brush",
// ImmutableList.of("br", "/brush", "/br"),
// "Brushing commands",
// BrushCommandsRegistration.builder(),
// new BrushCommands(worldEdit),
// (Consumer<CommandManager>) manager -> {
// PaintBrushCommands.register(commandManagerService, manager, registration);
// ApplyBrushCommands.register(commandManagerService, manager, registration);
// }
// );
// registerSubCommands(
// "worldedit",
// ImmutableList.of("we"),
// "WorldEdit commands",
// WorldEditCommandsRegistration.builder(),
// new WorldEditCommands(worldEdit)
// );
// this.registration.register(
// commandManager,
// BiomeCommandsRegistration.builder(),
// new BiomeCommands()
// );
// this.registration.register(
// commandManager,
// ChunkCommandsRegistration.builder(),
// new ChunkCommands(worldEdit)
// );
// this.registration.register(
// commandManager,
// ClipboardCommandsRegistration.builder(),
// new ClipboardCommands(worldEdit)
// );
// this.registration.register(
// commandManager,
// GeneralCommandsRegistration.builder(),
// new GeneralCommands(worldEdit)
// );
// this.registration.register(
// commandManager,
// GenerationCommandsRegistration.builder(),
// new GenerationCommands(worldEdit)
// );
// this.registration.register(
// commandManager,
// HistoryCommandsRegistration.builder(),
// new HistoryCommands(worldEdit)
// );
// this.registration.register(
// commandManager,
// NavigationCommandsRegistration.builder(),
// new NavigationCommands(worldEdit)
// );
// this.registration.register(
// commandManager,
// RegionCommandsRegistration.builder(),
// new RegionCommands(worldEdit)
// );
// this.registration.register(
// commandManager,
// ScriptingCommandsRegistration.builder(),
// new ScriptingCommands(worldEdit)
// );
// this.registration.register(
// commandManager,
// SelectionCommandsRegistration.builder(),
// new SelectionCommands(worldEdit)
// );
// ExpandCommands.register(registration, commandManager, commandManagerService);
// this.registration.register(
// commandManager,
// SnapshotUtilCommandsRegistration.builder(),
// new SnapshotUtilCommands(worldEdit)
// );
// this.registration.register(
// commandManager,
// ToolCommandsRegistration.builder(),
// new ToolCommands(worldEdit)
// );
// this.registration.register(
// commandManager,
// ToolUtilCommandsRegistration.builder(),
// new ToolUtilCommands(worldEdit)
// );
// this.registration.register(
// commandManager,
// UtilityCommandsRegistration.builder(),
// new UtilityCommands(worldEdit)
// );
// this.registration.register(
// commandManager,
// AnvilCommandsRegistration.builder(),
// new AnvilCommands(worldEdit)
// );
registerSubCommands(
"schematic",
ImmutableList.of("schem", "/schematic", "/schem"),
"Schematic commands for saving/loading areas",
SchematicCommandsRegistration.builder(),
new SchematicCommands(worldEdit)
);
registerSubCommands(
"snapshot",
ImmutableList.of("snap"),
"Snapshot commands for restoring backups",
SnapshotCommandsRegistration.builder(),
new SnapshotCommands(worldEdit)
);
registerSubCommands(
"superpickaxe",
ImmutableList.of("pickaxe", "sp"),
"Super-pickaxe commands",
SuperPickaxeCommandsRegistration.builder(),
new SuperPickaxeCommands(worldEdit)
);
registerSubCommands(
"brush",
ImmutableList.of("br", "/brush", "/br"),
"Brushing commands",
BrushCommandsRegistration.builder(),
new BrushCommands(worldEdit),
manager -> {
PaintBrushCommands.register(commandManagerService, manager, registration);
ApplyBrushCommands.register(commandManagerService, manager, registration);
}
);
registerSubCommands(
"brush",
ImmutableList.of("br", "/b"),
"Tool commands",
BrushOptionsCommandsRegistration.builder(),
new BrushOptionsCommands(worldEdit)
);
registerSubCommands(
"worldedit",
ImmutableList.of("we"),
"WorldEdit commands",
WorldEditCommandsRegistration.builder(),
new WorldEditCommands(worldEdit)
);
registerSubCommands(
"/anvil",
ImmutableList.of(),
"Manipulate billions of blocks https://github.com/boy0001/FastAsyncWorldedit/wiki/Anvil-API",
AnvilCommandsRegistration.builder(),
new AnvilCommands(worldEdit)
);
registerSubCommands(
"transforms",
ImmutableList.of(),
"Transforms modify how a block is placed\n" +
" - Use [brackets] for arguments\n" +
" - Use , to OR multiple\n" +
" - Use & to AND multiple\n" +
"More Info: https://git.io/v9KHO",
TransformCommandsRegistration.builder(),
new TransformCommands()
);
this.registration.register(
commandManager,
BiomeCommandsRegistration.builder(),
new BiomeCommands()
);
this.registration.register(
commandManager,
ChunkCommandsRegistration.builder(),
new ChunkCommands(worldEdit)
);
this.registration.register(
commandManager,
ClipboardCommandsRegistration.builder(),
new ClipboardCommands(worldEdit)
);
this.registration.register(
commandManager,
GeneralCommandsRegistration.builder(),
new GeneralCommands(worldEdit)
);
this.registration.register(
commandManager,
GenerationCommandsRegistration.builder(),
new GenerationCommands(worldEdit)
);
this.registration.register(
commandManager,
HistoryCommandsRegistration.builder(),
new HistoryCommands(worldEdit)
);
this.registration.register(
commandManager,
NavigationCommandsRegistration.builder(),
new NavigationCommands(worldEdit)
);
this.registration.register(
commandManager,
RegionCommandsRegistration.builder(),
new RegionCommands(worldEdit)
);
this.registration.register(
commandManager,
ScriptingCommandsRegistration.builder(),
new ScriptingCommands(worldEdit)
);
this.registration.register(
commandManager,
SelectionCommandsRegistration.builder(),
new SelectionCommands(worldEdit)
);
ExpandCommands.register(registration, commandManager, commandManagerService);
this.registration.register(
commandManager,
SnapshotUtilCommandsRegistration.builder(),
new SnapshotUtilCommands(worldEdit)
);
this.registration.register(
commandManager,
ToolCommandsRegistration.builder(),
new ToolCommands(worldEdit)
);
this.registration.register(
commandManager,
ToolUtilCommandsRegistration.builder(),
new ToolUtilCommands(worldEdit)
);
this.registration.register(
commandManager,
UtilityCommandsRegistration.builder(),
new UtilityCommands(worldEdit)
);
}
}
@ -488,7 +537,7 @@ public final class PlatformCommandManager {
dynamicHandler.setHandler(null);
}
private Stream<Substring> parseArgs(String input) {
public Stream<Substring> parseArgs(String input) {
return new CommandArgParser(CommandArgParser.spaceSplit(input.substring(1))).parseArgs();
}
@ -587,17 +636,20 @@ public final class PlatformCommandManager {
Request.request().setWorld(((World) extent));
}
}
LocalConfiguration config = worldEdit.getConfiguration();
MemoizingValueAccess context = initializeInjectedValues(event::getArguments, actor);
ThrowableSupplier<Throwable> task =
() -> commandManager.execute(context,Lists.newArrayList(split));
() -> commandManager.execute(context, ImmutableList.copyOf(split));
handleCommandTask(task, context, session, event);
}
public Object handleCommandTask(ThrowableSupplier<Throwable> task, InjectedValueAccess context, @Nullable LocalSession session, CommandEvent event) {
Actor actor = context.injectedValue(Key.of(Actor.class)).orElseThrow(() -> new IllegalStateException("No player"));
Request.reset();
Actor actor = context.injectedValue(Key.of(Actor.class)).orElseThrow(() -> new IllegalStateException("No player"));
long start = System.currentTimeMillis();
try {
@ -651,8 +703,7 @@ public final class PlatformCommandManager {
} else {
System.out.println("Invalid context " + context);
}
Optional<EditSession> editSessionOpt =
context.injectedValue(Key.of(EditSession.class));
Optional<EditSession> editSessionOpt = context.injectedValue(Key.of(EditSession.class));
if (editSessionOpt.isPresent()) {
EditSession editSession = editSessionOpt.get();