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 = {}

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

-- Intended for translators unknown = 'unknown'

-- 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, '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, '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') -- 1.8.1 ver(java, '1.8.1', '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, '14w30a', '30') 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, '14w20a', '18') ver(java, '14w19a', '17') ver(java, '14w18b', '16') ver(java, '14w17a', '15') 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, '14w06a', '10') ver(java, '14w05a', '9') ver(java, '14w04b', '8') ver(java, '14w04a', '7') ver(java, '14w03a', '6') ver(java, '14w02a', '5')

-- 1.7.10 ver(java, '1.7.10', '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') -- 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') -- 1.7.2 ver(java, '1.7.2', '4') ver(java, '1.7.1-pre', '4') 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, '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') -- 1.5 ver(java_old, '1.5', '60') ver(java_old, '13w09b', '59') 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, '13w02a', '53') 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, '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, '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, '12w27a', '38') ver(java_old, '12w26a', '37') ver(java_old, '12w25a', '37') ver(java_old, '12w24a', '36') 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')

-- 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, '12w07a', '27') ver(java_old, '12w06a', '25') 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, '1.0.0-RC2', '22') ver(java_old, '1.0.0-RC1', '22') ver(java_old, 'Beta 1.9-pre6', '22') ver(java_old, 'Beta 1.9-pre5', '21') ver(java_old, 'Beta 1.9-pre4', '20') ver(java_old, 'Beta 1.9-pre3', '19') ver(java_old, 'Beta 1.9-pre2', '19') ver(java_old, 'Beta 1.9-pre1', '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-pre2', '16') ver(java_old, 'Beta 1.8-pre1', '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.1', '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_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', unknown .. ' (7?)')

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

-- ALPHA -- 1.2 ver(java_old, 'Alpha 1.2.6', '6') ver(java_old, 'Alpha 1.2.5', '6') ver(java_old, 'Alpha 1.2.4_01', '6') ver(java_old, 'Alpha 1.2.4', unknown .. ' (6?)') ver(java_old, 'Alpha 1.2.3_04', '5') ver(java_old, 'Alpha 1.2.3_02', '5') ver(java_old, 'Alpha 1.2.3_01', '5') ver(java_old, 'Alpha 1.2.3', '5') ver(java_old, 'Alpha 1.2.2', unknown .. ' (4?)') ver(java_old, 'Alpha 1.2.1_01', '3') ver(java_old, 'Alpha 1.2.1', '3') ver(java_old, 'Alpha 1.2.0_02', '3') ver(java_old, 'Alpha 1.2.0_01', '3') ver(java_old, 'Alpha 1.2.0', '3')

-- 1.1 ver(java_old, 'Alpha 1.1.2_01', '2') ver(java_old, 'Alpha 1.1.2', '2') ver(java_old, 'Alpha 1.1.1', unknown .. ' (2?)') ver(java_old, 'Alpha 1.1.0', '2')

-- 1.0 ver(java_old, 'Alpha 1.0.17_04', '1') ver(java_old, 'Alpha 1.0.17_03', unknown .. ' (1?)') ver(java_old, 'Alpha 1.0.17_02', '1') ver(java_old, 'Alpha 1.0.17', unknown) ver(java_old, 'Alpha 1.0.16_02', unknown) ver(java_old, 'Alpha 1.0.16_01', unknown) ver(java_old, 'Alpha 1.0.16', '14') ver(java_old, 'Alpha 1.0.15', '13') -- Between Alpha 1.0.0 and 1.0.14_01, multiplayer did not exist

-- CLASSIC ver(java_old, '0.30', '7') ver(java_old, '0.0.23a_01', '6')

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

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