@@ -0,0 +1,21 @@
|
||||
package org.bukkit.support;
|
||||
|
||||
import net.minecraft.server.StatisticList;
|
||||
|
||||
import org.junit.BeforeClass;
|
||||
|
||||
/**
|
||||
* If you are getting: java.lang.ExceptionInInitializerError
|
||||
* at net.minecraft.server.StatisticList.<clinit>(SourceFile:58)
|
||||
* at net.minecraft.server.Item.<clinit>(SourceFile:252)
|
||||
* at net.minecraft.server.Block.<clinit>(Block.java:577)
|
||||
*
|
||||
* extend this class to solve it.
|
||||
*/
|
||||
public abstract class AbstractTestingBase {
|
||||
|
||||
@BeforeClass
|
||||
public static void setup() {
|
||||
StatisticList.a();
|
||||
}
|
||||
}
|
||||
31
paper-server/src/test/java/org/bukkit/support/Util.java
Normal file
31
paper-server/src/test/java/org/bukkit/support/Util.java
Normal file
@@ -0,0 +1,31 @@
|
||||
package org.bukkit.support;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
public class Util {
|
||||
/*
|
||||
public static <T> T getInternalState(Object object, String fieldName) {
|
||||
return getInternalState(object.getClass(), object, fieldName);
|
||||
}
|
||||
*/
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> T getInternalState(Class<?> clazz, Object object, String fieldName) {
|
||||
Field field;
|
||||
try {
|
||||
field = clazz.getDeclaredField(fieldName);
|
||||
} catch (SecurityException e) {
|
||||
throw new RuntimeException("Not allowed to access " + clazz, e);
|
||||
} catch (NoSuchFieldException e) {
|
||||
throw new RuntimeException("Unable to find field " + fieldName, e);
|
||||
}
|
||||
|
||||
field.setAccessible(true);
|
||||
try {
|
||||
return (T) field.get(object);
|
||||
} catch (IllegalArgumentException e) {
|
||||
} catch (IllegalAccessException e) {
|
||||
}
|
||||
throw new RuntimeException("Unable to get internal value");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user