Module:Protocol version/Versions

local all = {} -- Table with version name as key and version info as value -- These are ordered local java = {} local java_old = {} local java_af = {} local pocket = {}

-- References to those ordered lists local groups = { {       ['name'] = 'Java Edition', ['link'] = 'Java Edition', ['values'] = java, ['has_data_versions'] = true },   {        ['name'] = 'Java Edition (pre-netty rewrite)', ['link'] = 'Java Edition', ['desc'] = 'Protocol version numbers after the 13w41a reset due to Netty rewrite', ['values'] = java_old, ['has_data_versions'] = false },   {        ['name'] = 'April Fools versions', ['link'] = ':Category:April Fools\'', ['desc'] = 'Changes from April Fools\' versions were not kept in later versions.', ['values'] = java_af, ['has_data_versions'] = true },   {        ['name'] = 'Pocket Edition', ['link'] = 'Bedrock Edition version history', ['values'] = pocket, ['has_data_versions'] = false } }

-- Intended for translators unknown = 'Unknown' none = 'N/A'

-- Define info for a single version, adding it into the appropriate lists -- extra is used for additional, rarer options so that they can be explicitly specified function ver(group, name, protocol, data, extra) if all[name] ~= nil then error("Attempted to add version " .. name .. " but it already exists") end

local info = { } info.name = name info.protocol = protocol info.data = data

if extra then -- Forces a separation even if the protocol/data versions match info.force_split = extra.force_split end

all[name] = info table.insert(group, info) end

-- Separate major versions (e.g. 1.12 & 1.13) with an extra line. -- Minor versions, like 1.12, 1.12.1, and 1.12.2 don't need to be separated. -- April Fools' versions must be put under their own section at the bottom of the page

-- Source: http://wiki.vg/Protocol_version_numbers (licensed under CC-BY-SA 3.0)

-- VANILLA -- 1.13 ver(java, '1.13', '393', 1519) ver(java, '1.13-pre10', '392', 1518) ver(java, '1.13-pre9', '391', 1517) ver(java, '1.13-pre8', '390', 1516) ver(java, '1.13-pre7', '389', 1513) ver(java, '1.13-pre6', '388', 1512) ver(java, '1.13-pre5', '387', 1511) ver(java, '1.13-pre4', '386', 1504) ver(java, '1.13-pre3', '385', 1503) ver(java, '1.13-pre2', '384', 1502) ver(java, '1.13-pre1', '383', 1501) ver(java, '18w22c', '382', 1499) ver(java, '18w22b', '381', 1498) ver(java, '18w22a', '380', 1497) ver(java, '18w21b', '379', 1496) ver(java, '18w21a', '378', 1495) ver(java, '18w20c', '377', 1493) ver(java, '18w20b', '376', 1491) ver(java, '18w20a', '375', 1489) ver(java, '18w19b', '374', 1485) ver(java, '18w19a', '373', 1484) ver(java, '18w16a', '372', 1483) ver(java, '18w15a', '371', 1482) ver(java, '18w14b', '370', 1481) ver(java, '18w14a', '369', 1479) ver(java, '18w11a', '368', 1478) ver(java, '18w10d', '367', 1477) ver(java, '18w10c', '366', 1476) ver(java, '18w10b', '365', 1474) ver(java, '18w10a', '364', 1473) ver(java, '18w09a', '363', 1472) ver(java, '18w08b', '362', 1471) ver(java, '18w08a', '361', 1470) ver(java, '18w07c', '360', 1469) ver(java, '18w07b', '359', 1468) ver(java, '18w07a', '358', 1467) ver(java, '18w06a', '357', 1466) ver(java, '18w05a', '356', 1464) ver(java, '18w03b', '355', 1463) ver(java, '18w03a', '354', 1462) ver(java, '18w02a', '353', 1461) ver(java, '18w01a', '352', 1459) ver(java, '17w50a', '351', 1457) ver(java, '17w49b', '350', 1455) ver(java, '17w49a', '349', 1454) ver(java, '17w48a', '348', 1453) ver(java, '17w47b', '347', 1452) ver(java, '17w47a', '346', 1451) ver(java, '17w46a', '345', 1449) ver(java, '17w45b', '344', 1448) ver(java, '17w45a', '343', 1447) ver(java, '17w43b', '342', 1445) ver(java, '17w43a', '341', 1444)

-- 1.12.2 ver(java, '1.12.2', '340', 1343) ver(java, '1.12.2-pre2', '339', 1342) ver(java, '1.12.2-pre1', '339', 1341) -- 1.12.1 ver(java, '1.12.1', '338', 1241) ver(java, '1.12.1-pre1', '337', 1240) ver(java, '17w31a', '336', 1239) -- 1.12 ver(java, '1.12', '335', 1139) ver(java, '1.12-pre7', '334', 1138) ver(java, '1.12-pre6', '333', 1137) ver(java, '1.12-pre5', '332', 1136) ver(java, '1.12-pre4', '331', 1135) ver(java, '1.12-pre3', '330', 1134) ver(java, '1.12-pre2', '329', 1133) ver(java, '1.12-pre1', '328', 1132) ver(java, '17w18b', '327', 1131) ver(java, '17w18a', '326', 1130) ver(java, '17w17b', '325', 1129) ver(java, '17w17a', '324', 1128) ver(java, '17w16b', '323', 1127) ver(java, '17w16a', '322', 1126) ver(java, '17w15a', '321', 1125) ver(java, '17w14a', '320', 1124) ver(java, '17w13b', '319', 1123) ver(java, '17w13a', '318', 1122) ver(java, '17w06a', '317', 1022)

