Das offizielle Minecraft Wiki twittert hier: Wiki-Twitter  –  Chatte im Wiki-Discord  –  Noch keinen Server gefunden? Es gibt einen Wiki-Server

Hello there! We are conducting a survey to better understand the user experience in making a first edit. If you have ever made an edit on Gamepedia, please fill out the survey. Thank you!

Modul:Version

Aus Minecraft Wiki
Wechseln zu: Navigation, Suche
[Lesen | Bearbeiten | Versionen | Aktualisieren]Buch und Feder.png DokumentationSpringe zum Quelltext ↴Lua logo.svg Zum Gebrauch von Lua-Modulen siehe die Modul-Hilfe.

Das Modul Version stellt Funktionen zur Verfügung, die zur Darstellung von Minecraft-Versionsnummern dienen:

  • version: liefert für jede Minecraft-Plattform und -Edition die aktuelle Versionsnummer.
  • versionlink: verlinkt die Versionsnummer auf die richtige Versionsgeschichten-Seite.

Außerdem wird das Untermodul Version/Nummern verwendet, in dem alle aktuellen Versionsnummern hinterlegt sind.

Aufruf

Die Parameter des Aufrufers werden automatisch übergeben. Das sind:

für {{#invoke: Version|version}} siehe Vorlage:Version

für {{#invoke: Version|versionlink}} siehe Vorlage:Versions-Link

Anwendung

Liste der Vorlagen, die dieses Modul verwenden


local p = {}

p.version = function( f )
    local args = f
    if f == mw.getCurrentFrame() then 
        args = require( 'Modul:ParameterUmwandeln' ).merge( true )
    end

    -- Zentral gesammelte Versionsnummern einlesen
    local versions = mw.loadData( 'Modul:Version/Nummern' )

    local version = 'pc'
    if args.c then
        args.classic = '1'
    end

    -- wenn es einen Parameter <typ>=1 gibt und der Typ in der Versionsliste vorkommt: Merken.
    for v in pairs( args ) do
        if type( v ) == 'string' then
            v = v:lower()
            if versions[v] then
                version = v
                break
            end
        end
    end
    
    local edition
    if args.s or args.server then
        edition = versions[version .. '-server']
    end
    if not edition then
        edition = versions[version]
    end

    -- Versionsnummer aus der Liste holen, prefix für die Link-Vorlage dito
    local versionNum = edition[1] or edition
    local prefix = edition.prefix or ''
    
    -- Wenn es keine Versionsnummer zu reporten gibt oder der Parameter 'nolink=1' gesetzt wurde, nutze nur den
    -- Text, ansonsten erzeuge einen Link auf die Versionsgeschichte
    local link = ''
    if args.nolink or versionNum == '' then
        link = args[1] or versionNum
    else
        link = p.versionlink({ prefix .. ' ' .. (args[1] or versionNum), args[2] or args[1] or versionNum })
    end

    -- Gibt es den Parameter 't=' mit Inhalt, dann wird die Vorlage:Tabellenauswahl hinzugezogen
    if args.t then
      if args[1] then
        -- Wurde eine Soll-Versionsnummer gegeben, vergleichen wir damit
        return f:expandTemplate{ title = 'Tabellenauswahl', args = { args[1] == versionNum and 'Ja' or 'Nein', link } }
      else
        -- ansonsten ist "grün" angesagt
        return f:expandTemplate{ title = 'Tabellenauswahl', args = { 'Ja', link } }
      end
    else
      return link
    end
    
end

p.versionlink = function( f )
    local args = f
    if f == mw.getCurrentFrame() then 
        args = require( 'Modul:ParameterUmwandeln' ).merge( true )
    end

    local version = (args[1] or ''):gsub("^%s*(.-)%s*$", "%1")
    local lcversion = mw.ustring.lower(version)
    local text = args[2] or args[1] or ''

    local versions = mw.loadData( 'Modul:Version/Nummern' )

    -- Ab hier: Bestimmung des Link-Ziels. Zunächst einmal schauen wir nach den definierten Prefixes
    local prefix = ''
    local link = ''
    local nBeginn
    local nEnde 

    local keys = {}
    for name, _ in pairs(versions) do
      keys[#keys + 1] = name
    end
    table.sort(keys)

    for k=1,#keys do
        daten = versions[keys[k]]
        prefix = daten.prefix or ''
        if prefix ~= '' then
            if mw.ustring.sub(version,1,string.len(prefix)) == prefix then
                version = mw.ustring.sub(version,string.len(prefix) + 1):gsub("^%s*(.-)%s*$", "%1")
                link = daten.page 
                break
            end
        end
    end

    -- Wenn es eine Klammer mit Inhalt gibt, nimm den Klammerinhalt. 
    -- Dies kann ein Datum oder eine spezielle Versionskennung sein
    _,_,special = mw.ustring.find(version, '%((.-)%)')
    if special ~= nil then
        version = special:gsub("^%s*(.-)%s*$", "%1")
    end

    -- Einige Texte aus den Versionsnamen werden entfernt oder ersetzt, um den richtigen Anker zu erzeugen
    for search,replace in pairs({ ['SURVIVAL TEST'] = '', ['Seecret Friday Update '] = 'SF', ['Seecret Saturday '] = 'SS' }) do
        nBeginn, nEnde = mw.ustring.find(version, search,0,true)
        if nBeginn ~= nil then
            version = version:gsub(search, replace)
            break
        end
    end

    -- 

    -- Und jetzt die Versionsnummer an den Link tackern, wenn wir schon einen haben.
    if link ~= '' then
        link = link .. version
    end

    -- Jetzt folgt die Überprüfung einiger "spezieller Versionsnamen", die eine eigene Weiterleitung auf
    -- die richtige Seite haben
    if link == '' then
        for index,code in pairs({ 'Preview', 'Prerelease', 'Pre-release', 'pre', 'Pre', 'rc', 'RC' }) do
            nBeginn, nEnde = mw.ustring.find(version, code,0,true)
            if nBeginn ~= nil then
                link = version
                break
            end
        end
    end

    -- Versionsnummern wie '13w05a' haben - wie die zuvor betrachteten Versionsnamen - direkte Weiterleitungen
    if link == '' then
        if version:sub(3,3) == 'w' then
            link = version
        end
    end
    
    -- Pocket Edition builds haben, wie Snapshots, eigene Weiterleitungsseiten.
    if link == '' then
        if string.match(version, '[0-9%.]+ alpha build %d+') ~= nil then
            link = version
        end
        if string.match(version, '[0-9%.]+ beta build %d+') ~= nil then
            link = version
        end
        if string.match(version, '[0-9%.]+ build %d+') ~= nil then
            link = version:gsub("build", "alpha build")
        end
    end
    
    -- Hier ausstehend: Links auf 'Pre' oder lowercase 'Test' (-> Classic)

    -- Der Rest sind Vollversions-Nummern, deren Weiterleitung mit dem Wort "Vollversion" beginnt
    if link == '' then
      link = 'Vollversion ' .. version
    end

    return '[[' .. link .. '|' .. text .. ']]'
end

return p