本站文本内容除另有声明外,转载时均必须注明出处。(详情…本站文本内容除另有声明外,转载时均必须注明出处。(详情…中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!Minecraft中文Wiki微博正在更新!或许有兴趣去看看Minecraft中文Wiki微博正在更新!或许有兴趣去看看想与其他用户进行编辑上的沟通?社区专页正是为此创建的。想与其他用户进行编辑上的沟通?社区专页正是为此创建的。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。需要管理员的协助?在管理员告示板留言也许可以帮到您。需要管理员的协助?在管理员告示板留言也许可以帮到您。

User:Kaniol233/已完成的计划/版本下载/代码

来自Minecraft Wiki
跳转至: 导航搜索
local http = require "socket.http"
local json = require "json"

info = {}

function http.get(u)
   local t = {}
   local r, c, h = http.request{
      url = u,
      sink = ltn12.sink.table(t)}
   return table.concat(t)
end

function tos(id)
    local s = string.format( "== %s ==\n<pre>\n", id)
    for k, c in pairs(info[id]) do
        s = s..string.format( "|%s=%s\n", k, c)
    end
    return s.."</pre>\n\n"
end

manifest = json.decode(http.get("https://launchermeta.mojang.com/mc/game/version_manifest.json"))

ed = {}
f = assert(io.open("./1.txt", "r"))
for l in f:lines() do
    local v = string.match(l, "== (.+) ==")
    if  v~= nil then 
        ed[v] = true
        print("Skip "..v.."...")
    end
end
f:close()

f = assert(io.open("./1.txt", "a"))

for _, c in ipairs(manifest.versions) do
    if ed[c.id] == nil then
        info[c.id] = {}
        info[c.id].json = string.gsub(c.url,"https://launchermeta.mojang.com/v1/packages/(.+)/.+.json", "%1")
        local version = json.decode(http.get(c.url))
        if version.downloads.client then info[c.id].clienthash = string.gsub(version.downloads.client.url, "https://launcher.mojang.com/v1/objects/(.+)/client.jar", "%1") end
        if version.downloads.server then info[c.id].serverhash = string.gsub(version.downloads.server.url, "https://launcher.mojang.com/v1/objects/(.+)/server.jar", "%1") end
        if version.downloads.windows_server then info[c.id].windows = string.gsub(version.downloads.windows_server.url, "https://launcher.mojang.com/v1/objects/(.+)/windows_server.exe", "%1") end
        f:write(tos(c.id))
        f:flush()
        print(c.id.."...")
    end
end
f:close()