This commit is contained in:
坏黑
2018-05-07 14:43:57 +08:00
parent 7181c487f9
commit 6f34cbc2e0
152 changed files with 9256 additions and 9003 deletions

View File

@@ -1,38 +1,27 @@
package me.skymc.taboolib.plugin;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.SortedSet;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.google.common.base.Joiner;
import me.skymc.taboolib.Main;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.PluginCommand;
import org.bukkit.command.SimpleCommandMap;
import org.bukkit.event.Event;
import org.bukkit.plugin.InvalidDescriptionException;
import org.bukkit.plugin.InvalidPluginException;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.RegisteredListener;
import org.bukkit.plugin.*;
import com.google.common.base.Joiner;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.net.URLClassLoader;
import java.util.*;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
import me.skymc.taboolib.Main;
public class PluginUtils {
public class PluginUtils
{
public static String consolidateStrings(final String[] args, final int start) {
public static String consolidateStrings(final String[] args, final int start) {
StringBuilder ret = new StringBuilder(args[start]);
if (args.length > start + 1) {
for (int i = start + 1; i < args.length; ++i) {
@@ -41,13 +30,13 @@ public class PluginUtils
}
return ret.toString();
}
public static void enable(final Plugin plugin) {
if (plugin != null && !plugin.isEnabled()) {
Bukkit.getPluginManager().enablePlugin(plugin);
}
}
public static void enableAll() {
for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
if (!isIgnored(plugin)) {
@@ -55,13 +44,13 @@ public class PluginUtils
}
}
}
public static void disable(final Plugin plugin) {
if (plugin != null && plugin.isEnabled()) {
Bukkit.getPluginManager().disablePlugin(plugin);
}
}
public static void disableAll() {
for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
if (!isIgnored(plugin)) {
@@ -69,11 +58,11 @@ public class PluginUtils
}
}
}
public static String getFormattedName(final Plugin plugin) {
return getFormattedName(plugin, false);
}
public static String getFormattedName(final Plugin plugin, final boolean includeVersions) {
final ChatColor color = plugin.isEnabled() ? ChatColor.GREEN : ChatColor.RED;
String pluginName = color + plugin.getName();
@@ -82,11 +71,11 @@ public class PluginUtils
}
return pluginName;
}
public static Plugin getPluginByName(final String[] args, final int start) {
return getPluginByName(consolidateStrings(args, start));
}
public static Plugin getPluginByName(final String name) {
for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
if (name.equalsIgnoreCase(plugin.getName())) {
@@ -95,7 +84,7 @@ public class PluginUtils
}
return null;
}
public static List<String> getPluginNames(final boolean fullName) {
final List<String> plugins = new ArrayList<>();
for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
@@ -103,7 +92,7 @@ public class PluginUtils
}
return plugins;
}
public static String getPluginVersion(final String name) {
final Plugin plugin = getPluginByName(name);
if (plugin != null && plugin.getDescription() != null) {
@@ -111,7 +100,7 @@ public class PluginUtils
}
return null;
}
public static String getUsages(final Plugin plugin) {
final List<String> parsedCommands = new ArrayList<>();
final Map<String, Map<String, Object>> commands = plugin.getDescription().getCommands();
@@ -127,9 +116,9 @@ public class PluginUtils
}
return Joiner.on(", ").join(parsedCommands);
}
@SuppressWarnings("unchecked")
public static List<String> findByCommand(final String command) {
public static List<String> findByCommand(final String command) {
final List<String> plugins = new ArrayList<>();
for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
final Map<String, Map<String, Object>> commands = plugin.getDescription().getCommands();
@@ -137,18 +126,16 @@ public class PluginUtils
for (final Map.Entry<String, Map<String, Object>> commandNext : commands.entrySet()) {
if (commandNext.getKey().equalsIgnoreCase(command)) {
plugins.add(plugin.getName());
}
else {
} else {
for (final Map.Entry<String, Object> attributeNext : commandNext.getValue().entrySet()) {
if (attributeNext.getKey().equals("aliases")) {
final Object aliases = attributeNext.getValue();
if (aliases instanceof String) {
if (!((String)aliases).equalsIgnoreCase(command)) {
if (!((String) aliases).equalsIgnoreCase(command)) {
continue;
}
plugins.add(plugin.getName());
}
else {
} else {
final List<String> array = (List<String>) aliases;
for (final String str : array) {
if (str.equalsIgnoreCase(command)) {
@@ -164,21 +151,21 @@ public class PluginUtils
}
return plugins;
}
public static boolean isIgnored(final Plugin plugin) {
return isIgnored(plugin.getName());
}
public static boolean isIgnored(final String plugin) {
return plugin.equalsIgnoreCase(Main.getInst().getName());
}
private static String load(final Plugin plugin) {
return load(plugin.getName());
}
public static String load(final String name) {
Plugin target = null;
Plugin target;
final File pluginDir = new File("plugins");
if (!pluginDir.isDirectory()) {
return "load.plugin-directory";
@@ -193,8 +180,7 @@ public class PluginUtils
pluginFile = f;
break;
}
}
catch (InvalidDescriptionException e3) {
} catch (InvalidDescriptionException e3) {
return "load.cannot-find";
}
}
@@ -202,25 +188,23 @@ public class PluginUtils
}
try {
target = Bukkit.getPluginManager().loadPlugin(pluginFile);
}
catch (InvalidDescriptionException e) {
} catch (InvalidDescriptionException e) {
return "load.invalid-description";
}
catch (InvalidPluginException e2) {
} catch (InvalidPluginException e2) {
return "load.invalid-plugin";
}
target.onLoad();
Bukkit.getPluginManager().enablePlugin(target);
return "load.loaded";
}
public static void reload(final Plugin plugin) {
if (plugin != null) {
unload(plugin);
load(plugin);
}
}
public static void reloadAll() {
for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
if (!isIgnored(plugin)) {
@@ -228,9 +212,9 @@ public class PluginUtils
}
}
}
@SuppressWarnings("unchecked")
public static String unload(final Plugin plugin) {
public static String unload(final Plugin plugin) {
final String name = plugin.getName();
final PluginManager pluginManager = Bukkit.getPluginManager();
SimpleCommandMap commandMap = null;
@@ -244,24 +228,23 @@ public class PluginUtils
try {
final Field pluginsField = Bukkit.getPluginManager().getClass().getDeclaredField("plugins");
pluginsField.setAccessible(true);
plugins = (List<Plugin>)pluginsField.get(pluginManager);
plugins = (List<Plugin>) pluginsField.get(pluginManager);
final Field lookupNamesField = Bukkit.getPluginManager().getClass().getDeclaredField("lookupNames");
lookupNamesField.setAccessible(true);
names = (Map<String, Plugin>)lookupNamesField.get(pluginManager);
names = (Map<String, Plugin>) lookupNamesField.get(pluginManager);
try {
final Field listenersField = Bukkit.getPluginManager().getClass().getDeclaredField("listeners");
listenersField.setAccessible(true);
listeners = (Map<Event, SortedSet<RegisteredListener>>)listenersField.get(pluginManager);
}
catch (Exception e3) {
listeners = (Map<Event, SortedSet<RegisteredListener>>) listenersField.get(pluginManager);
} catch (Exception e3) {
reloadlisteners = false;
}
final Field commandMapField = Bukkit.getPluginManager().getClass().getDeclaredField("commandMap");
commandMapField.setAccessible(true);
commandMap = (SimpleCommandMap)commandMapField.get(pluginManager);
commandMap = (SimpleCommandMap) commandMapField.get(pluginManager);
final Field knownCommandsField = SimpleCommandMap.class.getDeclaredField("knownCommands");
knownCommandsField.setAccessible(true);
commands = (Map<String, Command>)knownCommandsField.get(commandMap);
commands = (Map<String, Command>) knownCommandsField.get(commandMap);
} catch (NoSuchFieldException | IllegalAccessException e) {
return "failed";
}
@@ -283,7 +266,7 @@ public class PluginUtils
while (it2.hasNext()) {
final Map.Entry<String, Command> entry = it2.next();
if (entry.getValue() instanceof PluginCommand) {
final PluginCommand c = (PluginCommand)entry.getValue();
final PluginCommand c = (PluginCommand) entry.getValue();
if (c.getPlugin() != plugin) {
continue;
}
@@ -295,9 +278,8 @@ public class PluginUtils
final ClassLoader cl = plugin.getClass().getClassLoader();
if (cl instanceof URLClassLoader) {
try {
((URLClassLoader)cl).close();
}
catch (IOException ex) {
((URLClassLoader) cl).close();
} catch (IOException ex) {
Logger.getLogger(PluginUtils.class.getName()).log(Level.SEVERE, null, ex);
}
}