""" A modern, Python3-compatible, well-documented library for communicating with a MineCraft server. """ # The version number of the most recent pyCraft release. __version__ = "0.7.0" # A dict mapping the ID string of each Minecraft version supported by pyCraft # to the corresponding protocol version number. The ID string of a version is # the key used to identify it in # , or the 'id' # key in "version.json" in the corresponding ".jar" file distributed by Mojang. 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, '1.14.2 Pre-Release 1': 481, '1.14.2 Pre-Release 2': 482, '1.14.2 Pre-Release 3': 483, '1.14.2 Pre-Release 4': 484, '1.14.2': 485, '1.14.3-pre1': 486, '1.14.3-pre2': 487, '1.14.3-pre3': 488, '1.14.3-pre4': 489, '1.14.3': 490, '1.14.4-pre1': 491, '1.14.4-pre2': 492, '1.14.4-pre3': 493, '1.14.4-pre4': 494, '1.14.4-pre5': 495, '1.14.4-pre6': 496, '1.14.4-pre7': 497, '1.14.4': 498, '19w34a': 550, '19w35a': 551, '19w36a': 552, '19w37a': 553, '19w38a': 554, '19w38b': 555, '19w39a': 556, '19w40a': 557, '19w41a': 558, '19w42a': 559, '19w44a': 560, '19w45a': 561, '19w45b': 562, '19w46a': 563, '19w46b': 564, '1.15-pre1': 565, '1.15-pre2': 566, '1.15-pre3': 567, '1.15-pre4': 569, '1.15-pre5': 570, '1.15-pre6': 571, '1.15-pre7': 572, '1.15': 573, '1.15.1-pre1': 574, '1.15.1': 575, '1.15.2-pre1': 576, '1.15.2-pre2': 577, '1.15.2': 578, '20w06a': 701, '20w07a': 702, '20w08a': 703, '20w09a': 704, '20w10a': 705, '20w11a': 706, '20w12a': 707, '20w13a': 708, '20w13b': 709, '20w14a': 710, '20w15a': 711, '20w16a': 712, '20w17a': 713, '20w18a': 714, '20w19a': 715, '20w20a': 716, '20w20b': 717, '20w21a': 718, '20w22a': 719, '1.16-pre1': 721, '1.16-pre2': 722, '1.16-pre3': 725, '1.16-pre4': 727, '1.16-pre5': 729, '1.16-pre6': 730, '1.16-pre7': 732, '1.16-pre8': 733, '1.16-rc1': 734, '1.16': 735, '1.16.1': 736, '20w27a': 738, '20w28a': 740, '20w29a': 741, '20w30a': 743, '1.16.2-pre1': 744, '1.16.2-pre2': 746, '1.16.2-pre3': 748, '1.16.2-rc1': 749, '1.16.2-rc2': 750, '1.16.2': 751, } # Those Minecraft versions supported by pyCraft which are "release" versions, # i.e. not development snapshots or pre-release versions. RELEASE_MINECRAFT_VERSIONS = {} # The protocol versions of SUPPORTED_MINECRAFT_VERSIONS, without duplicates, # in ascending numerical (and hence chronological) order. SUPPORTED_PROTOCOL_VERSIONS = [] # The protocol versions of RELEASE_MINECRAFT_VERSIONS, without duplicates, # in ascending numerical (and hence chronological) order. RELEASE_PROTOCOL_VERSIONS = [] def initglobals(): '''Init the globals from the SUPPORTED_MINECRAFT_VERSIONS dict This allows the SUPPORTED_MINECRAFT_VERSIONS dict to be updated, then the other globals can be updated as well, to allow for dynamic version support. All updates are done by reference to allow this to work else where in the code. ''' global RELEASE_MINECRAFT_VERSIONS, SUPPORTED_PROTOCOL_VERSIONS global RELEASE_PROTOCOL_VERSIONS import re for (vid, protocol) in SUPPORTED_MINECRAFT_VERSIONS.items(): if re.match(r"\d+(\.\d+)+$", vid): RELEASE_MINECRAFT_VERSIONS[vid] = protocol if protocol not in RELEASE_PROTOCOL_VERSIONS: RELEASE_PROTOCOL_VERSIONS.append(protocol) if protocol not in SUPPORTED_PROTOCOL_VERSIONS: SUPPORTED_PROTOCOL_VERSIONS.append(protocol) SUPPORTED_PROTOCOL_VERSIONS.sort() RELEASE_PROTOCOL_VERSIONS.sort() initglobals()