Minecraft Wiki
Advertisement
[Crear | Purgar]Documentación
Emódulo no tiene documentación. Si sabes cómo crear emódulo, por favor crea su página.
local p = {}

local i18n = {
    process_args = 'Module:ProcessArgs',
    hashes = 'Module:Downloadlinks/hashes',
    category = 'Category:Invalid download link',

    version_error = '[[Template:Downloadlink|No or invalid version given]]',
    variant_error = '[[Template:Downloadlink|No or invalid variant given]]',
    hash_error = '[[Template:Downloadlink|No hash found]]',

    client = 'Client',
    server = 'Server',
    windows_server = '.exe',
    json = '.json',
    json_package = '.json',
    
    nowiki_template = 'Downloadlink/nw',
}

function p.downloadlink_constructor(f)

    local args = f
    if f == mw.getCurrentFrame() then
        args = require(i18n['process_args']).merge(true)
    end
    
    -- Construct category
    local title = mw.title.getCurrentTitle()
    local category = ''
    
    if not args.nocat and title.namespace == 0 and not title.isSubpage then
    	category = '[[' .. i18n['category'] .. '|' .. title.text .. ']]'
    end

	local version
	local variant
	
	-- Checks before constructing
	if args[1] then
		version = mw.text.trim(tostring(args[1])):lower()
	elseif args.v then -- args.v is deprecated, yet still here for backwards compatibility
		version = mw.text.trim(tostring(args.v)):lower()
	end
	
	if args[2] then
		variant = mw.text.trim(tostring(args[2])):lower()
	elseif args.s then -- args.s is deprecated, yet still here for backwards compatibility
		variant = mw.text.trim(tostring(args.s)):lower()
	end
    
    -- change 'windows' to 'windows_server'
    if variant == 'windows' then
    	variant = 'windows_server'
    end
	
	local nw = f:expandTemplate{title = i18n['nowiki_template']}

    local version_data = mw.loadData(i18n['hashes'])
    
    -- Check if version or variant outputs nil
    if version_data[version] == nil then
    	text = i18n['version_error']
    	return text .. category
    elseif version_data[version][variant] == nil then
    	text = i18n['variant_error']
    	return text .. category
    end
    
    local hash = version_data[version][variant]
    local link
    local download_link
    local text

    -- Start constructing
    -- Check if variant also outputs a hash as 'json_package' (only works when force_download is NOT set)
    if variant == 'json' and not args.force_download then
    	hash = version_data[version]['json_package']
    	if hash then
    		variant = 'json_package'
    	elseif hash == nil then
    		variant = 'json'
    		hash = version_data[version]['json']
    	end
	end
	
	-- Check if text parameter exists, if not, use default
	if args[3] then
		text = args[3]
	elseif args.description then -- args.description is deprecated, yet still here for backwards compatibility
		text = args.description
	else
		text = i18n[variant]
	end
    
    -- And now finally actually start contructing links
    -- Client
    if variant == 'client' then
        -- Check if hash exists
        if hash then
            download_link = 'https://launcher.mojang.com/v1/objects/' .. hash .. '/client.jar'
	        
            link = '[' .. download_link .. ' ' .. text .. ']' .. nw
    		return link
        else
            download_link = i18n['hash_error']
            return download_link .. category
        end
        
    -- Server
    elseif variant == 'server' then
        -- Check if hash exists
        if hash then
            download_link = 'https://launcher.mojang.com/v1/objects/' .. hash .. '/server.jar'
	        
            link = '[' .. download_link .. ' ' .. text .. ']' .. nw
    		return link
        else
            download_link = i18n['hash_error']
            return download_link .. category
        end

    -- Windows server
	elseif variant == 'windows_server' then
        -- Check if hash exists
        if hash then
            download_link = 'https://launcher.mojang.com/v1/objects/' .. hash .. '/windows_server.exe'
	        
            link = '[' .. download_link .. ' ' .. text .. ']' .. nw
    		return link
        else
            download_link = i18n['hash_error']
            return download_link .. category .. hash
        end
        
    -- JSON
    elseif variant == 'json' then
        -- Check if hash exists
        if hash then
            download_link = 'https://launchermeta.mojang.com/mc/game/' .. hash .. '/' .. version .. '.json'
	        
            link = '[' .. download_link .. ' ' .. text .. ']' .. nw
    		return link
        else
            download_link = i18n['hash_error']
            return download_link .. category
        end

    -- JSON in browser
    elseif variant == 'json_package' then
        -- Check if hash exists
        if hash ~= nil then
            download_link = 'https://launchermeta.mojang.com/v1/packages/' .. hash .. '/' .. version .. '.json'
	        
            link = '[' .. download_link .. ' ' .. text .. ']' .. nw
    		return link
        else
            download_link = i18n['hash_error']
            return download_link .. category
        end
    end
end

return p
Advertisement