<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://blockland.wiki/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3ASystem_map</id>
	<title>模块:System map - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://blockland.wiki/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3ASystem_map"/>
	<link rel="alternate" type="text/html" href="https://blockland.wiki/index.php?title=%E6%A8%A1%E5%9D%97:System_map&amp;action=history"/>
	<updated>2026-11-05T18:25:37Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://blockland.wiki/index.php?title=%E6%A8%A1%E5%9D%97:System_map&amp;diff=9420&amp;oldid=prev</id>
		<title>2026年10月31日 (六) 04:43 KK</title>
		<link rel="alternate" type="text/html" href="https://blockland.wiki/index.php?title=%E6%A8%A1%E5%9D%97:System_map&amp;diff=9420&amp;oldid=prev"/>
		<updated>2026-10-31T04:43:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://blockland.wiki/index.php?title=%E6%A8%A1%E5%9D%97:System_map&amp;amp;diff=9420&amp;amp;oldid=9415&quot;&gt;显示更改&lt;/a&gt;</summary>
		<author><name>KK</name></author>
	</entry>
	<entry>
		<id>https://blockland.wiki/index.php?title=%E6%A8%A1%E5%9D%97:System_map&amp;diff=9415&amp;oldid=prev</id>
		<title>2026年10月31日 (六) 04:33 KK</title>
		<link rel="alternate" type="text/html" href="https://blockland.wiki/index.php?title=%E6%A8%A1%E5%9D%97:System_map&amp;diff=9415&amp;oldid=prev"/>
		<updated>2026-10-31T04:33:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&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;2026年10月31日 (六) 12:33的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;第1行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第1行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- 模块:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;SystemMapNavbox&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- 模块:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;System map&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- Blockland Wiki: horizontal stellar-system map, traditional Navbox data input.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- Blockland Wiki: horizontal stellar-system map, traditional Navbox data input.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- Self-contained: only Scribunto, TemplateStyles and the site&amp;#039;s existing Navbox are needed.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- Self-contained: only Scribunto, TemplateStyles and the site&amp;#039;s existing Navbox are needed.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>KK</name></author>
	</entry>
	<entry>
		<id>https://blockland.wiki/index.php?title=%E6%A8%A1%E5%9D%97:System_map&amp;diff=9411&amp;oldid=prev</id>
		<title>KK：​创建页面，内容为“-- 模块:SystemMapNavbox -- Blockland Wiki: horizontal stellar-system map, traditional Navbox data input. -- Self-contained: only Scribunto, TemplateStyles and the site&#039;s existing Navbox are needed. local p = {}  local function trim(v)     local s = tostring(v or &#039;&#039;)     s = s:gsub(&#039;^%s+&#039;, &#039;&#039;)     s = s:gsub(&#039;%s+$&#039;,&#039;&#039;)     return s end local function arg(args, key, alt)     local v=trim(args[key])     if v == &#039;&#039; and alt then v=trim(args[alt]) end     return v…”</title>
		<link rel="alternate" type="text/html" href="https://blockland.wiki/index.php?title=%E6%A8%A1%E5%9D%97:System_map&amp;diff=9411&amp;oldid=prev"/>
		<updated>2026-10-31T04:29:22Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“-- 模块:SystemMapNavbox -- Blockland Wiki: horizontal stellar-system map, traditional Navbox data input. -- Self-contained: only Scribunto, TemplateStyles and the site&amp;#039;s existing Navbox are needed. local p = {}  local function trim(v)     local s = tostring(v or &amp;#039;&amp;#039;)     s = s:gsub(&amp;#039;^%s+&amp;#039;, &amp;#039;&amp;#039;)     s = s:gsub(&amp;#039;%s+$&amp;#039;,&amp;#039;&amp;#039;)     return s end local function arg(args, key, alt)     local v=trim(args[key])     if v == &amp;#039;&amp;#039; and alt then v=trim(args[alt]) end     return v…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- 模块:SystemMapNavbox&lt;br /&gt;
