diff --git a/fml/.gitattributes b/fml/.gitattributes index 4589cdc5b..809a90687 100644 --- a/fml/.gitattributes +++ b/fml/.gitattributes @@ -5,5 +5,6 @@ *.exe binary *.dll binary *.zip binary +*.pyd binary *.cfg text eol=lf *.py text eol=lf \ No newline at end of file diff --git a/fml/.gitignore b/fml/.gitignore index b88e1838c..b00de09d8 100644 --- a/fml/.gitignore +++ b/fml/.gitignore @@ -8,3 +8,5 @@ fmlbranding.properties /fernflower.zip /commands.py.bck +/mcp*.zip +/mcp diff --git a/fml/build.xml b/fml/build.xml index 27e81071f..f4923472e 100644 --- a/fml/build.xml +++ b/fml/build.xml @@ -9,20 +9,6 @@ ====================================================================== --> The Forge Mod Loader - - - - - - - - - - - - - - @@ -46,9 +32,13 @@ - + + + + + @@ -74,14 +64,19 @@ + + - + + + + @@ -137,38 +132,11 @@ - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -201,7 +169,7 @@ - + @@ -212,6 +180,7 @@ + @@ -231,7 +200,7 @@ - + @@ -270,14 +239,10 @@ - Setup complete! You should now be able to open ${basedir}/eclipse as a workspace in eclipse and import/refresh the FML-Server and FML-Client projects + Setup complete! You should now be able to open ${basedir}/eclipse as a workspace in eclipse and import/refresh the FML project - - - - - + @@ -285,11 +250,7 @@ - - - - - + diff --git a/fml/client/cpw/mods/fml/client/SpriteHelper.java b/fml/client/cpw/mods/fml/client/SpriteHelper.java index b64c5e368..e65439e6a 100644 --- a/fml/client/cpw/mods/fml/client/SpriteHelper.java +++ b/fml/client/cpw/mods/fml/client/SpriteHelper.java @@ -60,12 +60,12 @@ public class SpriteHelper "0000000000000000" + "0000000000000000" + "0000000000000000" + - "0111100000000000" + - "1111100010000000" + - "0000101110000000" + - "0111000000000000" + - "1100001100001111" + - "0000000000001111" + + "0111110000000000" + + "1111111010000000" + + "0111111110000000" + + "0111111111111001" + + "1111111111111111" + + "0000011111111111" + "0000000000000000"); spriteInfo.put("/gui/items.png", slots); } diff --git a/fml/common/mcpmod.info b/fml/common/mcpmod.info index e288b85a5..1cac44166 100644 --- a/fml/common/mcpmod.info +++ b/fml/common/mcpmod.info @@ -3,7 +3,7 @@ "modid": "mcp", "name": "Minecraft Coder Pack", "description": "Modding toolkit to decompile and deobfuscate the Minecraft client and server files.", - "version": "7.22", + "version": "7.23", "mcversion": "1.4.5", "logoFile": "/mcp.png", "url": "http://mcp.ocean-labs.de/", diff --git a/fml/conf/joined.exc b/fml/conf/joined.exc index bfd5d84c1..7526b29f4 100644 --- a/fml/conf/joined.exc +++ b/fml/conf/joined.exc @@ -2126,7 +2126,6 @@ net/minecraft/src/EffectRenderer.func_78871_a(IIIII)V=|p_78871_1_,p_78871_2_,p_7 net/minecraft/src/EffectRenderer.func_78872_b(Lnet/minecraft/src/Entity;F)V=|p_78872_1_,p_78872_2_ net/minecraft/src/EffectRenderer.func_78873_a(Lnet/minecraft/src/EntityFX;)V=|p_78873_1_ net/minecraft/src/EffectRenderer.func_78874_a(Lnet/minecraft/src/Entity;F)V=|p_78874_1_,p_78874_2_ -net/minecraft/src/EffectRenderer.func_90037_b(Lnet/minecraft/src/EntityFX;)V=|p_90037_1_ net/minecraft/src/EmptyChunk.(Lnet/minecraft/src/World;II)V=|p_i3770_1_,p_i3770_2_,p_i3770_3_ net/minecraft/src/EmptyChunk.func_76588_a(Lnet/minecraft/src/Entity;Lnet/minecraft/src/AxisAlignedBB;Ljava/util/List;)V=|p_76588_1_,p_76588_2_,p_76588_3_ net/minecraft/src/EmptyChunk.func_76589_b(IIII)Z=|p_76589_1_,p_76589_2_,p_76589_3_,p_76589_4_ diff --git a/fml/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs b/fml/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs index b94a4cb15..e2680d257 100644 --- a/fml/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs +++ b/fml/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs @@ -4,4 +4,3 @@ eclipse.preferences.version=1 org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=\n\n org.eclipse.debug.ui.UseContextualLaunch=false org.eclipse.debug.ui.user_view_bindings=\r\n\r\n\r\n\r\n\r\n\r\n -preferredTargets=default\:default| diff --git a/fml/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs b/fml/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs index 5efb5679c..12ec36890 100644 --- a/fml/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs +++ b/fml/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs @@ -1,15 +1,14 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.builder.resourceCopyExclusionFilter= -org.eclipse.jdt.core.codeComplete.visibilityCheck=enabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +#Sun Sep 18 16:44:39 NZST 2011 org.eclipse.jdt.core.compiler.compliance=1.6 -org.eclipse.jdt.core.compiler.problem.deprecation=ignore -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore -org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=ignore -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore -org.eclipse.jdt.core.compiler.problem.unusedImport=ignore +org.eclipse.jdt.core.compiler.problem.deprecation=ignore +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore +org.eclipse.jdt.core.compiler.problem.unusedImport=ignore +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore +org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 org.eclipse.jdt.core.compiler.source=1.6 diff --git a/fml/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/fml/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs index e0f1cf820..d338eab76 100644 --- a/fml/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs +++ b/fml/eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs @@ -4,6 +4,6 @@ PROBLEMS_FILTERS_MIGRATE=true SAVE_ALL_BEFORE_BUILD=true TASKS_FILTERS_MIGRATE=true eclipse.preferences.version=1 -platformState=1352044473268 +platformState=1349115159163 quickStart=false tipsAndTricks=true diff --git a/fml/eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml b/fml/eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml index 0b98faa97..1208f602e 100644 --- a/fml/eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml +++ b/fml/eclipse/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml @@ -10,13 +10,15 @@ - + + - + + diff --git a/fml/getversion.py b/fml/getversion.py index 53abe8f6d..05b816226 100644 --- a/fml/getversion.py +++ b/fml/getversion.py @@ -47,6 +47,17 @@ def main(): (mcpversion,mcclientversion,mcserverversion) = re.match("[.\w]+ \(data: ([.\w]+), client: ([.\w.]+), server: ([.\w.]+)\)",Commands.fullversion()).groups() + if os.getenv("GIT_BRANCH") is None: + cmd = "git rev-parse --abbrev-ref HEAD" + try: + process = subprocess.Popen(cmdsplit(cmd), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, bufsize=-1) + branch, _ = process.communicate() + except OSError: + print("Git not found") + branch="none" + else: + branch=os.getenv("GIT_BRANCH").rpartition('/')[2] + with open("fmlversion.properties","w") as f: f.write("%s=%s\n" %("fmlbuild.major.number",major)) f.write("%s=%s\n" %("fmlbuild.minor.number",minor)) @@ -54,8 +65,9 @@ def main(): f.write("%s=%s\n" %("fmlbuild.githash",githash)) f.write("%s=%s\n" %("fmlbuild.mcpversion",mcpversion)) f.write("%s=%s\n" %("fmlbuild.mcversion",mcclientversion)) + f.write("%s=%s\n" %("fmlbuild.branch",branch)) - print("Version information: FML %s.%s.%s using MCP %s for minecraft %s" % (major, minor, rev, mcpversion, mcclientversion)) + print("Version information: FML %s.%s.%s (%s) using MCP %s for minecraft %s" % (major, minor, rev, branch, mcpversion, mcclientversion)) if __name__ == '__main__': main() diff --git a/fml/install/fml.py b/fml/install/fml.py index 47b8d7844..084f619da 100644 --- a/fml/install/fml.py +++ b/fml/install/fml.py @@ -95,8 +95,7 @@ def download_minecraft(mcp_dir, fml_dir, version=None): default = config_get_section(config, 'default') if version is None: - version = default['current_ver'] - + version = default['current_ver'] bin_folder = os.path.join(mcp_dir, 'jars', 'bin') if not os.path.exists(bin_folder): @@ -571,9 +570,54 @@ def merge_tree(root_src_dir, root_dst_dir): if os.path.exists(dst_file): os.remove(dst_file) shutil.copy(src_file, dst_dir) - + +def download_mcp(mcp_dir, fml_dir, version=None): + if os.path.isfile(os.path.join(mcp_dir, 'runtime', 'commands.py')): + print 'MCP Detected already, not downloading' + return True + + if os.path.isdir(mcp_dir): + print 'Old MCP Directory exists, but MCP was not detected, please delete MCP directory at \'%s\'' % mcp_dir + sys.exit(1) + + versions_file = os.path.join(fml_dir, 'mc_versions.cfg') + if not os.path.isfile(versions_file): + print 'Could not find mc_versions.cfg in FML directory.' + sys.exit(1) + + config = ConfigParser.ConfigParser() + config.read(versions_file) + + default = config_get_section(config, 'default') + if version is None: + version = default['current_ver'] + + if not config.has_section(version): + print 'Error: Invalid minecraft version, could not find \'%s\' in mc_versions.cfg' % version + sys.exit(1) + + mc_info = config_get_section(config, version) + mcp_zip = os.path.join(fml_dir, 'mcp%s.zip' % mc_info['mcp_ver']) + + if not download_file(mc_info['mcp_url'], mcp_zip, mc_info['mcp_md5']): + sys.exit(1) + + if not os.path.isdir(mcp_dir): + _mkdir(mcp_dir) + + print 'Extracting MCP to \'%s\'' % mcp_dir + zf = ZipFile(mcp_zip) + zf.extractall(mcp_dir) + zf.close() + + return True + def setup_mcp(fml_dir, mcp_dir, dont_gen_conf=True): global mcp_version + + if not download_mcp(mcp_dir, fml_dir): + sys.exit(1) + backup = os.path.join(mcp_dir, 'runtime', 'commands.py.bck') runtime = os.path.join(mcp_dir, 'runtime', 'commands.py') patch = os.path.join(fml_dir, 'commands.patch') @@ -898,4 +942,4 @@ def gen_renamed_conf(mcp_dir, fml_dir): with open(patch_tmp, 'w') as fh: fh.write(buf) - shutil.move(patch_tmp, patch_in) \ No newline at end of file + shutil.move(patch_tmp, patch_in) diff --git a/fml/install/install.bat b/fml/install/install.bat index 44f664643..4698e2b22 100644 --- a/fml/install/install.bat +++ b/fml/install/install.bat @@ -1,4 +1,4 @@ echo off -@set PATH=%PATH%;%SystemDir%\system32;%SystemRoot%\System32;..\runtime\bin\python -python_mcp install.py +@set PATH=%PATH%;%SystemDir%\system32;%SystemRoot%\System32;.\python\ +python_fml install.py pause diff --git a/fml/install/install.py b/fml/install/install.py index 3705ebd5b..5971c78af 100644 --- a/fml/install/install.py +++ b/fml/install/install.py @@ -1,4 +1,5 @@ import os, os.path, sys +from optparse import OptionParser from fml import setup_fml, finish_setup_fml, apply_fml_patches, setup_mcp @@ -11,4 +12,15 @@ def fml_main(fml_dir, mcp_dir, dont_gen_conf=True): print '================ Forge ModLoader Setup End ===================' if __name__ == '__main__': - fml_main(os.path.dirname(os.path.abspath(__file__)), os.path.abspath('..')) \ No newline at end of file + parser = OptionParser() + parser.add_option('-m', '--mcp-dir', action='store_true', dest='mcp_dir', help='Path to download/extract MCP to', default=None) + options, _ = parser.parse_args() + + fml_dir = os.path.dirname(os.path.abspath(__file__)) + + if not options.mcp_dir is None: + fml_main(fml_dir, os.path.abspath(options.mcp_dir)) + elif os.path.isfile(os.path.join('..', 'runtime', 'commands.py')): + fml_main(fml_dir, os.path.abspath('..')) + else: + fml_main(fml_dir, os.path.abspath('mcp')) \ No newline at end of file diff --git a/fml/mc_versions.cfg b/fml/mc_versions.cfg index b369c6278..8d7c736e2 100644 --- a/fml/mc_versions.cfg +++ b/fml/mc_versions.cfg @@ -10,6 +10,8 @@ server_url = http://assets.minecraft.net/1_4_4/minecraft_server.jar client_md5 = 7aa46c8058cba2f38e9d2ddddcc77c72 server_md5 = b5feed15df1db87c9aaf78dcefad513d mcp_ver = 7.21 +mcp_url = https://www.dropbox.com/s/dao8itysfwuhj9q/mcp721.zip?dl=1 +mcp_md5 = 772ecfdac7e4c9491bfb131cee3bbb36 [1.4.5] client_url = http://assets.minecraft.net/1_4_5/minecraft.jar @@ -17,3 +19,5 @@ server_url = http://assets.minecraft.net/1_4_5/minecraft_server.jar client_md5 = b15e2b2b6b4629f0d99a95b6b44412a0 server_md5 = 250654ceae7a26ba955a30095d90a475 mcp_ver = 7.23 +mcp_url = https://www.dropbox.com/s/w5vc4kfkge7jti2/mcp723.zip?dl=1 +mcp_md5 = 9fbb5835b437b64bc5ce618fa5a53d1d diff --git a/fml/patches/minecraft/net/minecraft/client/EntityFX.java.patch b/fml/patches/minecraft/net/minecraft/client/EntityFX.java.patch deleted file mode 100644 index 69aea9e6e..000000000 --- a/fml/patches/minecraft/net/minecraft/client/EntityFX.java.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/client/EntityFX.java -+++ ../src-work/minecraft/net/minecraft/client/EntityFX.java -@@ -31,9 +31,9 @@ - this.func_70105_a(0.2F, 0.2F); - this.field_70129_M = this.field_70131_O / 2.0F; - this.func_70107_b(p_i3154_2_, p_i3154_4_, p_i3154_6_); -- this.field_70142_S = p_i3154_2_; -- this.field_70137_T = p_i3154_4_; -- this.field_70136_U = p_i3154_6_; -+ this.field_70169_q = p_i3154_2_; -+ this.field_70167_r = p_i3154_4_; -+ this.field_70166_s = p_i3154_6_; - this.field_70552_h = this.field_70553_i = this.field_70551_j = 1.0F; - this.field_70159_w = p_i3154_8_ + (double)((float)(Math.random() * 2.0D - 1.0D) * 0.4F); - this.field_70181_x = p_i3154_10_ + (double)((float)(Math.random() * 2.0D - 1.0D) * 0.4F); diff --git a/fml/python/PythonLicense.url b/fml/python/PythonLicense.url new file mode 100644 index 000000000..2789d428f --- /dev/null +++ b/fml/python/PythonLicense.url @@ -0,0 +1,5 @@ +[{000214A0-0000-0000-C000-000000000046}] +Prop3=19,2 +[InternetShortcut] +URL=http://docs.python.org/2/license.html +IDList= diff --git a/fml/python/_ctypes.pyd b/fml/python/_ctypes.pyd new file mode 100644 index 000000000..5edc87c70 Binary files /dev/null and b/fml/python/_ctypes.pyd differ diff --git a/fml/python/_elementtree.pyd b/fml/python/_elementtree.pyd new file mode 100644 index 000000000..0b0c3b176 Binary files /dev/null and b/fml/python/_elementtree.pyd differ diff --git a/fml/python/_hashlib.pyd b/fml/python/_hashlib.pyd new file mode 100644 index 000000000..ba1421c20 Binary files /dev/null and b/fml/python/_hashlib.pyd differ diff --git a/fml/python/_multiprocessing.pyd b/fml/python/_multiprocessing.pyd new file mode 100644 index 000000000..22a4aae8a Binary files /dev/null and b/fml/python/_multiprocessing.pyd differ diff --git a/fml/python/_socket.pyd b/fml/python/_socket.pyd new file mode 100644 index 000000000..dd81d555f Binary files /dev/null and b/fml/python/_socket.pyd differ diff --git a/fml/python/_sqlite3.pyd b/fml/python/_sqlite3.pyd new file mode 100644 index 000000000..c1a3c3c8c Binary files /dev/null and b/fml/python/_sqlite3.pyd differ diff --git a/fml/python/_ssl.pyd b/fml/python/_ssl.pyd new file mode 100644 index 000000000..26c88e2df Binary files /dev/null and b/fml/python/_ssl.pyd differ diff --git a/fml/python/bz2.pyd b/fml/python/bz2.pyd new file mode 100644 index 000000000..11c874a48 Binary files /dev/null and b/fml/python/bz2.pyd differ diff --git a/fml/python/pyexpat.pyd b/fml/python/pyexpat.pyd new file mode 100644 index 000000000..872fcb789 Binary files /dev/null and b/fml/python/pyexpat.pyd differ diff --git a/fml/python/python27.dll b/fml/python/python27.dll new file mode 100644 index 000000000..e4f0aa40b Binary files /dev/null and b/fml/python/python27.dll differ diff --git a/fml/python/python27.zip b/fml/python/python27.zip new file mode 100644 index 000000000..c797a5917 Binary files /dev/null and b/fml/python/python27.zip differ diff --git a/fml/python/python_fml.exe b/fml/python/python_fml.exe new file mode 100644 index 000000000..27f355627 Binary files /dev/null and b/fml/python/python_fml.exe differ diff --git a/fml/python/select.pyd b/fml/python/select.pyd new file mode 100644 index 000000000..ee72f310d Binary files /dev/null and b/fml/python/select.pyd differ diff --git a/fml/python/sqlite3.dll b/fml/python/sqlite3.dll new file mode 100644 index 000000000..faebb5377 Binary files /dev/null and b/fml/python/sqlite3.dll differ diff --git a/fml/python/unicodedata.pyd b/fml/python/unicodedata.pyd new file mode 100644 index 000000000..9927f9835 Binary files /dev/null and b/fml/python/unicodedata.pyd differ diff --git a/fml/updatefml.txt b/fml/updatefml.txt new file mode 100644 index 000000000..6f04bd567 --- /dev/null +++ b/fml/updatefml.txt @@ -0,0 +1,17 @@ +Updating FML: +1. Grab MCP +2. Complete the mc_versions.cfg - add a new entry and update md5s from MCP +3. Copy joined.exc from MCP conf into FML conf. +4. Merge other mcp configuration changes into FML conf. (generally only mcp.cfg should need changing to update md5s) +If obfuscation changed: +5. Run the updateasmdata.py script to refresh the ASM metadata in fml_at.cfg (only +6. Inspect and update mcp_merge.cfg +7. Inspect and update fml_marker.cfg +Always: +8. Merge MCP mcmod.info into mcpmod.info and update the mcp.png graphic if necessary +9. Run ant setupenvironment to try and build the FML environment +10. Fix up any patch rejections +11. Commit the result to git +12. Tag git with a new version: git tag -a vx.y +13. Update jenkins with new MCP and jars +14. Push tags to git followed by the commit itself