Commit Graph

243 Commits

Author SHA1 Message Date
joo
f492adfeff Add support for Minecraft snapshots 17w43a-18w02a (protocol 341-353).
Add support declaration for Minecraft version 1.8.9 (protocol 47).
2018-01-13 01:12:28 +00:00
joo
da7c13076f Fix: client.handshake.get_packets returns a dict instead of a set. 2018-01-13 01:02:00 +00:00
joo
1766b30983 Remove duplicates from SUPPORTED_PROTOCOL_VERSIONS. 2018-01-07 23:56:31 +00:00
TheSnoozer
821dad72ca Merge remote-tracking branch 'upstream/testing' 2018-01-03 23:53:58 -05:00
TheSnoozer
860628f64b the main hand attribute for ClientSettingsPacket was added in 15w31a [Protocol Version is now 49] and causes the client to send more data than the server expects which result in a instant disconnect while connecting to a 1.8.8 server 2017-11-19 23:22:00 -05:00
joo
af559e181a Remove limits on number of packets read/written per tick.
This addresses possible memory leaks or crashes caused by overflowing packet backlogs.
2017-10-10 04:47:50 +01:00
joo
88a5fdc637 Merge branch 'master' into testing 2017-09-24 06:36:52 +01:00
TheSnoozer
61d9695226 support 1.12.2 2017-09-19 18:30:51 -04:00
joo
e9f095de42 Add ClientSettingsPacket and PluginMessagePacket.
Improve Packet string representation.
2017-08-24 05:49:32 +01:00
joo
b79e7b5f28 Add tests for early and outgoing packet listeners. 2017-08-22 17:50:16 +01:00
joo
9497aae8fa Make FakeServer class more reusable, and extract it into its own module. 2017-08-22 14:22:12 +01:00
joo
593c98f168 Add support for early and outgoing packet listeners. 2017-08-21 21:06:28 +01:00
joo
9765e936c9 Fix incorrect packet IDs for PlayerPositionAndLookPacket for old protocol versions. 2017-08-20 07:35:14 +01:00
joo
46e058dd08 Update all tests, docs and code to use new packet names. 2017-08-09 20:53:54 +01:00
joo
f1ae765458 Add docstring about legacy packet names to packets module. 2017-08-09 19:32:07 +01:00
TheSnoozer
61b07f52f2 better packet names to match new packet structure 2017-08-09 16:33:41 +01:00
TheSnoozer
64cf23436b the class 'Type' needs to have '__slots__ = ()', otherwise every instance of 'Position' will have an unnecessary empty '__dict__' allocated 2017-08-09 16:33:41 +01:00
TheSnoozer
2f0dbf5cbb fix flake error as suggested 2017-08-09 16:33:41 +01:00
TheSnoozer
7eef61bfde use 'zlib.decompressobj' to handle the 'faulty' compression correctly as suggested in https://github.com/ammaraskar/pyCraft/pull/68 2017-08-09 16:33:41 +01:00
TheSnoozer
ab71aeeb7d Revert "deal with faulty compression's"
This reverts commit 357340e6dc.
2017-08-09 16:33:41 +01:00
TheSnoozer
346b3081ec fix broken tests 2017-08-09 16:33:41 +01:00
TheSnoozer
4a508f935b use namedtuple for position type and use it as subclass for ClientExplosion.Record 2017-08-09 16:33:41 +01:00
TheSnoozer
8552c6efe5 regorganize packet structure as outlined in https://github.com/ammaraskar/pyCraft/pull/68 2017-08-09 16:33:41 +01:00
TheSnoozer
f8781c19c8 The packet IDs of Entity Velocity (0x3E), Update Health (0x41), Combat Event (0x2D), and Client Status (0x03) changed in [protocol 336 (snapshot 17w31a)](http://wiki.vg/index.php?title=Pre-release_protocol&oldid=13265) 2017-08-09 16:33:41 +01:00
TheSnoozer
6137436d03 feedback: add write method 2017-08-09 16:33:41 +01:00
TheSnoozer
5349ff2730 feedback: we can use enum since subclass packets do no vary depending on the type id 2017-08-09 16:33:41 +01:00
TheSnoozer
d8fc742862 feedback: pass x, y, z as arguments since types classes are supposed to abstract away the python types and sending them over the network and calling an encode method before sending breaks that a little. 2017-08-09 16:33:41 +01:00
TheSnoozer
9ab2e1ae69 fix tox -e pylint-errors 2017-08-09 16:33:41 +01:00
TheSnoozer
fdb5a0bb72 fix tox -e flake 2017-08-09 16:33:41 +01:00
TheSnoozer
cc466bb0ea fixed an issue with mc 1.8.8 where velocity is not being sent and self.data is negative 2017-08-09 16:33:41 +01:00
TheSnoozer
6fbf75203c add Multi Block Change (client bound) 2017-08-09 16:33:41 +01:00
TheSnoozer
93227e26fa add Block Change Packet (client bound) 2017-08-09 16:33:41 +01:00
TheSnoozer
ca30ff2e74 add spawn object (client bound) 2017-08-09 16:33:41 +01:00
TheSnoozer
3ad5d1abd5 add Explosion Packet (client bound) 2017-08-09 16:33:41 +01:00
TheSnoozer
81f2ae4070 add Combat Event Packet (client bound) 2017-08-09 16:33:41 +01:00
TheSnoozer
fecb1d10e9 add Client Status Packet and allow client to respawn when issuing '/respawn' 2017-08-09 16:33:41 +01:00
TheSnoozer
0dc333237b add Update Health Packet (client bound) 2017-08-09 16:33:41 +01:00
TheSnoozer
6f52ceac0d add Entity Velocity Packet (client bound) 2017-08-09 16:33:41 +01:00
TheSnoozer
9caff502ca add ClientSpawnPlayer packet 2017-08-09 16:33:41 +01:00
TheSnoozer
42ede3f83d deal with faulty compression's 2017-08-09 16:33:41 +01:00
joo
9e7e75f9a7 Increment package version to 0.5.0. 2017-08-03 19:08:36 +01:00
joo
33cd42848e Add version data for Minecraft 1.12.1 (protocol 338). 2017-08-03 18:48:36 +01:00
joo
5aa2d3df59 Add support for Minecraft 17w31a and 1.12.1-pre1 (protocols 336 and 337). 2017-08-03 18:31:00 +01:00
joo
cab8d56746 Revert "Remove unnecessary fileno method from FileObjectWrapper"
This partially addresses issue #65.

This reverts commit c87d7bc6f3.
2017-07-18 13:39:56 +01:00
Ammar Askar
f450ef5ff4
Add test for reactors 2017-07-16 20:02:50 -07:00
Ammar Askar
d686b6487f
Add testing for MapPacket 2017-07-16 15:18:09 -07:00
Ammar Askar
5b261b840e
Refactor out the action of writing out the packet header.
This allows subclasses of Packet to just call the new
method instead of having to duplicate the header writing
and compression code.
2017-07-16 13:40:00 -07:00
Ammar Askar
da967a4e56
Minor coverage improvement for packets 2017-07-16 01:20:08 -07:00
Ammar Askar
c87d7bc6f3
Remove unnecessary fileno method from FileObjectWrapper 2017-07-16 01:03:47 -07:00
Ammar Askar
d8226d266f
Improve tests of types.py 2017-07-16 01:00:14 -07:00
joo
2cf1d3cb03 Fix incorrect packet ID for PlayerPositionAndLookPacket.
Fix: PlayerPositionAndLookPacket.apply() does not correctly restrict angles.
2017-07-03 11:32:52 +01:00
joo
991f0b3da6 Increment package version to 0.4.0. 2017-06-09 09:25:56 +01:00
joo
ece5fd903d Fix incorrect packet ID for MapPacket. 2017-06-08 06:10:40 +01:00
joo
8d1dcec3e2 Add version data for Minecraft 1.12 (protocol 335). 2017-06-07 22:06:01 +01:00
joo
bcf22b8312 Add version data for Minecraft pre-release 1.12-pre7 (protocol 334). 2017-06-02 21:32:11 +01:00
joo
0cc96f7dc5 Add version data for Minecraft pre-release 1.12-pre6 (protocol 333). 2017-05-29 17:31:04 +01:00
joo
b7290cf327 Add support for Minecraft pre-release 1.12-pre5 (protocol 332). 2017-05-20 05:27:23 +01:00
joo
a1570bd3a9 Add version data for Minecraft pre-releases 1.12-pre3 and 1.12-pre4 (protocols 330 and 331). 2017-05-19 12:22:42 +01:00
joo
028ef3f802 Add version data for Minecraft pre-release 1.12-pre2 (protocol 329). 2017-05-12 00:52:31 +01:00
joo
0d42c18211 Add version data for Minecraft pre-release 1.12-pre1 (protocol 328). 2017-05-11 10:16:11 +01:00
Nigel Todman
0ffb08327a Add version data for Minecraft snapshot 17w18b (protocol 327).
(Squash and merge pull request #59: Added 17w18b)
2017-05-05 08:11:59 +01:00
Nigel Todman
5805d6e476 Added 17w18a
Added 17w18a
2017-05-03 23:23:19 -04:00
joo
e2c4c97ea5 Add version data for Minecraft snapshots 17w16a-17w17b (protocols 322-325). 2017-04-28 20:00:26 +01:00
joo
b1edff913b Fix comment spacing in previous commit. 2017-04-16 04:19:42 +01:00
joo
df9171edd1 Suppress erroneous Pylint not-context-manager errors.
See: https://github.com/PyCQA/pylint/issues/782
2017-04-16 03:58:35 +01:00
joo
3981c46569 Add version data for Minecraft snapshot 17w15a (protocol 321). 2017-04-16 01:47:48 +01:00
joo
f27689f729 Add version data for Minecraft snapshots 17w13b and 17w14a (protocols 319 and 320). 2017-04-06 17:25:25 +01:00
joo
e99d2a4ef5 Add documentation for YggdrasilError. 2017-03-31 14:33:51 +01:00
joo
66a0603acf Fix various problems in minecraft.authentication and its tests:
- Return value of _make_request() is treated as a requests.Request, when it is in fact a requests.Response.
- Some tests in test_authentication use assertRaises() incorrectly, resulting in testing code that never gets run.
- Other miscellaneous errors exposed by the above changes.

Additionally:
- YggdrasilError instances now have fields with specific error information, and _raise_from_response() populates them. (This will be useful for later changes.)
2017-03-31 12:59:43 +01:00
joo
73672401ef Add support for Minecraft snapshot 17w13a (protocol 318). 2017-03-31 08:59:14 +01:00
joo
b0f15ed5a2 Add version data for Minecraft snapshot 17w06a (protocol 317). 2017-03-31 08:27:04 +01:00
joo
7fd37a79f2 Add version data for Minecraft 1.11.2 (protocol 316). 2016-12-21 17:06:35 +00:00
joo
00ab1b4209 Add version data for Minecraft 1.11.1 (protocol 316). 2016-12-20 16:10:58 +00:00
Ammar Askar
89ca73532a
Fully cover authentication module 2016-12-19 06:57:45 -05:00
Ammar Askar
0c31e748e8
Fix flake error caused by doc change.
Love that 79 character line limit >.>
2016-12-19 05:41:28 -05:00
Ammar Askar
9aa369c7da
Fix outdated documentation 2016-12-19 05:26:12 -05:00
joo
f560f73df8 Add support for Minecraft snapshot 16w50a (protocol 316). 2016-12-16 08:01:26 +00:00
joo
988653a922 Increment package version to 0.3.0. 2016-11-23 20:27:20 +00:00
joo
bf17f99083 Change version negotiator to use a status query. 2016-11-22 14:47:42 +00:00
joo
d72f05c8b0 Show exceptions by default and add `handle_exception' parameter to Connection. 2016-11-20 06:04:22 +00:00
joo
115693f8c3 Implement full Server List Ping capability with test. 2016-11-20 06:04:22 +00:00
Ammar Askar
56b06ca80f Make validate treat HTTP code 204 as a success.
Fixes #54
2016-11-17 14:34:14 -05:00
joo
37a9bb66f1 Fix test failures caused by new flake8 version. 2016-11-15 00:02:02 +00:00
joo
037ca68b19 Add support for Minecraft 1.11 (protocol 315). 2016-11-14 23:33:08 +00:00
joo
b429a4579b Add support for Minecraft 16w43a, 16w44a (protocol 313) and 1.11-pre1 (protocol 314). 2016-11-13 22:11:56 +00:00
joo
8e3f1b18b7 Add support for Minecraft snapshot 16w42a (protocol 312). 2016-10-19 19:24:45 +01:00
joo
4f263a0038 Add support for Minecraft snapshot 16w41a (protocol 311). 2016-10-14 07:42:09 +01:00
joo
5e0f506531 Add support for Minecraft snapshot 16w40a (protocol 310). 2016-10-07 05:04:38 +01:00
joo
7ab7381261 Fix infinite loop in protocol negotiator.
Add missing protocol versions for 1.10.1 and 1.10.2.
2016-10-01 15:52:17 +01:00
joo
0c792a3f22 Add support for Minecraft snapshots 16w39b and 16w39c (protocols 308 and 309). 2016-09-30 21:36:03 +01:00
joo
caddf653de Add support for Minecraft snapshot 16w39a (protocol 307). 2016-09-29 09:55:48 +01:00
joo
864af19f7f Fix erroneous non-integer division in MapPacket. 2016-09-29 09:55:28 +01:00
joo
67bfcaac5b Add support for snapshot 16w38a (protocol 306).
Fix incorrect protocol number in ChatPacket.
2016-09-27 12:26:50 +01:00
joo
03565e24c8 Fix errors caused by the "uncompressed data length" field of compressed packets being erroneously written as the compressed data length. 2016-09-27 12:06:21 +01:00
joo
c4ed8e6d68 Add support for Minecraft pre-release 16w36a (protocol 305).
Add max_length property to ChatPacket.
2016-09-25 22:17:01 +02:00
joo
41394126ab Add support for Minecraft pre-release 16w36a (protocol 305). 2016-09-08 20:25:27 +01:00
joo
38deda0d3b Fix race condition causing failed Travis builds #75.3 and #81.1. 2016-09-02 00:26:12 +01:00
joo
36f7f1ccc8 Add support for Minecraft pre-release 16w35a (protocol 304). 2016-09-01 20:06:18 +01:00
joo
e3aad3d623 Add support for Minecraft pre-release 16w33a (protocol 303). 2016-08-18 09:34:26 +01:00
joo
8268f91009 Add support for Minecraft pre-release 16w32b (protocol 302). 2016-08-14 04:38:49 +01:00
joo
d0169b2d0b Add support for Minecraft pre-release 16w32a (protocol 301). 2016-08-11 10:40:50 +01:00
joo
a753184ca2 Increment version to 0.2.0. 2016-06-18 19:34:34 +01:00
joo
ce63626bb1 Add 4 tests in 'test_connection.py' and fix related bugs. 2016-06-18 18:22:18 +01:00
joo
3ff7662684 Update tests to match new API. 2016-06-17 22:54:21 +01:00
joo
c8b3e7a809 Fix several bugs caused or exposed by running in Python 3. 2016-06-17 20:38:18 +01:00
joo
471350cea8 Add support for Minecraft 1.9.3 and 1.9.4 (protocol 110) and Minecraft 1.10 (protocol 210). 2016-06-17 01:06:15 +01:00
joo
5202b2e6df Add support for Minecraft 1.9.1 (protocol 108) and 1.9.2 (protocol 109). 2016-04-28 04:01:24 +01:00
joo
e1626ea7e0 Add TeleportConfirmPacket and AnimationPacketServerBound packets. Add PlayerPositionAndLookPacket.PositionAndLook utility class. Fix a bug causing Disconnect packets to be ignored in some circumstances. 2016-03-28 05:08:01 +01:00
joo
d966709204 Add support for Minecraft 1.9 (protocol 107). Miscellaneous bugfixes. 2016-03-07 06:22:42 +00:00
joo
f178df5d8f Add automatic protocol version negotiation. 2016-03-07 02:40:25 +00:00
joo
3927400178 Prepare to support multiple protocol versions. 2016-03-05 07:28:14 +00:00
joo
9affeee041 Fix attributes in several classes in connection.py which were erroneously defined in the class dictionary instead of the instance dictionary. 2015-10-07 08:54:23 +01:00
Joseph Crowe
f1391ab29b Add an 'exception' attribute to Connection objects recording the reason for termination of the networking thread. 2015-10-05 03:14:48 +01:00
joo
626b765094 Fix errors in implementation of MapPacket. Add __str__ and __repr__ impls to the latter. 2015-09-22 08:40:59 +01:00
joo
b9ac3a3356 Implement "map" packet. 2015-09-20 13:04:37 +01:00
Joseph Crowe
dcd61efed0 Fix timing issue caused by reading of consecutive delayed packets. 2015-09-12 16:41:13 +01:00
joo
f39872a7f5 Implement "player list item" packet. 2015-09-05 08:33:12 +01:00
joo
6aea7b36c1 Implement network-encoded UUID type. 2015-09-05 08:32:42 +01:00
joo
fe66e09dc4 Comment out disconnect messages generated by stubs in connection.py. 2015-09-04 19:00:03 +01:00
joo
6797a59a70 Fix a bug in PacketListener wherein all instances shared the same listener list. 2015-09-04 18:59:21 +01:00
Ammar Askar
79ee31c44e Fix two python3 compatibility problems:
We need to explicitly encode the serverID before hashing it
Pass read/binary modes to the file made from socket to avoid encoding problems, fixes #29
2015-04-17 17:57:34 +05:00
Ammar Askar
a5a76a8e1c Added more tests, fixed compat.py to run on py3 as well 2015-04-12 07:26:12 +05:00
Jeppe Klitgaard
971506533c id is a reserved name, even as an attribute. We now use id_ instead 2015-04-06 15:44:51 +02:00
Jeppe Klitgaard
fde8286e7e Things look slightly more legit... 2015-04-06 15:27:42 +02:00
Jeppe Klitgaard
9f93c67fb6 pylint needed a hand to inspect compat.py 2015-04-06 02:21:50 +02:00
Jeppe Klitgaard
ce19872115 start.py fixed, added compat.py 2015-04-06 02:11:26 +02:00
Jeppe Klitgaard
17e89f23c8 Fixed typo, explicitly stated that number was status code. 2015-04-05 22:14:38 +02:00
Ammar Askar
5d56162300 Quick little base test for connection 2015-04-03 22:04:45 +05:00
Ammar Askar
ea11461e76 Fully test the encryption package, and add a test for uncompressed packets when packet compression is enabled 2015-04-03 21:30:31 +05:00
Ammar Askar
1249f99a1e Packet tests 2015-04-03 08:51:53 +05:00
Ammar Askar
08e126188a Add a serialization test 2015-04-03 08:06:20 +05:00
Ammar Askar
d3917b42a4 split up pylint into errors and warning runners 2015-04-03 03:13:22 +05:00
Ammar Askar
c353d8bb86 Address more pylint and py3 compatibility problems 2015-04-03 02:25:34 +05:00
Ammar Askar
dcb2845ac4 Fix some pylint concerns 2015-04-03 01:44:03 +05:00
Ammar Askar
f7ed4da0d0 Platform independent manifest verification 2015-04-02 23:43:03 +05:00
Ammar Askar
4fe5caa7d9 Added an easy encryption test 2015-04-02 22:02:47 +05:00
Ammar Askar
b37c095039 Fix connection to work with new authentication module 2015-04-02 22:02:08 +05:00
Jeppe Klitgaard
c1e7960165 Finished up authentication.py, I hope. Still needs tests and documentation 2015-04-02 00:09:52 +02:00
Jeppe Klitgaard
6cf6110bc5 Updated authentication.py and made it work with the rest of pyCraft 2015-04-01 23:38:10 +02:00
Jeppe Klitgaard
8e40122c24 Moved authentication out of networking submodule. 2015-04-01 17:43:16 +02:00
Jeppe Klitgaard
3cb922310a Setup.py and versioning 2015-04-01 17:38:14 +02:00
Jeppe Klitgaard
59a5fe1285 Merge remote-tracking branch 'origin/master' into jeppes_initial_work 2015-04-01 17:22:05 +02:00
Jeppe Klitgaard
bb94d99bd4 Moved code into a python module 2015-04-01 17:19:12 +02:00