diff --git a/.idea/libraries/json.xml b/.idea/libraries/CanaryMod.xml similarity index 56% rename from .idea/libraries/json.xml rename to .idea/libraries/CanaryMod.xml index e7fab51..bade14d 100644 --- a/.idea/libraries/json.xml +++ b/.idea/libraries/CanaryMod.xml @@ -1,7 +1,7 @@ - + - + diff --git a/.idea/libraries/JDA_4_2_0_168_withDependencies_min.xml b/.idea/libraries/JDA_4_2_0_168_withDependencies_min.xml deleted file mode 100644 index 70bf2eb..0000000 --- a/.idea/libraries/JDA_4_2_0_168_withDependencies_min.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Minecraft_Mod.xml b/.idea/libraries/Minecraft_Mod.xml deleted file mode 100644 index fbc6464..0000000 --- a/.idea/libraries/Minecraft_Mod.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 0548357..80522d7 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/OnlineModeFix.iml b/OnlineModeFix.iml index c7836ea..378e47d 100644 --- a/OnlineModeFix.iml +++ b/OnlineModeFix.iml @@ -8,9 +8,7 @@ - - - + \ No newline at end of file diff --git a/lib/JDA-4.2.0_168-withDependencies-min.jar b/lib/JDA-4.2.0_168-withDependencies-min.jar deleted file mode 100644 index ec267ba..0000000 Binary files a/lib/JDA-4.2.0_168-withDependencies-min.jar and /dev/null differ diff --git a/lib/discord-webhooks-0.5.0.jar b/lib/discord-webhooks-0.5.0.jar deleted file mode 100644 index 654ae31..0000000 Binary files a/lib/discord-webhooks-0.5.0.jar and /dev/null differ diff --git a/lib/json.jar b/lib/json.jar deleted file mode 100644 index 0b85b0e..0000000 Binary files a/lib/json.jar and /dev/null differ diff --git a/res/plugin.yml b/res/plugin.yml index 011d97a..b5fca85 100644 --- a/res/plugin.yml +++ b/res/plugin.yml @@ -1,5 +1,5 @@ name: OnlineModeFix -version: 1.1.3 +version: 1.1.4 description: Fixes online-mode authentication. author: craftycodie authors: [Codie] diff --git a/src/gg/codie/mineonline/protocol/MineOnlineURLStreamHandlerFactory.java b/src/gg/codie/mineonline/protocol/MineOnlineURLStreamHandlerFactory.java index c27837c..aa40d1e 100644 --- a/src/gg/codie/mineonline/protocol/MineOnlineURLStreamHandlerFactory.java +++ b/src/gg/codie/mineonline/protocol/MineOnlineURLStreamHandlerFactory.java @@ -2,14 +2,30 @@ package gg.codie.mineonline.protocol; import gg.codie.mineonline.protocol.http.Handler; +import java.net.URL; +import java.net.URLConnection; import java.net.URLStreamHandler; import java.net.URLStreamHandlerFactory; public class MineOnlineURLStreamHandlerFactory implements URLStreamHandlerFactory { + private final Class defaultHttpConnectionClass; + + public MineOnlineURLStreamHandlerFactory() { + try { + URL foo = new URL("http://example.com"); + // Doesn't actually establish a connection + defaultHttpConnectionClass = foo.openConnection().getClass(); + } catch (Exception e) { + // this should never happen as the URL is hardcoded, shouldn't be invalid. + throw new RuntimeException(e); + } + } + + @Override public URLStreamHandler createURLStreamHandler(String protocol) { if ("http".equals(protocol)) { - return new Handler(); + return new Handler(defaultHttpConnectionClass); } return null; diff --git a/src/gg/codie/mineonline/protocol/http/Handler.java b/src/gg/codie/mineonline/protocol/http/Handler.java index 3dee159..dce6da7 100644 --- a/src/gg/codie/mineonline/protocol/http/Handler.java +++ b/src/gg/codie/mineonline/protocol/http/Handler.java @@ -4,17 +4,41 @@ import gg.codie.mineonline.protocol.CheckServerURLConnection; import sun.net.www.protocol.http.HttpURLConnection; import java.io.IOException; +import java.net.Proxy; import java.net.URL; import java.net.URLConnection; import java.net.URLStreamHandler; public class Handler extends URLStreamHandler { + private final Class defaultHttpConnectionClass; + + public Handler() { + // Necessary for vanilla servers which don't use the factory. + defaultHttpConnectionClass = null; + } + + public Handler(Class _defaultHttpConnectionClass) { + defaultHttpConnectionClass = _defaultHttpConnectionClass; + } @Override protected URLConnection openConnection(URL url) throws IOException { // Online-Mode fix if (url.toString().contains("/game/checkserver.jsp")) return new CheckServerURLConnection(url); - else - return new HttpURLConnection(url, null); + else if (defaultHttpConnectionClass != null) { + try { + return defaultHttpConnectionClass.getConstructor(URL.class, Proxy.class).newInstance(url, null); + } catch (Exception e) { + // If the constructor isn't found, you can log that out. It's not expected. + return null; + } + } else { + try { + Class sunHttpConnection = ClassLoader.getSystemClassLoader().loadClass("sun.net.www.protocol.http.HttpURLConnection"); + return (URLConnection) sunHttpConnection.getConstructor(URL.class, Proxy.class).newInstance(url, null); + } catch (Exception e) { + return null; + } + } } }