Fixed prime restart and already registered cmds
Commands that are registered in plugin.yml Commands conflicting with Essentials commands have to be registered in plugin.yml
This commit is contained in:
parent
28e44d5179
commit
5b27af8925
2 changed files with 39 additions and 13 deletions
|
@ -21,6 +21,7 @@ import org.bukkit.command.CommandSender;
|
||||||
public class PrimeRestartCommand extends ICommand2MC {
|
public class PrimeRestartCommand extends ICommand2MC {
|
||||||
private final RestartComponent component;
|
private final RestartComponent component;
|
||||||
|
|
||||||
|
@Command2.Subcommand
|
||||||
public void def(CommandSender sender, @Command2.TextArg @Command2.OptionalArg String somethingrandom) {
|
public void def(CommandSender sender, @Command2.TextArg @Command2.OptionalArg String somethingrandom) {
|
||||||
loud = somethingrandom != null;
|
loud = somethingrandom != null;
|
||||||
if (Bukkit.getOnlinePlayers().size() > 0) {
|
if (Bukkit.getOnlinePlayers().size() > 0) {
|
||||||
|
|
|
@ -184,10 +184,20 @@ public class Command2MC extends Command2<ICommand2MC, Command2MCSender> implemen
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean handleCommand(Command2MCSender sender, String commandline) {
|
public boolean handleCommand(Command2MCSender sender, String commandline) {
|
||||||
|
return handleCommand(sender, commandline, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean handleCommand(Command2MCSender sender, String commandline, boolean checkPlugin) {
|
||||||
int i = commandline.indexOf(' ');
|
int i = commandline.indexOf(' ');
|
||||||
String mainpath = commandline.substring(1, i == -1 ? commandline.length() : i); //Without the slash
|
String mainpath = commandline.substring(1, i == -1 ? commandline.length() : i); //Without the slash
|
||||||
PluginCommand pcmd;
|
PluginCommand pcmd;
|
||||||
if (MainPlugin.Instance.prioritizeCustomCommands().get()
|
/*System.out.println("Command line: " + commandline);
|
||||||
|
System.out.println("Prioritize: " + MainPlugin.Instance.prioritizeCustomCommands().get());
|
||||||
|
System.out.println("PCMD: " + (pcmd = Bukkit.getPluginCommand(mainpath)));
|
||||||
|
if (pcmd != null)
|
||||||
|
System.out.println("ButtonPlugin: " + (pcmd.getPlugin() instanceof ButtonPlugin));*/
|
||||||
|
if (!checkPlugin
|
||||||
|
|| MainPlugin.Instance.prioritizeCustomCommands().get()
|
||||||
|| (pcmd = Bukkit.getPluginCommand(mainpath)) == null //Our commands aren't PluginCommands
|
|| (pcmd = Bukkit.getPluginCommand(mainpath)) == null //Our commands aren't PluginCommands
|
||||||
|| pcmd.getPlugin() instanceof ButtonPlugin) //Unless it's specified in the plugin.yml
|
|| pcmd.getPlugin() instanceof ButtonPlugin) //Unless it's specified in the plugin.yml
|
||||||
return super.handleCommand(sender, commandline);
|
return super.handleCommand(sender, commandline);
|
||||||
|
@ -205,11 +215,21 @@ public class Command2MC extends Command2<ICommand2MC, Command2MCSender> implemen
|
||||||
int x = path.indexOf(' ');
|
int x = path.indexOf(' ');
|
||||||
var mainPath = path.substring(0, x == -1 ? path.length() : x);
|
var mainPath = path.substring(0, x == -1 ? path.length() : x);
|
||||||
Command bukkitCommand;
|
Command bukkitCommand;
|
||||||
{
|
{ //TODO: Commands conflicting with Essentials have to be registered in plugin.yml
|
||||||
var oldcmd = cmdmap.getCommand(mainPath);
|
var oldcmd = cmdmap.getCommand(command.getPlugin().getName() + ":" + mainPath); //The label with the fallback prefix is always registered
|
||||||
|
if (oldcmd == null) {
|
||||||
|
bukkitCommand = new BukkitCommand(mainPath);
|
||||||
|
cmdmap.register(command.getPlugin().getName(), bukkitCommand);
|
||||||
|
} else {
|
||||||
|
bukkitCommand = oldcmd;
|
||||||
|
if (bukkitCommand instanceof PluginCommand)
|
||||||
|
((PluginCommand) bukkitCommand).setExecutor(this::executeCommand);
|
||||||
|
}
|
||||||
bukkitCommand = oldcmd == null ? new BukkitCommand(mainPath) : oldcmd;
|
bukkitCommand = oldcmd == null ? new BukkitCommand(mainPath) : oldcmd;
|
||||||
|
/*System.out.println("oldcmd: " + oldcmd);
|
||||||
|
System.out.println("bukkitCommand: " + bukkitCommand);*/
|
||||||
}
|
}
|
||||||
cmdmap.register(command.getPlugin().getName(), bukkitCommand);
|
//System.out.println("Registering to " + command.getPlugin().getName());
|
||||||
if (CommodoreProvider.isSupported())
|
if (CommodoreProvider.isSupported())
|
||||||
TabcompleteHelper.registerTabcomplete(command, subcmds, bukkitCommand);
|
TabcompleteHelper.registerTabcomplete(command, subcmds, bukkitCommand);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -218,6 +238,19 @@ public class Command2MC extends Command2<ICommand2MC, Command2MCSender> implemen
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean executeCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
var user = ChromaGamerBase.getFromSender(sender);
|
||||||
|
if (user == null) {
|
||||||
|
TBMCCoreAPI.SendException("Failed to run Bukkit command for user!", new Throwable("No Chroma user found"));
|
||||||
|
sender.sendMessage("§cAn internal error occurred.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
//System.out.println("Executing " + label + " which is actually " + command.getName());
|
||||||
|
handleCommand(new Command2MCSender(sender, user.channel().get(), sender),
|
||||||
|
("/" + command.getName() + " " + String.join(" ", args)).trim(), false); ///trim(): remove space if there are no args
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
private static class BukkitCommand extends Command {
|
private static class BukkitCommand extends Command {
|
||||||
protected BukkitCommand(String name) {
|
protected BukkitCommand(String name) {
|
||||||
super(name);
|
super(name);
|
||||||
|
@ -225,15 +258,7 @@ public class Command2MC extends Command2<ICommand2MC, Command2MCSender> implemen
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean execute(CommandSender sender, String commandLabel, String[] args) {
|
public boolean execute(CommandSender sender, String commandLabel, String[] args) {
|
||||||
var user = ChromaGamerBase.getFromSender(sender);
|
return ButtonPlugin.getCommand2MC().executeCommand(sender, this, commandLabel, args);
|
||||||
if (user == null) {
|
|
||||||
TBMCCoreAPI.SendException("Failed to run Bukkit command for user!", new Throwable("No Chroma user found"));
|
|
||||||
sender.sendMessage("§cAn internal error occurred.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
ButtonPlugin.getCommand2MC().handleCommand(new Command2MCSender(sender, user.channel().get(), sender),
|
|
||||||
"/" + getName() + " " + String.join(" ", args));
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in a new issue