Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Style guide
Special
uploadwizard
Languages
Language links are at the top of the page across from the title.
BTA-Mirror
Search
Search
English
Create account
Log in
Personal tools
Dark mode
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Module:Inventory slot
Module
Discussion
English
Read
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Get shortened URL
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local p = {} function p.formatDescription(description, preferredLineLength) local lineLength = 0 local result = "" for i = 1, #description do local c = description:sub(i, i) if c == " " then if lineLength > preferredLineLength then lineLength = 0 result = result .. "\\nΒ§8" else result = result .. c end else lineLength = lineLength + 1 result = result .. c end end return result end function p.createSlot( f ) local args = f local currentFrame = mw.getCurrentFrame() if f == currentFrame then args = require( 'Module:ProcessArgs' ).merge( true ) else f = currentFrame end local aliases = require( "Module:Inventory slot/aliases" ).aliases local descriptions = require( "Module:Inventory slot/descriptions" ).descriptions local sprite = require( "Module:Sprite" ).get local ids = mw.loadData( "Module:InvSprite" ).ids local width = args.width or 32 local height = args.height or 32 local item = args.item or "" local pageName = mw.title.getCurrentTitle().text local slotContainerCss = { "width: " .. width .. "px", "height: " .. height .. "px", "position: relative" } local slotContainer = mw.html.create( "div" ) slotContainer:addClass( "inventory-slot" ) :addClass( "animated" ) :cssText( table.concat( slotContainerCss, ";" ) ) local slotCss = { "display: inline-block", "width: 32px", "height: 32px", "position: relative", "padding: 2px" } for i, value in ipairs(p.parseString( args.item )) do local name = value.name local item = value.item local count = value.count if aliases[item] then for j, subvalue in ipairs(aliases[item]) do local display = i == j == 1 and "display: inline-block" or "display: none" -- sets display of the first element to `inline-block` and the rest to `none` -- Set name, item and description local subname = nil local subitem = nil local subdescription = nil if type(subvalue) == "string" then subname = subvalue subitem = subvalue subdescription = subvalue else subname = subvalue.name or subvalue.item subitem = subvalue.item subdescription = subvalue.description or subvalue.item end local slot = mw.html.create( "div" ) slot:addClass( "minecraft-item" ) :cssText( table.concat( slotCss, ";" ) ) :attr( "data-mctitle", (name or subname or subitem) ) if descriptions[subdescription] or descriptions[subitem] or descriptions[subname] then slot:attr( "data-mcdesc", p.formatDescription((descriptions[subdescription] or descriptions[subitem] or descriptions[subname]), 16) ) end if not subitem:match( '\.gif$' ) and not subitem:match( '\.png$' ) then slot:wikitext( sprite( { data = "InvSprite", id = subitem } ) ) end -- Set link local link = nil if args.link and args.link ~= "y" then if args.link ~= "n" then link = args.link end elseif (subname ~= pageName and subname) or args.link == "y" then link = require("Module:Inventory slot/links").links[subname] end -- Set the item count if count then local itemCount = mw.html.create( "span" ) itemCount:cssText( "position: absolute; right: 0; bottom: -2px; pointer-events: none;" ) :addClass( "c-0" ) :addClass( "shadow" ) :wikitext( count ) slot:node( itemCount ) end -- Use an image if the item ends in .gif or .png if subitem:match( '\.gif$' ) or subitem:match( '\.png$' ) then slot:wikitext( "<span class=\"sprite pixelated\" style=\"width: 32px; height: 32px;\">[[File:" .. subitem .. "|160px|link=" .. (link or "") .. "]]</span>" ) slotContainer:wikitext( tostring( slot ) ) else if link then slotContainer:wikitext( "<span style='" .. display .. "' class='no-external-icon'>" .. "[https://bta.miraheze.org/wiki/" .. link:gsub(" ", "_") .. " " .. tostring( slot ) .. "]" .. "</span>" ) else slotContainer:wikitext( "<span style='" .. display .. "'>" .. tostring( slot ) .. "</span>" ) end end end else local display = i == 1 and "display: inline-block" or "display: none" if item ~= 'Air' then local slot = mw.html.create( "div" ) slot:addClass( "minecraft-item" ) :cssText( table.concat( slotCss, ";" ) ) :attr( "data-mctitle", (name or item) ) if descriptions[item] then slot:attr( "data-mcdesc", p.formatDescription(descriptions[item], 16) ) end slot:wikitext( sprite( { data = "InvSprite", id = item } ) ) local link = nil if args.link and args.link ~= "y" then if args.link ~= "n" then link = args.link end elseif (require("Module:Inventory slot/links").links[item] ~= pageName and item) or args.link == "y" then link = require("Module:Inventory slot/links").links[item] end if count then local itemCount = mw.html.create( "span" ) itemCount:cssText( "position: absolute; right: 0; bottom: -2px; pointer-events: none;" ) :addClass( "c-0" ) :addClass( "shadow" ) :wikitext( count ) slot:node( itemCount ) end if link or (args.link and args.link ~= "y" and args.link ~= "n") then slotContainer:wikitext( "<span style='" .. display .. "' class='no-external-icon'>" .. "[https://bta.miraheze.org/wiki/" .. link:gsub(" ", "_") .. " " .. tostring( slot ) .. "]" .. "</span>" ) else slotContainer:wikitext( "<span style='" .. display .. "'>" .. tostring( slot ) .. "</span>" ) end else slotContainer:wikitext( "<span style='" .. display .. "'><!-- Air --></span>") end end end return slotContainer end p.value = { ["Steel Ingot"] = "Hello", ["Steel Ingot5"] = "Hello", ["Steel Ingot10"] = "Hello" } function p.test(value) if value == 1 then for i = 1, 1000 do if require("Module:Inventory slot/descriptions").descriptions["Steel Ingot"] then mw.log("Exists") else mw.log("Does not exist") end end else for i = 1, 101 do mw.log(mw.title.new("Steel Ingot" .. i).exists) end end end function p.parseString(input) if input then local strings = {} for str in input:gmatch("[^;]+") do table.insert(strings, str:match("^%s*(.-)%s*$")) end local result = {} for _, str in ipairs(strings) do local name, item, count = str:match("^%[(.-)%](.-),?(%d*)$") if name then table.insert(result, { name = name:gsub("^%s*(.-)%s*$", "%1"), item = item:gsub("^%s*(.-)%s*$", "%1"), count = tonumber(count) }) else item, count = str:match("(.-),?(%d*)$") table.insert(result, { name = nil, item = item:gsub("^%s*(.-)%s*$", "%1"), count = tonumber(count) }) end end return result else return {} end end return p
Summary:
Please note that all contributions to BTA-Mirror may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
BTA-Mirror:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Template link
(
edit
)
Template:Template link
(
edit
)
Template:Yesno
(
edit
)
Module:Inventory slot/doc
(
edit
)
Toggle limited content width