mirror of
https://github.com/EssentialsX/Essentials.git
synced 2024-12-23 01:27:40 +01:00
Fix incompatibility with AlternativeCommandsHandler & Paper API (#5881)
This commit is contained in:
parent
8b08a8f2c8
commit
7b02d22ac7
@ -1,5 +1,6 @@
|
|||||||
package com.earth2me.essentials;
|
package com.earth2me.essentials;
|
||||||
|
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.PluginIdentifiableCommand;
|
import org.bukkit.command.PluginIdentifiableCommand;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
@ -31,7 +32,7 @@ public class AlternativeCommandsHandler {
|
|||||||
if (plugin.getDescription().getMain().contains("com.earth2me.essentials") || plugin.getDescription().getMain().contains("net.essentialsx")) {
|
if (plugin.getDescription().getMain().contains("com.earth2me.essentials") || plugin.getDescription().getMain().contains("net.essentialsx")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (final Map.Entry<String, Command> entry : getPluginCommands(plugin).entrySet()) {
|
for (final Map.Entry<String, Command> entry : getPluginCommands(plugin)) {
|
||||||
final String[] commandSplit = entry.getKey().split(":", 2);
|
final String[] commandSplit = entry.getKey().split(":", 2);
|
||||||
final String commandName = commandSplit.length > 1 ? commandSplit[1] : entry.getKey();
|
final String commandName = commandSplit.length > 1 ? commandSplit[1] : entry.getKey();
|
||||||
final Command command = entry.getValue();
|
final Command command = entry.getValue();
|
||||||
@ -64,14 +65,23 @@ public class AlternativeCommandsHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, Command> getPluginCommands(Plugin plugin) {
|
private List<Map.Entry<String, Command>> getPluginCommands(Plugin plugin) {
|
||||||
final Map<String, Command> commands = new HashMap<>();
|
final Map<String, Command> commands = new HashMap<>();
|
||||||
for (final Map.Entry<String, Command> entry : ess.getKnownCommandsProvider().getKnownCommands().entrySet()) {
|
for (final Map.Entry<String, Command> entry : ess.getKnownCommandsProvider().getKnownCommands().entrySet()) {
|
||||||
if (entry.getValue() instanceof PluginIdentifiableCommand && ((PluginIdentifiableCommand) entry.getValue()).getPlugin().equals(plugin)) {
|
if (entry.getValue() instanceof PluginIdentifiableCommand && ((PluginIdentifiableCommand) entry.getValue()).getPlugin().equals(plugin)) {
|
||||||
commands.put(entry.getKey(), entry.getValue());
|
commands.put(entry.getKey(), entry.getValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return commands;
|
// Try to use non-namespaced commands first if we can, some Commands may not like being registered under a
|
||||||
|
// different label than their getName() returns, so avoid doing that when we can
|
||||||
|
return commands.entrySet().stream().sorted((o1, o2) -> {
|
||||||
|
if (o1.getKey().contains(":") && !o2.getKey().contains(":")) {
|
||||||
|
return 1;
|
||||||
|
} else if (!o1.getKey().contains(":") && o2.getKey().contains(":")) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removePlugin(final Plugin plugin) {
|
public void removePlugin(final Plugin plugin) {
|
||||||
|
@ -23,6 +23,7 @@ import org.bukkit.Material;
|
|||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
import org.spongepowered.configurate.CommentedConfigurationNode;
|
import org.spongepowered.configurate.CommentedConfigurationNode;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -705,6 +706,18 @@ public class Settings implements net.ess3.api.ISettings {
|
|||||||
mapModified = true;
|
mapModified = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (reloadCount.get() < 2) {
|
||||||
|
// on startup: add plugins again in case they registered commands with the new API
|
||||||
|
// we need to schedule this task before any of the below tasks using _addAlternativeCommand.
|
||||||
|
ess.scheduleSyncDelayedTask(() -> {
|
||||||
|
for (final Plugin plugin : ess.getServer().getPluginManager().getPlugins()) {
|
||||||
|
if (plugin.isEnabled()) {
|
||||||
|
ess.getAlternativeCommandsHandler().addPlugin(plugin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
for (final String command : disabledCommands) {
|
for (final String command : disabledCommands) {
|
||||||
final String effectiveAlias = command.toLowerCase(Locale.ENGLISH);
|
final String effectiveAlias = command.toLowerCase(Locale.ENGLISH);
|
||||||
final Command toDisable = ess.getPluginCommand(effectiveAlias);
|
final Command toDisable = ess.getPluginCommand(effectiveAlias);
|
||||||
|
Loading…
Reference in New Issue
Block a user