-- 1.11.2 ver(java, '1.11.2', '316', 922) -- 1.11.1 ver(java, '1.11.1', '316', 921) ver(java, '16w50a', '316', 920) -- 1.11 ver(java, '1.11', '315', 819) ver(java, '1.11-pre1', '314', 818) ver(java, '16w44a', '313', 817) ver(java, '16w43a', '313', 816) ver(java, '16w42a', '312', 815) ver(java, '16w41a', '311', 814) ver(java, '16w40a', '310', 813) ver(java, '16w39c', '309', 812) ver(java, '16w39b', '308', 811) ver(java, '16w39a', '307', 809) ver(java, '16w38a', '306', 807) ver(java, '16w36a', '305', 805) ver(java, '16w35a', '304', 803) ver(java, '16w33a', '303', 802) ver(java, '16w32b', '302', 801) ver(java, '16w32a', '301', 800)

-- 1.10.2 ver(java, '1.10.2', '210', 512) -- 1.10.1 ver(java, '1.10.1', '210', 511) -- 1.10 ver(java, '1.10', '210', 510) ver(java, '1.10-pre2', '205', 507) ver(java, '1.10-pre1', '204', 506) ver(java, '16w21b', '203', 504) ver(java, '16w21a', '202', 503) ver(java, '16w20a', '201', 501)

-- 1.9.4 ver(java, '1.9.4', '110', 184) -- 1.9.3 ver(java, '1.9.3', '110', 183) ver(java, '1.9.3-pre3', '110', 182) ver(java, '1.9.3-pre2', '110', 181) ver(java, '1.9.3-pre1', '109', 180) ver(java, '16w15b', '109', 179) ver(java, '16w15a', '109', 178) ver(java, '16w14a', '109', 177) -- 1.9.2 ver(java, '1.9.2', '109', 176) -- 1.9.1 ver(java, '1.9.1', '108', 175) ver(java, '1.9.1-pre3', '108', 172) ver(java, '1.9.1-pre2', '108', 171) ver(java, '1.9.1-pre1', '107', 170) -- 1.9 ver(java, '1.9', '107', 169) ver(java, '1.9-pre4', '106', 168) ver(java, '1.9-pre3', '105', 167) ver(java, '1.9-pre2', '104', 165) ver(java, '1.9-pre1', '103', 164) ver(java, '16w07b', '102', 163) ver(java, '16w07a', '101', 162) ver(java, '16w06a', '100', 161) ver(java, '16w05b', '99', 160) ver(java, '16w05a', '98', 159) ver(java, '16w04a', '97', 158) ver(java, '16w03a', '96', 157) ver(java, '16w02a', '95', 156) ver(java, '15w51b', '94', 155) ver(java, '15w51a', '93', 154) ver(java, '15w50a', '92', 153) ver(java, '15w49b', '91', 152) ver(java, '15w49a', '90', 151) ver(java, '15w47c', '89', 150) ver(java, '15w47b', '88', 149) ver(java, '15w47a', '87', 148) ver(java, '15w46a', '86', 146) ver(java, '15w45a', '85', 145) ver(java, '15w44b', '84', 143) ver(java, '15w44a', '83', 142) ver(java, '15w43c', '82', 141) ver(java, '15w43b', '81', 140) ver(java, '15w43a', '80', 139) ver(java, '15w42a', '79', 138) ver(java, '15w41b', '78', 137) ver(java, '15w41a', '77', 136) ver(java, '15w40b', '76', 134) ver(java, '15w40a', '75', 133) ver(java, '15w39c', '74', 132) ver(java, '15w39b', '74', 131) ver(java, '15w39a', '74', 130) ver(java, '15w38b', '73', 129) ver(java, '15w38a', '72', 128) ver(java, '15w37a', '71', 127) ver(java, '15w36d', '70', 126) ver(java, '15w36c', '69', 125) ver(java, '15w36b', '68', 124) ver(java, '15w36a', '67', 123) ver(java, '15w35e', '66', 122) ver(java, '15w35d', '65', 121) ver(java, '15w35c', '64', 120) ver(java, '15w35b', '63', 119) ver(java, '15w35a', '62', 118) ver(java, '15w34d', '61', 117) ver(java, '15w34c', '60', 116) ver(java, '15w34b', '59', 115) ver(java, '15w34a', '58', 114) ver(java, '15w33c', '57', 112) ver(java, '15w33b', '56', 111) ver(java, '15w33a', '55', 111) ver(java, '15w32c', '54', 104) ver(java, '15w32b', '53', 103) ver(java, '15w32a', '52', 100) ver(java, '15w31c', '51') ver(java, '15w31b', '50') ver(java, '15w31a', '49')

