mirror of
https://github.com/ammaraskar/pyCraft.git
synced 2024-11-22 10:15:55 +01:00
7b1567c352
Improvements to the test suite: * List release version names and numbers in minecraft/__init__.py. * Make some tests, which previously ran for *all* protocol versions, run only for release protocol versions (to improve test performance). * Make some tests, which previously ran only for the latest protocol version, run for all release protocol versions (to improve coverage). * Print each protocol version being tested to the debug log, to help identify sources of errors. * Use the `nose-timer' plugin to show the run time of each test. Fix errors revealed by increased test coverage: * Fix: SoundEffectPacket.Pitch is not serialised correctly for early protocol versions. * Fix: handleExceptionTest finishes later than necessary because the test overrode an exception handler used internally by `_FakeServerTest', causing the server thread to time out after 4s. * Add support for multiple exception handlers in `Connection' (required for the above). Improvements to data descriptors: * Make syntax of property declarations more consistent/Pythonic. * Factor the definition of several aliasing properties into the utility methods `attribute_alias' and `multi_attribute_alias', which construct suitable data descriptors. * Define and use the named tuple `Direction' for (pitch, yaw) values.
196 lines
6.4 KiB
Python
196 lines
6.4 KiB
Python
"""
|
|
A modern, Python3-compatible, well-documented library for communicating
|
|
with a MineCraft server.
|
|
"""
|
|
|
|
# The version number of the most recent pyCraft release.
|
|
__version__ = "0.5.0"
|
|
|
|
# A dict mapping the name of each Minecraft version supported by pyCraft to
|
|
# the corresponding protocol version number.
|
|
SUPPORTED_MINECRAFT_VERSIONS = {
|
|
'1.8': 47,
|
|
'1.8.1': 47,
|
|
'1.8.2': 47,
|
|
'1.8.3': 47,
|
|
'1.8.4': 47,
|
|
'1.8.5': 47,
|
|
'1.8.6': 47,
|
|
'1.8.7': 47,
|
|
'1.8.8': 47,
|
|
'1.8.9': 47,
|
|
'1.9': 107,
|
|
'1.9.1': 108,
|
|
'1.9.2': 109,
|
|
'1.9.3': 110,
|
|
'1.9.4': 110,
|
|
'1.10': 210,
|
|
'1.10.1': 210,
|
|
'1.10.2': 210,
|
|
'16w32a': 301,
|
|
'16w32b': 302,
|
|
'16w33a': 303,
|
|
'16w35a': 304,
|
|
'16w36a': 305,
|
|
'16w38a': 306,
|
|
'16w39a': 307,
|
|
'16w39b': 308,
|
|
'16w39c': 309,
|
|
'16w40a': 310,
|
|
'16w41a': 311,
|
|
'16w42a': 312,
|
|
'16w43a': 313,
|
|
'16w44a': 313,
|
|
'1.11-pre1': 314,
|
|
'1.11': 315,
|
|
'16w50a': 316,
|
|
'1.11.1': 316,
|
|
'1.11.2': 316,
|
|
'17w06a': 317,
|
|
'17w13a': 318,
|
|
'17w13b': 319,
|
|
'17w14a': 320,
|
|
'17w15a': 321,
|
|
'17w16a': 322,
|
|
'17w16b': 323,
|
|
'17w17a': 324,
|
|
'17w17b': 325,
|
|
'17w18a': 326,
|
|
'17w18b': 327,
|
|
'1.12-pre1': 328,
|
|
'1.12-pre2': 329,
|
|
'1.12-pre3': 330,
|
|
'1.12-pre4': 331,
|
|
'1.12-pre5': 332,
|
|
'1.12-pre6': 333,
|
|
'1.12-pre7': 334,
|
|
'1.12': 335,
|
|
'17w31a': 336,
|
|
'1.12.1-pre1': 337,
|
|
'1.12.1': 338,
|
|
'1.12.2-pre1': 339,
|
|
'1.12.2-pre2': 339,
|
|
'1.12.2': 340,
|
|
'17w43a': 341,
|
|
'17w43b': 342,
|
|
'17w45a': 343,
|
|
'17w45b': 344,
|
|
'17w46a': 345,
|
|
'17w47a': 346,
|
|
'17w47b': 347,
|
|
'17w48a': 348,
|
|
'17w49a': 349,
|
|
'17w49b': 350,
|
|
'17w50a': 351,
|
|
'18w01a': 352,
|
|
'18w02a': 353,
|
|
'18w03a': 354,
|
|
'18w03b': 355,
|
|
'18w05a': 356,
|
|
'18w06a': 357,
|
|
'18w07a': 358,
|
|
'18w07b': 359,
|
|
'18w07c': 360,
|
|
'18w08a': 361,
|
|
'18w08b': 362,
|
|
'18w09a': 363,
|
|
'18w10a': 364,
|
|
'18w10b': 365,
|
|
'18w10c': 366,
|
|
'18w10d': 367,
|
|
'18w11a': 368,
|
|
'18w14a': 369,
|
|
'18w14b': 370,
|
|
'18w15a': 371,
|
|
'18w16a': 372,
|
|
'18w19a': 373,
|
|
'18w19b': 374,
|
|
'18w20a': 375,
|
|
'18w20b': 376,
|
|
'18w20c': 377,
|
|
'18w21a': 378,
|
|
'18w21b': 379,
|
|
'18w22a': 380,
|
|
'18w22b': 381,
|
|
'18w22c': 382,
|
|
'1.13-pre1': 383,
|
|
'1.13-pre2': 384,
|
|
'1.13-pre3': 385,
|
|
'1.13-pre4': 386,
|
|
'1.13-pre5': 387,
|
|
'1.13-pre6': 388,
|
|
'1.13-pre7': 389,
|
|
'1.13-pre8': 390,
|
|
'1.13-pre9': 391,
|
|
'1.13-pre10': 392,
|
|
'1.13': 393,
|
|
'18w30a': 394,
|
|
'18w30b': 395,
|
|
'18w31a': 396,
|
|
'18w32a': 397,
|
|
'18w33a': 398,
|
|
'1.13.1-pre1': 399,
|
|
'1.13.1-pre2': 400,
|
|
'1.13.1': 401,
|
|
'1.13.2-pre1': 402,
|
|
'1.13.2-pre2': 403,
|
|
'1.13.2': 404,
|
|
'18w43a': 441,
|
|
'18w43b': 441,
|
|
'18w43c': 442,
|
|
'18w44a': 443,
|
|
'18w45a': 444,
|
|
'18w46a': 445,
|
|
'18w47a': 446,
|
|
'18w47b': 447,
|
|
'18w48a': 448,
|
|
'18w48b': 449,
|
|
'18w49a': 450,
|
|
'18w50a': 451,
|
|
'19w02a': 452,
|
|
'19w03a': 453,
|
|
'19w03b': 454,
|
|
'19w03c': 455,
|
|
'19w04a': 456,
|
|
'19w04b': 457,
|
|
'19w05a': 458,
|
|
'19w06a': 459,
|
|
'19w07a': 460,
|
|
'19w08a': 461,
|
|
'19w08b': 462,
|
|
'19w09a': 463,
|
|
'19w11a': 464,
|
|
'19w11b': 465,
|
|
'19w12a': 466,
|
|
'19w12b': 467,
|
|
'19w13a': 468,
|
|
'19w13b': 469,
|
|
'19w14a': 470,
|
|
'19w14b': 471,
|
|
'1.14 Pre-Release 1': 472,
|
|
'1.14 Pre-Release 2': 473,
|
|
'1.14 Pre-Release 3': 474,
|
|
'1.14 Pre-Release 4': 475,
|
|
'1.14 Pre-Release 5': 476,
|
|
'1.14': 477,
|
|
'1.14.1 Pre-Release 1': 478,
|
|
'1.14.1 Pre-Release 2': 479,
|
|
'1.14.1': 480,
|
|
}
|
|
|
|
# Those Minecraft versions supported by pyCraft which are "release" versions,
|
|
# i.e. not development snapshots or pre-release versions.
|
|
RELEASE_MINECRAFT_VERSIONS = {
|
|
name: protocol for (name, protocol) in SUPPORTED_MINECRAFT_VERSIONS.items()
|
|
if __import__('re').match(r'\d+(\.\d+)+$', name)}
|
|
|
|
# The protocol versions of SUPPORTED_MINECRAFT_VERSIONS, without duplicates,
|
|
# in ascending numerical (and hence chronological) order.
|
|
SUPPORTED_PROTOCOL_VERSIONS = \
|
|
sorted(set(SUPPORTED_MINECRAFT_VERSIONS.values()))
|
|
|
|
# The protocol versions of RELEASE_MINECRAFT_VERSIONS, without duplicates,
|
|
# in ascending numerical (and hence chronological) order.
|
|
RELEASE_PROTOCOL_VERSIONS = \
|
|
sorted(set(RELEASE_MINECRAFT_VERSIONS.values()))
|