@@ -17,7 +17,6 @@ public class WorkArounds {
1717
1818
1919
20- @ SuppressWarnings ("unused" )
2120 private static Object getPrivateField (Object object , String field )throws SecurityException ,
2221 NoSuchFieldException , IllegalArgumentException , IllegalAccessException {
2322 Class <?> clazz = object .getClass ();
@@ -70,51 +69,55 @@ public static void unregisterPlugin(Plugin plugin) {
7069 HashMap <String , String > cmdds = new HashMap <>();
7170
7271 for (Command c : Server .getInstance ().getCommandMap ().getCommands ().values ()) {
73- if (cmdds .containsKey (c .getClass ().getName ())) {
74- cmdds .put (c .getClass ().getName (),cmdds .get (c .getClass ().getName ()) + ">>>" + c .getName ());
75- } else cmdds .put (c .getClass ().getName (), c .getName ());
72+ try {
73+ if (cmdds .containsKey (c .getClass ().getName ())) {
74+ cmdds .put (c .getClass ().getName (),cmdds .get (c .getClass ().getName ()) + ">>>" + c .getName ());
75+ } else cmdds .put (c .getClass ().getName (), c .getName ());
76+ } catch (Exception e ) {
77+ e .printStackTrace ();
78+ }
7679 }
7780
7881 Object files = getPrivateField (Server .getInstance ().getPluginManager (), "fileAssociations" );
7982 @ SuppressWarnings ("unchecked" )
8083 HashMap <String , PluginLoader > fileAssociations = (HashMap <String , PluginLoader >) files ;
8184 for (PluginLoader p : fileAssociations .values ()) {
8285
83- Object map2 = getPrivateField (p , "classLoaders" );
84- @ SuppressWarnings ("unchecked" )
85- HashMap <String , PluginClassLoader > classes = (HashMap <String , PluginClassLoader >) map2 ;
86-
87- Object map4 = getPrivateField (p , "classes" );
88- @ SuppressWarnings ({ "unchecked" , "rawtypes" })
89- HashMap <String , Class > packs = (HashMap <String , Class >) map4 ;
90-
91- // for(String s : packs.keySet()) System.out.println("1 " + s);
92-
93-
94- PluginClassLoader loader = classes .get (plugin .getName ());
95- Object map3 = getPrivateField (loader , "classes" );
96- @ SuppressWarnings ({ "unchecked" , "rawtypes" })
97- HashMap <String , Class > classess = (HashMap <String , Class >) map3 ;
98- for (Class <?> s : classess .values ()) {
99-
100- packs .remove (s .getName ());
101-
102- if (cmdds .containsKey (s .getName ())) for (String ss : cmdds .get (s .getName ()).split (">>>" )) if (!commands .contains (knownCommands .get (ss ))) commands .add (knownCommands .get (ss ));
103-
104- }
105-
106- for (Command c : commands ) unregisterCommand (c );
107-
108- classess .clear ();
109-
110- classes .remove (plugin .getName ());
86+ try {
87+ Object map2 = getPrivateField (p , "classLoaders" );
88+ @ SuppressWarnings ("unchecked" )
89+ HashMap <String , PluginClassLoader > classes = (HashMap <String , PluginClassLoader >) map2 ;
90+
91+ Object map4 = getPrivateField (p , "classes" );
92+ @ SuppressWarnings ({ "unchecked" , "rawtypes" })
93+ HashMap <String , Class > packs = (HashMap <String , Class >) map4 ;
94+
95+ // for(String s : packs.keySet()) System.out.println("1 " + s);
96+
97+
98+ PluginClassLoader loader = classes .get (plugin .getName ());
99+ Object map3 = getPrivateField (loader , "classes" );
100+ @ SuppressWarnings ({ "unchecked" , "rawtypes" })
101+ HashMap <String , Class > classess = (HashMap <String , Class >) map3 ;
102+ for (Class <?> s : classess .values ()) {
103+
104+ packs .remove (s .getName ());
105+
106+ if (cmdds .containsKey (s .getName ())) for (String ss : cmdds .get (s .getName ()).split (">>>" )) if (!commands .contains (knownCommands .get (ss ))) commands .add (knownCommands .get (ss ));
107+
108+ }
109+
110+ for (Command c : commands ) unregisterCommand (c );
111+
112+ classess .clear ();
113+
114+ classes .remove (plugin .getName ());
115+ } catch (Exception e ) {
116+ e .printStackTrace ();
117+ }
111118
112119 }
113-
114-
115-
116-
117-
120+
118121 } catch (Exception e ) {
119122 e .printStackTrace ();
120123 }
@@ -133,10 +136,13 @@ public static List<Command> findCommands(Plugin plugin) {
133136 HashMap <String , String > cmdds = new HashMap <>();
134137
135138 for (Command c : Server .getInstance ().getCommandMap ().getCommands ().values ()) {
136-
137- if (cmdds .containsKey (c .getClass ().getName ())) {
138- cmdds .put (c .getClass ().getName (),cmdds .get (c .getClass ().getName ()) + ">>>" + c .getName ());
139- } else cmdds .put (c .getClass ().getName (), c .getName ());
139+ try {
140+ if (cmdds .containsKey (c .getClass ().getName ())) {
141+ cmdds .put (c .getClass ().getName (),cmdds .get (c .getClass ().getName ()) + ">>>" + c .getName ());
142+ } else cmdds .put (c .getClass ().getName (), c .getName ());
143+ } catch (Exception e ) {
144+ e .printStackTrace ();
145+ }
140146 }
141147
142148
@@ -145,6 +151,7 @@ public static List<Command> findCommands(Plugin plugin) {
145151 HashMap <String , PluginLoader > fileAssociations = (HashMap <String , PluginLoader >) files ;
146152 for (PluginLoader p : fileAssociations .values ()) {
147153
154+ try {
148155 Object map2 = getPrivateField (p , "classLoaders" );
149156 @ SuppressWarnings ("unchecked" )
150157 HashMap <String , PluginClassLoader > classes = (HashMap <String , PluginClassLoader >) map2 ;
@@ -155,8 +162,15 @@ public static List<Command> findCommands(Plugin plugin) {
155162 @ SuppressWarnings ({ "unchecked" , "rawtypes" })
156163 HashMap <String , Class > classess = (HashMap <String , Class >) map3 ;
157164 for (Class <?> s : classess .values ()) {
158- if (cmdds .containsKey (s .getName ())) for (String ss : cmdds .get (s .getName ()).split (">>>" )) if (!commands .contains (knownCommands .get (ss ))) commands .add (knownCommands .get (ss ));
165+ try {
166+ if (cmdds .containsKey (s .getName ())) for (String ss : cmdds .get (s .getName ()).split (">>>" )) if (!commands .contains (knownCommands .get (ss ))) commands .add (knownCommands .get (ss ));
167+ } catch (Exception e ) {
168+ e .printStackTrace ();
169+ }
159170 }
171+ } catch (Exception e ) {
172+ e .printStackTrace ();
173+ }
160174
161175 }
162176
0 commit comments