mirror of
https://github.com/ammaraskar/pyCraft.git
synced 2024-12-22 16:48:33 +01:00
Fix outdated documentation
This commit is contained in:
parent
f560f73df8
commit
9aa369c7da
@ -1,29 +1,28 @@
|
|||||||
Authentication
|
Authentication
|
||||||
==============
|
==============
|
||||||
|
|
||||||
.. currentmodule:: authentication
|
.. currentmodule:: minecraft.authentication
|
||||||
.. _Yggdrasil: http://wiki.vg/Authentication
|
.. _Yggdrasil: http://wiki.vg/Authentication
|
||||||
.. _LoginResponse: http://wiki.vg/Authentication#Authenticate
|
.. _LoginResponse: http://wiki.vg/Authentication#Authenticate
|
||||||
|
|
||||||
The authentication module contains functions and classes to facilitate
|
The authentication module contains functions and classes to facilitate
|
||||||
interfacing with Mojang's Yggdrasil_ service.
|
interfacing with Mojang's Yggdrasil_ authentication service.
|
||||||
|
|
||||||
|
|
||||||
Logging In
|
Logging In
|
||||||
~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
The most common use for this module in the context of a client will be to
|
The most common use for this module in the context of a client will be to
|
||||||
log in to a Minecraft account. The convenience method
|
log in to a Minecraft account. The first step to doing this is creating
|
||||||
|
an instance of the AuthenticationToken class after which you may use the
|
||||||
|
authenticate method with the user's username and password in order to make the AuthenticationToken valid.
|
||||||
|
|
||||||
.. autofunction:: login_to_minecraft
|
.. autoclass:: AuthenticationToken
|
||||||
|
:members: authenticate
|
||||||
|
|
||||||
should be used which will return a LoginResponse object. See LoginResponse_ for more details on the returned attributes
|
Upon success, the function returns True, on failure a YggdrasilError
|
||||||
|
is raised. This happens, for example if an incorrect username/password
|
||||||
.. autoclass:: LoginResponse
|
is provided or the web request failed.
|
||||||
:members:
|
|
||||||
|
|
||||||
or raise a YggdrasilError on failure, for example if an incorrect username/password
|
|
||||||
is provided or the web request failed
|
|
||||||
|
|
||||||
.. autoexception:: YggdrasilError
|
.. autoexception:: YggdrasilError
|
||||||
:members:
|
:members:
|
||||||
@ -32,15 +31,13 @@ is provided or the web request failed
|
|||||||
Arbitary Requests
|
Arbitary Requests
|
||||||
~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
You may make any arbitary request to the Yggdrasil service with
|
You may make any arbitary request to the Yggdrasil service with the _make_request
|
||||||
|
method passing in the AUTH_SERVER as the server parameter.
|
||||||
|
|
||||||
.. automodule:: authentication
|
.. automodule:: minecraft.authentication
|
||||||
:members: BASE_URL
|
:members: AUTH_SERVER
|
||||||
|
|
||||||
.. autofunction:: make_request
|
.. autofunction:: _make_request
|
||||||
|
|
||||||
.. autoclass:: Response
|
|
||||||
:members:
|
|
||||||
|
|
||||||
|
|
||||||
---------------
|
---------------
|
||||||
@ -48,11 +45,8 @@ You may make any arbitary request to the Yggdrasil service with
|
|||||||
---------------
|
---------------
|
||||||
An example of making an arbitary request can be seen here::
|
An example of making an arbitary request can be seen here::
|
||||||
|
|
||||||
url = authentication.BASE_URL + "session/minecraft/join"
|
payload = {'username': username,
|
||||||
server_id = encryption.generate_verification_hash(packet.server_id, secret, packet.public_key)
|
'password': password}
|
||||||
payload = {'accessToken': self.connection.login_response.access_token,
|
|
||||||
'selectedProfile': self.connection.login_response.profile_id,
|
|
||||||
'serverId': server_id}
|
|
||||||
|
|
||||||
authentication.make_request(url, payload)
|
authentication._make_request(authentication.AUTH_SERVER, "signout", payload)
|
||||||
|
|
||||||
|
@ -1,54 +1,61 @@
|
|||||||
Connecting to Servers
|
Connecting to Servers
|
||||||
======================
|
======================
|
||||||
|
|
||||||
.. module:: network.connection
|
.. module:: minecraft.networking.connection
|
||||||
|
|
||||||
Your primary dealings when connecting to a server will deal with the Connection class
|
Your primary dealings when connecting to a server will be with the Connection class
|
||||||
|
|
||||||
.. autoclass:: network.connection.Connection
|
.. autoclass:: Connection
|
||||||
:members:
|
:members:
|
||||||
|
|
||||||
Writing Packets
|
Writing Packets
|
||||||
~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
The packet class uses a lot of magic to work, here is how to use them.
|
The packet class uses a lot of magic to work, here is how to use them.
|
||||||
Look up the particular packet you need to deal with, for my example let's go with the ``KeepAlivePacket``
|
Look up the particular packet you need to deal with, for this example
|
||||||
|
let's go with the ``KeepAlivePacket``
|
||||||
|
|
||||||
.. autoclass:: network.packets.KeepAlivePacket
|
.. autoclass:: minecraft.networking.packets.KeepAlivePacket
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
:inherited-members:
|
:inherited-members:
|
||||||
:exclude-members: read, write
|
:exclude-members: read, write, context, get_definition, get_id, id, packet_name, set_values
|
||||||
|
|
||||||
Pay close attention to the definition attribute, we're gonna be using that to assign values within the packet::
|
Pay close attention to the definition attribute, and how our class variable corresponds to
|
||||||
|
the name given from the definition::
|
||||||
|
|
||||||
packet = KeepAlivePacket()
|
packet = KeepAlivePacket()
|
||||||
packet.keep_alive_id = random.randint(0, 5000)
|
packet.keep_alive_id = random.randint(0, 5000)
|
||||||
connection.write_packet(packet)
|
connection.write_packet(packet)
|
||||||
|
|
||||||
and just like that, the packet will be written out to the server
|
and just like that, the packet will be written out to the server.
|
||||||
|
|
||||||
|
It is possible to implement your own custom packets by subclassing
|
||||||
|
:class:`minecraft.networking.packets.Packet`. Read the docstrings and
|
||||||
|
follow the examples in packets.py for more details on how to do advanced tasks
|
||||||
|
like having a packet that is compatible across multiple protocol versions.
|
||||||
|
|
||||||
Listening for Certain Packets
|
Listening for Certain Packets
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Let's look at how to listen for certain packets, the relevant method being
|
Let's look at how to listen for certain packets, the relevant method being
|
||||||
|
|
||||||
.. automethod:: network.connection.Connection.register_packet_listener
|
.. automethod:: Connection.register_packet_listener
|
||||||
|
|
||||||
An example of this can be found in the ``start.py`` headless client, it is recreated here::
|
An example of this can be found in the ``start.py`` headless client, it is recreated here::
|
||||||
|
|
||||||
connection = Connection(address, port, login_response)
|
connection = Connection(options.address, options.port, auth_token=auth_token)
|
||||||
connection.connect()
|
connection.connect()
|
||||||
|
|
||||||
def print_chat(chat_packet):
|
def print_chat(chat_packet):
|
||||||
print "Position: " + str(chat_packet.position)
|
print "Position: " + str(chat_packet.position)
|
||||||
print "Data: " + chat_packet.json_data
|
print "Data: " + chat_packet.json_data
|
||||||
|
|
||||||
from network.packets import ChatMessagePacket
|
from minecraft.networking.packets import ChatMessagePacket
|
||||||
connection.register_packet_listener(print_chat, ChatMessagePacket)
|
connection.register_packet_listener(print_chat, ChatMessagePacket)
|
||||||
|
|
||||||
The field names ``position`` and ``json_data`` are inferred by again looking at the definition attribute as before
|
The field names ``position`` and ``json_data`` are inferred by again looking at the definition attribute as before
|
||||||
|
|
||||||
.. autoclass:: network.packets.ChatMessagePacket
|
.. autoclass:: minecraft.networking.packets.ChatMessagePacket
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
:inherited-members:
|
:inherited-members:
|
||||||
:exclude-members: read, write
|
:exclude-members: read, write, context, get_definition, get_id, id, packet_name, set_values
|
@ -10,7 +10,8 @@ Welcome to pyCraft's documentation!
|
|||||||
between a Minecraft server as a client.
|
between a Minecraft server as a client.
|
||||||
|
|
||||||
The authentication package contains utilities to manage communicating
|
The authentication package contains utilities to manage communicating
|
||||||
with Mojang's in order to log in with a minecraft account, edit profiles etc
|
with Mojang's authentication servers in order to log in with a minecraft
|
||||||
|
account, edit profiles etc
|
||||||
|
|
||||||
The Connection class under the networking package handles
|
The Connection class under the networking package handles
|
||||||
connecting to a server, sending packets, listening for packets etc
|
connecting to a server, sending packets, listening for packets etc
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
"""
|
|
||||||
Handles authentication with the Mojang authentication server.
|
|
||||||
"""
|
|
||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
from .exceptions import YggdrasilError
|
from .exceptions import YggdrasilError
|
||||||
|
|
||||||
|
#: The base url for Ygdrassil requests
|
||||||
AUTH_SERVER = "https://authserver.mojang.com"
|
AUTH_SERVER = "https://authserver.mojang.com"
|
||||||
SESSION_SERVER = "https://sessionserver.mojang.com/session/minecraft"
|
SESSION_SERVER = "https://sessionserver.mojang.com/session/minecraft"
|
||||||
# Need this content type, or authserver will complain
|
# Need this content type, or authserver will complain
|
||||||
|
@ -66,7 +66,7 @@ class Connection(object):
|
|||||||
|
|
||||||
:param address: address of the server to connect to
|
:param address: address of the server to connect to
|
||||||
:param port(int): port of the server to connect to
|
:param port(int): port of the server to connect to
|
||||||
:param auth_token: :class:`authentication.AuthenticationToken` object.
|
:param auth_token: :class:`minecraft.authentication.AuthenticationToken` object.
|
||||||
If None, no authentication is attempted and the
|
If None, no authentication is attempted and the
|
||||||
server is assumed to be running in offline mode.
|
server is assumed to be running in offline mode.
|
||||||
:param username: Username string; only applicable in offline mode.
|
:param username: Username string; only applicable in offline mode.
|
||||||
@ -81,15 +81,15 @@ class Connection(object):
|
|||||||
use in connecting to the server.
|
use in connecting to the server.
|
||||||
:param handle_exception: A function to be called when an exception
|
:param handle_exception: A function to be called when an exception
|
||||||
occurs in the client's networking thread,
|
occurs in the client's networking thread,
|
||||||
taking 2 arguments: the exception object `e'
|
taking 2 arguments: the exception object 'e'
|
||||||
as in `except Exception as e', and a 3-tuple
|
as in 'except Exception as e', and a 3-tuple
|
||||||
given by sys.exc_info(); or None for the
|
given by sys.exc_info(); or None for the
|
||||||
default behaviour of raising the exception
|
default behaviour of raising the exception
|
||||||
from its original context; or False for no
|
from its original context; or False for no
|
||||||
action. In any case, the networking thread
|
action. In any case, the networking thread
|
||||||
will terminate, the exception will be
|
will terminate, the exception will be
|
||||||
available via the `exception' and `exc_info'
|
available via the 'exception' and 'exc_info'
|
||||||
attributes of the `Connection' instance.
|
attributes of the 'Connection' instance.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self._write_lock = Lock()
|
self._write_lock = Lock()
|
||||||
|
Loading…
Reference in New Issue
Block a user