From eef3303dfeb2b64ce88ce6eb946e6ca2f2012d40 Mon Sep 17 00:00:00 2001 From: LexManos Date: Tue, 14 Aug 2012 19:24:49 -0700 Subject: [PATCH] Finished update to MCP 7.2, MC 1.3.2 pre. --- fml/commands.patch | 27 +-- .../asm/transformers/AccessTransformer.java | 20 +- fml/common/fml_at.cfg | 212 ++++-------------- fml/common/fml_marker.cfg | 6 +- fml/conf/mcp.cfg | 10 +- fml/conf/patches/Start.java | 64 +++++- fml/install/fml.py | 9 +- fml/mcp_merge.cfg | 28 +-- .../server/MinecraftServer.java.patch | 2 +- .../minecraft/src/DedicatedServer.java.patch | 19 +- .../minecraft/src/NetServerHandler.java.patch | 4 +- .../net/minecraft/src/WorldType.java.patch | 2 +- 12 files changed, 166 insertions(+), 237 deletions(-) diff --git a/fml/commands.patch b/fml/commands.patch index ec49a69330..d7df0f605e 100644 --- a/fml/commands.patch +++ b/fml/commands.patch @@ -29,17 +29,18 @@ return True def checkbins(self, side): -@@ -1027,6 +1033,9 @@ +@@ -1027,6 +1033,10 @@ pathsrclk = {CLIENT: self.srcclient, SERVER: self.srcserver} pathlog = {CLIENT: self.clientrecomplog, SERVER: self.serverrecomplog} + if side == SERVER: #Disable server because FML recombines it into client ++ self.logger.info('Server side recompiling skipped, this is normal') + return + if not os.path.exists(pathbinlk[side]): os.makedirs(pathbinlk[side]) -@@ -1039,6 +1048,7 @@ +@@ -1039,6 +1049,7 @@ all_files = True append_pattern = False pkglist = filterdirs(pathsrclk[side], '*.java', append_pattern=append_pattern, all_files=all_files) @@ -47,7 +48,7 @@ dirs = ' '.join(pkglist) classpath = os.pathsep.join(cplk[side]) forkcmd = self.cmdrecomp.format(classpath=classpath, sourcepath=pathsrclk[side], outpath=pathbinlk[side], -@@ -1060,7 +1070,7 @@ +@@ -1060,7 +1071,7 @@ raise def startserver(self): @@ -56,7 +57,7 @@ classpath = [os.path.join('..', p) for p in classpath] classpath = os.pathsep.join(classpath) os.chdir(self.dirjars) -@@ -1068,7 +1078,7 @@ +@@ -1068,7 +1079,7 @@ self.runmc(forkcmd) def startclient(self): @@ -65,7 +66,7 @@ classpath = [os.path.join('..', p) for p in classpath] classpath = os.pathsep.join(classpath) natives = os.path.join('..', self.dirnatives) -@@ -1195,20 +1205,20 @@ +@@ -1195,20 +1206,20 @@ with open(self.csvmethods, 'rb') as fh: methodsreader = csv.DictReader(fh) for row in methodsreader: @@ -89,7 +90,7 @@ names['params'][row['param']] = row['name'] regexps = { -@@ -1238,6 +1248,11 @@ +@@ -1238,6 +1249,11 @@ # HINT: We pathwalk the sources for path, _, filelist in os.walk(pathsrclk[side], followlinks=True): @@ -101,7 +102,7 @@ for cur_file in fnmatch.filter(filelist, '*.java'): updatefile(os.path.normpath(os.path.join(path, cur_file))) return True -@@ -1320,12 +1335,14 @@ +@@ -1320,12 +1336,14 @@ pathsrclk = {CLIENT: self.srcclient, SERVER: self.srcserver} strip_comments(pathsrclk[side]) @@ -116,7 +117,7 @@ def process_javadoc(self, side): """Add CSV descriptions to methods and fields as javadoc""" -@@ -1334,6 +1351,21 @@ +@@ -1334,6 +1352,21 @@ if not self.has_doc_csv: self.logger.warning('!! javadoc disabled due to no csvs !!') return False @@ -138,7 +139,7 @@ #HINT: We read the relevant CSVs methodsreader = csv.DictReader(open(self.csvmethods, 'r')) -@@ -1342,13 +1374,13 @@ +@@ -1342,13 +1375,13 @@ methods = {} for row in methodsreader: #HINT: Only include methods that have a non-empty description @@ -154,7 +155,7 @@ fields[row['searge']] = row['desc'].replace('*/', '* /') regexps = { -@@ -1420,12 +1452,13 @@ +@@ -1420,12 +1453,13 @@ # HINT: We create the list of source directories based on the list of packages pkglist = filterdirs(pathsrclk[side], '*.java', append_pattern=True) @@ -169,7 +170,7 @@ if not reobf: md5lk = {CLIENT: self.md5client, SERVER: self.md5server} else: -@@ -1440,6 +1473,9 @@ +@@ -1440,6 +1474,9 @@ class_path = '' else: class_path += '/' @@ -179,7 +180,7 @@ for class_file in fnmatch.filter(filelist, '*.class'): class_name = class_path + os.path.splitext(class_file)[0] bin_file = os.path.normpath(os.path.join(path, class_file)) -@@ -1592,6 +1628,9 @@ +@@ -1592,6 +1629,9 @@ sys.exit(1) for entry in newfiles: @@ -189,7 +190,7 @@ if entry[3] == 'U': self.logger.info('Retrieving file from server : %s', entry[0]) cur_file = os.path.normpath(entry[0]) -@@ -1654,3 +1693,6 @@ +@@ -1654,3 +1694,6 @@ except IOError: self.logger.error('* File %s copy failed', in_class) diff --git a/fml/common/cpw/mods/fml/common/asm/transformers/AccessTransformer.java b/fml/common/cpw/mods/fml/common/asm/transformers/AccessTransformer.java index 3ec13ff26a..008c958a09 100644 --- a/fml/common/cpw/mods/fml/common/asm/transformers/AccessTransformer.java +++ b/fml/common/cpw/mods/fml/common/asm/transformers/AccessTransformer.java @@ -177,14 +177,18 @@ public class AccessTransformer implements IClassTransformer { for (FieldNode n : (List) classNode.fields) { - if (n.name.equals(m.name)) + if (n.name.equals(m.name) || m.name.equals("*")) { n.access = getFixedAccess(n.access, m); if (DEBUG) { - System.out.println(String.format("Field: %s.%s %s -> %s", name, m.name, toBinary(m.oldAccess), toBinary(m.newAccess))); + System.out.println(String.format("Field: %s.%s %s -> %s", name, n.name, toBinary(m.oldAccess), toBinary(m.newAccess))); + } + + if (!m.name.equals("*")) + { + break; } - break; } } } @@ -192,14 +196,18 @@ public class AccessTransformer implements IClassTransformer { for (MethodNode n : (List) classNode.methods) { - if (n.name.equals(m.name) && n.desc.equals(m.desc)) + if ((n.name.equals(m.name) && n.desc.equals(m.desc)) || m.name.equals("*")) { n.access = getFixedAccess(n.access, m); if (DEBUG) { - System.out.println(String.format("Method: %s.%s%s %s -> %s", name, m.name, m.desc, toBinary(m.oldAccess), toBinary(m.newAccess))); + System.out.println(String.format("Method: %s.%s%s %s -> %s", name, n.name, n.desc, toBinary(m.oldAccess), toBinary(m.newAccess))); + } + + if (!m.name.equals("*")) + { + break; } - break; } } } diff --git a/fml/common/fml_at.cfg b/fml/common/fml_at.cfg index 88762ae77c..e00dc95565 100644 --- a/fml/common/fml_at.cfg +++ b/fml/common/fml_at.cfg @@ -1,201 +1,65 @@ #Main FML Access Transformer configuration file # TileEntity addMapping -public ajh.a(Ljava/lang/Class;Ljava/lang/String;)V +public aji.a(Ljava/lang/Class;Ljava/lang/String;)V # EntityList addMappings -public jq.a(Ljava/lang/Class;Ljava/lang/String;I)V -public jq.a(Ljava/lang/Class;Ljava/lang/String;III)V +public jr.a(Ljava/lang/Class;Ljava/lang/String;I)V +public jr.a(Ljava/lang/Class;Ljava/lang/String;III)V # EntityList nameToClassMap and idToClassMap -public jq.b -public jq.d +public jr.b +public jr.d # RenderManager renderers -public avx.o +public avy.o # RenderBlocks - everything -public avf.A -public avf.B -public avf.C -public avf.D -public avf.E -public avf.F -public avf.G -public avf.H -public avf.I -public avf.J -public avf.K -public avf.L -public avf.M -public avf.N -public avf.S -public avf.T -public avf.U -public avf.V -public avf.W -public avf.X -public avf.Y -public avf.Z -public avf.a -public avf.aA -public avf.aB -public avf.aC -public avf.aD -public avf.aE -public avf.aF -public avf.aG -public avf.aH -public avf.aI -public avf.aJ -public avf.aK -public avf.aL -public avf.aM -public avf.aN -public avf.aO -public avf.aa -public avf.ab -public avf.ac -public avf.ad -public avf.ae -public avf.af -public avf.ag -public avf.ah -public avf.ai -public avf.aj -public avf.ak -public avf.al -public avf.am -public avf.an -public avf.ao -public avf.ap -public avf.aq -public avf.ar -public avf.as -public avf.at -public avf.au -public avf.av -public avf.aw -public avf.ax -public avf.ay -public avf.az -public avf.b -public avf.c -public avf.d -public avf.e -public avf.f -public avf.g -public avf.h -public avf.i -public avf.j -public avf.k -public avf.l -public avf.m -public avf.n -public avf.o -public avf.p -public avf.q -public avf.r -public avf.s -public avf.t -public avf.u -public avf.v -public avf.w -public avf.x -public avf.y -public avf.z -public avf.a()V -public avf.a(DDDDDDFD)V -public avf.a(IIII)I -public avf.a(IIILacn;)F -public avf.a(Laex;III)Z -public avf.a(Lafc;III)Z -public avf.a(Lafg;III)Z -public avf.a(Lafq;III)Z -public avf.a(Lafv;III)Z -public avf.a(Lafw;III)Z -public avf.a(Lahg;III)Z -public avf.a(Laie;III)Z -public avf.a(Laif;DDDDD)V -public avf.a(Laif;DDDI)V -public avf.a(Laif;IDDD)V -public avf.a(Laif;IDDDD)V -public avf.a(Laif;IF)V -public avf.a(Laif;IIDDDD)V -public avf.a(Laif;III)V -public avf.a(Laif;IIIFFF)Z -public avf.a(Laif;IIII)V -public avf.a(Laif;IIIZ)V -public avf.a(Laif;Luo;IIII)V -public avf.b(DDDDDDFD)V -public avf.b(I)Z -public avf.b(Laif;DDDI)V -public avf.b(Laif;IDDD)V -public avf.b(Laif;III)Z -public avf.b(Laif;IIIZ)Z -public avf.c(DDDDDDFD)V -public avf.c(Laif;DDDI)V -public avf.c(Laif;III)Z -public avf.c(Laif;IIIFFF)Z -public avf.c(Laif;IIIZ)Z -public avf.d(Laif;DDDI)V -public avf.d(Laif;III)V -public avf.d(Laif;IIIFFF)Z -public avf.e(Laif;DDDI)V -public avf.e(Laif;III)Z -public avf.f(Laif;DDDI)V -public avf.f(Laif;III)Z -public avf.g(Laif;III)Z -public avf.h(Laif;III)Z -public avf.i(Laif;III)Z -public avf.j(Laif;III)Z -public avf.k(Laif;III)Z -public avf.l(Laif;III)Z -public avf.m(Laif;III)Z -public avf.n(Laif;III)Z -public avf.o(Laif;III)Z -public avf.p(Laif;III)Z -public avf.q(Laif;III)Z -public avf.r(Laif;III)Z -public avf.s(Laif;III)Z -public avf.t(Laif;III)Z -public avf.u(Laif;III)Z -public avf.v(Laif;III)Z -public avf.w(Laif;III)Z -public avf.x(Laif;III)Z +public avg.* +public avg.*() #RenderEngine - make TextureFX list public -public ave.h +public avf.h +public avf.k # texturePack #RenderPlayer - make armorlist public and not final -public-f awq.j +public-f awr.j #StringTranslate - make the current table and language public public ak.b public ak.d # TileEntityRenderer - make the list of renderers public -public axr.m +public axs.m # CraftingManager - make the add recipe methods public -public tc.a(Lri;[Ljava/lang/Object;)V -public tc.b(Lri;[Ljava/lang/Object;)V +public td.a(Lrj;[Ljava/lang/Object;)V +public td.b(Lrj;[Ljava/lang/Object;)V # WeightedRandomItem - make the "probability" public -public ir.a +public is.a # ItemStack - make itemId final -#public+f ri.c +#public+f rj.c # StatBase - Make statName public, no server side getter - public ho.a +public hp.a # NetLoginHandler make the "complete connection" callback public so I can reset it during FML negotiation -public gw.a(Lgw;Z)Z +public gx.a(Lgx;Z)Z # NetLoginHandler userName field -public gw.h +public gx.h # EntityPlayerMP getNextWindowId -public gt.bO()V -public gt.cq +public gu.bO()V +public gu.cq # EntityAITaskEntry class -> public -public kw +public kx # EntityAITasks taskList -public kv.a +public kw.a # BlockChest isOcelotBlockingChest (a bounding box check actually) -public afd.n(Luo;III)Z +public afe.n(Lup;III)Z # EntityLiving tasks -public jv.bg +public jw.bg # EntityAIOcelotSit nearestSittableBlock and isblocksittable -protected lh.a(Luo;III)Z -protected lh.f()Z +protected li.a(Lup;III)Z +protected li.f()Z # CallableMinecraftVersion - sanity check the MC version public b public b.(La;)V # constructor -# RenderEngine -public ave.k # texturePack \ No newline at end of file +# EntityAnimal +public mn.d # inLove +# RailLogic +public ahi +#ItemAxe +public rf.(ILri;)V +#ItemPickaxe +public rq.(ILri;)V +# WorldType +public va.(ILjava/lang/String;)V +public va.(ILjava/lang/String;I)V \ No newline at end of file diff --git a/fml/common/fml_marker.cfg b/fml/common/fml_marker.cfg index fe046d33fc..eaabe3bdf3 100644 --- a/fml/common/fml_marker.cfg +++ b/fml/common/fml_marker.cfg @@ -2,11 +2,11 @@ # Only runs at runtime because it's not necessary at compile time # has deobf and obf mappings so it runs OK in mcp # entityplayer -> network/player -of cpw/mods/fml/common/network/Player +og cpw/mods/fml/common/network/Player net.minecraft.src.EntityPlayer cpw/mods/fml/common/network/Player # block -> blockproxy -aif cpw/mods/fml/common/registry/BlockProxy +aig cpw/mods/fml/common/registry/BlockProxy net.minecraft.src.Block cpw/mods/fml/common/registry/BlockProxy # item -> itemproxy -rg cpw/mods/fml/common/registry/ItemProxy +rh cpw/mods/fml/common/registry/ItemProxy net.minecraft.src.Item cpw/mods/fml/common/registry/ItemProxy \ No newline at end of file diff --git a/fml/conf/mcp.cfg b/fml/conf/mcp.cfg index 92a22a08b3..7b408e5fa4 100644 --- a/fml/conf/mcp.cfg +++ b/fml/conf/mcp.cfg @@ -22,8 +22,8 @@ Params = %(DirConf)s/params.csv NewIds = %(DirConf)s/newids.csv [SRGS] -ConfClient = %(DirConf)s/client.srg -ConfServer = %(DirConf)s/server.srg +ConfClient = %(DirConf)s/joined.srg +ConfServer = %(DirConf)s/joined.srg Client = %(DirTemp)s/client_rg.srg Server = %(DirTemp)s/server_rg.srg DeobfClient = %(DirTemp)s/client_deobf.srg @@ -56,8 +56,8 @@ ServerDeobLog = %(DirLogs)s/server_deob.log NullPkg = net/minecraft/src [EXCEPTOR] -XClientCfg = %(DirConf)s/client.exc -XServerCfg = %(DirConf)s/server.exc +XClientCfg = %(DirConf)s/joined.exc +XServerCfg = %(DirConf)s/joined.exc XClientOut = %(DirTemp)s/minecraft_exc.jar XServerOut = %(DirTemp)s/minecraft_server_exc.jar XClientLog = %(DirLogs)s/client_exc.log @@ -121,7 +121,7 @@ OutSRCServer = %(DirModSrc)s/minecraft_server [MCP] LogFile = %(DirLogs)s/mcp.log LogFileErr = %(DirLogs)s/mcperr.log -UpdateUrl = http://mcp.ocean-labs.de/files/mcprolling_{version}/ +UpdateUrl = IgnoreUpdate = %(DirBin)s,%(DirLib)s,%(DirLogs)s,%(DirModSrc)s,%(DirReobf)s,%(DirSrc)s,%(DirTemp)s,%(DirEclipse)s/Client/bin,%(DirEclipse)s/Server/bin,%(DirJars)s/world,%(DirJars)s/saves,%(DirJars)s/resources RGIndex = 80000 ParamIndex = 4000 diff --git a/fml/conf/patches/Start.java b/fml/conf/patches/Start.java index 6863a1ad0b..77d92b13c9 100644 --- a/fml/conf/patches/Start.java +++ b/fml/conf/patches/Start.java @@ -1,5 +1,10 @@ import java.io.File; +import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.lang.reflect.Field; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLEncoder; import net.minecraft.client.Minecraft; @@ -9,8 +14,6 @@ public class Start { try { - // set new minecraft data folder to prevent it from using the .minecraft folder - // this makes it a portable version Field f = Minecraft.class.getDeclaredField("field_71463_am"); Field.setAccessible(new Field[] { f }, true); f.set(null, new File(".")); @@ -20,8 +23,57 @@ public class Start e.printStackTrace(); return; } - - // start minecraft game application - Minecraft.main(args); + 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) + { + buf += "\n" + line; + } + reader.close(); + return buf; + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } +} \ No newline at end of file diff --git a/fml/install/fml.py b/fml/install/fml.py index 92208ee589..41542bc06f 100644 --- a/fml/install/fml.py +++ b/fml/install/fml.py @@ -292,12 +292,12 @@ def runcmd(commands, command, echo=True): if echo: for line in output.splitlines(): - self.logger.info(line) + commands.logger.info(line) if process.returncode: if not echo: for line in output.splitlines(): - self.logger.info(line) + commands.logger.info(line) return False return True @@ -614,7 +614,10 @@ def setup_mcp(fml_dir, mcp_dir, dont_gen_conf=True): #update workspace print 'Fixing MCP Workspace' if not os.path.isdir(os.path.join(fml_dir, 'eclipse', 'Clean-Client')): - merge_tree(os.path.join(fml_dir, 'eclipse'), os.path.join(mcp_dir, 'eclipse')) + mcp_eclipse = os.path.join(mcp_dir, 'eclipse') + if os.path.isdir(mcp_eclipse): + shutil.rmtree(mcp_eclipse) + shutil.copytree(os.path.join(fml_dir, 'eclipse'), mcp_eclipse) def normaliselines(in_filename): in_filename = os.path.normpath(in_filename) diff --git a/fml/mcp_merge.cfg b/fml/mcp_merge.cfg index c831a7c9c9..b66aafada3 100644 --- a/fml/mcp_merge.cfg +++ b/fml/mcp_merge.cfg @@ -1,19 +1,19 @@ akd -aki ake +um +>akj +un +>uo aeg ->rs ->hl ->hz ->hy \ No newline at end of file +>aeh +>rt +>hm +>ia +>hz \ No newline at end of file diff --git a/fml/patches/common/net/minecraft/server/MinecraftServer.java.patch b/fml/patches/common/net/minecraft/server/MinecraftServer.java.patch index aa1c360d67..cbbb192668 100644 --- a/fml/patches/common/net/minecraft/server/MinecraftServer.java.patch +++ b/fml/patches/common/net/minecraft/server/MinecraftServer.java.patch @@ -59,7 +59,7 @@ this.field_71304_b.func_76318_c("lights"); while (true) -@@ -1117,6 +1129,12 @@ +@@ -1118,6 +1130,12 @@ @SideOnly(Side.SERVER) public static void main(String[] p_main_0_) { diff --git a/fml/patches/common/net/minecraft/src/DedicatedServer.java.patch b/fml/patches/common/net/minecraft/src/DedicatedServer.java.patch index cc7d10ab54..8953f44ed6 100644 --- a/fml/patches/common/net/minecraft/src/DedicatedServer.java.patch +++ b/fml/patches/common/net/minecraft/src/DedicatedServer.java.patch @@ -7,15 +7,16 @@ import cpw.mods.fml.common.Side; import cpw.mods.fml.common.asm.SideOnly; import java.io.File; -@@ -36,6 +37,7 @@ - var1.start(); - ConsoleLogManager.func_73699_a(); - field_71306_a.info("Starting minecraft server version 1.3.1"); -+ FMLCommonHandler.instance().onServerStart(this); +@@ -42,6 +43,8 @@ + field_71306_a.warning("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\""); + } - if (Runtime.getRuntime().maxMemory() / 1024L / 1024L < 512L) - { -@@ -101,6 +103,7 @@ ++ FMLCommonHandler.instance().onServerStart(this); ++ + field_71306_a.info("Loading properties"); + this.field_71340_o = new PropertyManager(new File("server.properties")); + +@@ -101,6 +104,7 @@ field_71306_a.warning("To change this, set \"online-mode\" to \"true\" in the server.properties file."); } @@ -23,7 +24,7 @@ this.func_71210_a(new DedicatedPlayerList(this)); long var4 = System.nanoTime(); -@@ -160,7 +163,7 @@ +@@ -160,7 +164,7 @@ this.field_71339_n = new RConThreadMain(this); this.field_71339_n.func_72602_a(); } diff --git a/fml/patches/common/net/minecraft/src/NetServerHandler.java.patch b/fml/patches/common/net/minecraft/src/NetServerHandler.java.patch index b244e39ff7..3d29654475 100644 --- a/fml/patches/common/net/minecraft/src/NetServerHandler.java.patch +++ b/fml/patches/common/net/minecraft/src/NetServerHandler.java.patch @@ -9,7 +9,7 @@ import net.minecraft.server.MinecraftServer; public class NetServerHandler extends NetHandler -@@ -956,6 +958,11 @@ +@@ -957,6 +959,11 @@ public void func_72501_a(Packet250CustomPayload p_72501_1_) { @@ -21,7 +21,7 @@ DataInputStream var2; ItemStack var3; ItemStack var4; -@@ -1028,4 +1035,10 @@ +@@ -1029,4 +1036,10 @@ } } } diff --git a/fml/patches/common/net/minecraft/src/WorldType.java.patch b/fml/patches/common/net/minecraft/src/WorldType.java.patch index 4a2aee33a8..b02c446ce8 100644 --- a/fml/patches/common/net/minecraft/src/WorldType.java.patch +++ b/fml/patches/common/net/minecraft/src/WorldType.java.patch @@ -28,7 +28,7 @@ + + protected BiomeGenBase[] biomesForWorldType; - private WorldType(int p_i3737_1_, String p_i3737_2_) + public WorldType(int p_i3737_1_, String p_i3737_2_) { @@ -26,6 +38,14 @@ this.field_77134_g = p_i3738_3_;