Moduł:Dźwięki: Różnice pomiędzy wersjami

Z Minecraft Wiki Polska
Przejdź do nawigacji Przejdź do wyszukiwania
[wersja przejrzana][wersja przejrzana]
Nie podano opisu zmian
Nie podano opisu zmian
Linia 1: Linia 1:
local p = {}
local p = {}
local data = mw.loadData( mw.getCurrentFrame():getTitle() .. '/Dane' )
 
local success, data = pcall(mw.loadData, mw.getCurrentFrame():getTitle() .. '/Dane')


local function renderTable(editionName, editionData, displayTitle, icon)
local function renderTable(editionName, editionData, displayTitle, icon)
     if not editionData or #editionData == 0 then return "" end
     if not editionData or type(editionData) ~= "table" or #editionData == 0 then  
        return ""  
    end


     local root = mw.html.create('table')
     local root = mw.html.create('table')
Linia 10: Linia 13:
         :css('font-size', '0.9em')
         :css('font-size', '0.9em')


    -- Nagłówek z ikoną i nazwą
     local iconWiki = (icon and icon ~= "") and ('[[Plik:' .. icon .. '|20px|link=]] ') or ""
     local iconWiki = icon and ('[[File:' .. icon .. '|20px|link=]] ') or ""
     root:tag('tr')
     root:tag('tr')
         :tag('th')
         :tag('th')
Linia 17: Linia 19:
             :wikitext(iconWiki .. displayTitle .. ' sound type')
             :wikitext(iconWiki .. displayTitle .. ' sound type')


    -- Nagłówki kolumn
     local subHeader = root:tag('tr')
     local subHeader = root:tag('tr')
     subHeader:tag('th'):wikitext('Sound'):done()
     local headers = {"Sound", "Closed captions", "Source", "Description", "Identifier", "Translation key", "Volume", "Pitch"}
    subHeader:tag('th'):wikitext('Closed captions'):done()
     if editionName == 'Java Edition' then table.insert(headers, "Attenuation distance") end
    subHeader:tag('th'):wikitext('Source'):done()
   
    subHeader:tag('th'):wikitext('Description'):done()
    for _, h in ipairs(headers) do
    subHeader:tag('th'):wikitext('Identifier'):done()
         subHeader:tag('th'):wikitext(h):done()
    subHeader:tag('th'):wikitext('Translation key'):done()
    subHeader:tag('th'):wikitext('Volume'):done()
    subHeader:tag('th'):wikitext('Pitch'):done()
     if editionName == 'Java Edition' then
         subHeader:tag('th'):wikitext('Distance'):done()
     end
     end


    -- Wiersze danych
     for _, group in ipairs(editionData) do
     for _, group in ipairs(editionData) do
         local rowCount = #group.zdarzenia
         local rowCount = #group.zdarzenia
         for i, row in ipairs(group.zdarzenia) do
         for i, row in ipairs(group.zdarzenia) do
             local tr = root:tag('tr')
             local tr = root:tag('tr')
           
             if i == 1 then
             if i == 1 then
                 local soundCell = tr:tag('td'):attr('rowspan', rowCount):css('text-align', 'center'):css('vertical-align', 'middle')
                 local soundCell = tr:tag('td'):attr('rowspan', rowCount):css('text-align', 'center'):css('vertical-align', 'middle')
                 for _, file in ipairs(group.pliki) do
                 if group.pliki then
                    soundCell:wikitext('[[File:Sound-icon.png|16px|link=File:' .. file .. ']] ')
                    for _, file in ipairs(group.pliki) do
                        soundCell:wikitext('[[Plik:Sound-icon.png|16px|link=Plik:' .. file .. ']] ')
                    end
                 end
                 end
             end
             end
             tr:tag('td'):wikitext(row.captions):done()
           
             tr:tag('td'):wikitext(row.source):done()
             tr:tag('td'):wikitext(row.captions or "?"):done()
             tr:tag('td'):wikitext(row.desc):done()
             tr:tag('td'):wikitext(row.source or ""):done()
             tr:tag('td'):tag('code'):wikitext(row.id):done():done()
             tr:tag('td'):wikitext(row.desc or ""):done()
             tr:tag('td'):tag('code'):wikitext(row.key):done():done()
             tr:tag('td'):tag('code'):wikitext(row.id or ""):done():done()
             tr:tag('td'):wikitext(row.vol):done()
             tr:tag('td'):tag('code'):wikitext(row.key or ""):done():done()
             tr:tag('td'):wikitext(row.pitch):done()
             tr:tag('td'):wikitext(row.vol or ""):done()
             tr:tag('td'):wikitext(row.pitch or ""):done()
             if editionName == 'Java Edition' then
             if editionName == 'Java Edition' then
                 tr:tag('td'):wikitext(row.dist):done()
                 tr:tag('td'):wikitext(row.dist or ""):done()
             end
             end
         end
         end
     end
     end


     local link = '[[' .. editionName .. '|' .. editionName .. ']]:'
     local linkLabel = "'''[[" .. editionName .. "]]:'''"
     return '<p>\'\'\'' .. link .. '\'\'\'</p>' .. tostring(root)
     return '<p>' .. linkLabel .. '</p>' .. tostring(root)
end
end