-- Blockland Wiki: horizontal stellar-system map, traditional Navbox data input.&lt;br /&gt;
-- Self-contained: only Scribunto, TemplateStyles and the site&amp;#039;s existing Navbox are needed.&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function trim(v)&lt;br /&gt;
    local s = tostring(v or &amp;#039;&amp;#039;)&lt;br /&gt;
    s = s:gsub(&amp;#039;^%s+&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
    s = s:gsub(&amp;#039;%s+$&amp;#039;,&amp;#039;&amp;#039;)&lt;br /&gt;
    return s&lt;br /&gt;
end&lt;br /&gt;
local function arg(args, key, alt)&lt;br /&gt;
    local v=trim(args[key])&lt;br /&gt;
    if v == &amp;#039;&amp;#039; and alt then v=trim(args[alt]) end&lt;br /&gt;
    return v&lt;br /&gt;
end&lt;br /&gt;
local function html(v)&lt;br /&gt;
    return trim(v):gsub(&amp;#039;&amp;amp;&amp;#039;,&amp;#039;&amp;amp;amp;&amp;#039;):gsub(&amp;#039;&amp;lt;&amp;#039;,&amp;#039;&amp;amp;lt;&amp;#039;):gsub(&amp;#039;&amp;gt;&amp;#039;,&amp;#039;&amp;amp;gt;&amp;#039;):gsub(&amp;#039;&amp;quot;&amp;#039;,&amp;#039;&amp;amp;quot;&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
local function wikiLink(page,label)&lt;br /&gt;
    page=trim(page);label=trim(label)&lt;br /&gt;
    if label==&amp;#039;&amp;#039; then label=page end&lt;br /&gt;
    page=page:gsub(&amp;#039;[%[%]|{}&amp;lt;&amp;gt;\r\n]&amp;#039;,&amp;#039;&amp;#039;)&lt;br /&gt;
    label=label:gsub(&amp;#039;[%[%]|{}&amp;lt;&amp;gt;\r\n]&amp;#039;,&amp;#039;&amp;#039;)&lt;br /&gt;
    if page==&amp;#039;&amp;#039; then return html(label) end&lt;br /&gt;
    return &amp;#039;[[&amp;#039;..page..&amp;#039;|&amp;#039;..label..&amp;#039;]]&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
local function imageWiki(file,size)&lt;br /&gt;
    file=trim(file):gsub(&amp;#039;^[Ff]ile:&amp;#039;, &amp;#039;&amp;#039;):gsub(&amp;#039;^文件:&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
    if file==&amp;#039;&amp;#039; or file:find(&amp;#039;[%[%]|{}&amp;lt;&amp;gt;\r\n]&amp;#039;) then return &amp;#039;&amp;#039; end&lt;br /&gt;
    return &amp;#039;[[File:&amp;#039;..file..&amp;#039;|x&amp;#039;..math.floor(size+0.5)..&amp;#039;px|link=|alt=]]&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
local function number(v,default)&lt;br /&gt;
    local n=tonumber(trim(v))&lt;br /&gt;
    if not n or n ~= n or math.abs(n)&amp;gt;1e15 then return default end&lt;br /&gt;
    return n&lt;br /&gt;
end&lt;br /&gt;
local function clamp(v,a,b) return math.max(a,math.min(b,v)) end&lt;br /&gt;
local function roman(n)&lt;br /&gt;
    local vs={1000,900,500,400,100,90,50,40,10,9,5,4,1}&lt;br /&gt;
    local ss={&amp;#039;M&amp;#039;,&amp;#039;CM&amp;#039;,&amp;#039;D&amp;#039;,&amp;#039;CD&amp;#039;,&amp;#039;C&amp;#039;,&amp;#039;XC&amp;#039;,&amp;#039;L&amp;#039;,&amp;#039;XL&amp;#039;,&amp;#039;X&amp;#039;,&amp;#039;IX&amp;#039;,&amp;#039;V&amp;#039;,&amp;#039;IV&amp;#039;,&amp;#039;I&amp;#039;}&lt;br /&gt;
    local s=&amp;#039;&amp;#039;&lt;br /&gt;
    for i,v in ipairs(vs) do while n&amp;gt;=v do n=n-v;s=s..ss[i] end end&lt;br /&gt;
    return s&lt;br /&gt;
end&lt;br /&gt;
local function kind(v)&lt;br /&gt;
    v=trim(v):lower()&lt;br /&gt;
    if v==&amp;#039;带&amp;#039; or v==&amp;#039;小行星带&amp;#039; or v==&amp;#039;belt&amp;#039; or v==&amp;#039;asteroid&amp;#039; or v==&amp;#039;cluster&amp;#039; then return &amp;#039;belt&amp;#039; end&lt;br /&gt;
    if v==&amp;#039;碎片&amp;#039; or v==&amp;#039;碎片带&amp;#039; or v==&amp;#039;debris&amp;#039; then return &amp;#039;debris&amp;#039; end&lt;br /&gt;
    if v==&amp;#039;ring&amp;#039; or v==&amp;#039;环&amp;#039; then return &amp;#039;ring&amp;#039; end&lt;br /&gt;
    if v==&amp;#039;star&amp;#039; or v==&amp;#039;恒星&amp;#039; then return &amp;#039;star&amp;#039; end&lt;br /&gt;
    if v==&amp;#039;dwarf&amp;#039; or v==&amp;#039;矮行星&amp;#039; then return &amp;#039;dwarf&amp;#039; end&lt;br /&gt;
    return &amp;#039;planet&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
local function tint(v, fallback)&lt;br /&gt;
    v=trim(v)&lt;br /&gt;
    if v:match(&amp;#039;^#%x%x%x%x%x%x$&amp;#039;) then return v end&lt;br /&gt;
    return fallback&lt;br /&gt;
end&lt;br /&gt;
local colors={&lt;br /&gt;
    star=&amp;#039;#f0c775&amp;#039;, rock=&amp;#039;#b67653&amp;#039;, lava=&amp;#039;#e16f2e&amp;#039;, desert=&amp;#039;#b69a79&amp;#039;,&lt;br /&gt;
    ocean=&amp;#039;#2e83ab&amp;#039;, habitable=&amp;#039;#2475ac&amp;#039;, gas=&amp;#039;#b9a9a1&amp;#039;,&lt;br /&gt;
    [&amp;#039;gas-blue&amp;#039;]=&amp;#039;#87c7e0&amp;#039;, [&amp;#039;gas-purple&amp;#039;]=&amp;#039;#8868b5&amp;#039;,&lt;br /&gt;
    [&amp;#039;gas-orange&amp;#039;]=&amp;#039;#d4a279&amp;#039;, ice=&amp;#039;#8ec3cc&amp;#039;, [&amp;#039;ice-dark&amp;#039;]=&amp;#039;#566c80&amp;#039;,&lt;br /&gt;
    dwarf=&amp;#039;#d2dadd&amp;#039;, moon=&amp;#039;#b8b8b1&amp;#039;, unknown=&amp;#039;#a2a9b1&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
local function styleKind(ty,classification)&lt;br /&gt;
    local c=trim(classification):lower()&lt;br /&gt;
    if ty==&amp;#039;star&amp;#039; then return &amp;#039;star&amp;#039; end&lt;br /&gt;
    if ty==&amp;#039;dwarf&amp;#039; then return &amp;#039;dwarf&amp;#039; end&lt;br /&gt;
    if c==&amp;#039;lava&amp;#039; or c==&amp;#039;熔岩&amp;#039; then return &amp;#039;lava&amp;#039; end&lt;br /&gt;
    if c==&amp;#039;desert&amp;#039; or c==&amp;#039;荒漠&amp;#039; then return &amp;#039;desert&amp;#039; end&lt;br /&gt;
    if c==&amp;#039;ocean&amp;#039; or c==&amp;#039;海洋&amp;#039; then return &amp;#039;ocean&amp;#039; end&lt;br /&gt;
    if c==&amp;#039;habitable&amp;#039; or c==&amp;#039;宜居&amp;#039; then return &amp;#039;habitable&amp;#039; end&lt;br /&gt;
    if c==&amp;#039;gas&amp;#039; or c==&amp;#039;气态&amp;#039; then return &amp;#039;gas&amp;#039; end&lt;br /&gt;
    if c==&amp;#039;gas-blue&amp;#039; or c==&amp;#039;蓝色气态&amp;#039; then return &amp;#039;gas-blue&amp;#039; end&lt;br /&gt;
    if c==&amp;#039;gas-purple&amp;#039; or c==&amp;#039;紫色气态&amp;#039; then return &amp;#039;gas-purple&amp;#039; end&lt;br /&gt;
    if c==&amp;#039;gas-orange&amp;#039; or c==&amp;#039;橙色气态&amp;#039; then return &amp;#039;gas-orange&amp;#039; end&lt;br /&gt;
    if c==&amp;#039;ice&amp;#039; or c==&amp;#039;冰质&amp;#039; then return &amp;#039;ice&amp;#039; end&lt;br /&gt;
    if c==&amp;#039;ice-dark&amp;#039; or c==&amp;#039;暗冰&amp;#039; then return &amp;#039;ice-dark&amp;#039; end&lt;br /&gt;
    if c==&amp;#039;rock&amp;#039; or c==&amp;#039;岩质&amp;#039; then return &amp;#039;rock&amp;#039; end&lt;br /&gt;
    return &amp;#039;rock&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
-- Fixed scale across systems, inspired by logarithmic tier scaling rather than AU scale.&lt;br /&gt;
-- Values are visual conventions, not strict physical size ratios.&lt;br /&gt;
local function discSize(tier, radiusEarth, radiusSolar, diameterKm)&lt;br /&gt;
    if tier==&amp;#039;star&amp;#039; then&lt;br /&gt;
        local r=radiusSolar or (diameterKm and diameterKm/1392700) or 1&lt;br /&gt;
        return clamp(52+11*math.log(clamp(r,0.03,25))/math.log(3.5),36,66)&lt;br /&gt;
    elseif tier==&amp;#039;moon&amp;#039; then&lt;br /&gt;
        local r=radiusEarth or (diameterKm and diameterKm/12742) or .18&lt;br /&gt;
        return clamp(8+9*math.log(clamp(r,.02,1.2)/.02)/math.log(1.2/.02),8,20)&lt;br /&gt;
    elseif tier==&amp;#039;belt&amp;#039; or tier==&amp;#039;debris&amp;#039; then return 40&lt;br /&gt;
    elseif tier==&amp;#039;ring&amp;#039; then return 39&lt;br /&gt;
    end&lt;br /&gt;
    local r=radiusEarth or (diameterKm and diameterKm/12742) or 1&lt;br /&gt;
    return clamp(15+38*math.log(clamp(r,.13,20)/.13)/math.log(20/.13),15,53)&lt;br /&gt;
end&lt;br /&gt;
local function child(args,prefix,i)&lt;br /&gt;
    local b=prefix..&amp;#039;卫星&amp;#039;..i&lt;br /&gt;
    local name=arg(args,b)&lt;br /&gt;
    if name==&amp;#039;&amp;#039; then return nil end&lt;br /&gt;
    return {name=name,page=arg(args,b..&amp;#039;链接&amp;#039;),english=arg(args,b..&amp;#039;英文&amp;#039;),&lt;br /&gt;
        icon=arg(args,b..&amp;#039;图&amp;#039;),radiusEarth=number(arg(args,b..&amp;#039;半径&amp;#039;),nil),&lt;br /&gt;
        diameterKm=number(arg(args,b..&amp;#039;直径km&amp;#039;),nil),color=tint(arg(args,b..&amp;#039;颜色&amp;#039;),&amp;#039;#bac3cc&amp;#039;),&lt;br /&gt;
        designation=arg(args,b..&amp;#039;编号&amp;#039;)}&lt;br /&gt;
end&lt;br /&gt;
local function append(parts,s) parts[#parts+1]=s end&lt;br /&gt;
-- Moons and companion stars appear as vertical linked rows, as in the reference System map.&lt;br /&gt;
local function renderChild(ch, title)&lt;br /&gt;
    local current=ch.page~=&amp;#039;&amp;#039; and (title==ch.page or title==&amp;#039;模板:&amp;#039;..ch.page)&lt;br /&gt;
    local d=discSize(ch.type==&amp;#039;star&amp;#039; and &amp;#039;star&amp;#039; or &amp;#039;moon&amp;#039;,ch.radiusEarth,ch.radiusSolar,ch.diameterKm)&lt;br /&gt;
    d=math.min(d,24)&lt;br /&gt;
    local parts={}&lt;br /&gt;
    local tip=ch.name&lt;br /&gt;
    if ch.english~=&amp;#039;&amp;#039; then tip=tip..&amp;#039; · &amp;#039;..ch.english end&lt;br /&gt;
    append(parts,&amp;#039;&amp;lt;span class=&amp;quot;blsm-child&amp;#039;..(current and &amp;#039; blsm-current&amp;#039; or &amp;#039;&amp;#039;)..&amp;#039;&amp;quot; title=&amp;quot;&amp;#039;..html(tip)..&amp;#039;&amp;quot;&amp;gt;&amp;#039;)&lt;br /&gt;
    append(parts,&amp;#039;&amp;lt;span class=&amp;quot;blsm-child-glyph&amp;quot;&amp;gt;&amp;#039;)&lt;br /&gt;
    if ch.icon~=&amp;#039;&amp;#039; then&lt;br /&gt;
        append(parts,imageWiki(ch.icon,d))&lt;br /&gt;
    else&lt;br /&gt;
        append(parts,&amp;#039;&amp;lt;span class=&amp;quot;blsm-child-disc&amp;quot; style=&amp;quot;width:&amp;#039;..math.floor(d)..&amp;#039;px;height:&amp;#039;..math.floor(d)..&amp;#039;px;background-color:&amp;#039;..ch.color..&amp;#039;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;)&lt;br /&gt;
    end&lt;br /&gt;
    append(parts,&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;blsm-child-name&amp;quot;&amp;gt;&amp;#039;..wikiLink(ch.page~=&amp;#039;&amp;#039; and ch.page or ch.name,ch.name)..&amp;#039;&amp;lt;/span&amp;gt;&amp;#039;)&lt;br /&gt;
    if ch.designation~=&amp;#039;&amp;#039; then append(parts,&amp;#039;&amp;lt;span class=&amp;quot;blsm-child-code&amp;quot;&amp;gt;&amp;#039;..html(ch.designation)..&amp;#039;&amp;lt;/span&amp;gt;&amp;#039;) end&lt;br /&gt;
    append(parts,&amp;#039;&amp;lt;/span&amp;gt;&amp;#039;)&lt;br /&gt;
    return table.concat(parts)&lt;br /&gt;
end&lt;br /&gt;
local function renderRing(name, page, current)&lt;br /&gt;
    local s=&amp;#039;&amp;lt;span class=&amp;quot;blsm-child blsm-child--ring&amp;#039;..(current and &amp;#039; blsm-current&amp;#039; or &amp;#039;&amp;#039;)..&amp;#039;&amp;quot; title=&amp;quot;行星环&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
        ..&amp;#039;&amp;lt;span class=&amp;quot;blsm-child-glyph&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;blsm-ring-band&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
        ..&amp;#039;&amp;lt;span class=&amp;quot;blsm-child-name&amp;quot;&amp;gt;&amp;#039;..wikiLink(page~=&amp;#039;&amp;#039; and page or name,name)..&amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
    return s&lt;br /&gt;
end&lt;br /&gt;
local function renderDisc(o, title)&lt;br /&gt;
    local size=discSize(o.type,o.radiusEarth,o.radiusSolar,o.diameterKm)&lt;br /&gt;
    local parts={}&lt;br /&gt;
    if o.type==&amp;#039;belt&amp;#039; or o.type==&amp;#039;debris&amp;#039; then&lt;br /&gt;
        append(parts,&amp;#039;&amp;lt;span class=&amp;quot;blsm-belt-band&amp;quot; title=&amp;quot;轨道碎片与小天体带&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;)&lt;br /&gt;
    elseif o.icon~=&amp;#039;&amp;#039; then&lt;br /&gt;
        append(parts,&amp;#039;&amp;lt;span class=&amp;quot;blsm-image&amp;quot; style=&amp;quot;min-height:&amp;#039;..math.ceil(size)..&amp;#039;px&amp;quot;&amp;gt;&amp;#039;..imageWiki(o.icon,size)..&amp;#039;&amp;lt;/span&amp;gt;&amp;#039;)&lt;br /&gt;
    else&lt;br /&gt;
        local c=tint(o.color,colors[o.visual] or colors.unknown)&lt;br /&gt;
        append(parts,&amp;#039;&amp;lt;span class=&amp;quot;blsm-disc blsm-disc--&amp;#039;..o.visual..&amp;#039;&amp;quot; style=&amp;quot;width:&amp;#039;..math.floor(size)..&amp;#039;px;height:&amp;#039;..math.floor(size)..&amp;#039;px;background-color:&amp;#039;..c..&amp;#039;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;)&lt;br /&gt;
    end&lt;br /&gt;
    return table.concat(parts)&lt;br /&gt;
end&lt;br /&gt;
local function renderBody(o, title, opts)&lt;br /&gt;
    local parts={}&lt;br /&gt;
    local isBelt=(o.type==&amp;#039;belt&amp;#039; or o.type==&amp;#039;debris&amp;#039;)&lt;br /&gt;
    local ringShown=opts.showRings and o.ring~=&amp;#039;&amp;#039;&lt;br /&gt;
    local children=#o.moons+(ringShown and 1 or 0)&lt;br /&gt;
    local width=isBelt and 98 or (o.type==&amp;#039;star&amp;#039; and 118 or (children&amp;gt;0 and 148 or 116))&lt;br /&gt;
    local active=(title==o.page or (opts.highlight~=&amp;#039;&amp;#039; and (opts.highlight==o.page or opts.highlight==o.name)))&lt;br /&gt;
    local meta={o.name}&lt;br /&gt;
    if o.english~=&amp;#039;&amp;#039; then meta[#meta+1]=o.english end&lt;br /&gt;
    if o.orbit~=&amp;#039;&amp;#039; then meta[#meta+1]=&amp;#039;轨道: &amp;#039;..o.orbit end&lt;br /&gt;
    if o.radiusEarth then meta[#meta+1]=&amp;#039;半径: &amp;#039;..tostring(o.radiusEarth)..&amp;#039; R⊕&amp;#039; end&lt;br /&gt;
    if o.radiusSolar then meta[#meta+1]=&amp;#039;半径: &amp;#039;..tostring(o.radiusSolar)..&amp;#039; R☉&amp;#039; end&lt;br /&gt;
    local cls=isBelt and &amp;#039;blsm-slot--belt&amp;#039; or &amp;#039;blsm-slot--body&amp;#039;&lt;br /&gt;
    if o.type==&amp;#039;star&amp;#039; then cls=cls..&amp;#039; blsm-slot--star&amp;#039; end&lt;br /&gt;
    if active then cls=cls..&amp;#039; blsm-current&amp;#039; end&lt;br /&gt;
    append(parts,&amp;#039;&amp;lt;div class=&amp;quot;blsm-slot &amp;#039;..cls..&amp;#039;&amp;quot; style=&amp;quot;width:&amp;#039;..width..&amp;#039;px&amp;quot; title=&amp;quot;&amp;#039;..html(table.concat(meta,&amp;#039; · &amp;#039;))..&amp;#039;&amp;quot;&amp;gt;&amp;#039;)&lt;br /&gt;
    append(parts,&amp;#039;&amp;lt;div class=&amp;quot;blsm-designation&amp;quot;&amp;gt;&amp;#039;..html(o.designation)..&amp;#039;&amp;lt;/div&amp;gt;&amp;#039;)&lt;br /&gt;
    append(parts,&amp;#039;&amp;lt;div class=&amp;quot;blsm-glyph&amp;quot;&amp;gt;&amp;#039;..renderDisc(o,title)..&amp;#039;&amp;lt;/div&amp;gt;&amp;#039;)&lt;br /&gt;
    append(parts,&amp;#039;&amp;lt;div class=&amp;quot;blsm-name&amp;quot;&amp;gt;&amp;#039;..wikiLink(o.page,o.name)..&amp;#039;&amp;lt;/div&amp;gt;&amp;#039;)&lt;br /&gt;
    if opts.details then&lt;br /&gt;
        append(parts,&amp;#039;&amp;lt;div class=&amp;quot;blsm-caption&amp;quot;&amp;gt;&amp;#039;..html(isBelt and o.orbit or (o.english~=&amp;#039;&amp;#039; and o.english or o.orbit))..&amp;#039;&amp;lt;/div&amp;gt;&amp;#039;)&lt;br /&gt;
    else&lt;br /&gt;
        append(parts,&amp;#039;&amp;lt;div class=&amp;quot;blsm-caption blsm-caption--hidden&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;)&lt;br /&gt;
    end&lt;br /&gt;
    if children&amp;gt;0 then&lt;br /&gt;
        append(parts,&amp;#039;&amp;lt;div class=&amp;quot;blsm-children&amp;quot; aria-label=&amp;quot;&amp;#039;..html(o.name)..&amp;#039;的卫星&amp;quot;&amp;gt;&amp;#039;)&lt;br /&gt;
        if ringShown then append(parts,renderRing(o.ring,o.ringPage,title==o.ringPage)) end&lt;br /&gt;
        for _,ch in ipairs(o.moons) do append(parts,renderChild(ch,title)) end&lt;br /&gt;
        append(parts,&amp;#039;&amp;lt;/div&amp;gt;&amp;#039;)&lt;br /&gt;
    end&lt;br /&gt;
    append(parts,&amp;#039;&amp;lt;/div&amp;gt;&amp;#039;)&lt;br /&gt;
    return table.concat(parts)&lt;br /&gt;
end&lt;br /&gt;
local function makeStar(args,i)&lt;br /&gt;
    local base=i==1 and &amp;#039;恒星&amp;#039; or (&amp;#039;恒星&amp;#039;..i)&lt;br /&gt;
    local name=arg(args,base)&lt;br /&gt;
    if name==&amp;#039;&amp;#039; then return nil end&lt;br /&gt;
    return {name=name,english=arg(args,base..&amp;#039;英文&amp;#039;),page=arg(args,base..&amp;#039;链接&amp;#039;)~=&amp;#039;&amp;#039; and arg(args,base..&amp;#039;链接&amp;#039;) or name,&lt;br /&gt;
      type=&amp;#039;star&amp;#039;,visual=&amp;#039;star&amp;#039;,designation=arg(args,base..&amp;#039;序号&amp;#039;)~=&amp;#039;&amp;#039; and arg(args,base..&amp;#039;序号&amp;#039;) or &amp;#039;★&amp;#039;,&lt;br /&gt;
      icon=arg(args,base..&amp;#039;图&amp;#039;),color=arg(args,base..&amp;#039;颜色&amp;#039;),orbit=&amp;#039;&amp;#039;,&lt;br /&gt;
      radiusSolar=number(arg(args,base..&amp;#039;半径&amp;#039;),nil),diameterKm=number(arg(args,base..&amp;#039;直径km&amp;#039;),nil),&lt;br /&gt;
      moons={},ring=&amp;#039;&amp;#039;,ringPage=&amp;#039;&amp;#039;}&lt;br /&gt;
end&lt;br /&gt;
local function makeBody(args,i,planetIndex)&lt;br /&gt;
    local base=&amp;#039;天体&amp;#039;..i&lt;br /&gt;
    local name=arg(args,base,&amp;#039;行星&amp;#039;..i)&lt;br /&gt;
    if name==&amp;#039;&amp;#039; then return nil end&lt;br /&gt;
    local legacy=&amp;#039;行星&amp;#039;..i&lt;br /&gt;
    local function fld(k) return arg(args,base..k,legacy..k) end&lt;br /&gt;
    local ty=kind(fld(&amp;#039;类型&amp;#039;))&lt;br /&gt;
    local visual=styleKind(ty,fld(&amp;#039;外观&amp;#039;))&lt;br /&gt;
    local radiusEarth=number(fld(&amp;#039;半径&amp;#039;),nil)&lt;br /&gt;
    local diameterKm=number(fld(&amp;#039;直径km&amp;#039;),nil)&lt;br /&gt;
    local num=fld(&amp;#039;序号&amp;#039;)&lt;br /&gt;
    if num==&amp;#039;&amp;#039; and ty~=&amp;#039;belt&amp;#039; and ty~=&amp;#039;debris&amp;#039; then num=roman(planetIndex) end&lt;br /&gt;
    local o={name=name,page=fld(&amp;#039;链接&amp;#039;)~=&amp;#039;&amp;#039; and fld(&amp;#039;链接&amp;#039;) or name,english=fld(&amp;#039;英文&amp;#039;),type=ty,visual=visual,&lt;br /&gt;
      designation=num,icon=fld(&amp;#039;图&amp;#039;),color=fld(&amp;#039;颜色&amp;#039;),orbit=fld(&amp;#039;轨道&amp;#039;),&lt;br /&gt;
      radiusEarth=radiusEarth,diameterKm=diameterKm,moons={},ring=fld(&amp;#039;环&amp;#039;),ringPage=fld(&amp;#039;环链接&amp;#039;)}&lt;br /&gt;
    for j=1,16 do&lt;br /&gt;
        local ch=child(args,base,j)&lt;br /&gt;
        if not ch and legacy~=base then ch=child(args,legacy,j) end&lt;br /&gt;
        if ch then o.moons[#o.moons+1]=ch end&lt;br /&gt;
    end&lt;br /&gt;
    if ty==&amp;#039;belt&amp;#039; or ty==&amp;#039;debris&amp;#039; then o.ring=&amp;#039;&amp;#039;;o.moons={} end&lt;br /&gt;
    if ty==&amp;#039;ring&amp;#039; then o.type=&amp;#039;belt&amp;#039; end&lt;br /&gt;
    return o&lt;br /&gt;
end&lt;br /&gt;
function p.render(args,currentTitle)&lt;br /&gt;
    args=args or {}&lt;br /&gt;
    local title=trim(currentTitle)&lt;br /&gt;
    local opts={details=arg(args,&amp;#039;显示详情&amp;#039;)==&amp;#039;1&amp;#039; or arg(args,&amp;#039;显示详情&amp;#039;)==&amp;#039;yes&amp;#039;,highlight=arg(args,&amp;#039;highlight&amp;#039;,&amp;#039;高亮&amp;#039;),showRings=arg(args,&amp;#039;显示行星环&amp;#039;)==&amp;#039;1&amp;#039; or arg(args,&amp;#039;显示行星环&amp;#039;)==&amp;#039;yes&amp;#039;}&lt;br /&gt;
    local bodies={}&lt;br /&gt;
    local primary=makeStar(args,1)&lt;br /&gt;
    local second=makeStar(args,2)&lt;br /&gt;
    if primary then bodies[#bodies+1]=primary end&lt;br /&gt;
    if second and arg(args,&amp;#039;双星布局&amp;#039;)~=&amp;#039;伴星&amp;#039; then bodies[#bodies+1]=second end&lt;br /&gt;
    if second and primary and arg(args,&amp;#039;双星布局&amp;#039;)==&amp;#039;伴星&amp;#039; then&lt;br /&gt;
        primary.moons[#primary.moons+1]={name=second.name,page=second.page,english=second.english,icon=second.icon,&lt;br /&gt;
             radiusEarth=nil,radiusSolar=second.radiusSolar,diameterKm=second.diameterKm,color=tint(second.color,&amp;#039;#f5d78c&amp;#039;),type=&amp;#039;star&amp;#039;,designation=&amp;#039;B&amp;#039;}&lt;br /&gt;
    end&lt;br /&gt;
    local planetCounter=0&lt;br /&gt;
    for i=1,48 do&lt;br /&gt;
        local o=makeBody(args,i,planetCounter+1)&lt;br /&gt;
        if o then&lt;br /&gt;
            if o.type~=&amp;#039;belt&amp;#039; and o.type~=&amp;#039;debris&amp;#039; then planetCounter=planetCounter+1 end&lt;br /&gt;
            bodies[#bodies+1]=o&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if #bodies==0 then return &amp;#039;&amp;lt;span class=&amp;quot;blsm-empty&amp;quot;&amp;gt;没有配置天体。&amp;lt;/span&amp;gt;&amp;#039; end&lt;br /&gt;
    local parts={&amp;#039;&amp;lt;div class=&amp;quot;blsm-map&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;blsm-scroll&amp;quot; tabindex=&amp;quot;0&amp;quot; role=&amp;quot;region&amp;quot; aria-label=&amp;quot;星系轨道与天体导航&amp;quot;&amp;gt;&amp;#039;,&lt;br /&gt;
        &amp;#039;&amp;lt;div class=&amp;quot;blsm-rail&amp;quot;&amp;gt;&amp;#039;}&lt;br /&gt;
    for _,o in ipairs(bodies) do append(parts,renderBody(o,title,opts)) end&lt;br /&gt;
    append(parts,&amp;#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;)&lt;br /&gt;
    local countBelt=0&lt;br /&gt;
    for _,o in ipairs(bodies) do if o.type==&amp;#039;belt&amp;#039; or o.type==&amp;#039;debris&amp;#039; then countBelt=countBelt+1 end end&lt;br /&gt;
    append(parts,&amp;#039;&amp;lt;div class=&amp;quot;blsm-foot&amp;quot;&amp;gt;按轨道顺序排列 · 天体直径对数缩放 · 轨道间距不代表真实比例&amp;#039;)&lt;br /&gt;
    if countBelt&amp;gt;0 then append(parts,&amp;#039; · 小天体带按其轨道位置单列&amp;#039;) end&lt;br /&gt;
    append(parts,&amp;#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;)&lt;br /&gt;
    return table.concat(parts)&lt;br /&gt;
end&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args=frame:getParent() and frame:getParent().args or frame.args&lt;br /&gt;
    local title=&amp;#039;&amp;#039;&lt;br /&gt;
    if mw and mw.title and mw.title.getCurrentTitle then&lt;br /&gt;
        local t=mw.title.getCurrentTitle();title=t and (t.text or t.prefixedText) or &amp;#039;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    return p.render(args,title)&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>KK</name></author>
	</entry>
</feed>