-- 1.8.9 ver(java, '1.8.9', '47') -- 1.8.8 ver(java, '1.8.8', '47') -- 1.8.7 ver(java, '1.8.7', '47') -- 1.8.6 ver(java, '1.8.6', '47') -- 1.8.5 ver(java, '1.8.5', '47') -- 1.8.4 ver(java, '1.8.4', '47') -- 1.8.3 ver(java, '1.8.3', '47') -- 1.8.2 ver(java, '1.8.2', '47') ver(java, '1.8.2-pre7', '47') ver(java, '1.8.2-pre6', '47') ver(java, '1.8.2-pre5', '47') ver(java, '1.8.2-pre4', '47') ver(java, '1.8.2-pre3', '47') ver(java, '1.8.2-pre2', '47') ver(java, '1.8.2-pre1', '47') -- 1.8.1 ver(java, '1.8.1', '47') ver(java, '1.8.1-pre5', '47') ver(java, '1.8.1-pre4', '47') ver(java, '1.8.1-pre3', '47') ver(java, '1.8.1-pre2', '47') ver(java, '1.8.1-pre1', '47') -- 1.8 ver(java, '1.8', '47') ver(java, '1.8-pre3', '46') ver(java, '1.8-pre2', '45') ver(java, '1.8-pre1', '44') ver(java, '14w34d', '43') ver(java, '14w34c', '42') ver(java, '14w34b', '41') ver(java, '14w34a', '40') ver(java, '14w33c', '39') ver(java, '14w33b', '38') ver(java, '14w33a', '37') ver(java, '14w32d', '36') ver(java, '14w32c', '35') ver(java, '14w32b', '34') ver(java, '14w32a', '33') ver(java, '14w31a', '32') ver(java, '14w30c', '31') ver(java, '14w30b', '30') ver(java, '14w30a', '30') ver(java, '14w29b', '29') ver(java, '14w29a', '29') ver(java, '14w28b', '28') ver(java, '14w28a', '27') ver(java, '14w27b', '26') ver(java, '14w27a', '26') ver(java, '14w26c', '25') ver(java, '14w26b', '24') ver(java, '14w26a', '23') ver(java, '14w25b', '22') ver(java, '14w25a', '21') ver(java, '14w21b', '20') ver(java, '14w21a', '19') ver(java, '14w20b', '18') ver(java, '14w20a', '18') ver(java, '14w19a', '17') ver(java, '14w18b', '16') ver(java, '14w18a', '16') ver(java, '14w17a', '15') ver(java, '14w11b', '14') ver(java, '14w11a', '14') ver(java, '14w10c', '13') ver(java, '14w10b', '13') ver(java, '14w10a', '13') ver(java, '14w08a', '12') ver(java, '14w07a', '11') ver(java, '14w06b', '10') ver(java, '14w06a', '10') ver(java, '14w05b', '9') ver(java, '14w05a', '9') ver(java, '14w04b', '8') ver(java, '14w04a', '7') ver(java, '14w03b', '6') ver(java, '14w03a', '6') ver(java, '14w02c', '5') ver(java, '14w02b', '5') ver(java, '14w02a', '5')

-- 1.7.10 ver(java, '1.7.10', '5') ver(java, '1.7.10-pre4', '5') ver(java, '1.7.10-pre3', '5') ver(java, '1.7.10-pre2', '5') ver(java, '1.7.10-pre1', '5') -- 1.7.9 ver(java, '1.7.9', '5') -- 1.7.8 ver(java, '1.7.8', '5') -- 1.7.7 ver(java, '1.7.7', '5') -- 1.7.6 ver(java, '1.7.6', '5') ver(java, '1.7.6-pre2', '5') ver(java, '1.7.6-pre1', '5') -- 1.7.5 ver(java, '1.7.5', '4') -- 1.7.4 ver(java, '1.7.4', '4') ver(java, '1.7.3-pre', '4') ver(java, '13w49a', '4') ver(java, '13w48b', '4') ver(java, '13w48a', '4') ver(java, '13w47e', '4') ver(java, '13w47d', '4') ver(java, '13w47c', '4') ver(java, '13w47b', '4') ver(java, '13w47a', '4') -- 1.7.2 ver(java, '1.7.2', '4') ver(java, '1.7.1-pre', '3') ver(java, '1.7-pre', '3') ver(java, '13w43a', '2') ver(java, '13w42b', '1') ver(java, '13w42a', '1') ver(java, '13w41b', '0') ver(java, '13w41a', '0', nil, {force_split=true})

-- Protocol versions numbers BEFORE the 13w41a reset due to Netty rewrite ver(java_old, '13w39b', '80') ver(java_old, '13w39a', '80') ver(java_old, '13w38c', '79') ver(java_old, '13w38b', '79') ver(java_old, '13w38a', '79')

-- 1.6.4 ver(java_old, '1.6.4', '78') ver(java_old, '1.6.3-pre', '77') ver(java_old, '13w37b', '76') ver(java_old, '13w37a', '76') ver(java_old, '13w36b', '75') ver(java_old, '13w36a', '75') -- 1.6.2 ver(java_old, '1.6.2', '74') -- 1.6.1 ver(java_old, '1.6.1', '73') ver(java_old, '1.6-pre', '72') ver(java_old, '13w26a', '72') ver(java_old, '13w25c', '71') ver(java_old, '13w25b', '71') ver(java_old, '13w25a', '71') ver(java_old, '13w24b', '70') ver(java_old, '13w24a', '69') ver(java_old, '13w23b', '68') ver(java_old, '13w23a', '67') ver(java_old, '13w22a', '67') ver(java_old, '13w21b', '67') ver(java_old, '13w21a', '67') ver(java_old, '13w19a', '66') ver(java_old, '13w18c', '65') ver(java_old, '13w18b', '65') ver(java_old, '13w18a', '65') ver(java_old, '13w17a', '64') ver(java_old, '13w16b', '63') ver(java_old, '13w16a', '62')

