diff --git a/bridge-mcserver-fake/build.gradle b/bridge-mcserver-fake/build.gradle new file mode 100644 index 0000000..edb1a8a --- /dev/null +++ b/bridge-mcserver-fake/build.gradle @@ -0,0 +1,14 @@ +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' +} \ No newline at end of file diff --git a/bridge-mcserver-fake/src/main/java/org/bukkit/craftbukkit/v1_8_R3/CraftServer.java b/bridge-mcserver-fake/src/main/java/org/bukkit/craftbukkit/v1_8_R3/CraftServer.java new file mode 100644 index 0000000..ad00dc5 --- /dev/null +++ b/bridge-mcserver-fake/src/main/java/org/bukkit/craftbukkit/v1_8_R3/CraftServer.java @@ -0,0 +1,11 @@ +/* + * DmitriyMX + * 2017-05-23 + */ +package org.bukkit.craftbukkit.v1_8_R3; + +public class CraftServer { + public boolean getOnlineMode() { + return false; + } +} diff --git a/bridge/build.gradle b/bridge/build.gradle index cd42b01..bacb543 100644 --- a/bridge/build.gradle +++ b/bridge/build.gradle @@ -1,5 +1,5 @@ group = 'asys' -version = '0.5.3-SNAPSHOT' +version = '0.5.4-SNAPSHOT' repositories { maven { url 'https://hub.spigotmc.org/nexus/content/groups/public/' } @@ -18,6 +18,7 @@ configurations { compileJava { dependsOn ':bridge-protocol:compileJava' + dependsOn ':bridge-mcserver-fake:compileJava' } jar { @@ -32,6 +33,7 @@ ext { dependencies { 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') { exclude group: 'junit' exclude group: 'commons-lang' diff --git a/bridge/src/main/java/asys/bridge/bukkit/BridgePlugin.java b/bridge/src/main/java/asys/bridge/bukkit/BridgePlugin.java index be638d7..854409c 100644 --- a/bridge/src/main/java/asys/bridge/bukkit/BridgePlugin.java +++ b/bridge/src/main/java/asys/bridge/bukkit/BridgePlugin.java @@ -20,6 +20,7 @@ public class BridgePlugin extends JavaPlugin { private int tryConnect = 0; private BridgeLoggerAppender loggerAppender; private boolean needReconnect = true; + private SpigotServer spigotServer; @Override public void onLoad() { @@ -30,6 +31,8 @@ public class BridgePlugin extends JavaPlugin { @Override public void onEnable() { if (INSTANCE == null) { + spigotServer = new SpigotServer(getServer()); + INSTANCE = this; saveDefaultConfig(); @@ -54,6 +57,9 @@ public class BridgePlugin extends JavaPlugin { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { sender.sendMessage("ASys Bridge by DmitriyMX"); + sender.sendMessage("[DEBUG] Onlinemode-1: " + spigotServer.getOnlineMode()); + spigotServer.setOnlineMode(!spigotServer.getOnlineMode()); + sender.sendMessage("[DEBUG] Onlinemode-2: " + spigotServer.getOnlineMode()); return true; } diff --git a/bridge/src/main/java/asys/bridge/bukkit/SpigotServer.java b/bridge/src/main/java/asys/bridge/bukkit/SpigotServer.java new file mode 100644 index 0000000..3cd1d1b --- /dev/null +++ b/bridge/src/main/java/asys/bridge/bukkit/SpigotServer.java @@ -0,0 +1,42 @@ +/* + * DmitriyMX + * 2017-05-23 + */ +package asys.bridge.bukkit; + +import org.bukkit.Server; +import org.bukkit.craftbukkit.v1_8_R3.CraftServer; + +import java.lang.reflect.Field; + + +class SpigotServer { + private CraftServer craftServer; + private Object booleanWrapper; + private Field booleanWrapperValueField; + + SpigotServer(Server server) { + craftServer = (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) { + e.printStackTrace(); + } + } + + boolean getOnlineMode() { + return craftServer.getOnlineMode(); + } + + void setOnlineMode(boolean value) { + try { + booleanWrapperValueField.set(booleanWrapper, value); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } +} diff --git a/settings.gradle b/settings.gradle index df0ccb4..0c9f3c2 100644 --- a/settings.gradle +++ b/settings.gradle @@ -4,3 +4,4 @@ include 'webinterface' include 'mcserver-manager' include 'bridge-protocol' include 'bridge' +include 'bridge-mcserver-fake'