diff --git a/VirtualComputer-Core/pom.xml b/VirtualComputer-Core/pom.xml
index 335e630..f280abe 100644
--- a/VirtualComputer-Core/pom.xml
+++ b/VirtualComputer-Core/pom.xml
@@ -59,6 +59,16 @@
VirtualComputer-MSCOM
2.1-SNAPSHOT
+
+
+ com.github.PandacubeFr
+ commodore
+ patch-custom-suggests-SNAPSHOT
+
diff --git a/VirtualComputer-Core/src/main/java/sznp/virtualcomputer/Commands.java b/VirtualComputer-Core/src/main/java/sznp/virtualcomputer/Commands.java
index 4df9fc5..af414ae 100644
--- a/VirtualComputer-Core/src/main/java/sznp/virtualcomputer/Commands.java
+++ b/VirtualComputer-Core/src/main/java/sznp/virtualcomputer/Commands.java
@@ -1,13 +1,31 @@
package sznp.virtualcomputer;
+import com.mojang.brigadier.arguments.IntegerArgumentType;
+import com.mojang.brigadier.arguments.StringArgumentType;
+import com.mojang.brigadier.builder.ArgumentBuilder;
+import com.mojang.brigadier.builder.LiteralArgumentBuilder;
+import com.mojang.brigadier.builder.RequiredArgumentBuilder;
+import com.mojang.brigadier.tree.CommandNode;
+import lombok.val;
+import me.lucko.commodore.Commodore;
+import me.lucko.commodore.CommodoreProvider;
+import me.lucko.commodore.file.CommodoreFileFormat;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
+import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player;
+import org.virtualbox_6_1.MouseButtonState;
import org.virtualbox_6_1.VBoxException;
+import sznp.virtualcomputer.util.Scancode;
-public class Commands implements CommandExecutor {
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+public class Commands implements CommandExecutor, TabCompleter {
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
@@ -25,6 +43,9 @@ public class Commands implements CommandExecutor {
}
Computer.getInstance().Start(sender, c);
break;
+ case "list":
+ Computer.getInstance().List(sender);
+ break;
case "stop":
case "poweroff":
case "off":
@@ -82,11 +103,9 @@ public class Commands implements CommandExecutor {
showusage = false;
}
}
- }
- catch (VBoxException e) {
+ } catch (VBoxException e) {
e.printStackTrace();
- }
- catch (Exception ignored) { //It will show the usage here
+ } catch (Exception ignored) { //It will show the usage here
}
}
if (showusage) {
@@ -131,7 +150,7 @@ public class Commands implements CommandExecutor {
}
try {
MouseLockerPlayerListener.LockedSpeed = Float.parseFloat(args[2]);
- } catch(NumberFormatException e) {
+ } catch (NumberFormatException e) {
sender.sendMessage("§cThe speed must be a number.");
break;
}
@@ -143,6 +162,49 @@ public class Commands implements CommandExecutor {
return true;
}
+ private boolean tabSetup = true;
+
+ @Override
+ public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+ if (CommodoreProvider.isSupported() && tabSetup) {
+ tabSetup = false;
+ new Object() {
+ private void setup(Command command) {
+ val com = CommodoreProvider.getCommodore(PluginMain.Instance);
+ try {
+ val node = CommodoreFileFormat.parse(PluginMain.Instance.getResource("computer.commodore"));
+ CommandNode