Trying better error management on NMSReflect initialization

This commit is contained in:
Marc Baloup 2022-06-23 18:48:46 +02:00
parent 52063dbcf9
commit 81faece959
Signed by: marcbal
GPG Key ID: BBC0FE3ABC30B893

View File

@ -92,13 +92,25 @@ public class NMSReflect {
if (IS_SERVER_OBFUSCATED == null) { if (IS_SERVER_OBFUSCATED == null) {
CLASSES_BY_MOJ.clear(); CLASSES_BY_MOJ.clear();
CLASSES_BY_OBF.clear(); CLASSES_BY_OBF.clear();
throw exIfUnableToDetermine; throw new IllegalStateException("Unable to determine if this server is obfuscated or not", exIfUnableToDetermine);
} }
ClassNotFoundException exIfUnableToGetInstanceClass = null;
for (ClassMapping clazz : mappings) { for (ClassMapping clazz : mappings) {
clazz.cacheReflectClass(); try {
clazz.cacheReflectClass();
} catch (ClassNotFoundException e) {
if (exIfUnableToGetInstanceClass == null)
exIfUnableToGetInstanceClass = e;
else {
exIfUnableToGetInstanceClass.addSuppressed(e);
}
}
} }
if (exIfUnableToGetInstanceClass != null)
throw exIfUnableToGetInstanceClass;
} catch (Throwable t) { } catch (Throwable t) {
Log.severe("[NMSReflect] The plugin will not be able to access NMS stuff because the obfuscation mapping couldn't be loaded.", t); Log.severe("[NMSReflect] The plugin will not be able to access NMS stuff because the obfuscation mapping couldn't be loaded.", t);
} }
@ -111,9 +123,7 @@ public class NMSReflect {
* @throws ClassNotFoundException if there is a mapping, but the runtime class was not found. * @throws ClassNotFoundException if there is a mapping, but the runtime class was not found.
*/ */
public static ClassMapping mojClass(String mojName) throws ClassNotFoundException { public static ClassMapping mojClass(String mojName) throws ClassNotFoundException {
ClassMapping cm = Objects.requireNonNull(CLASSES_BY_MOJ.get(mojName), "Unable to find the Mojang mapped class '" + mojName + "'"); return Objects.requireNonNull(CLASSES_BY_MOJ.get(mojName), "Unable to find the Mojang mapped class '" + mojName + "'");
cm.cacheReflectClass();
return cm;
} }