-- 1.5.2 ver(java_old, '1.5.2', '61') -- 1.5.1 ver(java_old, '1.5.1', '60') ver(java_old, '13w12~', '60') ver(java_old, '13w11a', '60') -- 1.5 ver(java_old, '1.5', '60') ver(java_old, '13w10b', '60') ver(java_old, '13w10a', '60') ver(java_old, '13w09c', '60') ver(java_old, '13w09b', '59') ver(java_old, '13w09a', '59') ver(java_old, '13w07a', '58') ver(java_old, '13w06a', '58') ver(java_old, '13w05b', '57') ver(java_old, '13w05a', '56') ver(java_old, '13w04a', '55') ver(java_old, '13w03a', '54') ver(java_old, '13w02b', '53') ver(java_old, '13w02a', '53') ver(java_old, '13w01b', '52') ver(java_old, '13w01a', '52')

-- 1.4.7 ver(java_old, '1.4.7', '51') -- 1.4.6 ver(java_old, '1.4.6', '51') ver(java_old, '12w50b', '51') ver(java_old, '12w50a', '51') ver(java_old, '12w49a', '50') -- 1.4.5 ver(java_old, '1.4.5', '49') -- 1.4.4 ver(java_old, '1.4.4', '49') ver(java_old, '1.4.3-pre', '48') -- 1.4.2 ver(java_old, '1.4.2', '47') ver(java_old, '12w42b', '46') ver(java_old, '12w42a', '46') ver(java_old, '12w41b', '46') ver(java_old, '12w41a', '46') ver(java_old, '12w40b', '45') ver(java_old, '12w40a', '44') ver(java_old, '12w39b', '43') ver(java_old, '12w39a', '43') ver(java_old, '12w38b', '43') ver(java_old, '12w38a', '43') ver(java_old, '12w37a', '42') ver(java_old, '12w36a', '42') ver(java_old, '12w34b', '42') ver(java_old, '12w34a', '41') ver(java_old, '12w32a', '40')

-- 1.3.2 ver(java_old, '1.3.2', '39') -- 1.3.1 ver(java_old, '1.3.1', '39') ver(java_old, '12w30e', '39') ver(java_old, '12w30d', '39') ver(java_old, '12w30c', '39') ver(java_old, '12w30b', '38') ver(java_old, '12w30a', '38') ver(java_old, '12w27a', '38') ver(java_old, '12w26a', '37') ver(java_old, '12w25a', '37') ver(java_old, '12w24a', '36') ver(java_old, '12w23b', '35') ver(java_old, '12w23a', '35') ver(java_old, '12w22a', '34') ver(java_old, '12w21b', '33') ver(java_old, '12w21a', '33') ver(java_old, '12w19a', '32') ver(java_old, '12w18a', '32') ver(java_old, '12w17a', '31') ver(java_old, '12w16a', '30') ver(java_old, '12w15a', '29')

-- 1.2.5 ver(java_old, '1.2.5', '29') -- 1.2.4 ver(java_old, '1.2.4', '29') -- 1.2.3 ver(java_old, '1.2.3', '28') -- 1.2.2 ver(java_old, '1.2.2', '28') -- 1.2.1 ver(java_old, '1.2.1', '28') ver(java_old, '12w08a', '28') ver(java_old, '12w07b', '27') ver(java_old, '12w07a', '27') ver(java_old, '12w06a', '25') ver(java_old, '12w05b', '24') ver(java_old, '12w05a', '24') ver(java_old, '12w04a', '24') ver(java_old, '12w03a', '24')

-- 1.1 ver(java_old, '1.1', '23') ver(java_old, '12w01a', '23') ver(java_old, '11w50a', '22') ver(java_old, '11w49a', '22') ver(java_old, '11w48a', '22') ver(java_old, '11w47a', '22')

-- 1.0.1 ver(java_old, '1.0.1', '22') -- 1.0.0 ver(java_old, '1.0.0', '22') ver(java_old, 'RC2', '22') ver(java_old, 'RC1', '22') ver(java_old, 'Beta 1.9 Prerelease 6', '22') ver(java_old, 'Beta 1.9 Prerelease 5', '21') ver(java_old, 'Beta 1.9 Prerelease 4', '20') ver(java_old, 'Beta 1.9 Prerelease 3', '19') ver(java_old, 'Beta 1.9 Prerelease 2', '19') ver(java_old, 'Beta 1.9 Prerelease', '18')

-- BETA -- 1.8 ver(java_old, 'Beta 1.8.1', '17') ver(java_old, 'Beta 1.8', '17') ver(java_old, 'Beta 1.8 Pre-release 2 ;)', '16') ver(java_old, 'Beta 1.8 Pre-release', '15')

-- 1.7 ver(java_old, 'Beta 1.7.3', '14') ver(java_old, 'Beta 1.7.2', '14') ver(java_old, 'Beta 1.7_01', '14') ver(java_old, 'Beta 1.7', '14')

-- 1.6 ver(java_old, 'Beta 1.6.6', '13') ver(java_old, 'Beta 1.6.5', '13') ver(java_old, 'Beta 1.6.4', '13') ver(java_old, 'Beta 1.6.3', '13') ver(java_old, 'Beta 1.6.2', '13') ver(java_old, 'Beta 1.6.1', '13') ver(java_old, 'Beta 1.6', '13') ver(java_old, 'Beta 1.6 Test Build 3', '12')

-- 1.5 ver(java_old, 'Beta 1.5_02', '11') -- server-only ver(java_old, 'Beta 1.5_01', '11') ver(java_old, 'Beta 1.5', '11')

-- 1.4 ver(java_old, 'Beta 1.4_01', '10') ver(java_old, 'Beta 1.4', '10')

-- 1.3 ver(java_old, 'Beta 1.3_01', '9') ver(java_old, 'Beta 1.3', '9')

