Exemple #1
0
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)
Exemple #2
0
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)
Exemple #3
0
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)
Exemple #4
0
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 )
Exemple #5
0
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 )
Exemple #6
0
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
Exemple #7
0
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)
Exemple #8
0
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)
Exemple #9
0
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)
Exemple #10
0
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
Exemple #11
0
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 )
Exemple #12
0
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)
Exemple #14
0
                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)