Moduł:Advancement: Różnice pomiędzy wersjami

Z Minecraft Wiki Polska
Przejdź do nawigacji Przejdź do wyszukiwania
[wersja przejrzana][wersja przejrzana]
Podstawa pod szablon dla osiągnięć Java, który docelowo ma zastąpić Szablon:Postępy (łatwiejsza edycja i implementacja)
 
Nie podano opisu zmian
 
(Nie pokazano 8 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 1: Linia 1:
local p = {}
local p = {}


local advancementData = mw.loadData('Moduł:Advancements/dane')
local advancementData = mw.loadData('Moduł:Advancement/Dane')


function p.render(frame)
function p.render(frame)
Linia 9: Linia 9:
     local achievementsToShow = {}
     local achievementsToShow = {}
     local seen = {}
     local seen = {}
   
     local expSprite = ""
     local expSprite = ""


Linia 18: Linia 17:
         end
         end
     end
     end


     for part in string.gmatch(args, "([^;]+)") do
     for part in string.gmatch(args, "([^;]+)") do
         part = mw.text.trim(part)
         part = mw.text.trim(part)
       
         if part:sub(1, 9) == "Category:" then
         if part:sub(1, 9) == "Category:" then
             local targetCat = part:sub(10)
             local targetCat = part:sub(10)
            -- mw.loadData pozwala na iterację przez pairs
             for name, data in pairs(advancementData) do
             for name, data in pairs(advancementData) do
                 if data.category == targetCat then addAchievement(name) end
                 if data.category == targetCat then addAchievement(name) end
Linia 35: Linia 31:
         end
         end
     end
     end


     local groups = {}
     local groups = {}
Linia 49: Linia 44:


     if #categoryOrder == 0 then return "" end
     if #categoryOrder == 0 then return "" end


     local root = mw.html.create("table")
     local root = mw.html.create("table")
         :addClass("wikitable advancement-table") -- Dodatkowa klasa CSS do ewentualnej stylizacji
         :addClass("wikitable advancement-table")
         :css("width", "100%")
         :css("width", "100%")


     for _, catName in ipairs(categoryOrder) do
     for _, catName in ipairs(categoryOrder) do
        -- Nagłówek kategorii
         root:tag("tr")
         root:tag("tr")
             :tag("th"):attr("colspan", "6")
             :tag("th"):attr("colspan", "7") -- Zmieniono na 7 kolumn
                 :css("background", "#202122"):css("color", "white"):css("padding", "8px")
                 :css("background", "#202122"):css("color", "white"):css("padding", "8px")
                 :wikitext("📁 " .. catName)
                 :wikitext(catName)
       
 
         local h = root:tag("tr"):css("background", "#eaecf0"):css("font-size", "90%")
         local h = root:tag("tr"):css("background", "#eaecf0"):css("font-size", "90%")
         h:tag("th"):wikitext("Osiągnięcie")
         h:tag("th"):wikitext("Ikona")
        h:tag("th"):wikitext("Nazwa")
         h:tag("th"):wikitext("Opis w grze")
         h:tag("th"):wikitext("Opis w grze")
         h:tag("th"):wikitext("Rodzic")
         h:tag("th"):wikitext("Nadrzędne")
         h:tag("th"):wikitext("Wymagania")
         h:tag("th"):wikitext("Wymagania")
         h:tag("th"):wikitext("Lokalizacja")
         h:tag("th"):wikitext("Lokalizacja")
         h:tag("th"):wikitext("Nagrody")
         h:tag("th"):wikitext("Nagroda")


         for _, name in ipairs(groups[catName]) do
         for _, name in ipairs(groups[catName]) do
             local item = advancementData[name]
             local item = advancementData[name]
             local row = root:tag("tr")
             local row = root:tag("tr")
              
 
             local iconHtml = frame:preprocess('{{Postęp|' .. item.icon .. '|plain|raw}}')
             local iType = item.icon_type or "plain"
             row:tag("td"):wikitext(iconHtml .. " '''" .. name .. "'''")
             local iconHtml = frame:preprocess('{{Postęp|' .. item.icon .. '|' .. iType .. '|raw}}')
           
             row:tag("td"):wikitext(iconHtml)
 
          row:tag("td"):css("font-weight", "bold"):wikitext(item.title or "")
 
             row:tag("td"):wikitext(item.game_desc)
             row:tag("td"):wikitext(item.game_desc)
             row:tag("td"):wikitext(item.parent)
             row:tag("td"):wikitext(item.parent)
             row:tag("td"):wikitext(item.wiki_desc)
             row:tag("td"):wikitext(item.wiki_desc)
           
 
             row:tag("td"):tag("code"):css("font-size", "85%"):wikitext(item.resource)
             row:tag("td"):tag("code"):css("font-size", "85%"):wikitext(item.resource)
           
 
             local rewardCell = row:tag("td")
             local rewardCell = row:tag("td")
             if item.reward == "-" or item.reward == "—" then
             if item.reward == "-" or item.reward == "—" then

Aktualna wersja na dzień 01:57, 27 gru 2025

[ utwórz | historia | odśwież ]Dokumentacja
W tym module nie ma dokumentacji. Jeśli wiesz jak używać tego modułu, proszę, podaj odpowiednie informacje.
local p = {}

local advancementData = mw.loadData('Moduł:Advancement/Dane')

function p.render(frame)
    local args = frame.args[1] or ""
    if args == "" then return "" end

    local achievementsToShow = {}
    local seen = {}
    local expSprite = ""

    local function addAchievement(name)
        if advancementData[name] and not seen[name] then
            table.insert(achievementsToShow, name)
            seen[name] = true
        end
    end

    for part in string.gmatch(args, "([^;]+)") do
        part = mw.text.trim(part)
        if part:sub(1, 9) == "Category:" then
            local targetCat = part:sub(10)
            for name, data in pairs(advancementData) do
                if data.category == targetCat then addAchievement(name) end
            end
        elseif part == "ALL" then
            for name, _ in pairs(advancementData) do addAchievement(name) end
        else
            addAchievement(part)
        end
    end

    local groups = {}
    local categoryOrder = {}
    for _, name in ipairs(achievementsToShow) do
        local cat = advancementData[name].category
        if not groups[cat] then
            groups[cat] = {}
            table.insert(categoryOrder, cat)
        end
        table.insert(groups[cat], name)
    end

    if #categoryOrder == 0 then return "" end

    local root = mw.html.create("table")
        :addClass("wikitable advancement-table")
        :css("width", "100%")

    for _, catName in ipairs(categoryOrder) do
        -- Nagłówek kategorii
        root:tag("tr")
            :tag("th"):attr("colspan", "7") -- Zmieniono na 7 kolumn
                :css("background", "#202122"):css("color", "white"):css("padding", "8px")
                :wikitext(catName)

        local h = root:tag("tr"):css("background", "#eaecf0"):css("font-size", "90%")
        h:tag("th"):wikitext("Ikona")
        h:tag("th"):wikitext("Nazwa")
        h:tag("th"):wikitext("Opis w grze")
        h:tag("th"):wikitext("Nadrzędne")
        h:tag("th"):wikitext("Wymagania")
        h:tag("th"):wikitext("Lokalizacja")
        h:tag("th"):wikitext("Nagroda")

        for _, name in ipairs(groups[catName]) do
            local item = advancementData[name]
            local row = root:tag("tr")

            local iType = item.icon_type or "plain"
            local iconHtml = frame:preprocess('{{Postęp|' .. item.icon .. '|' .. iType .. '|raw}}')
            row:tag("td"):wikitext(iconHtml)

           row:tag("td"):css("font-weight", "bold"):wikitext(item.title or "—")

            row:tag("td"):wikitext(item.game_desc)

            row:tag("td"):wikitext(item.parent)

            row:tag("td"):wikitext(item.wiki_desc)

            row:tag("td"):tag("code"):css("font-size", "85%"):wikitext(item.resource)

            local rewardCell = row:tag("td")
            if item.reward == "-" or item.reward == "—" then
                rewardCell:css("text-align", "center"):wikitext("—")
            else
                if expSprite == "" then
                    expSprite = frame:preprocess('{{EntitySprite|kula-doświadczenia}}')
                end
                rewardCell:wikitext(expSprite .. " " .. item.reward)
            end
        end
    end

    return tostring(root)
end

return p