-- 1.2 ver(java_old, 'Beta 1.2_02', '8') ver(java_old, 'Beta 1.2_01', '8') ver(java_old, 'Beta 1.2', '8')

-- 1.1 ver(java_old, 'Beta 1.1_02', '8') ver(java_old, 'Beta 1.1_01', '7') ver(java_old, 'Beta 1.1', '7')

-- 1.0 ver(java_old, 'Beta 1.0.2', '7') ver(java_old, 'Beta 1.0_01', '7') ver(java_old, 'Beta 1.0', '7')

-- ALPHA -- 1.2 ver(java_old, 'Alpha v1.2.6', '6') ver(java_old, 'Alpha v1.2.5', '6') ver(java_old, 'Alpha v1.2.4_01', '6') ver(java_old, 'Alpha v1.2.4', unknown) ver(java_old, 'Alpha v1.2.3_04', '5') ver(java_old, 'Alpha v1.2.3_02', '5') ver(java_old, 'Alpha v1.2.3_01', '5') ver(java_old, 'Alpha v1.2.3', '5') ver(java_old, 'Alpha v1.2.2', '4') ver(java_old, 'Alpha v1.2.1_01', '3') ver(java_old, 'Alpha v1.2.1', '3') ver(java_old, 'Alpha v1.2.0_02', '3') ver(java_old, 'Alpha v1.2.0_01', '3') ver(java_old, 'Alpha v1.2.0', '3')

-- 1.1 ver(java_old, 'Alpha v1.1.2_01', '2') ver(java_old, 'Alpha v1.1.2', '2') ver(java_old, 'Alpha v1.1.1', unknown) ver(java_old, 'Alpha v1.1.0', '2')

-- 1.0 ver(java_old, 'Alpha v1.0.17_04', '1') ver(java_old, 'Alpha v1.0.17_03', '1') ver(java_old, 'Alpha v1.0.17_02', '1') ver(java_old, 'Alpha v1.0.17_01', unknown) ver(java_old, 'Alpha v1.0.17', unknown) ver(java_old, 'Alpha v1.0.16_02', '14') ver(java_old, 'Alpha v1.0.16_01', '14') ver(java_old, 'Alpha v1.0.16', '14') ver(java_old, 'Alpha v1.0.15', '13') -- These versions have a multiplayer button, but a specific server is hardcoded. ver(java_old, 'Alpha v1.0.14', '12') ver(java_old, 'Alpha v1.0.13_01', '12') ver(java_old, 'Alpha v1.0.13', '12') ver(java_old, 'Alpha v1.0.12', '11') ver(java_old, 'Alpha v1.0.11', '10') ver(java_old, 'Alpha v1.0.10', '10') -- These versions have multiplayer code, but no multiplayer interface. ver(java_old, 'Alpha v1.0.9', '10') ver(java_old, 'Alpha v1.0.8_01', '10') ver(java_old, 'Alpha v1.0.8', unknown) ver(java_old, 'Alpha v1.0.7', '10') ver(java_old, 'Alpha v1.0.6_03', '10') ver(java_old, 'Alpha v1.0.6_02', unknown) ver(java_old, 'Alpha v1.0.6_01', '10') ver(java_old, 'Alpha v1.0.6', '10') ver(java_old, 'Alpha v1.0.5_01', '10') ver(java_old, 'Alpha v1.0.5', unknown) -- Multiplayer did not exist ver(java_old, 'Alpha v1.0.4', none) ver(java_old, 'Alpha v1.0.3', none) ver(java_old, 'Alpha v1.0.2_02', none) ver(java_old, 'Alpha v1.0.2_01', none) ver(java_old, 'Alpha v1.0.2', none) ver(java_old, 'Alpha v1.0.1_01', none) ver(java_old, 'Alpha v1.0.1', none) ver(java_old, 'Alpha v1.0.0', none)

-- Indef and Infdev - no multiplayer; all versions use the same title ver(java_old, 'Infdev', none) ver(java_old, 'Indev', none) ver(java_old, '0.31', none) -- also Indev

-- CLASSIC ver(java_old, '0.30', '7') ver(java_old, '0.28_01', '7') -- no idea what the article names for these are -- ver(java_old, 'c0.27_st_a', '6') -- ver(java_old, 'c0.25_05_st', '6') -- ver(java_old, 'c0.24_st_c', '6') ver(java_old, '0.0.23a_01', '6') ver(java_old, '0.0.22a_05', '6') ver(java_old, '0.0.21a', '6')

-- April Fools' ver(java_af, '1.RV-Pre1', '108', 173) ver(java_af, '15w14a', '48') ver(java_af, '2.0', '90, 91, 92')

-- POCKET EDITION -- Source: http://pmmp.readthedocs.io/en/rtfd/supportedMCPEversions.html -- (Licensed under LGPL3, used with permission from author)