function p.main(frame)
function p.main(frame)
    if not success then return '<span class="error">Błąd: Nie znaleziono modułu danych obok tego skryptu.</span>' end
     local args = frame:getParent().args
     local args = frame:getParent().args
     local id = args[1]
     local id = args[1]
     local nazwa = args[2] or id
     local nazwa = args[2] or id
     local wersja = string.lower(args[3] or "") -- java, bedrock lub puste
     local wersja = string.lower(args[3] or "")
      
      
     local blockData = data[id]
     local blockData = data[id]
     if not blockData then return '<span class="error">Brak danych dla ID: ' .. id .. '</span>' end
     if not blockData then  
        return '<span class="error">Błąd: Brak klucza "' .. (id or "nil") .. '" w bazie danych.</span>'  
    end


     local output = ""
     local output = ""
      
      
    -- Logika wyboru wersji
     if wersja == "java" then
     if wersja == "java" then
         output = renderTable('Java Edition', blockData.java, nazwa, blockData.ikona)
         output = renderTable('Java Edition', blockData.java, nazwa, blockData.ikona)
Linia 76: Linia 78:
         output = renderTable('Bedrock Edition', blockData.bedrock, nazwa, blockData.ikona)
         output = renderTable('Bedrock Edition', blockData.bedrock, nazwa, blockData.ikona)
     else
     else
         -- Jeśli parametr pusty, pokaż obie
         local javaRes = renderTable('Java Edition', blockData.java, nazwa, blockData.ikona)
        output = renderTable('Java Edition', blockData.java, nazwa, blockData.ikona)
         local bedrockRes = renderTable('Bedrock Edition', blockData.bedrock, nazwa, blockData.ikona)
         output = output .. renderTable('Bedrock Edition', blockData.bedrock, nazwa, blockData.ikona)
        output = javaRes .. bedrockRes
     end
     end



Wersja z 20:58, 3 sty 2026

[ 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 success, data = pcall(mw.loadData, mw.getCurrentFrame():getTitle() .. '/Dane')

local function renderTable(editionName, editionData, displayTitle, icon)
    if not editionData or type(editionData) ~= "table" or #editionData == 0 then 
        return "" 
    end

    local root = mw.html.create('table')
        :addClass('wikitable sound-table mw-collapsible mw-collapsed')
        :css('width', '100%')
        :css('font-size', '0.9em')

    local iconWiki = (icon and icon ~= "") and ('[[Plik:' .. icon .. '|20px|link=]] ') or ""
    root:tag('tr')
        :tag('th')
            :attr('colspan', editionName == 'Java Edition' and '9' or '8')
            :wikitext(iconWiki .. displayTitle .. ' sound type')

    local subHeader = root:tag('tr')
    local headers = {"Sound", "Closed captions", "Source", "Description", "Identifier", "Translation key", "Volume", "Pitch"}
    if editionName == 'Java Edition' then table.insert(headers, "Attenuation distance") end
    
    for _, h in ipairs(headers) do
        subHeader:tag('th'):wikitext(h):done()
    end

    for _, group in ipairs(editionData) do
        local rowCount = #group.zdarzenia
        for i, row in ipairs(group.zdarzenia) do
            local tr = root:tag('tr')
            
            if i == 1 then
                local soundCell = tr:tag('td'):attr('rowspan', rowCount):css('text-align', 'center'):css('vertical-align', 'middle')
                if group.pliki then
                    for _, file in ipairs(group.pliki) do
                        soundCell:wikitext('[[Plik:Sound-icon.png|16px|link=Plik:' .. file .. ']] ')
                    end
                end
            end
            
            tr:tag('td'):wikitext(row.captions or "?"):done()
            tr:tag('td'):wikitext(row.source or ""):done()
            tr:tag('td'):wikitext(row.desc or ""):done()
            tr:tag('td'):tag('code'):wikitext(row.id or ""):done():done()
            tr:tag('td'):tag('code'):wikitext(row.key or ""):done():done()
            tr:tag('td'):wikitext(row.vol or ""):done()
            tr:tag('td'):wikitext(row.pitch or ""):done()
            if editionName == 'Java Edition' then
                tr:tag('td'):wikitext(row.dist or ""):done()
            end
        end
    end

    local linkLabel = "'''[[" .. editionName .. "]]:'''"
    return '<p>' .. linkLabel .. '</p>' .. tostring(root)
end

function p.main(frame)
    if not success then return '<span class="error">Błąd: Nie znaleziono modułu danych obok tego skryptu.</span>' end

    local args = frame:getParent().args
    local id = args[1]
    local nazwa = args[2] or id
    local wersja = string.lower(args[3] or "")
    
    local blockData = data[id]
    if not blockData then 
        return '<span class="error">Błąd: Brak klucza "' .. (id or "nil") .. '" w bazie danych.</span>' 
    end

    local output = ""
    
    if wersja == "java" then
        output = renderTable('Java Edition', blockData.java, nazwa, blockData.ikona)
    elseif wersja == "bedrock" then
        output = renderTable('Bedrock Edition', blockData.bedrock, nazwa, blockData.ikona)
    else
        local javaRes = renderTable('Java Edition', blockData.java, nazwa, blockData.ikona)
        local bedrockRes = renderTable('Bedrock Edition', blockData.bedrock, nazwa, blockData.ikona)
        output = javaRes .. bedrockRes
    end

    return output
end

return p