Various command (use es6 if java9 + nashorn)

This commit is contained in:
Jesse Boyd
2018-08-22 03:22:37 +10:00
parent 43531a0da0
commit c55353e5b1
59 changed files with 1799 additions and 612 deletions

View File

@ -3,10 +3,7 @@ package com.boydti.fawe.bukkit;
import com.boydti.fawe.Fawe;
import com.boydti.fawe.IFawe;
import com.boydti.fawe.bukkit.chat.BukkitChatManager;
import com.boydti.fawe.bukkit.listener.BrushListener;
import com.boydti.fawe.bukkit.listener.BukkitImageListener;
import com.boydti.fawe.bukkit.listener.CFIPacketListener;
import com.boydti.fawe.bukkit.listener.RenderListener;
import com.boydti.fawe.bukkit.listener.*;
import com.boydti.fawe.bukkit.regions.*;
import com.boydti.fawe.bukkit.util.BukkitReflectionUtils;
import com.boydti.fawe.bukkit.util.BukkitTaskMan;
@ -32,7 +29,6 @@ import com.boydti.fawe.util.TaskManager;
import com.boydti.fawe.util.cui.CUI;
import com.boydti.fawe.util.image.ImageViewer;
import com.boydti.fawe.util.metrics.BStats;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldedit.world.World;
import org.bukkit.Bukkit;
@ -123,6 +119,13 @@ public class FaweBukkit implements IFawe, Listener {
} catch (ClassNotFoundException e) {
new ChunkListener_9();
}
try {
new AsyncTabCompleteListener(WorldEditPlugin.getInstance());
} catch (Throwable ignore)
{
Bukkit.getPluginManager().registerEvents(new SyncTabCompleteListener(WorldEditPlugin.getInstance()), plugin);
}
}
});
}

View File

@ -0,0 +1,39 @@
package com.boydti.fawe.bukkit.listener;
import com.boydti.fawe.object.string.MutableCharSequence;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldedit.event.platform.CommandSuggestionEvent;
import com.sk89q.worldedit.extension.platform.CommandManager;
import com.sk89q.worldedit.util.command.CommandMapping;
import com.sk89q.worldedit.util.command.Dispatcher;
import org.bukkit.command.CommandSender;
import org.bukkit.event.Listener;
import java.util.List;
public class ATabCompleteListener implements Listener {
private final WorldEditPlugin worldEdit;
public ATabCompleteListener(WorldEditPlugin worldEdit) {
this.worldEdit = worldEdit;
}
public List<String> onTab(String buffer, CommandSender sender) {
int firstSpace = buffer.indexOf(' ');
if (firstSpace == -1) return null;
MutableCharSequence mBuffer = MutableCharSequence.getTemporal();
mBuffer.setString(buffer);
mBuffer.setSubstring(0, firstSpace);
String label = buffer.substring(mBuffer.indexOf(':') + 1, firstSpace);
Dispatcher dispatcher = CommandManager.getInstance().getDispatcher();
CommandMapping weCommand = dispatcher.get(label);
if (weCommand != null) {
CommandSuggestionEvent event = new CommandSuggestionEvent(worldEdit.wrapCommandSender(sender), buffer);
worldEdit.getWorldEdit().getEventBus().post(event);
List<String> suggestions = event.getSuggestions();
if (suggestions != null) {
return suggestions;
}
}
return null;
}
}

View File

@ -0,0 +1,48 @@
package com.boydti.fawe.bukkit.listener;
import com.boydti.fawe.util.TaskManager;
import com.destroystokyo.paper.event.server.AsyncTabCompleteEvent;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.event.EventHandler;
import org.bukkit.event.server.TabCompleteEvent;
import java.util.Collections;
import java.util.List;
public class AsyncTabCompleteListener extends ATabCompleteListener {
public AsyncTabCompleteListener(WorldEditPlugin worldEdit) {
super(worldEdit);
Bukkit.getPluginManager().registerEvents(this, worldEdit);
}
@EventHandler
public void onTabComplete(AsyncTabCompleteEvent event) {
if (event.isCommand()) {
List<String> result = this.onTab(event.getBuffer(), event.getSender());
if (result != null) {
event.setCompletions(result);
event.setHandled(true); // Doesn't work
}
}
}
// Fix for the event being borked with paper
private List<String> completions = null;
private CommandSender sender;
@EventHandler
public void onTabComplete(TabCompleteEvent event) {
if (event.isCommand()) {
if (sender == event.getSender()) {
event.setCompletions(completions);
sender = null;
} else {
sender = event.getSender();
completions = event.getCompletions();
event.setCompletions(Collections.emptyList());
}
}
}
}