-- 1.2 ver(pocket, 'Bedrock Edition 1.2.10 build 1', unknown) ver(pocket, 'Bedrock Edition 1.2.9', unknown) ver(pocket, 'Bedrock Edition 1.2.8', unknown) ver(pocket, 'Bedrock Edition 1.2.7', unknown) ver(pocket, 'Bedrock Edition 1.2.6.1', unknown) ver(pocket, 'Bedrock Edition 1.2.6', unknown) ver(pocket, 'Bedrock Edition 1.2.6 build 1', unknown) ver(pocket, 'Bedrock Edition 1.2.5', unknown) ver(pocket, 'Bedrock Edition 1.2.5 build 3', unknown) ver(pocket, 'Bedrock Edition 1.2.5 build 2', unknown) ver(pocket, 'Bedrock Edition 1.2.5 build 1', unknown) ver(pocket, 'Bedrock Edition 1.2.3', unknown) ver(pocket, 'Bedrock Edition 1.2.3 build 1', unknown) ver(pocket, 'Bedrock Edition 1.2.2', unknown) ver(pocket, 'Bedrock Edition 1.2.1', unknown) ver(pocket, 'Bedrock Edition 1.2', unknown) ver(pocket, 'Bedrock Edition 1.2 build 9', unknown) ver(pocket, 'Bedrock Edition 1.2 build 8', unknown) ver(pocket, 'Bedrock Edition 1.2 build 7', unknown) ver(pocket, 'Bedrock Edition 1.2 build 6', unknown) ver(pocket, 'Bedrock Edition 1.2 build 5', unknown) ver(pocket, 'Bedrock Edition 1.2 build 4', unknown) ver(pocket, 'Bedrock Edition 1.2 build 3', unknown) ver(pocket, 'Bedrock Edition 1.2 build 2', unknown) ver(pocket, 'Bedrock Edition 1.2 build 1', unknown)

-- 1.1 ver(pocket, 'Pocket Edition 1.1.7', unknown) ver(pocket, 'Pocket Edition 1.1.5', unknown) ver(pocket, 'Pocket Edition 1.1.4', unknown) ver(pocket, 'Pocket Edition 1.1.3', unknown) ver(pocket, 'Pocket Edition 1.1.3 build 2', unknown) ver(pocket, 'Pocket Edition 1.1.3 build 1', unknown) ver(pocket, 'Pocket Edition 1.1.2', unknown) ver(pocket, 'Pocket Edition 1.1.1', unknown) ver(pocket, 'Pocket Edition 1.1.1 build 2', unknown) ver(pocket, 'Pocket Edition 1.1.1 build 1', unknown) ver(pocket, 'Pocket Edition 1.1', unknown) ver(pocket, 'Pocket Edition 1.1 build 7', unknown) ver(pocket, 'Pocket Edition 1.1 build 6', unknown) ver(pocket, 'Pocket Edition 1.1 build 5', unknown) ver(pocket, 'Pocket Edition 1.1 build 4', unknown) ver(pocket, 'Pocket Edition 1.1 build 3', unknown) ver(pocket, 'Pocket Edition 1.1 build 2', unknown) ver(pocket, 'Pocket Edition 1.1 build 1', unknown)

-- 1.0 ver(pocket, 'Pocket Edition 1.0.9', unknown) ver(pocket, 'Pocket Edition 1.0.8', unknown) ver(pocket, 'Pocket Edition 1.0.7', '107') ver(pocket, 'Pocket Edition 1.0.6', '106') ver(pocket, 'Pocket Edition 1.0.6 build 1', unknown) ver(pocket, 'Pocket Edition 1.0.5', '105') ver(pocket, 'Pocket Edition 1.0.5 build 3', unknown) ver(pocket, 'Pocket Edition 1.0.5 build 2', unknown) ver(pocket, 'Pocket Edition 1.0.5 build 1', unknown) ver(pocket, 'Pocket Edition 1.0.4', unknown) ver(pocket, 'Pocket Edition 1.0.4 build 2', unknown) ver(pocket, 'Pocket Edition 1.0.4 build 1', '102') ver(pocket, 'Pocket Edition 1.0.3', '101') ver(pocket, 'Pocket Edition 1.0.3 build 1', unknown) ver(pocket, 'Pocket Edition 1.0.2', unknown) ver(pocket, 'Pocket Edition 1.0.1', unknown) ver(pocket, 'Pocket Edition 1.0', '100') ver(pocket, 'Pocket Edition 1.0 build 6', unknown) ver(pocket, 'Pocket Edition 1.0 build 5', unknown) ver(pocket, 'Pocket Edition 1.0 build 4', unknown) ver(pocket, 'Pocket Edition 1.0 build 3', unknown) ver(pocket, 'Pocket Edition 1.0 build 2', unknown) ver(pocket, 'Pocket Edition 1.0 build 1', '92') -- aka Alpha 0.17.0.1

-- PE ALPHA

-- 0.16 ver(pocket, 'Pocket Edition Alpha 0.16.2', unknown) ver(pocket, 'Pocket Edition Alpha 0.16.1', unknown) ver(pocket, 'Pocket Edition Alpha 0.16.0', unknown) ver(pocket, 'Pocket Edition Alpha 0.16.0 build 5', '91') ver(pocket, 'Pocket Edition Alpha 0.16.0 build 4', unknown) ver(pocket, 'Pocket Edition Alpha 0.16.0 build 3', unknown) ver(pocket, 'Pocket Edition Alpha 0.16.0 build 2', '90') -- aka Alpha 0.15.90.1 ver(pocket, 'Pocket Edition Alpha 0.16.0 build 1', unknown)

