mirror of
https://github.com/dmulloy2/ProtocolLib.git
synced 2024-11-27 21:26:17 +01:00
Reimplement plugin incompatibility check, tweak some commands
This commit is contained in:
parent
0ed76d7228
commit
0cc182f93d
@ -66,6 +66,7 @@ abstract class CommandBase implements CommandExecutor {
|
|||||||
reporter.reportWarning(this, Report.newBuilder(REPORT_UNEXPECTED_COMMAND).messageParam(this));
|
reporter.reportWarning(this, Report.newBuilder(REPORT_UNEXPECTED_COMMAND).messageParam(this));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (permission != null && !sender.hasPermission(permission)) {
|
if (permission != null && !sender.hasPermission(permission)) {
|
||||||
sender.sendMessage(ChatColor.RED + "You haven't got permission to run this command.");
|
sender.sendMessage(ChatColor.RED + "You haven't got permission to run this command.");
|
||||||
return true;
|
return true;
|
||||||
@ -75,13 +76,12 @@ abstract class CommandBase implements CommandExecutor {
|
|||||||
if (args != null && args.length >= minimumArgumentCount) {
|
if (args != null && args.length >= minimumArgumentCount) {
|
||||||
return handleCommand(sender, args);
|
return handleCommand(sender, args);
|
||||||
} else {
|
} else {
|
||||||
sender.sendMessage(ChatColor.RED + "Insufficient commands. You need at least " + minimumArgumentCount);
|
sender.sendMessage(ChatColor.RED + "Insufficient arguments. You need at least " + minimumArgumentCount);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
} catch (Throwable ex) {
|
||||||
} catch (Exception e) {
|
|
||||||
reporter.reportDetailed(this,
|
reporter.reportDetailed(this,
|
||||||
Report.newBuilder(REPORT_COMMAND_ERROR).error(e).messageParam(name).callerParam(sender, label, args)
|
Report.newBuilder(REPORT_COMMAND_ERROR).error(ex).messageParam(name).callerParam(sender, label, args)
|
||||||
);
|
);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ import java.io.IOException;
|
|||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
import org.bukkit.plugin.PluginDescriptionFile;
|
||||||
|
|
||||||
import com.comphenix.protocol.error.ErrorReporter;
|
import com.comphenix.protocol.error.ErrorReporter;
|
||||||
import com.comphenix.protocol.events.PacketListener;
|
import com.comphenix.protocol.events.PacketListener;
|
||||||
@ -60,6 +61,8 @@ class CommandProtocol extends CommandBase {
|
|||||||
toggleTimings(sender, args);
|
toggleTimings(sender, args);
|
||||||
else if (subCommand.equalsIgnoreCase("listeners"))
|
else if (subCommand.equalsIgnoreCase("listeners"))
|
||||||
printListeners(sender);
|
printListeners(sender);
|
||||||
|
else if (subCommand.equalsIgnoreCase("version"))
|
||||||
|
printVersion(sender);
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
@ -69,13 +72,14 @@ class CommandProtocol extends CommandBase {
|
|||||||
private void printListeners(final CommandSender sender) {
|
private void printListeners(final CommandSender sender) {
|
||||||
ProtocolManager manager = ProtocolLibrary.getProtocolManager();
|
ProtocolManager manager = ProtocolLibrary.getProtocolManager();
|
||||||
|
|
||||||
for (PacketListener listener : manager.getPacketListeners()) {
|
|
||||||
sender.sendMessage(ChatColor.GOLD + "Packet listeners:");
|
sender.sendMessage(ChatColor.GOLD + "Packet listeners:");
|
||||||
|
for (PacketListener listener : manager.getPacketListeners()) {
|
||||||
sender.sendMessage(ChatColor.GOLD + " " + listener);
|
sender.sendMessage(ChatColor.GOLD + " " + listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Along with every asynchronous listener
|
// Along with every asynchronous listener
|
||||||
for (PacketListener listener : manager.getAsynchronousManager().getAsyncHandlers()) {
|
|
||||||
sender.sendMessage(ChatColor.GOLD + "Asynchronous listeners:");
|
sender.sendMessage(ChatColor.GOLD + "Asynchronous listeners:");
|
||||||
|
for (PacketListener listener : manager.getAsynchronousManager().getAsyncHandlers()) {
|
||||||
sender.sendMessage(ChatColor.GOLD + " " + listener);
|
sender.sendMessage(ChatColor.GOLD + " " + listener);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -123,12 +127,19 @@ class CommandProtocol extends CommandBase {
|
|||||||
// Print to a text file
|
// Print to a text file
|
||||||
generator.saveTo(destination, manager);
|
generator.saveTo(destination, manager);
|
||||||
manager.clear();
|
manager.clear();
|
||||||
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
reporter.reportMinimal(plugin, "saveTimings()", e);
|
reporter.reportMinimal(plugin, "saveTimings()", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void printVersion(CommandSender sender) {
|
||||||
|
PluginDescriptionFile desc = plugin.getDescription();
|
||||||
|
|
||||||
|
sender.sendMessage(ChatColor.GREEN + desc.getName() + ChatColor.WHITE + " v" + ChatColor.GREEN + desc.getVersion());
|
||||||
|
sender.sendMessage("Authors: " + ChatColor.GREEN + "dmulloy2 " + ChatColor.WHITE + " and " + ChatColor.GREEN + "Comphenix");
|
||||||
|
sender.sendMessage("Issues: " + ChatColor.GREEN + "https://github.com/dmulloy2/ProtocolLib/issues");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prevent further automatic updates until the next delay.
|
* Prevent further automatic updates until the next delay.
|
||||||
*/
|
*/
|
||||||
|
@ -30,6 +30,7 @@ import java.util.regex.Pattern;
|
|||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
import org.bukkit.command.PluginCommand;
|
import org.bukkit.command.PluginCommand;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
@ -371,6 +372,9 @@ public class ProtocolLibrary extends JavaPlugin {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check for incompatible plugins
|
||||||
|
checkForIncompatibility(manager);
|
||||||
|
|
||||||
// Initialize background compiler
|
// Initialize background compiler
|
||||||
if (backgroundCompiler == null && config.isBackgroundCompilerEnabled()) {
|
if (backgroundCompiler == null && config.isBackgroundCompilerEnabled()) {
|
||||||
backgroundCompiler = new BackgroundCompiler(getClassLoader(), reporter);
|
backgroundCompiler = new BackgroundCompiler(getClassLoader(), reporter);
|
||||||
@ -392,7 +396,6 @@ public class ProtocolLibrary extends JavaPlugin {
|
|||||||
// Worker that ensures that async packets are eventually sent
|
// Worker that ensures that async packets are eventually sent
|
||||||
// It also performs the update check.
|
// It also performs the update check.
|
||||||
createPacketTask(server);
|
createPacketTask(server);
|
||||||
|
|
||||||
} catch (OutOfMemoryError e) {
|
} catch (OutOfMemoryError e) {
|
||||||
throw e;
|
throw e;
|
||||||
} catch (ThreadDeath e) {
|
} catch (ThreadDeath e) {
|
||||||
@ -419,6 +422,26 @@ public class ProtocolLibrary extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void checkForIncompatibility(PluginManager manager) {
|
||||||
|
// Plugin authors: Notify me to remove these
|
||||||
|
String[] incompatible = { };
|
||||||
|
|
||||||
|
for (String plugin : incompatible) {
|
||||||
|
if (manager.getPlugin(plugin) != null) {
|
||||||
|
// Check for versions, etc.
|
||||||
|
logger.severe("Detected incompatible plugin: " + plugin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Special case for TagAPI and iTag
|
||||||
|
if (manager.getPlugin("TagAPI") != null) {
|
||||||
|
Plugin iTag = manager.getPlugin("iTag");
|
||||||
|
if (iTag == null || iTag.getDescription().getVersion().startsWith("1.0")) {
|
||||||
|
logger.severe("Detected incompatible plugin: TagAPI");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Used to check Minecraft version
|
// Used to check Minecraft version
|
||||||
private MinecraftVersion verifyMinecraftVersion() {
|
private MinecraftVersion verifyMinecraftVersion() {
|
||||||
MinecraftVersion minimum = new MinecraftVersion(MINIMUM_MINECRAFT_VERSION);
|
MinecraftVersion minimum = new MinecraftVersion(MINIMUM_MINECRAFT_VERSION);
|
||||||
@ -435,8 +458,8 @@ public class ProtocolLibrary extends JavaPlugin {
|
|||||||
if (current.compareTo(maximum) > 0)
|
if (current.compareTo(maximum) > 0)
|
||||||
logger.warning("Version " + current + " has not yet been tested! Proceed with caution.");
|
logger.warning("Version " + current + " has not yet been tested! Proceed with caution.");
|
||||||
}
|
}
|
||||||
return current;
|
|
||||||
|
|
||||||
|
return current;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
reporter.reportWarning(this, Report.newBuilder(REPORT_CANNOT_PARSE_MINECRAFT_VERSION).error(e).messageParam(maximum));
|
reporter.reportWarning(this, Report.newBuilder(REPORT_CANNOT_PARSE_MINECRAFT_VERSION).error(e).messageParam(maximum));
|
||||||
|
|
||||||
@ -460,7 +483,6 @@ public class ProtocolLibrary extends JavaPlugin {
|
|||||||
for (File candidate : pluginFolder.listFiles()) {
|
for (File candidate : pluginFolder.listFiles()) {
|
||||||
if (candidate.isFile() && !candidate.equals(loadedFile)) {
|
if (candidate.isFile() && !candidate.equals(loadedFile)) {
|
||||||
Matcher match = ourPlugin.matcher(candidate.getName());
|
Matcher match = ourPlugin.matcher(candidate.getName());
|
||||||
|
|
||||||
if (match.matches()) {
|
if (match.matches()) {
|
||||||
MinecraftVersion version = new MinecraftVersion(match.group(1));
|
MinecraftVersion version = new MinecraftVersion(match.group(1));
|
||||||
|
|
||||||
@ -473,7 +495,6 @@ public class ProtocolLibrary extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
reporter.reportWarning(this, Report.newBuilder(REPORT_CANNOT_DETECT_CONFLICTING_PLUGINS).error(e));
|
reporter.reportWarning(this, Report.newBuilder(REPORT_CANNOT_DETECT_CONFLICTING_PLUGINS).error(e));
|
||||||
}
|
}
|
||||||
@ -498,11 +519,11 @@ public class ProtocolLibrary extends JavaPlugin {
|
|||||||
PluginCommand command = getCommand(name);
|
PluginCommand command = getCommand(name);
|
||||||
|
|
||||||
// Try to load the command
|
// Try to load the command
|
||||||
if (command != null)
|
if (command != null) {
|
||||||
command.setExecutor(executor);
|
command.setExecutor(executor);
|
||||||
else
|
} else {
|
||||||
throw new RuntimeException("plugin.yml might be corrupt.");
|
throw new RuntimeException("plugin.yml might be corrupt.");
|
||||||
|
}
|
||||||
} catch (RuntimeException e) {
|
} catch (RuntimeException e) {
|
||||||
reporter.reportWarning(this, Report.newBuilder(REPORT_CANNOT_REGISTER_COMMAND).messageParam(name, e.getMessage()).error(e));
|
reporter.reportWarning(this, Report.newBuilder(REPORT_CANNOT_REGISTER_COMMAND).messageParam(name, e.getMessage()).error(e));
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ database: false
|
|||||||
commands:
|
commands:
|
||||||
protocol:
|
protocol:
|
||||||
description: Performs administrative tasks regarding ProtocolLib.
|
description: Performs administrative tasks regarding ProtocolLib.
|
||||||
usage: /<command> config|check|update
|
usage: /<command> config|timings|listeners|version
|
||||||
permission: protocol.admin
|
permission: protocol.admin
|
||||||
permission-message: You don't have <permission>
|
permission-message: You don't have <permission>
|
||||||
packet:
|
packet:
|
||||||
|
Loading…
Reference in New Issue
Block a user