Advertisement
Inksaver

Run Minecraft Portable on School PC

Jan 14th, 2015
674
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.48 KB | None | 0 0
  1. # Allows the playing of Minecraft from a USB thumbdrive or from Student drive space at schools where
  2. # running .exe files is disabled, but Python AND Java are installed on C:\
  3. # The script locates Java executable on C:\, creates a temporary location for %APPDATA%
  4. # on the USB drive (or student space), then runs Minecraft.jar on that drive.
  5. # Either double-click the startMinecraft.py file, or run it from Idle,
  6. # as the CMD prompt will be disabled by the school
  7. # Original code by NotTarts
  8. # Modified by Inksaver
  9. # Pastebin http://pastebin.com/ZNY7Xs7z
  10. # http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-tools/1260547-minecraft-portable-2-7-2-java-portable-minecraft
  11. # Copy/ Paste this code into Notepad/Idle/YourFavTextEditor and save as "startMinecraft.py" or similar.
  12.  
  13. import os, sys, subprocess, shutil
  14. from datetime import datetime
  15. import time
  16.  
  17. class mcpLog():
  18.     def __init__(self, filename):
  19.         # Creating the initial log file/erasing old log
  20.         self.logFilename = filename
  21.         self.logObj = open(self.logFilename,'w')
  22.         self.logObj.close()        
  23.  
  24.     def write(self, content):
  25.         # Appending to the log
  26.         self.logObj = open(self.logFilename,'a')
  27.         self.logObj.write(content)
  28.         self.logObj.close()
  29.  
  30. class mcpLauncher():
  31.     def __init__(self, filename):
  32.         log.write('Launching Minecraft...\n')
  33.         self.launcherJar = filename
  34.  
  35.     def findJava(self, directories):
  36.         log.write('- Searching for Java binaries... ')
  37.         # Going through every directory in the list to find javaw.exe
  38.  
  39.         for directory in directories:
  40.             binFile = findFile('javaw.exe', directory)
  41.             if binFile:
  42.                 self.javaBin = binFile
  43.                 log.write('done.\n')
  44.                 log.write('- Found Java at {}.\n'.format(os.path.realpath(self.javaBin)))
  45.                 return
  46.             else: self.javaBin = None
  47.  
  48.         if not self.javaBin:
  49.             # Java is needed, so if it's not found the app exits
  50.             log.write('\nError: Could not find Java binaries.')
  51.             sys.exit(1)
  52.  
  53.  
  54.  
  55.     def launch(self): #def launch(self, user, config):
  56.         log.write('- Starting...\n')
  57.         log.write('arguments 1 = ' + str([os.path.realpath(self.javaBin)]) + '\n')
  58.         log.write('arguments 2 = ' + str(['-jar', self.launcherJar]) + '\n')
  59.         arguments = [os.path.realpath(self.javaBin)] + ['-jar', self.launcherJar]
  60.         log.write('arguments = ' + str(arguments) + '\n')
  61.         subprocess.call(arguments)
  62.  
  63. def findFile(filename, directory):
  64.     for root, dirs, files in os.walk(directory):
  65.         for name in files:
  66.             if name == filename:
  67.                 return os.path.join(root, name)
  68.  
  69. def main():
  70.     #Define global variable for logfile object
  71.     global log
  72.    
  73.     currentDir = sys.path[0] #path[0], is the directory containing the script that was used to invoke the Python interpreter eg "F:\Minecraft Portable"
  74.     dataDir = os.path.join(currentDir, 'mcp_data') #Join one or more path components intelligently. eg "F:\Minecraft Portable" + \ + "mcp_data"
  75.     launcherDir = os.path.join(dataDir, 'launcher') # Place to save the launcher (minecraft.jar) eg "F:\Minecraft Portable\mcp_data" + \ + "launcher"
  76.     # The following code ensures the .minecraft folder in the USB is used NOT in default %APPDATA%
  77.     os.putenv('APPDATA',dataDir) # Changing AppData locally so Minecraft/external applications store it here. VERY IMPORTANT!
  78.     # Store file path + names in variables
  79.     launcherFile = os.path.join(launcherDir, 'Minecraft.jar') # eg "F:\Minecraft Portable\mcp_data\launcher" + \ + "Minecraft.jar"  
  80.     logFile = os.path.join(dataDir, 'mcp_log.log') # "F:\Minecraft Portable\mcp_data" + \ + "mcp_log.log"
  81.     # Create logFile Object
  82.     log = mcpLog(logFile) # "F:\Minecraft Portable\mcp_data\mcp_log.log"
  83.    
  84.     # Write credits, date, etc to log
  85.     log.write('Minecraft Portable 2.7.2\nby NotTarts. Modified by Inksaver\n\nStarted at {}\nData directory: {}\n\n'.format(datetime.now(), os.path.realpath(dataDir)))
  86.     # Create launcher object
  87.     launcher = mcpLauncher(launcherFile)
  88.    
  89.     # Finding the Java binaries, checking both the 32-bit and 64-bit Program Files directories.
  90.     launcher.findJava([os.path.join(str(os.getenv('ProgramW6432')), 'Java'), os.path.join(str(os.getenv('ProgramFiles(x86)')), 'Java')])    
  91.     launcher.launch() # Launch Minecraft!
  92.     log.write('\nProcess finished.')
  93.  
  94. # Program starts here    
  95. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement