Archived
0

Bridge: избавляемся от fake-модуля

This commit is contained in:
2017-05-23 21:52:01 +03:00
parent 08e17004fc
commit 2071e5c554
5 changed files with 16 additions and 34 deletions

View File

@@ -5,31 +5,41 @@
package asys.bridge.bukkit;
import org.bukkit.Server;
import org.bukkit.craftbukkit.v1_8_R3.CraftServer;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
class SpigotServer {
private CraftServer craftServer;
private Object craftServer;
private Object booleanWrapper;
private Field booleanWrapperValueField;
private Method getOnlineModeMethod;
SpigotServer(Server server) {
craftServer = (CraftServer)server;
craftServer = server;
try {
Field onlineField = craftServer.getClass().getDeclaredField("online");
onlineField.setAccessible(true);
booleanWrapper = onlineField.get(craftServer);
booleanWrapperValueField = booleanWrapper.getClass().getDeclaredField("value");
booleanWrapperValueField.setAccessible(true);
} catch (NoSuchFieldException | IllegalAccessException e) {
getOnlineModeMethod = craftServer.getClass().getDeclaredMethod("getOnlineMode");
} catch (NoSuchFieldException | IllegalAccessException | NoSuchMethodException e) {
e.printStackTrace();
}
}
boolean getOnlineMode() {
return craftServer.getOnlineMode();
try {
Object result = getOnlineModeMethod.invoke(craftServer);
return (Boolean) result;
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
return false;
}
}
void setOnlineMode(boolean value) {