def recompile(conffile, only_client, only_server): errorcode = 0 try: commands = Commands(conffile, verify=True) # client or server process_client = True process_server = True if only_client and not only_server: process_server = False if only_server and not only_client: process_client = False if process_client: try: recompile_side(commands, CLIENT) except CalledProcessError: errorcode = 2 pass if process_server: try: recompile_side(commands, SERVER) except CalledProcessError: errorcode = 3 pass except Exception: # pylint: disable-msg=W0703 logging.exception('FATAL ERROR') sys.exit(1)
def main(mcp_dir): print 'Using mcp dir: %s' % mcp_dir print 'Using base dir: %s' % base_dir sys.path.append(mcp_dir) os.chdir(mcp_dir) reobf = os.path.join(mcp_dir, 'reobf', 'minecraft') try: pass shutil.rmtree(reobf) except OSError: pass print("Recompiling...") from runtime.mcp import recompile_side, reobfuscate_side from runtime.commands import Commands, CLIENT commands = Commands(None, verify=True) recompile_side(commands, CLIENT) print("Reobfuscating...") commands.creatergcfg(reobf=True, keep_lvt=True, keep_generics=True, srg_names=False) reobfuscate_side(commands, CLIENT) create_install(mcp_dir)
def recompile(conffile, only_client, only_server): errorcode = 0 try: commands = Commands(conffile, verify=True) # client or server process_client = True process_server = True if only_client and not only_server: process_server = False if only_server and not only_client: process_client = False if process_client: try: recompile_side(commands, CLIENT) except CalledProcessError: errorcode = 2 pass if process_server: try: recompile_side(commands, SERVER) except CalledProcessError: errorcode = 3 pass except Exception: # pylint: disable-msg=W0703 logging.exception("FATAL ERROR") sys.exit(1)
def main(mcp_dir): print 'Using mcp dir: %s' % mcp_dir print 'Using base dir: %s' % base_dir print("Refreshing dependencies...") download_deps( mcp_dir, False ) sys.path.append(mcp_dir) os.chdir(mcp_dir) reobf = os.path.join(mcp_dir,'reobf','minecraft') try: pass shutil.rmtree(reobf) except OSError: pass # Update Minecrift version minecraft_java_file = os.path.join(mcp_dir,'src','minecraft','net','minecraft','client','Minecraft.java') if os.path.exists(minecraft_java_file): print "Updating Minecraft.java with Minecrift version: [Minecrift %s %s] %s" % ( minecrift_version_num, minecrift_build, minecraft_java_file ) replacelineinfile( minecraft_java_file, "public final String minecriftVerString", " public final String minecriftVerString = \"Minecrift %s %s\";\n" % (minecrift_version_num, minecrift_build) ); print("Recompiling...") from runtime.mcp import recompile_side, reobfuscate_side from runtime.commands import Commands, CLIENT commands = Commands(None, verify=True) recompile_side( commands, CLIENT) print("Reobfuscating...") commands.creatergcfg(reobf=True, keep_lvt=True, keep_generics=True, srg_names=False) reobfuscate_side( commands, CLIENT ) create_install( mcp_dir )
def main(mcp_dir): print 'Using mcp dir: %s' % mcp_dir print 'Using base dir: %s' % base_dir print("Refreshing dependencies...") download_deps( mcp_dir, False ) sys.path.append(mcp_dir) os.chdir(mcp_dir) reobf = os.path.join(mcp_dir,'reobf','minecraft') srg = os.path.join(mcp_dir,'class','srg') obf = os.path.join(mcp_dir,'class','obf') from runtime.commands import reallyrmtree reallyrmtree(reobf) reallyrmtree(srg) reallyrmtree(obf) # Update Minecrift version minecraft_java_file = os.path.join(mcp_dir,'src','minecraft','net','minecraft','client','Minecraft.java') if os.path.exists(minecraft_java_file): print "Updating Minecraft.java with Vivecraft version: [Vivecraft %s %s] %s" % ( minecrift_version_num, minecrift_build, minecraft_java_file ) replacelineinfile( minecraft_java_file, "public final String minecriftVerString", " public final String minecriftVerString = \"Vivecraft %s %s\";\n" % (minecrift_version_num, minecrift_build) ); print("Recompiling...") from runtime.mcp import recompile_side, reobfuscate_side from runtime.commands import Commands, CLIENT commands = Commands(None, verify=True) recompile_side( commands, CLIENT) print("Reobfuscating...") commands.creatergcfg(reobf=True, keep_lvt=True, keep_generics=True, srg_names=True) reobfuscate_side( commands, CLIENT , srg_names=True) try: pass shutil.move(reobf, srg) except OSError: quit commands.creatergcfg(reobf=True, keep_lvt=True, keep_generics=True, srg_names=False) reobfuscate_side( commands, CLIENT ) try: pass shutil.move(reobf, obf) except OSError: quit create_install( mcp_dir )
def build_forge_dev(mcp_dir, forge_dir, fml_dir, build_num=0): version = load_version(build_num) print '=================================== Build %d.%d.%d.%d Start =================================' % ( version['major'], version['minor'], version['revision'], version['build']) src_dir = os.path.join(mcp_dir, 'src') if os.path.isdir(src_dir): shutil.rmtree(src_dir) sys.path.append(fml_dir) sys.path.append(os.path.join(fml_dir, 'install')) from fml import copytree print 'src_work -> src' copytree(os.path.join(mcp_dir, 'src_work'), src_dir) print '\nCopying Client Code' copytree(os.path.join(forge_dir, 'client'), os.path.join(src_dir, 'minecraft'), -1) print '\nCopying Common Code' copytree(os.path.join(forge_dir, 'common'), os.path.join(src_dir, 'minecraft'), -1) print inject_version( os.path.join( src_dir, 'minecraft/net/minecraftforge/common/ForgeVersion.java'.replace( '/', os.sep)), build_num) error_level = 0 try: sys.path.append(mcp_dir) from runtime.commands import Commands, CLIENT, SERVER, CalledProcessError from runtime.mcp import recompile_side os.chdir(mcp_dir) reset_logger() commands = Commands(None, verify=True) try: recompile_side(commands, CLIENT) except CalledProcessError as e: error_level = 1 pass reset_logger() os.chdir(forge_dir) except SystemExit, e: if not e.code == 0: print 'Recompile Exception: %d ' % e.code error_level = e.code
def main(mcp_dir): print 'Using mcp dir: %s' % mcp_dir print 'Using base dir: %s' % base_dir print("Refreshing dependencies...") download_deps(mcp_dir, False) sys.path.append(mcp_dir) os.chdir(mcp_dir) reobf = os.path.join(mcp_dir, 'reobf', 'minecraft') try: pass shutil.rmtree(reobf) except OSError: pass # Read Minecrift lib versions jRiftPom = os.path.join(base_dir, 'JRift', 'JRift', 'pom.xml') jRiftLibraryPom = os.path.join(base_dir, 'JRift', 'JRiftLibrary', 'pom.xml') jRiftVer = readpomversion(jRiftPom) print 'JRift: %s' % jRiftVer jRiftLibraryVer = readpomversion(jRiftLibraryPom) print 'JRiftLibrary: %s' % jRiftLibraryVer # Update Minecrift version minecraft_java_file = os.path.join(mcp_dir, 'src', 'minecraft', 'net', 'minecraft', 'client', 'Minecraft.java') if os.path.exists(minecraft_java_file): print "Updating Minecraft.java with Vivecraft version: [Vivecraft %s %s] %s" % ( minecrift_version_num, minecrift_build, minecraft_java_file) replacelineinfile( minecraft_java_file, "public final String minecriftVerString", " public final String minecriftVerString = \"Vivecraft %s %s\";\n" % (minecrift_version_num, minecrift_build)) print("Recompiling...") from runtime.mcp import recompile_side, reobfuscate_side from runtime.commands import Commands, CLIENT commands = Commands(None, verify=True) recompile_side(commands, CLIENT) print("Reobfuscating...") commands.creatergcfg(reobf=True, keep_lvt=True, keep_generics=True, srg_names=False) reobfuscate_side(commands, CLIENT) create_install(mcp_dir)
def updatemd5_side(mcp_dir, commands, side): sys.path.append(mcp_dir) from runtime.mcp import recompile_side, updatemd5_side from runtime.commands import SIDE_NAME recomp = recompile_side(commands, side) if recomp: commands.logger.info('> Generating %s md5s', SIDE_NAME[side]) commands.gathermd5s(side, skip_fml=True)
def build_forge_dev(mcp_dir, forge_dir, fml_dir, build_num=0): version = load_version(build_num) print '=================================== Build %d.%d.%d.%d Start =================================' % (version['major'], version['minor'], version['revision'], version['build']) src_dir = os.path.join(mcp_dir, 'src') if os.path.isdir(src_dir): shutil.rmtree(src_dir) sys.path.append(fml_dir) sys.path.append(os.path.join(fml_dir, 'install')) from fml import copytree print 'src_work -> src' copytree(os.path.join(mcp_dir, 'src_work'), src_dir) print '\nCopying Client Code' copytree(os.path.join(forge_dir, 'client'), os.path.join(src_dir, 'minecraft'), -1) print '\nCopying Common Code' copytree(os.path.join(forge_dir, 'common'), os.path.join(src_dir, 'minecraft'), -1) print inject_version(os.path.join(src_dir, 'minecraft/net/minecraftforge/common/ForgeVersion.java'.replace('/', os.sep)), build_num) error_level = 0 try: sys.path.append(mcp_dir) from runtime.commands import Commands, CLIENT, SERVER, CalledProcessError from runtime.mcp import recompile_side os.chdir(mcp_dir) reset_logger() commands = Commands(None, verify=True) try: recompile_side(commands, CLIENT) except CalledProcessError as e: error_level = 1 pass reset_logger() os.chdir(forge_dir) except SystemExit, e: if not e.code == 0: print 'Recompile Exception: %d ' % e.code error_level = e.code
def main(mcp_dir): print 'Using mcp dir: %s' % mcp_dir print 'Using base dir: %s' % base_dir sys.path.append(mcp_dir) os.chdir(mcp_dir) reobf = os.path.join(mcp_dir,'reobf','minecraft') try: pass shutil.rmtree(reobf) except OSError: pass print("Recompiling...") from runtime.mcp import recompile_side, reobfuscate_side from runtime.commands import Commands, CLIENT commands = Commands(None, verify=True) recompile_side( commands, CLIENT) print("Reobfuscating...") commands.creatergcfg(reobf=True, keep_lvt=True, keep_generics=True, srg_names=False) reobfuscate_side( commands, CLIENT ) create_install( mcp_dir )
def main(mcp_dir): print 'Using mcp dir: %s' % mcp_dir print 'Using base dir: %s' % base_dir sys.path.append(mcp_dir) os.chdir(mcp_dir) reobf = os.path.join(mcp_dir,'reobf','minecraft') try: pass shutil.rmtree(reobf) except OSError: pass print("Recompiling...") from runtime.mcp import recompile_side, reobfuscate_side from runtime.commands import Commands, CLIENT commands = Commands(None, verify=True) recompile_side( commands, CLIENT) print("Reobfuscating...") commands.creatergcfg(reobf=True, keep_lvt=True, keep_generics=True, srg_names=False) reobfuscate_side( commands, CLIENT ) print("Creating Installer...") in_mem_zip = StringIO.StringIO() with zipfile.ZipFile( in_mem_zip,'w', zipfile.ZIP_DEFLATED) as zipout: for abs_path, _, filelist in os.walk(reobf, followlinks=True): arc_path = os.path.relpath( abs_path, reobf ).replace('\\','/').replace('.','')+'/' for cur_file in fnmatch.filter(filelist, '*.class'): if cur_file=='blk.class': #skip SoundManager continue in_file= os.path.join(abs_path,cur_file) arcname = arc_path + cur_file zipout.write(in_file, arcname) os.chdir( base_dir ) in_mem_zip.seek(0) json_str = "" mc_ver ="1.6.2" if os.getenv("RELEASE_VERSION"): version = os.getenv("RELEASE_VERSION") elif os.getenv("BUILD_NUMBER"): version = "b"+os.getenv("BUILD_NUMBER") else: version = "LOCAL" version = mc_ver+"-"+version json_id = "minecrift-"+version lib_id = "com.mtbs3d:minecrift:"+version with open(os.path.join("installer",mc_ver+".json"),"rb") as f: json_obj = json.load(f) time = datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S-05:00") json_obj["id"] = json_id json_obj["time"] = time json_obj["releaseTime"] = time json_obj["libraries"].insert(0,{"name":lib_id}) #Insert at beginning json_obj["libraries"].append({"name":"net.minecraft:Minecraft:"+mc_ver}) #Insert at end json_str = json.dumps( json_obj, indent=1 ) installer_id = json_id+"-installer" installer = os.path.join( installer_id+".jar" ) shutil.copy( os.path.join("installer","installer.jar"), installer ) with zipfile.ZipFile( installer,'a', zipfile.ZIP_DEFLATED) as install_out: #append to installer.jar install_out.writestr( "version.json", json_str ) install_out.writestr( "version.jar", in_mem_zip.read() ) install_out.writestr( "version", json_id+":"+version ) print("Creating Installer exe...") with open( os.path.join("installer","launch4j.xml"),"r" ) as inlaunch: with open( "launch4j.xml", "w" ) as outlaunch: outlaunch.write( inlaunch.read().replace("installer",installer_id)) subprocess.Popen( cmdsplit("java -jar \"%s\" \"%s\""% ( os.path.join( base_dir,"installer","launch4j","launch4j.jar"), os.path.join( base_dir, "launch4j.xml"))), cwd=os.path.join(base_dir,"installer","launch4j"), bufsize=-1).communicate() os.unlink( "launch4j.xml" )
def main(distDir, mcpDir): from sys import path defaultWD = os.getcwd() path.append(mcpDir) from runtime.commands import Commands, CLIENT, SIDE_NAME from runtime.mcp import reobfuscate_side, recompile_side print '================ Generating Details ===================' file_bin = os.path.join(mcpDir, 'src', 'minecraft') reob_bin = os.path.join(mcpDir, 'reobf') with open(os.path.join(file_bin, 'net', 'minecraft', 'client', 'Minecraft.java'), 'rb') as mcClass: for line in mcClass: startIndex = line.find('"Minecraft Minecraft ') endIndex = line.rfind('"') if startIndex > -1 and endIndex > -1 and endIndex > startIndex: mcVersion = line[startIndex:endIndex] mcVersion = mcVersion.replace('"', '') mcVersion = mcVersion.replace('Minecraft', '') mcVersion = mcVersion.replace(' ', '') modid = '' version = '' modName = '' with open(os.path.join(file_bin, 'mods', 'battlegear2', 'common', 'BattleGear.java'), 'rb') as mainClass: for line in mainClass: if(line.startswith('@Mod(')): line = line.replace('@Mod(','') line = line.replace(')','') line = line.strip() fields = line.split(', ') for field in fields: pair = field.split('=') if(pair[0] == 'modid'): modid = pair[1] elif (pair[0] == 'name'): modname = pair[1] elif (pair[0] == 'version'): version = pair[1] print '================ Compiling Battlegear ===================' os.chdir(mcpDir) c = Commands() recompile_side(c, CLIENT) print '================ Creating coremod jar ===================' os.chdir(defaultWD) coremod_dir = os.path.join('mods','battlegear2','coremod') coremod_bin = os.path.join(mcpDir, 'bin', 'minecraft', coremod_dir) core_jar = zipfile.ZipFile(os.path.join(distDir,generateJarName('M&B Battlegear2 - core', mcVersion, version)), 'w') for root, _, filelist in os.walk(coremod_bin, followlinks=True): if(root.find(coremod_dir) > -1): for cur_file in filelist : jar_path = os.path.join(root.replace(coremod_bin, coremod_dir),cur_file) print('Packing '+jar_path) core_jar.write(os.path.join(root,cur_file), jar_path) write_core_manifest(core_jar, 'mods.battlegear2.coremod.BattlegearLoadingPlugin') core_jar.close() print '================ Reobfuscate Battlegear ===================' os.chdir(mcpDir) print(os.getcwd()) cmd = './reobfuscate_srg.sh' if (os.name == 'nt'): cmd = 'reobfuscate_srg.bat' os.system(cmd) print '================ Creating Battlegear jar ===================' os.chdir(defaultWD) bg_jar = zipfile.ZipFile(os.path.join(distDir,generateJarName('M&B Battlegear2 - mod', mcVersion, version)), 'w') print 'Packing McMod Info' packMcModInfo(bg_jar, modid, version, modname) print 'Packing Logo' bg_jar.write(os.path.join(file_bin,'bg-logo.png'), 'bg-logo.png') file_bin = os.path.join(mcpDir, 'src', 'minecraft', 'mods') for root, _, filelist in os.walk(file_bin, followlinks=True): if root.find(coremod_dir) == -1: if not root.find('battlegear2') == -1: for cur_file in filelist : if not (cur_file.endswith('.java') or cur_file.endswith('.orig')): class_file = os.path.join(root.replace(file_bin, 'mods'),cur_file) print 'Packing File : '+class_file bg_jar.write(os.path.join(root,cur_file), class_file) for root, _, filelist in os.walk(reob_bin, followlinks=True): if(root.find(coremod_dir) == -1): for cur_file in filelist : class_file = os.path.join(root.replace(os.path.join(reob_bin,'minecraft'), ''),cur_file) print 'Packing Class File : '+class_file bg_jar.write(os.path.join(root,cur_file), class_file)
line = line.replace(')', '') line = line.strip() fields = line.split(', ') for field in fields: pair = field.split('=') if (pair[0] == 'modid'): modid = pair[1] elif (pair[0] == 'name'): modname = pair[1] elif (pair[0] == 'version'): version = pair[1] print '================ Compiling Battlegear ===================' os.chdir(mcpDir) c = Commands() recompile_side(c, CLIENT) print '================ Creating coremod jar ===================' os.chdir(defaultWD) coremod_dir = os.path.join('mods', 'battlegear2', 'coremod') coremod_bin = os.path.join(mcpDir, 'bin', 'minecraft', coremod_dir) core_jar = zipfile.ZipFile( os.path.join( distDir, generateJarName('M&B Battlegear2 - Core', mcVersion, version)), 'w') for root, _, filelist in os.walk(coremod_bin, followlinks=True):
line = line.replace(')','') line = line.strip() fields = line.split(', ') for field in fields: pair = field.split('=') if(pair[0] == 'modid'): modid = pair[1] elif (pair[0] == 'name'): modname = pair[1] elif (pair[0] == 'version'): version = pair[1] print '================ Compiling Battlegear ===================' os.chdir(mcpDir) c = Commands() recompile_side(c, CLIENT) print '================ Creating coremod jar ===================' os.chdir(defaultWD) coremod_dir = os.path.join('mods','battlegear2','coremod') coremod_bin = os.path.join(mcpDir, 'bin', 'minecraft', coremod_dir) core_jar = zipfile.ZipFile(os.path.join(distDir,generateJarName('M&B Battlegear2 - Core', mcVersion, version)), 'w') for root, _, filelist in os.walk(coremod_bin, followlinks=True): if(root.find(coremod_dir) > -1): for cur_file in filelist : jar_path = os.path.join(root.replace(coremod_bin, coremod_dir),cur_file) print('Packing '+jar_path)