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

@@ -1,14 +0,0 @@
group = 'asys'
version = '0.1-SNAPSHOT'
repositories {
maven { url 'https://hub.spigotmc.org/nexus/content/groups/public/' }
}
task jar(type: Jar, overwrite: true) {
// не собирать jar
}
dependencies {
compile group: 'org.bukkit', name: 'bukkit', version: '1.8.8-R0.1-SNAPSHOT'
}

View File

@@ -1,11 +0,0 @@
/*
* DmitriyMX <dimon550@gmail.com>
* 2017-05-23
*/
package org.bukkit.craftbukkit.v1_8_R3;
public class CraftServer {
public boolean getOnlineMode() {
return false;
}
}

View File

@@ -1,5 +1,5 @@
group = 'asys' group = 'asys'
version = '0.5.4-SNAPSHOT' version = '0.5.5-SNAPSHOT'
repositories { repositories {
maven { url 'https://hub.spigotmc.org/nexus/content/groups/public/' } maven { url 'https://hub.spigotmc.org/nexus/content/groups/public/' }
@@ -18,7 +18,6 @@ configurations {
compileJava { compileJava {
dependsOn ':bridge-protocol:compileJava' dependsOn ':bridge-protocol:compileJava'
dependsOn ':bridge-mcserver-fake:compileJava'
} }
jar { jar {
@@ -33,7 +32,6 @@ ext {
dependencies { dependencies {
include files(project(':bridge-protocol').sourceSets.main.output.classesDir) include files(project(':bridge-protocol').sourceSets.main.output.classesDir)
compile files(project(':bridge-mcserver-fake').sourceSets.main.output.classesDir)
compile (group: 'org.bukkit', name: 'bukkit', version: '1.8.8-R0.1-SNAPSHOT') { compile (group: 'org.bukkit', name: 'bukkit', version: '1.8.8-R0.1-SNAPSHOT') {
exclude group: 'junit' exclude group: 'junit'
exclude group: 'commons-lang' exclude group: 'commons-lang'

View File

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

View File

@@ -4,4 +4,3 @@ include 'webinterface'
include 'mcserver-manager' include 'mcserver-manager'
include 'bridge-protocol' include 'bridge-protocol'
include 'bridge' include 'bridge'
include 'bridge-mcserver-fake'