package com.dsh105.holoapi.data; import com.captainbern.reflection.Reflection; import com.captainbern.reflection.accessor.FieldAccessor; import com.dsh105.holoapi.util.LogicUtil; import org.bukkit.Bukkit; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.SimplePluginManager; import java.util.Arrays; import java.util.Collection; import java.util.List; public class DependencyGraphUtil { private static final FieldAccessor<Collection> pluginsField = new Reflection().reflect(SimplePluginManager.class).getSafeFieldByNameAndType("plugins", Collection.class).getAccessor(); public static Collection<Plugin> getPluginsUnsafe() { final PluginManager man = Bukkit.getPluginManager(); if (man instanceof SimplePluginManager) { return pluginsField.get(man); } else { return Arrays.asList(man.getPlugins()); } } public static boolean isDepending(Plugin plugin, Plugin depending) { final List<String> dep = plugin.getDescription().getDepend(); return !LogicUtil.nullOrEmpty(dep) && dep.contains(depending.getName()); } public static boolean isSoftDepending(Plugin plugin, Plugin depending) { final List<String> dep = plugin.getDescription().getSoftDepend(); return !LogicUtil.nullOrEmpty(dep) && dep.contains(depending.getName()); } }