mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-18 08:57:44 +01:00
Upstream has released updates that appear to apply and compile correctly Paper Changes: 9a129fa99 Add #getEligibleHumans to SkeletonHorseTrapEvent b5e23c7a6 Fix merging spawning values a932e8ad7 Turn off spigot verbose world by default 8ced89f65 Fix Delegation to vanilla chunk gen
115 lines
5.0 KiB
Diff
115 lines
5.0 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Parker Hawke <hawkeboyz2@hotmail.com>
|
|
Date: Sat, 27 Jun 2020 18:43:37 -0400
|
|
Subject: [PATCH] Spigot - Improve output of plugins command
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/command/defaults/PluginsCommand.java b/src/main/java/org/bukkit/command/defaults/PluginsCommand.java
|
|
index 1aa58c59e..4974fc518 100644
|
|
--- a/src/main/java/org/bukkit/command/defaults/PluginsCommand.java
|
|
+++ b/src/main/java/org/bukkit/command/defaults/PluginsCommand.java
|
|
@@ -11,6 +11,15 @@ import org.bukkit.ChatColor;
|
|
import org.bukkit.command.CommandSender;
|
|
import org.bukkit.plugin.Plugin;
|
|
import org.jetbrains.annotations.NotNull;
|
|
+// Spigot start
|
|
+import net.md_5.bungee.api.chat.BaseComponent;
|
|
+import net.md_5.bungee.api.chat.ClickEvent;
|
|
+import net.md_5.bungee.api.chat.ComponentBuilder;
|
|
+import net.md_5.bungee.api.chat.HoverEvent;
|
|
+import net.md_5.bungee.api.chat.ComponentBuilder.FormatRetention;
|
|
+import org.bukkit.entity.Player;
|
|
+import org.bukkit.plugin.PluginDescriptionFile;
|
|
+// Spigot end
|
|
|
|
public class PluginsCommand extends BukkitCommand {
|
|
public PluginsCommand(@NotNull String name) {
|
|
@@ -25,7 +34,13 @@ public class PluginsCommand extends BukkitCommand {
|
|
public boolean execute(@NotNull CommandSender sender, @NotNull String currentAlias, @NotNull String[] args) {
|
|
if (!testPermission(sender)) return true;
|
|
|
|
- sender.sendMessage("Plugins " + getPluginList());
|
|
+ // Spigot start
|
|
+ if (sender instanceof Player && sender.hasPermission("bukkit.command.version")) {
|
|
+ sender.spigot().sendMessage(getPluginListSpigot());
|
|
+ } else {
|
|
+ sender.sendMessage("Plugins " + getPluginList());
|
|
+ }
|
|
+ // Spigot end
|
|
return true;
|
|
}
|
|
|
|
@@ -71,4 +86,72 @@ public class PluginsCommand extends BukkitCommand {
|
|
// Paper end
|
|
}
|
|
|
|
+ // Spigot start
|
|
+ @NotNull
|
|
+ private BaseComponent[] getPluginListSpigot() {
|
|
+ Plugin[] plugins = Bukkit.getPluginManager().getPlugins();
|
|
+ ComponentBuilder pluginList = new ComponentBuilder("Plugins (" + plugins.length + "): ");
|
|
+
|
|
+ int index = 0;
|
|
+ for (Plugin plugin : plugins) {
|
|
+ if (index++ > 0) {
|
|
+ pluginList.append(", ", FormatRetention.NONE).color(net.md_5.bungee.api.ChatColor.WHITE);
|
|
+ }
|
|
+
|
|
+ // Event components
|
|
+ PluginDescriptionFile description = plugin.getDescription();
|
|
+ ComponentBuilder hoverEventComponents = new ComponentBuilder();
|
|
+ hoverEventComponents.append("Version: ").color(net.md_5.bungee.api.ChatColor.WHITE).append(description.getVersion()).color(net.md_5.bungee.api.ChatColor.GREEN);
|
|
+
|
|
+ if (description.getDescription() != null) {
|
|
+ hoverEventComponents.append("\nDescription: ").color(net.md_5.bungee.api.ChatColor.WHITE).append(description.getDescription()).color(net.md_5.bungee.api.ChatColor.GREEN);
|
|
+ }
|
|
+
|
|
+ if (description.getWebsite() != null) {
|
|
+ hoverEventComponents.append("\nWebsite: ").color(net.md_5.bungee.api.ChatColor.WHITE).append(description.getWebsite()).color(net.md_5.bungee.api.ChatColor.GREEN);
|
|
+ }
|
|
+
|
|
+ if (!description.getAuthors().isEmpty()) {
|
|
+ if (description.getAuthors().size() == 1) {
|
|
+ hoverEventComponents.append("\nAuthor: ");
|
|
+ } else {
|
|
+ hoverEventComponents.append("\nAuthors: ");
|
|
+ }
|
|
+
|
|
+ hoverEventComponents.color(net.md_5.bungee.api.ChatColor.WHITE).append(getAuthors(description));
|
|
+ }
|
|
+
|
|
+ HoverEvent hoverEvent = new HoverEvent(HoverEvent.Action.SHOW_TEXT, hoverEventComponents.create());
|
|
+ ClickEvent clickEvent = new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/version " + description.getName());
|
|
+
|
|
+ // Plugin list entry
|
|
+ pluginList.append(plugin.getDescription().getName());
|
|
+ pluginList.color(plugin.isEnabled() ? net.md_5.bungee.api.ChatColor.GREEN : net.md_5.bungee.api.ChatColor.RED);
|
|
+ pluginList.event(hoverEvent).event(clickEvent);
|
|
+
|
|
+ if (plugin.getDescription().getProvides().size() > 0) {
|
|
+ pluginList.append("( ", FormatRetention.NONE).color(net.md_5.bungee.api.ChatColor.WHITE).append(String.join(", ", plugin.getDescription().getProvides())).append(")");
|
|
+ }
|
|
+ }
|
|
+
|
|
+ return pluginList.create();
|
|
+ }
|
|
+
|
|
+ @NotNull
|
|
+ private BaseComponent[] getAuthors(@NotNull final PluginDescriptionFile description) {
|
|
+ ComponentBuilder result = new ComponentBuilder();
|
|
+ List<String> authors = description.getAuthors();
|
|
+
|
|
+ for (int i = 0; i < authors.size(); i++) {
|
|
+ if (i > 0) {
|
|
+ result.append(i < authors.size() - 1 ? ", " : " and ", FormatRetention.NONE);
|
|
+ result.color(net.md_5.bungee.api.ChatColor.WHITE);
|
|
+ }
|
|
+
|
|
+ result.append(authors.get(i)).color(net.md_5.bungee.api.ChatColor.GREEN);
|
|
+ }
|
|
+
|
|
+ return result.create();
|
|
+ }
|
|
+ // Spigot end
|
|
}
|