Permalink
Switch branches/tags
Nothing to show
Commits on Jan 6, 2012
  1. Now uses .emit to send and .parse to read

    Pasi Saarinen
    Pasi Saarinen committed Jan 6, 2012
  2. Cunk data should not be sent as a utf16 string

    Pasi Saarinen
    Pasi Saarinen committed Jan 6, 2012
  3. Made error output work

    Pasi Saarinen
    Pasi Saarinen committed Jan 6, 2012
Commits on Jan 3, 2012
  1. Long datatype fix, http://wiki.vg/Protocol says it's 8 bytes and 'l' …

    Pasi Saarinen
    Pasi Saarinen committed Jan 3, 2012
    …only reads 4
Commits on Nov 20, 2011
  1. Bump version number to 0.3

    mmcgill committed Nov 20, 2011
    Version 0.3 has been tested with the 1.0.0 Minecraft
    release.
Commits on Nov 12, 2011
Commits on Oct 30, 2011
  1. [PEP8] plugins.py

    mmcgill committed Oct 30, 2011
Commits on Oct 28, 2011
  1. Pre-release 0.2pre.

    mmcgill committed Oct 28, 2011
  2. Pass proto. ver. to MC3Plugin instances.

    mmcgill committed Oct 28, 2011
    To correctly encode injected messages, instances of
    MC3Plugin need to know the current protocol version.
    We augment the PluginManager to extract this from the
    handshake message, and pass it along during plugin
    instantiation.
    
    The tests have been updated to reflect that both login
    request messages are now important.
  3. Replace 'dst' and 'dir' args with 'source'.

    mmcgill committed Oct 28, 2011
    Some of the PluginManager code incorrectly used the name
    'dst' for the argument indicating message direction. That
    argument indicates the *sender*, not the *receiver*. Similarly,
    the 'dir' argument name is ambiguous. Both have been replaced with
    'source'.
    
    In the process, this fixes a minor bug that was caused by the
    above mixup: plugins should be instantiated after the *server*
    sends msgtype 0x01, not the client. The tests have been updated
    to reflect this.
  4. Correct client 0x01 message definition.

    mmcgill committed Oct 28, 2011
    Remove the 'map seed' field.
  5. Platform-independent plugin message injection.

    mmcgill committed Oct 28, 2011
    The original mechanism for plugin message injection
    used UNIX sockets and asyncore to asynchronously send messages from
    a plugin to an mc3p proxy. This obviously doesn't work in Windows.
    
    This commit replaces the UNIX socket connections with
    multiprocessing.Queue objects, which use a pipe and backing
    thread to implement a process-safe queue.
Commits on Oct 27, 2011
  1. Update 0x6b for proto. v21

    mmcgill committed Oct 27, 2011
    Previous commit message was incorrect! v21 updates the
    message format for 0x6b (creative inventory action) to use
    the new slot update w/ NBT data.
    
    An automated analysis of JAR files found no other differences.
  2. Support protocol version 21.

    mmcgill committed Oct 27, 2011
    Initial indications are that the protocol itself
    has not changed. The version number has been bumped for
    the 1.9pre5 pre-release.
Commits on Oct 24, 2011
  1. Version 0.1pre

    mmcgill committed Oct 24, 2011
  2. Add --log-file option.

    mmcgill committed Oct 24, 2011
    Since we plan to distribute this as an egg, we can't store
    a log configuration in the same dir as mc3p.util because we
    might not have permissions.
    
    With this commit, we use a basicConfig at ERROR level by default.
    If the user specifies the --log-file option, we use the specified
    logfile (and create it if it doesn't exist).
  3. Place code under GPLv2

    mmcgill committed Oct 24, 2011
  4. Stop trying to parse packets after error.

    mmcgill committed Oct 24, 2011
    If we encounter an unexpected error during parsing,
    then we probably exposed a bug in a message definition
    somewhere and we're out of sync in the message stream.
    Most likely everything afterwards will be wrong, so reset
    the stream to before the packet that triggered the error,
    and then just pass the data through blindly.
  5. Add protocol version detection.

    mmcgill committed Oct 24, 2011
    Detect the protocol version requested by the client, and drop a
    connection if it is not supported. Support different message
    definitions for different protocol versions.
Commits on Oct 23, 2011
  1. Make MinecraftProxy a dispatcher_with_send.

    mmcgill committed Oct 23, 2011
    In the last commit, we dropped the reference to the socket
    of the other proxy end in MinecraftProxy, and did writes
    via other_end.send() instead. Now we can inherit from
    dispatcher_with_send to do non-blocking sends.
  2. Pair MinecraftProxy client/server instances.

    mmcgill committed Oct 23, 2011
    A session requires two MinecraftProxy instances.
    By giving them references to each other, we can simplify
    the code to handle session startup and closing.
  3. Add explanatory comment

    mmcgill committed Oct 23, 2011
  4. Override asyncore.dispatcher.writable()

    mmcgill committed Oct 23, 2011
    Override asyncore.dispatcher.writable() to return False,
    so that asyncore.loop() doesn't consume all available CPU
    when plugins are instantiated.
  5. Support plugin message modification.

    mmcgill committed Oct 23, 2011
    Wrap each message dictionary in a Message object
    that tracks modifications. If a message to be forwarded
    has been modified by a plugin, re-serialize it before
    sending it on.
  6. Add --profile option

    mmcgill committed Oct 23, 2011
  7. Initial logging configuration.

    mmcgill committed Oct 23, 2011
    Provide a basic logging configuration before parsing
    arguments and doing real logging configuration, so that
    errors encountered during argument parsing are still logged.
  8. Change plugin lookup mechanism.

    mmcgill committed Oct 23, 2011
    Ditch imp.load_source and a plugin directory in favor of
    loading plugins via the usual module resolution mechanism
    with __import__(). This simplifies distribution/installation
    of 3rd-party plugins.