pyCraft/start.py

90 lines
2.9 KiB
Python
Raw Normal View History

2012-04-05 04:56:21 +02:00
import getpass
import sys
import Utils
from pluginloader import PluginLoader
from networking import PacketSenderManager, NetworkManager
from optparse import OptionParser
try:
import colorama
colorama.init()
except ImportError:
pass
2012-04-30 19:05:06 +02:00
2012-04-05 04:56:21 +02:00
if __name__ == "__main__":
parser = OptionParser()
2012-12-25 21:38:02 +01:00
parser.add_option("-u", "--username", dest="username", default="",
2012-12-25 21:38:02 +01:00
help="username to log in with")
parser.add_option("-p", "--password", dest="password", default="",
2012-12-25 21:38:02 +01:00
help="password to log in with")
parser.add_option("-s", "--server", dest="server", default="",
2012-12-25 21:38:02 +01:00
help="server to connect to")
2012-12-04 10:48:49 +01:00
parser.add_option("-x", "--offline-mode", dest="offlineMode",
2012-12-25 21:38:02 +01:00
action="store_true", default=False,
help="run in offline mode i.e don't attempt to auth via minecraft.net")
parser.add_option("-c", "--disable-console-colours", dest="disableAnsiColours",
action="store_true", default=False,
help="print minecraft chat colours as their equivalent ansi colours")
# pluginLoader
pluginLoader = PluginLoader("plugins")
pluginLoader.loadPlugins(parser)
2012-12-25 21:38:02 +01:00
(options, args) = parser.parse_args()
2012-12-25 21:38:02 +01:00
pluginLoader.notifyOptions(options)
2012-12-25 21:38:02 +01:00
if (options.username != ""):
user = options.username
else:
user = raw_input("Enter your username: ")
2012-12-25 21:38:02 +01:00
if (options.password != ""):
passwd = options.password
2012-12-25 21:38:02 +01:00
elif (not options.offlineMode):
passwd = getpass.getpass("Enter your password: ")
2012-12-25 21:38:02 +01:00
2012-12-04 10:48:49 +01:00
if (not options.offlineMode):
loginThread = Utils.MinecraftLoginThread(user, passwd)
loginThread.start()
loginThread.join()
loginResponse = loginThread.getResponse()
2012-12-25 21:38:02 +01:00
if (loginResponse['Response'] != "Good to go!"):
2012-12-04 10:48:49 +01:00
print loginResponse['Response']
sys.exit(1)
sessionid = loginResponse['SessionID']
user = loginResponse['Username']
print "Logged in as " + loginResponse['Username'] + "! Your session id is: " + sessionid
else:
sessionid = None
2012-12-25 21:38:02 +01:00
if (options.server != ""):
2012-12-04 10:48:49 +01:00
serverAddress = options.server
else:
2012-12-04 10:48:49 +01:00
serverAddress = raw_input("Enter host and port if any: ")
if ':' in serverAddress:
StuffEnteredIntoBox = serverAddress.split(":")
host = StuffEnteredIntoBox[0]
port = int(StuffEnteredIntoBox[1])
else:
2012-12-04 10:48:49 +01:00
host = serverAddress
port = 25565
connection = NetworkManager.ServerConnection(pluginLoader, user, sessionid, host, port, options)
connection.setDaemon(True)
connection.start()
while True:
try:
chat_input = raw_input()
if (connection.isConnected):
PacketSenderManager.send03(connection.grabSocket(),
chat_input.decode('utf-8')[:100])
else:
2012-12-25 21:38:02 +01:00
pass
except KeyboardInterrupt, e:
connection.disconnect()
pluginLoader.disablePlugins()
sys.exit(1)