From 028c77c3a0629f80dbf8bc3046f8847616f5e078 Mon Sep 17 00:00:00 2001 From: LexManos Date: Fri, 28 Jun 2013 22:12:07 -0700 Subject: [PATCH] Add Clean Server/Client launcher. Update Start.java to new Main class and login system. --- fml/conf/patches/Start.java | 133 ++++++++++++++--------- fml/eclipse-workspace-dev.zip | Bin 23133 -> 24297 bytes fml/install/eclipse/Minecraft/.classpath | 6 +- fml/install/eclipse/Minecraft/.project | 5 + 4 files changed, 92 insertions(+), 52 deletions(-) diff --git a/fml/conf/patches/Start.java b/fml/conf/patches/Start.java index 77d92b13c..ef08ff60b 100644 --- a/fml/conf/patches/Start.java +++ b/fml/conf/patches/Start.java @@ -5,75 +5,110 @@ import java.lang.reflect.Field; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; +import java.util.Arrays; + +import joptsimple.ArgumentAcceptingOptionSpec; +import joptsimple.OptionParser; +import joptsimple.OptionSet; import net.minecraft.client.Minecraft; +import net.minecraft.client.main.Main; public class Start { - public static void main(String[] args) + public static void main(String[] args) throws Exception + { + int userIndex = -1; + int passIndex = -1; + int sessIndex = -1; + int versIndex = -1; + + for( int x = 0; x < args.length; x++) + { + if (args[x].equals("--username")) userIndex = x + 1; + else if (args[x].equals("--password")) passIndex = x + 1; + else if (args[x].equals("--session")) sessIndex = x + 1; + else if (args[x].equals("--version")) versIndex = x + 1; + } + + if (userIndex != 0-1 && passIndex != -1 && sessIndex == -1) + { + String[] session = getSession(args[userIndex], args[passIndex]); + if (session != null) + { + args[userIndex] = session[0]; + args = concat(args, new String[]{"--session", session[1]}); + } + } + + //Kill the password if its there so it isn't printed to the console. + if (passIndex != -1) + { + args[passIndex-1] = "no_password_for_joo"; + args[passIndex] = "no_password_for_joo"; + } + + if (versIndex == -1) + { + args = concat(args, new String[]{ "--version", "fml_mcp" }); + } + + Main.main(args); + } + + private static String[] getSession(String username, String password) throws UnsupportedEncodingException + { + String parameters = "http://login.minecraft.net/?user=" + URLEncoder.encode(username, "UTF-8") + + "&password=" + URLEncoder.encode(password, "UTF-8") + + "&version=" + 13; + String result = openUrl(parameters); + + if (result == null) + { + System.out.println("Can't connect to minecraft.net"); + return null; + } + + if (!result.contains(":")) + { + System.out.println("Login Failed: " + result); + return null; + } + String[] values = result.split(":"); + return new String[]{ values[2].trim(), values[3].trim() }; + } + + private static String openUrl(String addr) { try { - Field f = Minecraft.class.getDeclaredField("field_71463_am"); - Field.setAccessible(new Field[] { f }, true); - f.set(null, new File(".")); - } - catch (Exception e) - { - e.printStackTrace(); - return; - } - if (args.length != 2) - { - Minecraft.main(args); - } - else - { - try { - String parameters = "http://login.minecraft.net/?user=" + URLEncoder.encode(args[0], "UTF-8") + - "&password=" + URLEncoder.encode(args[1], "UTF-8") + - "&version=" + 13; - String result = openUrl(parameters); - - if (result == null) - { - System.out.println("Can't connect to minecraft.net"); - return; - } - - if (!result.contains(":")) - { - System.out.println("Login Failed: " + result); - return; - } - //latestVersion, downloadTicket, userName, sessionId - String[] values = result.split(":"); - Minecraft.main(new String[]{values[2].trim(), values[3].trim()}); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - private static String openUrl(String addr) - { - try { URL url = new URL(addr); java.io.InputStream is; is = url.openConnection().getInputStream(); - java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.InputStreamReader(is)); String buf = ""; String line = null; - while((line = reader.readLine() ) != null) + + while ((line = reader.readLine()) != null) { - buf += "\n" + line; + buf += "\n" + line; } + reader.close(); return buf; - } catch (IOException e) { + } + catch (IOException e) + { e.printStackTrace(); } + return null; } + + private static T[] concat(T[] first, T[] second) + { + T[] result = Arrays.copyOf(first, first.length + second.length); + System.arraycopy(second, 0, result, first.length, second.length); + return result; + } } \ No newline at end of file diff --git a/fml/eclipse-workspace-dev.zip b/fml/eclipse-workspace-dev.zip index 7fa77305b78adb3035de64bce4027678404172fa..3264b8032023cf787bc10910cf28fc95b5461865 100644 GIT binary patch delta 3814 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 delta 2912 zcmZWr2T)Vn77YQEs-Z+M4*?MZgla+&q)YE0q6vf|A`p6&_HrpAARy%`z1PqMrHCNK zN0Hu<5~L}jB1NP~@yGw>&wI{4GiPRM1tWlN1%>Putv+Mt;-KZzVJvW7BsGjp%>W8jT@ zA#!`%;`<+WYz4xk#~z3TaB2FppVGgJTCKfurd2R!*w#OAdw0MDNxBTLYgnM!oQ3M+ zTIjzv_Qzi;bu`>BVTlv>`D&}xy3+iA4X@>{eccWiiEGiR42j8Htw~OB@+_G^_6vyN;}e~6g8!WP?0oEzVk z##~&BRQJ10$i*w3mO!#m2fyraPRELU)jA zq<}{4n_Zf&f~A~BJPf%rPR+MUSP~Jrwmt91X?wAGZCOP{dfuhXXhB~EZ9O-(s7&(* zH?SOa!OK+`PMe7kTM-d@LsHy!BQXM8!O zXyGngVmi0jm2R@Z7%1Snw)FOPZyKyB_h39cSsgtbr|@o8puw}E;-~NzKqX=T7}!>V zzMi7n89IY9{`e%T^%xRFY@MC0&v$%rDMPm<9Hr>%tL#2J&3qh_d#}oVw_!~`RmCqg zL-%Y@VM#Uog=7xi!23^2{zb_umPV-JLW`MXzRX!a zBxeonPIr1Eo8c70lG~x4`=*Gz1ouv3I^K9D;`7NmlP60f3;|w0^e67vmPpLp<{DAV+c$EfGCrzNgf0Dk3e3|~8KwF5e?B)K>B(|$ME1;lt= zyXhmZNp)e@-AAkK%z+CJR4;AoB3 zLyKbz*G7|2kLrp82Bqjd0E#7WwVB_{qzdOD-wTPx1Cawsg{X#}O;HXPE$)To`bR1o z>Zj|pyl`~Xv-er1)JsPh-L&5_E-)Xu!X_3jVrTkZ6qj>!aI7f4MFoRui-;RNjklRY zzWbgn3!D$fSB$BXGTXUD4uVP+7vhx0caAmA_73-V-Aa}tbbE}RGNJZcDwH?5!M3#N z|7vAO6cG1)K5><$(aw&_N-HA@!FYI^OsXqN)`N%}tu+sT#7S4x=UX(ioBQ@nR??A6 zlbh}oMZE8jYK4qWl*4IsyT8<(BZ=<*C4`lM0cVfg7ySWC5t5m1 z^236ayh*|c zN+U9Pj%ofeJ!s0D+PlcyK0}IbFM)dM7XS;2YT3JUx=U0h{8e@53dLxJX=>Dpob1hL zpLf6Uog3_Y(PP-OKI?weuOQ;*%I8H@QAaNgOCTDbqgXT0k{Jfc0{kd8>{zepElEqt)nS_WVJYxxtzf~WGq11 z1|z!iH8o@2*v`zHna*MP2a|SLXq3)6GfLGIw(5@JHtA>8rO9q~eFjUdXKVD(!=Su0 z?T^2`sOg_PA6i4ihtV&~!OPpxgdS0b7W1h+O4Cc*sKZf(_4IW^S<3+Lcu&KVk6y*| zy{;0eeSDv~Xos-Yc49Vl11hh5*#ElRS%_)3G(Ege&HHqCDMz-L)`*i(Y`nrJ@yVzh)lc{^PZahA9=&Fy*%M)z*pA6`$89tA& zVg0wOM93S-+#9G`shm3FVmTKMZf|)T(_^wIwcZkbVT0WVVtgVs1^@B`Km zI{3e%BQ#hRe1lWr{cTcYfIv7Q{FIjcYw=PxNfs2gK+>x2ZmT+j9(W$!|L^br4%e0k zK@0xVE^-pR&OU=+tC<-1+2RZ|K>_4ZL4a^eLul78C - + - + - + diff --git a/fml/install/eclipse/Minecraft/.project b/fml/install/eclipse/Minecraft/.project index 06690cb49..b8e6ba212 100644 --- a/fml/install/eclipse/Minecraft/.project +++ b/fml/install/eclipse/Minecraft/.project @@ -30,6 +30,11 @@ 2 MCP_LOC/lib + + natives + 2 + MCP_LOC/jars/libraries/natives +