-- 0.15 ver(pocket, 'Pocket Edition Alpha 0.15.10', '84') ver(pocket, 'Pocket Edition Alpha 0.15.9', '83') ver(pocket, 'Pocket Edition Alpha 0.15.8', unknown) ver(pocket, 'Pocket Edition Alpha 0.15.7', unknown) ver(pocket, 'Pocket Edition Alpha 0.15.6', unknown) ver(pocket, 'Pocket Edition Alpha 0.15.4', '82') ver(pocket, 'Pocket Edition Alpha 0.15.3', unknown) ver(pocket, 'Pocket Edition Alpha 0.15.2', unknown) ver(pocket, 'Pocket Edition Alpha 0.15.1', unknown) ver(pocket, 'Pocket Edition Alpha 0.15.1 build 1', unknown) ver(pocket, 'Pocket Edition Alpha 0.15.0', '81') ver(pocket, 'Pocket Edition Alpha 0.15.0 build 3', unknown) ver(pocket, 'Pocket Edition Alpha 0.15.0 build 2', unknown) ver(pocket, 'Pocket Edition Alpha 0.15.0 build 1', unknown) ver(pocket, 'Pocket Edition Alpha Realms build 4', unknown) ver(pocket, 'Pocket Edition Alpha Realms build 2', unknown) ver(pocket, 'Pocket Edition Alpha Realms build 1', unknown)

-- 0.14 ver(pocket, 'Pocket Edition Alpha 0.14.3', '70') ver(pocket, 'Pocket Edition Alpha 0.14.2', '60') ver(pocket, 'Pocket Edition Alpha 0.14.1', unknown) ver(pocket, 'Pocket Edition Alpha 0.14.0', unknown) ver(pocket, 'Pocket Edition Alpha 0.14.0 build 7', '45') ver(pocket, 'Pocket Edition Alpha 0.14.0 build 6', '44') ver(pocket, 'Pocket Edition Alpha 0.14.0 build 5', '43') ver(pocket, 'Pocket Edition Alpha 0.14.0 build 4', '43') ver(pocket, 'Pocket Edition Alpha 0.14.0 build 3', '42') ver(pocket, 'Pocket Edition Alpha 0.14.0 build 2', unknown) ver(pocket, 'Pocket Edition Alpha 0.14.0 build 1', '41')

-- 0.13 ver(pocket, 'Pocket Edition Alpha 0.13.2', '39') ver(pocket, 'Pocket Edition Alpha 0.13.1', unknown) ver(pocket, 'Pocket Edition Alpha 0.13.0', unknown) ver(pocket, 'Pocket Edition Alpha 0.13.0 build 5', unknown) ver(pocket, 'Pocket Edition Alpha 0.13.0 build 4', '38') ver(pocket, 'Pocket Edition Alpha 0.13.0 build 3', '38') ver(pocket, 'Pocket Edition Alpha 0.13.0 build 2', '37') ver(pocket, 'Pocket Edition Alpha 0.13.0 build 1', '37')

-- 0.12 ver(pocket, 'Pocket Edition Alpha 0.12.3', unknown) ver(pocket, 'Pocket Edition Alpha 0.12.2', unknown) ver(pocket, 'Pocket Edition Alpha 0.12.1', unknown) ver(pocket, 'Pocket Edition Alpha 0.12.1 build 13', unknown) ver(pocket, 'Pocket Edition Alpha 0.12.1 build 12', unknown) ver(pocket, 'Pocket Edition Alpha 0.12.1 build 11', unknown) ver(pocket, 'Pocket Edition Alpha 0.12.1 build 10', unknown) ver(pocket, 'Pocket Edition Alpha 0.12.1 build 9', unknown) ver(pocket, 'Pocket Edition Alpha 0.12.1 build 8', unknown) ver(pocket, 'Pocket Edition Alpha 0.12.1 build 7', unknown) ver(pocket, 'Pocket Edition Alpha 0.12.1 build 6', unknown) ver(pocket, 'Pocket Edition Alpha 0.12.1 build 5', unknown) ver(pocket, 'Pocket Edition Alpha 0.12.1 build 4', unknown) ver(pocket, 'Pocket Edition Alpha 0.12.1 build 3', unknown) ver(pocket, 'Pocket Edition Alpha 0.12.1 build 2', unknown) ver(pocket, 'Pocket Edition Alpha 0.12.1 build 1', unknown) ver(pocket, 'Pocket Edition Alpha 0.12.0.1', unknown) ver(pocket, 'Pocket Edition Alpha 0.12.0', unknown)

-- 0.11 ver(pocket, 'Pocket Edition Alpha 0.11.2', unknown) ver(pocket, 'Pocket Edition Alpha 0.11.1', unknown) ver(pocket, 'Pocket Edition Alpha 0.11.0', unknown) ver(pocket, 'Pocket Edition Alpha 0.11.0 build 14', '27') ver(pocket, 'Pocket Edition Alpha 0.11.0 build 13', unknown) ver(pocket, 'Pocket Edition Alpha 0.11.0 build 12', unknown) ver(pocket, 'Pocket Edition Alpha 0.11.0 build 11', '26') ver(pocket, 'Pocket Edition Alpha 0.11.0 build 10', unknown) ver(pocket, 'Pocket Edition Alpha 0.11.0 build 9', unknown) ver(pocket, 'Pocket Edition Alpha 0.11.0 build 8', '25') ver(pocket, 'Pocket Edition Alpha 0.11.0 build 7', '24') ver(pocket, 'Pocket Edition Alpha 0.11.0 build 6', unknown) ver(pocket, 'Pocket Edition Alpha 0.11.0 build 5', '23') ver(pocket, 'Pocket Edition Alpha 0.11.0 build 4', '22') ver(pocket, 'Pocket Edition Alpha 0.11.0 build 3', unknown) ver(pocket, 'Pocket Edition Alpha 0.11.0 build 2', unknown) ver(pocket, 'Pocket Edition Alpha 0.11.0 build 1', '21')