View File

@ -0,0 +1,23 @@
package com.boydti.fawe.bukkit.listener;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import org.bukkit.event.EventHandler;
import org.bukkit.event.server.TabCompleteEvent;
import java.util.List;
public class SyncTabCompleteListener extends ATabCompleteListener {
public SyncTabCompleteListener(WorldEditPlugin worldEdit) {
super(worldEdit);
}
@EventHandler
public void onTabComplete(TabCompleteEvent event) {
if (event.isCommand()) {
List<String> result = this.onTab(event.getBuffer(), event.getSender());
if (result != null) {
event.setCompletions(result);
}
}
}
}

View File

@ -78,14 +78,14 @@ public class DynamicPluginCommand extends org.bukkit.command.Command implements
return owningPlugin;
}
@Override
public List<String> tabComplete(CommandSender sender, String alias, String[] args) throws IllegalArgumentException {
if (registeredWith instanceof CommandInspector) {
return ((TabCompleter) owner).onTabComplete(sender, this, alias, args);
} else {
return super.tabComplete(sender, alias, args);
}
}
// @Override
// public List<String> tabComplete(CommandSender sender, String alias, String[] args) throws IllegalArgumentException {
// if (registeredWith instanceof CommandInspector) {
// return ((TabCompleter) owner).onTabComplete(sender, this, alias, args);
// } else {
// return super.tabComplete(sender, alias, args);
// }
// }
@SuppressWarnings("unchecked")
@Override

View File

@ -25,8 +25,6 @@ import com.sk89q.util.StringUtil;
import com.sk89q.worldedit.Vector;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.blocks.BaseBlock;
import com.sk89q.worldedit.world.block.BlockState;
import com.sk89q.worldedit.blocks.BaseItemStack;
import com.sk89q.worldedit.entity.BaseEntity;
import com.sk89q.worldedit.extension.platform.AbstractPlayerActor;
@ -35,9 +33,9 @@ import com.sk89q.worldedit.internal.cui.CUIEvent;
import com.sk89q.worldedit.session.SessionKey;
import com.sk89q.worldedit.util.HandSide;
import com.sk89q.worldedit.world.World;
import com.sk89q.worldedit.world.block.BlockState;
import com.sk89q.worldedit.world.gamemode.GameMode;
import com.sk89q.worldedit.world.gamemode.GameModes;
import jdk.nashorn.internal.ir.Block;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
@ -47,12 +45,11 @@ import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import javax.annotation.Nullable;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import javax.annotation.Nullable;
public class BukkitPlayer extends AbstractPlayerActor {
private Player player;

View File

@ -71,7 +71,8 @@ import static com.google.common.base.Preconditions.checkNotNull;
/**
* Plugin for Bukkit.
*/
public class WorldEditPlugin extends JavaPlugin implements TabCompleter {
public class WorldEditPlugin extends JavaPlugin //implements TabCompleter
{
private static final Logger log = Logger.getLogger("FastAsyncWorldEdit");
public static final String CUI_PLUGIN_CHANNEL = "worldedit:cui";
@ -390,18 +391,20 @@ public class WorldEditPlugin extends JavaPlugin implements TabCompleter {
return true;
}
@Override
public List<String> onTabComplete(CommandSender sender, Command cmd, String commandLabel, String[] args) {
// Add the command to the array because the underlying command handling
// code of WorldEdit expects it
String[] split = new String[args.length + 1];
System.arraycopy(args, 0, split, 1, args.length);
split[0] = cmd.getName();
CommandSuggestionEvent event = new CommandSuggestionEvent(wrapCommandSender(sender), Joiner.on(" ").join(split));
getWorldEdit().getEventBus().post(event);
return event.getSuggestions();
}
// @Deprecated Using Async tab complete (rather than main thread)
// @Override
// public List<String> onTabComplete(CommandSender sender, Command cmd, String commandLabel, String[] args) {
// // Add the command to the array because the underlying command handling
// // code of WorldEdit expects it
// String[] split = new String[args.length + 1];
// System.arraycopy(args, 0, split, 1, args.length);
// split[0] = cmd.getName();
//
// CommandSuggestionEvent event = new CommandSuggestionEvent(wrapCommandSender(sender), Joiner.on(" ").join(split));
// getWorldEdit().getEventBus().post(event);
//
// return event.getSuggestions();
// }
/**
* Gets the session for the player.