Skip to content

Commit

Permalink
fix: Add support for PluginIdentifiableCommands.
Browse files Browse the repository at this point in the history
  • Loading branch information
FixedDev committed Jan 6, 2024
1 parent ed1fdb4 commit 150d65d
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 3 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package bukkit;

import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.NotNull;
import team.unnamed.commandflow.CommandManager;
import team.unnamed.commandflow.SimpleCommandManager;
import team.unnamed.commandflow.bukkit.BukkitAuthorizer;
Expand All @@ -18,11 +20,23 @@
public class BukkitMapCommandManager extends BukkitCommandManager {

protected CommandMap bukkitCommandMap;
@NotNull
protected final String fallbackPrefix;

protected Plugin plugin;

protected boolean usePluginCommands = false;

protected final Map<String, BukkitCommandWrapper> wrapperMap;

public BukkitMapCommandManager(CommandManager delegate, String fallbackPrefix) {
public BukkitMapCommandManager(CommandManager delegate, Plugin plugin) {
this(delegate, plugin.getName());

this.plugin = plugin;
usePluginCommands = true;
}

public BukkitMapCommandManager(CommandManager delegate, @NotNull String fallbackPrefix) {
super(delegate);
this.fallbackPrefix = fallbackPrefix;
wrapperMap = new HashMap<>();
Expand All @@ -35,9 +49,15 @@ public BukkitMapCommandManager(CommandManager delegate, String fallbackPrefix) {
} catch (NoSuchFieldException | IllegalAccessException ex) {
Bukkit.getLogger().log(Level.SEVERE, "Failed to get command map: ", ex);
}
}

public BukkitMapCommandManager(Plugin plugin) {
this(plugin.getName());
this.plugin = plugin;
this.usePluginCommands = true;
}


public BukkitMapCommandManager(String fallbackPrefix) {
this(new SimpleCommandManager(), fallbackPrefix);

Expand All @@ -48,8 +68,9 @@ public BukkitMapCommandManager(String fallbackPrefix) {

@Override
protected void _register(Command command) {
BukkitCommandWrapper bukkitCommand = new BukkitCommandWrapper(command,
this, getTranslator());
BukkitCommandWrapper bukkitCommand = usePluginCommands ?
new PluginBukkitCommandWrapper(command, this, getTranslator(), plugin) :
new BukkitCommandWrapper(command, this, getTranslator());

for (String alias : command.getAliases()) {
registerCommand(fallbackPrefix + ":" + alias, command);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package bukkit;

import org.bukkit.command.PluginIdentifiableCommand;
import org.bukkit.plugin.Plugin;
import team.unnamed.commandflow.bukkit.BukkitCommandManager;
import team.unnamed.commandflow.command.Command;
import team.unnamed.commandflow.translator.Translator;

public class PluginBukkitCommandWrapper extends BukkitCommandWrapper implements PluginIdentifiableCommand {

private final Plugin plugin;

public PluginBukkitCommandWrapper(Command command,
BukkitCommandManager dispatcher,
Translator translator,
Plugin plugin) {
super(command, dispatcher, translator);

this.plugin = plugin;
}

@Override
public Plugin getPlugin() {
return plugin;
}
}

0 comments on commit 150d65d

Please sign in to comment.