mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2025-06-11 20:13:55 +00:00
Various command (use es6 if java9 + nashorn)
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
|
Reference in New Issue
Block a user