<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://sls.wiki/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3AAutolink</id>
	<title>模块:Autolink - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://sls.wiki/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3AAutolink"/>
	<link rel="alternate" type="text/html" href="https://sls.wiki/index.php?title=%E6%A8%A1%E5%9D%97:Autolink&amp;action=history"/>
	<updated>2026-05-03T20:51:02Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://sls.wiki/index.php?title=%E6%A8%A1%E5%9D%97:Autolink&amp;diff=1037&amp;oldid=prev</id>
		<title>Kesager：​导入1个版本</title>
		<link rel="alternate" type="text/html" href="https://sls.wiki/index.php?title=%E6%A8%A1%E5%9D%97:Autolink&amp;diff=1037&amp;oldid=prev"/>
		<updated>2022-10-06T08:18:44Z</updated>

		<summary type="html">&lt;p&gt;导入1个版本&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2022年10月6日 (四) 16:18的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;zh-Hans-CN&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;（没有差异）&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wiki:diff:1.41:old-1036:rev-1037 --&gt;
&lt;/table&gt;</summary>
		<author><name>Kesager</name></author>
	</entry>
	<entry>
		<id>https://sls.wiki/index.php?title=%E6%A8%A1%E5%9D%97:Autolink&amp;diff=1036&amp;oldid=prev</id>
		<title>2022年5月10日 (二) 17:02 SJMC&gt;ART1st</title>
		<link rel="alternate" type="text/html" href="https://sls.wiki/index.php?title=%E6%A8%A1%E5%9D%97:Autolink&amp;diff=1036&amp;oldid=prev"/>
		<updated>2022-05-10T17:02:41Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local default_interwiki = &amp;#039;mcw&amp;#039;&lt;br /&gt;
