9
0
mirror of https://github.com/WiIIiam278/HuskSync.git synced 2025-12-26 01:59:20 +00:00

Use Commodore for rich command completion registering

This commit is contained in:
William
2022-08-08 19:32:09 +01:00
parent d1c95030f0
commit 2f700b2d93
18 changed files with 125 additions and 31 deletions

View File

@@ -268,6 +268,12 @@ public class BukkitHuskSync extends JavaPlugin implements HuskSync {
return logger;
}
@NotNull
@Override
public ResourceReader getResourceReader() {
return resourceReader;
}
@Override
public @NotNull Version getPluginVersion() {
return Version.pluginVersion(getDescription().getVersion());

View File

@@ -0,0 +1,32 @@
package net.william278.husksync.command;
import me.lucko.commodore.CommodoreProvider;
import me.lucko.commodore.file.CommodoreFileReader;
import net.william278.husksync.BukkitHuskSync;
import org.bukkit.command.PluginCommand;
import org.jetbrains.annotations.NotNull;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
/**
* Used for registering Brigadier hooks on platforms that support commodore for rich command syntax
*/
public class BrigadierUtil {
protected static void registerCommodore(@NotNull BukkitHuskSync plugin, @NotNull PluginCommand pluginCommand,
@NotNull CommandBase command) {
// Register command descriptions via commodore (brigadier wrapper)
try (InputStream pluginFile = plugin.getResourceReader()
.getResource("commodore/" + command.command + ".commodore")) {
CommodoreProvider.getCommodore(plugin).register(pluginCommand,
CommodoreFileReader.INSTANCE.parse(pluginFile),
player -> player.hasPermission(command.permission));
} catch (IOException e) {
plugin.getLoggingAdapter().log(Level.SEVERE,
"Failed to load " + command.command + ".commodore command definitions", e);
}
}
}

View File

@@ -1,6 +1,7 @@
package net.william278.husksync.command;
import net.william278.husksync.HuskSync;
import me.lucko.commodore.CommodoreProvider;
import net.william278.husksync.BukkitHuskSync;
import net.william278.husksync.player.BukkitPlayer;
import org.bukkit.command.*;
import org.bukkit.entity.Player;
@@ -18,14 +19,14 @@ public class BukkitCommand implements CommandExecutor, TabExecutor {
/**
* The {@link CommandBase} that will be executed
*/
private final CommandBase command;
protected final CommandBase command;
/**
* The implementing plugin
*/
private final HuskSync plugin;
private final BukkitHuskSync plugin;
public BukkitCommand(@NotNull CommandBase command, @NotNull HuskSync implementor) {
public BukkitCommand(@NotNull CommandBase command, @NotNull BukkitHuskSync implementor) {
this.command = command;
this.plugin = implementor;
}
@@ -40,6 +41,9 @@ public class BukkitCommand implements CommandExecutor, TabExecutor {
pluginCommand.setTabCompleter(this);
pluginCommand.setPermission(command.permission);
pluginCommand.setDescription(command.getDescription());
if (CommodoreProvider.isSupported()) {
BrigadierUtil.registerCommodore(plugin, pluginCommand, command);
}
}
@Override

View File

@@ -3,7 +3,6 @@ package net.william278.husksync.util;
import net.william278.husksync.BukkitHuskSync;
import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.io.InputStream;
import java.util.Objects;
@@ -20,9 +19,4 @@ public class BukkitResourceReader implements ResourceReader {
return Objects.requireNonNull(plugin.getResource(fileName));
}
@Override
public @NotNull File getDataFolder() {
return plugin.getDataFolder();
}
}