-- 0.10 ver(pocket, 'Pocket Edition Alpha 0.10.5', unknown) ver(pocket, 'Pocket Edition Alpha 0.10.4', unknown) ver(pocket, 'Pocket Edition Alpha 0.10.3', unknown) ver(pocket, 'Pocket Edition Alpha 0.10.2', unknown) ver(pocket, 'Pocket Edition Alpha 0.10.1', unknown) ver(pocket, 'Pocket Edition Alpha 0.10.0', unknown) ver(pocket, 'Pocket Edition Alpha 0.10.0 build 9', unknown) ver(pocket, 'Pocket Edition Alpha 0.10.0 build 8', unknown) ver(pocket, 'Pocket Edition Alpha 0.10.0 build 7', unknown) ver(pocket, 'Pocket Edition Alpha 0.10.0 build 6', '20') ver(pocket, 'Pocket Edition Alpha 0.10.0 build 5', unknown) ver(pocket, 'Pocket Edition Alpha 0.10.0 build 4', unknown) ver(pocket, 'Pocket Edition Alpha 0.10.0 build 3', unknown) ver(pocket, 'Pocket Edition Alpha 0.10.0 build 2', unknown) ver(pocket, 'Pocket Edition Alpha 0.10.0 build 1', '19')

-- 0.9 ver(pocket, 'Pocket Edition Alpha 0.9.5', '18') ver(pocket, 'Pocket Edition Alpha 0.9.4', unknown) ver(pocket, 'Pocket Edition Alpha 0.9.3', unknown) ver(pocket, 'Pocket Edition Alpha 0.9.2', unknown) ver(pocket, 'Pocket Edition Alpha 0.9.1', unknown) ver(pocket, 'Pocket Edition Alpha 0.9.0', unknown) ver(pocket, 'Pocket Edition Alpha 0.9.0 build 12', '17') ver(pocket, 'Pocket Edition Alpha 0.9.0 build 11', unknown) ver(pocket, 'Pocket Edition Alpha 0.9.0 build 10', unknown) ver(pocket, 'Pocket Edition Alpha 0.9.0 build 9', unknown) ver(pocket, 'Pocket Edition Alpha 0.9.0 build 8', unknown) ver(pocket, 'Pocket Edition Alpha 0.9.0 build 7', '16') ver(pocket, 'Pocket Edition Alpha 0.9.0 build 6', unknown) ver(pocket, 'Pocket Edition Alpha 0.9.0 build 5', unknown) ver(pocket, 'Pocket Edition Alpha 0.9.0 build 4', unknown) ver(pocket, 'Pocket Edition Alpha 0.9.0 build 3', unknown) ver(pocket, 'Pocket Edition Alpha 0.9.0 build 2', '15') ver(pocket, 'Pocket Edition Alpha 0.9.0 build 1', unknown)

-- 0.8 ver(pocket, 'Pocket Edition Alpha 0.8.2', unknown) ver(pocket, 'Pocket Edition Alpha 0.8.1', '14') ver(pocket, 'Pocket Edition Alpha 0.8.0', unknown) ver(pocket, 'Pocket Edition Alpha 0.8.0 build 8', unknown) ver(pocket, 'Pocket Edition Alpha 0.8.0 build 7', unknown) ver(pocket, 'Pocket Edition Alpha 0.8.0 build 6', unknown) ver(pocket, 'Pocket Edition Alpha 0.8.0 build 5', unknown) ver(pocket, 'Pocket Edition Alpha 0.8.0 build 4', unknown) ver(pocket, 'Pocket Edition Alpha 0.8.0 build 3', unknown) ver(pocket, 'Pocket Edition Alpha 0.8.0 build 2', unknown)

-- 0.7 ver(pocket, 'Pocket Edition Alpha 0.7.6', unknown) ver(pocket, 'Pocket Edition Alpha 0.7.5', unknown) ver(pocket, 'Pocket Edition Alpha 0.7.4', '12') ver(pocket, 'Pocket Edition Alpha 0.7.3', unknown) ver(pocket, 'Pocket Edition Alpha 0.7.2', unknown) ver(pocket, 'Pocket Edition Alpha 0.7.1', unknown) ver(pocket, 'Pocket Edition Alpha 0.7.0', '11')

-- 0.6 ver(pocket, 'Pocket Edition Alpha 0.6.1', '9') ver(pocket, 'Pocket Edition Alpha 0.6.0', '9')

-- 0.5 ver(pocket, 'Pocket Edition Alpha 0.5.0', '8')

-- 0.4 ver(pocket, 'Pocket Edition Alpha 0.4.0 rev 2', unknown) ver(pocket, 'Pocket Edition Alpha 0.4.0', '7')

-- 0.3 ver(pocket, 'Pocket Edition Alpha 0.3.3', '6') ver(pocket, 'Pocket Edition Alpha 0.3.2', '5') ver(pocket, 'Pocket Edition Alpha 0.3.0', '4')

-- 0.2 ver(pocket, 'Pocket Edition Alpha 0.2.1 alpha 2', unknown) ver(pocket, 'Pocket Edition Alpha 0.2.1', '3') ver(pocket, 'Pocket Edition Alpha 0.2.0', '2')

-- 0.1 ver(pocket, 'Pocket Edition Alpha 0.1.3', unknown) ver(pocket, 'Pocket Edition Alpha 0.1.2', unknown) ver(pocket, 'Pocket Edition Alpha 0.1.1', unknown) ver(pocket, 'Pocket Edition Alpha 0.1.0', unknown)

return { ['versions'] = all, ['groups'] = groups }