local self_interwiki = &amp;#039;self&amp;#039;&lt;br /&gt;
local block = mw.loadData( &amp;#039;Module:Autolink/Block&amp;#039; )&lt;br /&gt;
local item = mw.loadData( &amp;#039;Module:Autolink/Item&amp;#039; )&lt;br /&gt;
local other = mw.loadData( &amp;#039;Module:Autolink/Other&amp;#039; )&lt;br /&gt;
local exclusive = mw.loadData( &amp;#039;Module:Autolink/Exclusive&amp;#039; )&lt;br /&gt;
local earth = mw.loadData( &amp;#039;Module:Autolink/Earth&amp;#039; )&lt;br /&gt;
local dungeons = mw.loadData( &amp;#039;Module:Autolink/Dungeons&amp;#039; )&lt;br /&gt;
local modthing = mw.loadData( &amp;#039;Module:Autolink/Mod&amp;#039; )&lt;br /&gt;
local colors = {&lt;br /&gt;
	[&amp;#039;black &amp;#039;] = &amp;#039;黑色&amp;#039;,&lt;br /&gt;
	[&amp;#039;blue &amp;#039;] = &amp;#039;蓝色&amp;#039;,&lt;br /&gt;
	[&amp;#039;brown &amp;#039;] = &amp;#039;棕色&amp;#039;,&lt;br /&gt;
	[&amp;#039;cyan &amp;#039;] = &amp;#039;青色&amp;#039;,&lt;br /&gt;
	[&amp;#039;gray &amp;#039;] = &amp;#039;灰色&amp;#039;,&lt;br /&gt;
	[&amp;#039;green &amp;#039;] = &amp;#039;绿色&amp;#039;,&lt;br /&gt;
	[&amp;#039;light blue &amp;#039;] = &amp;#039;淡蓝色&amp;#039;,&lt;br /&gt;
	[&amp;#039;light gray &amp;#039;] = &amp;#039;淡灰色&amp;#039;,&lt;br /&gt;
	[&amp;#039;lime &amp;#039;] = &amp;#039;黄绿色&amp;#039;,&lt;br /&gt;
	[&amp;#039;magenta &amp;#039;] = &amp;#039;品红色&amp;#039;,&lt;br /&gt;
	[&amp;#039;orange &amp;#039;] = &amp;#039;橙色&amp;#039;,&lt;br /&gt;
	[&amp;#039;pink &amp;#039;] = &amp;#039;粉红色&amp;#039;,&lt;br /&gt;
	[&amp;#039;purple &amp;#039;] = &amp;#039;紫色&amp;#039;,&lt;br /&gt;
	[&amp;#039;red &amp;#039;] = &amp;#039;红色&amp;#039;,&lt;br /&gt;
	[&amp;#039;silver &amp;#039;] = &amp;#039;淡灰色&amp;#039;,&lt;br /&gt;
	[&amp;#039;white &amp;#039;] = &amp;#039;白色&amp;#039;,&lt;br /&gt;
	[&amp;#039;yellow &amp;#039;] = &amp;#039;黄色&amp;#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function Set(list)&lt;br /&gt;
	local set = {}&lt;br /&gt;
	for _, l in ipairs(list) do set[l] = true end&lt;br /&gt;
	return set&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local coloredItems = Set { &amp;#039;firework star&amp;#039;, &amp;#039;hardened clay&amp;#039;, &amp;#039;stained clay&amp;#039;, &amp;#039;banner&amp;#039;, &amp;#039;carpet&amp;#039;, &amp;#039;concrete&amp;#039;,&lt;br /&gt;
	&amp;#039;concrete powder&amp;#039;, &amp;#039;glazed terracotta&amp;#039;, &amp;#039;terracotta&amp;#039;, &amp;#039;shield&amp;#039;, &amp;#039;shulker box&amp;#039;, &amp;#039;stained glass&amp;#039;,&lt;br /&gt;
	&amp;#039;stained glass pane&amp;#039;, &amp;#039;wool&amp;#039;, &amp;#039;bed&amp;#039;, &amp;#039;hardened glass&amp;#039;, &amp;#039;hardened stained glass&amp;#039;, &amp;#039;balloon&amp;#039;,&lt;br /&gt;
	&amp;#039;glow stick&amp;#039;, &amp;#039;hardened glass pane&amp;#039;, &amp;#039;hardened glass&amp;#039;, &amp;#039;sparkler&amp;#039;, &amp;#039;candle&amp;#039; }&lt;br /&gt;
&lt;br /&gt;
-- used by templates, called via #invoke&lt;br /&gt;
function p.link( f )&lt;br /&gt;
	local args = f&lt;br /&gt;
	if f == mw.getCurrentFrame() then&lt;br /&gt;
		args = require( &amp;#039;Module:ProcessArgs&amp;#039; ).merge( true )&lt;br /&gt;
	end&lt;br /&gt;
	return p.invlink( args[1] , args[2] , args[3] )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.invlink( str, mode, type )&lt;br /&gt;
	local arg = str:gsub(&amp;#039;-&amp;#039;, &amp;#039; &amp;#039;):lower()&lt;br /&gt;
	-- check for spawn egg&lt;br /&gt;
	if arg:find(&amp;#039; spawn egg$&amp;#039;) then&lt;br /&gt;
		local mob = other[&amp;#039;EntitySprite&amp;#039;][arg:sub(0, -11)]&lt;br /&gt;
		if mob == nil then&lt;br /&gt;
			error(&amp;#039;missing mob entry: &amp;#039; .. arg:sub(0, -11))&lt;br /&gt;
		end&lt;br /&gt;
		local index = mob:find(&amp;#039;|&amp;#039;)&lt;br /&gt;
		if index then&lt;br /&gt;
			mob = mob:sub(index + 1)&lt;br /&gt;
		end&lt;br /&gt;
		return p.mode(&amp;#039;刷怪蛋|&amp;#039; .. mob .. &amp;#039;刷怪蛋&amp;#039;, mode)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local be&lt;br /&gt;
	local lce&lt;br /&gt;
	-- check for version suffix&lt;br /&gt;
	if arg:find(&amp;#039; pe$&amp;#039;) or arg:find(&amp;#039; be$&amp;#039;) then&lt;br /&gt;
		be = 1&lt;br /&gt;
		arg = arg:sub(0, -4)&lt;br /&gt;
	end&lt;br /&gt;
	if arg:find(&amp;#039; lce$&amp;#039;) then&lt;br /&gt;
		lce = 1&lt;br /&gt;
		arg = arg:sub(0, -5)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- check for &amp;#039;spawn&amp;#039;&lt;br /&gt;
	if arg:find(&amp;#039;^spawn &amp;#039;) then&lt;br /&gt;
		local mob = other[&amp;#039;EntitySprite&amp;#039;][arg:sub(7)]&lt;br /&gt;
		if mob then&lt;br /&gt;
			local index = mob:find(&amp;#039;|&amp;#039;)&lt;br /&gt;
			if index then&lt;br /&gt;
				mob = mob:sub(index + 1)&lt;br /&gt;
			end&lt;br /&gt;
			local name = &amp;#039;刷怪蛋|生成&amp;#039; .. mob&lt;br /&gt;
			if be then&lt;br /&gt;
				return p.mode(name, mode, &amp;#039;（基岩版）&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
			if lce then&lt;br /&gt;
				return p.mode(name, mode, &amp;#039;（原主机版）&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
			return p.mode(name, mode)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- check for color prefix&lt;br /&gt;
	local color&lt;br /&gt;
	for k, v in pairs( colors ) do&lt;br /&gt;
		if arg:find(k) == 1 then&lt;br /&gt;
			local i = arg:sub(k:len() + 1)&lt;br /&gt;
			if coloredItems[i] then&lt;br /&gt;
				color = v&lt;br /&gt;
				arg = i&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local result&lt;br /&gt;
	if type and other[type] then&lt;br /&gt;
		result = other[type][arg]&lt;br /&gt;
	end&lt;br /&gt;
	if result == nil and type and earth[type] then&lt;br /&gt;
		result = earth[type][arg]&lt;br /&gt;
	end&lt;br /&gt;
	if result == nil and type and dungeons[type] then&lt;br /&gt;
		result = dungeons[type][arg]&lt;br /&gt;
	end&lt;br /&gt;
	if result == nil and type and type == &amp;#039;ItemSprite&amp;#039; then&lt;br /&gt;
		result = item[arg]&lt;br /&gt;
	end&lt;br /&gt;
	if result == nil then&lt;br /&gt;
		result = block[arg] or item[arg]&lt;br /&gt;
	end&lt;br /&gt;
	if result == nil and arg:sub(-1) == &amp;#039;s&amp;#039; then&lt;br /&gt;
		local singular = arg:sub(0, -2)&lt;br /&gt;
		result = block[singular] or item[singular]&lt;br /&gt;
	end&lt;br /&gt;
	if result == nil then&lt;br /&gt;
		for _, list in pairs( other ) do&lt;br /&gt;
			result = list[arg]&lt;br /&gt;
			if result then&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if result == nil then&lt;br /&gt;
		for _, list in pairs( dungeons ) do&lt;br /&gt;
			result = list[arg]&lt;br /&gt;
			if result then&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if result == nil then&lt;br /&gt;
		result = exclusive[arg] or str&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if result == nil then&lt;br /&gt;
		result = modthing[arg] or str&lt;br /&gt;
		return p.mode(result, mode)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if color then&lt;br /&gt;
		result = result .. &amp;#039;|&amp;#039; .. color .. result&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if be then&lt;br /&gt;
		return p.mode(result, mode, &amp;#039;（基岩版）&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if lce then&lt;br /&gt;
		return p.mode(result, mode, &amp;#039;（原主机版）&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return p.mode(result, mode)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.mode( str, mode, suffix, interwiki )&lt;br /&gt;
	if suffix then&lt;br /&gt;
		if str:find(&amp;#039;|&amp;#039;) then&lt;br /&gt;
			str = str .. suffix&lt;br /&gt;
		else&lt;br /&gt;
			str = str .. &amp;#039;|&amp;#039; .. str .. suffix&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if interwiki then&lt;br /&gt;
		if not (interwiki == self_interwiki) then&lt;br /&gt;
			if str:find(&amp;#039;|&amp;#039;) then&lt;br /&gt;
				str = interwiki .. &amp;#039;:&amp;#039; .. str&lt;br /&gt;
			else&lt;br /&gt;
				str = interwiki .. &amp;#039;:&amp;#039; .. str .. &amp;#039;|&amp;#039; .. str&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if str:find(&amp;#039;|&amp;#039;) then&lt;br /&gt;
			str = default_interwiki .. &amp;#039;:&amp;#039; .. str&lt;br /&gt;
		else&lt;br /&gt;
			str = default_interwiki .. &amp;#039;:&amp;#039; .. str .. &amp;#039;|&amp;#039; .. str&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local index = str:find(&amp;#039;|&amp;#039;)&lt;br /&gt;
	-- return the translated part&lt;br /&gt;
	if index then&lt;br /&gt;
		if mode == &amp;#039;nolink&amp;#039; then&lt;br /&gt;
			return str:sub(index + 1)&lt;br /&gt;
		end&lt;br /&gt;
		-- return the page link part&lt;br /&gt;
		if mode == &amp;#039;linkonly&amp;#039; then&lt;br /&gt;
			return str:sub(1, index - 1)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- list out all entries with the type&lt;br /&gt;
function p.list( f )&lt;br /&gt;
	local args = f&lt;br /&gt;
	if f == mw.getCurrentFrame() then&lt;br /&gt;
		args = require( &amp;#039;Module:ProcessArgs&amp;#039; ).merge( true )&lt;br /&gt;
	end&lt;br /&gt;
	local type = args[1]&lt;br /&gt;
	type = type:lower()&lt;br /&gt;
	local sprite = nil&lt;br /&gt;
	local list = nil&lt;br /&gt;
	if type == &amp;#039;block&amp;#039; then&lt;br /&gt;
		list = block&lt;br /&gt;
		sprite = &amp;#039;BlockSprite&amp;#039;&lt;br /&gt;
	elseif type == &amp;#039;item&amp;#039; then&lt;br /&gt;
		list = item&lt;br /&gt;
		sprite = &amp;#039;ItemSprite&amp;#039;&lt;br /&gt;
	elseif type == &amp;#039;entity&amp;#039; then&lt;br /&gt;
		list = other[&amp;#039;EntitySprite&amp;#039;]&lt;br /&gt;
		sprite = &amp;#039;EntitySprite&amp;#039;&lt;br /&gt;
	elseif type == &amp;#039;dungeonsitem&amp;#039; then&lt;br /&gt;
		list = dungeons[&amp;#039;DungeonsItemSprite&amp;#039;]&lt;br /&gt;
		sprite = &amp;#039;DungeonsItemSprite&amp;#039;&lt;br /&gt;
	elseif type == &amp;#039;dungeonsentity&amp;#039; then&lt;br /&gt;
		list = dungeons[&amp;#039;DungeonsEntitySprite&amp;#039;]&lt;br /&gt;
		sprite = &amp;#039;DungeonsEntitySprite&amp;#039;&lt;br /&gt;
	elseif type == &amp;#039;dungeonsenchantment&amp;#039; then&lt;br /&gt;
		list = dungeons[&amp;#039;DungeonsEnchantmentSprite&amp;#039;]&lt;br /&gt;
		sprite = &amp;#039;DungeonsEnchantmentSprite&amp;#039;&lt;br /&gt;
	elseif type == &amp;#039;dungeonslevel&amp;#039; then&lt;br /&gt;
		list = dungeons[&amp;#039;DungeonsLevelSprite&amp;#039;]&lt;br /&gt;
		sprite = &amp;#039;DungeonsLevelSprite&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if list == nil then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local spriteids = mw.loadData( &amp;#039;Module:&amp;#039; .. sprite ).ids&lt;br /&gt;
&lt;br /&gt;
	local result = &amp;#039;&amp;#039;&lt;br /&gt;
	local t = {}&lt;br /&gt;
&lt;br /&gt;
	for k, _ in pairs(list) do&lt;br /&gt;
		table.insert(t, k)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table.sort(t)&lt;br /&gt;
&lt;br /&gt;
	local limit = 50&lt;br /&gt;
	local count = 0&lt;br /&gt;
&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
&lt;br /&gt;
	local itemlist = nil&lt;br /&gt;
	local header = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	header:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;图标&amp;#039;)&lt;br /&gt;
	header:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;英文名称&amp;#039;)&lt;br /&gt;
	header:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;中文名称&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	for _, v in ipairs(t) do&lt;br /&gt;
		if count == 0 then&lt;br /&gt;
			if itemlist ~= nil then&lt;br /&gt;
				result = result .. tostring(itemlist)&lt;br /&gt;
			end&lt;br /&gt;
			itemlist = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
				:addClass(&amp;#039;data-table&amp;#039;)&lt;br /&gt;
				:node(header)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local row = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		if spriteids[v] or spriteids[mw.ustring.lower( v ):gsub( &amp;#039;[%s%+]&amp;#039;, &amp;#039;-&amp;#039; )] then&lt;br /&gt;
			row:tag(&amp;#039;td&amp;#039;):wikitext(frame:expandTemplate{ title = sprite, args = { v } })&lt;br /&gt;
		else&lt;br /&gt;
			row:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		local words = {}&lt;br /&gt;
		v:gsub(&amp;#039;[^%s]+&amp;#039;, function(w) table.insert(words, w) end)&lt;br /&gt;
		for k, w in ipairs(words) do&lt;br /&gt;
			if w ~= &amp;#039;of&amp;#039; and w ~= &amp;#039;or&amp;#039; and w ~= &amp;#039;o\&amp;#039;&amp;#039; then&lt;br /&gt;
				words[k] = w:gsub(&amp;#039;(%l)(.+)&amp;#039;, function(a, b) return a:upper() .. b end)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		row:tag(&amp;#039;td&amp;#039;):wikitext(tostring(table.concat(words, &amp;#039; &amp;#039;)))&lt;br /&gt;
		row:tag(&amp;#039;td&amp;#039;):wikitext(p.mode(list[v], &amp;#039;nolink&amp;#039;))&lt;br /&gt;
		itemlist:node(row)&lt;br /&gt;
		count = count + 1&lt;br /&gt;
		if count == limit then&lt;br /&gt;
			count = 0&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	result = result .. tostring(itemlist)&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>SJMC&gt;ART1st</name></author>
	</entry>
</feed>