|
1 | 1 | package com.xxmicloxx.NoteBlockAPI; |
2 | 2 |
|
3 | 3 | import java.io.IOException; |
| 4 | +import java.lang.reflect.Method; |
| 5 | +import java.lang.reflect.Type; |
4 | 6 | import java.util.ArrayList; |
5 | 7 | import java.util.Collections; |
6 | 8 | import java.util.HashMap; |
|
10 | 12 | import org.bstats.bukkit.Metrics; |
11 | 13 | import org.bukkit.Bukkit; |
12 | 14 | import org.bukkit.entity.Player; |
| 15 | +import org.bukkit.event.HandlerList; |
13 | 16 | import org.bukkit.plugin.Plugin; |
14 | 17 | import org.bukkit.plugin.RegisteredListener; |
15 | 18 | import org.bukkit.plugin.java.JavaPlugin; |
@@ -117,19 +120,28 @@ public void onEnable() { |
117 | 120 | @Override |
118 | 121 | public void run() { |
119 | 122 | Plugin[] plugins = getServer().getPluginManager().getPlugins(); |
120 | | - for(Plugin plugin: plugins) { |
121 | | - |
122 | | - ArrayList<RegisteredListener> rls = new ArrayList<>(); |
123 | | - rls.addAll(PlayerRangeStateChangeEvent.getHandlerList().getRegisteredListeners(plugin)); |
124 | | - rls.addAll(SongDestroyingEvent.getHandlerList().getRegisteredListeners(plugin)); |
125 | | - rls.addAll(SongEndEvent.getHandlerList().getRegisteredListeners(plugin)); |
126 | | - rls.addAll(SongStoppedEvent.getHandlerList().getRegisteredListeners(plugin)); |
127 | | - if (!rls.isEmpty()){ |
128 | | - dependentPlugins.put(plugin, true); |
| 123 | + Type[] types = new Type[]{PlayerRangeStateChangeEvent.class, SongDestroyingEvent.class, SongEndEvent.class, SongStoppedEvent.class }; |
| 124 | + for (Plugin plugin : plugins) { |
| 125 | + ArrayList<RegisteredListener> rls = HandlerList.getRegisteredListeners(plugin); |
| 126 | + for (RegisteredListener rl : rls) { |
| 127 | + Method[] methods = rl.getListener().getClass().getDeclaredMethods(); |
| 128 | + for (Method m : methods) { |
| 129 | + Type[] params = m.getParameterTypes(); |
| 130 | + param: |
| 131 | + for (Type paramType : params) { |
| 132 | + for (Type type : types){ |
| 133 | + if (paramType.equals(type)) { |
| 134 | + dependentPlugins.put(plugin, true); |
| 135 | + break param; |
| 136 | + } |
| 137 | + } |
| 138 | + } |
| 139 | + } |
| 140 | + |
129 | 141 | } |
130 | 142 | } |
131 | 143 | } |
132 | | - }, 20*60); |
| 144 | + }, 20*30); |
133 | 145 |
|
134 | 146 | getServer().getScheduler().runTaskLater(this, new Runnable() { |
135 | 147 |
|
|
0 commit comments