<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.czzzz.work/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=CatalpaCute</id>
	<title>悠日計画 維基百科 ～ Yuuni Wiki - 用户贡献 [zh-cn]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.czzzz.work/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=CatalpaCute"/>
	<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/CatalpaCute"/>
	<updated>2026-04-21T08:30:47Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=Creating%E7%8E%A9%E5%AE%B6%E5%9F%BA%E6%9C%AC%E6%B3%95%E6%A1%88&amp;diff=4973</id>
		<title>Creating玩家基本法案</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=Creating%E7%8E%A9%E5%AE%B6%E5%9F%BA%E6%9C%AC%E6%B3%95%E6%A1%88&amp;diff=4973"/>
		<updated>2026-03-08T10:02:18Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Creating现已加入悠日计划，我们重新定制《Creating玩家基本法案》，以制约部分玩家不合规的行为。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
为了维护 Creating 建设的有序，并为保障所有 Creating 玩家的品质，任何 Creating 玩家必须同意《Creating玩家基本法案》当下发行版本方可游玩 Creating。当您进入服务器，即视为您已阅读并同意本法案。&lt;br /&gt;
&lt;br /&gt;
目前使用版本为 &#039;&#039;&#039;Creating玩家基本法案 2602&#039;&#039;&#039; (简称 基本法案 2602 或 基本法案)，是适用于 Creating 全境的主要法案。&lt;br /&gt;
&lt;br /&gt;
==历史==&lt;br /&gt;
《Creating玩家基本法案》前身为《Creating 玩家基本规则》(2022.1颁布)、由&#039;&#039;&#039;小蜜糖柚子(ayear)&#039;&#039;&#039;制定的群公告。法案在基本规则与群公告的基础上修改并添加了更多信息。&lt;br /&gt;
==法案正文 (2602)==&lt;br /&gt;
===最终用户许可===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;一、《Creating 玩家基本法案》各项内容之解释、适用及争议均应依照 Creating 当前所用服务器所在国家或地区的基本法令受理之。Creating 作为主体依据本最终玩家许可及运营法案为您提供名为“Creating”的 Minecraft 第三方服务器服务。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
二、&#039;&#039;&#039;“游玩 Creating”属 Creating 工程组(以下简称“工程组”)所赋予您的特权，而非您所享有的固定权利。&#039;&#039;&#039;游玩 Creating 即代表您同意并遵守《Creating 玩家基本法案》中的所有内容及其他 Creating 中所有已通过生效并公示的法案。&lt;br /&gt;
&lt;br /&gt;
三、&#039;&#039;&#039;工程组有权于任何时间经内部公投以修改或变更《Creating 玩家基本法案》。&#039;&#039;&#039;若遇任何基本法案重大变更，工程组将提前 7 个工作日于官方新闻频道或群聊中发布预览版本。7 日内您可提出修正意见，工程组将在投票后予以答复。若您于任何修改或变更后登入 Creating，即视为您已经阅读、了解并同意接受最新法案。若您不同意，应立刻停止使用 Creating 提供的任何服务。&lt;br /&gt;
&lt;br /&gt;
四、&#039;&#039;&#039;游玩 Creating 即代表您允许工程组作为主体记录您的隐私信息如下：&#039;&#039;&#039;&lt;br /&gt;
 1.您的登录数据、方块放置与破坏信息、公屏公开聊天信息与物品使用记录；&lt;br /&gt;
 2.您每次登录的 IP 地址；&lt;br /&gt;
 3.您的游戏 ID、UUID、邮箱及社交账户信息；&lt;br /&gt;
 4.基于您的方块交互记录所生成的游玩画像；&lt;br /&gt;
除法律要求、司法协作、紧急避险或恶意违规被列入黑名单披露外，工程组不会向任何人公开您的隐私信息。&lt;br /&gt;
&lt;br /&gt;
五、&#039;&#039;&#039;工程组作为主体，可将您的游戏 ID、间接参与或引发的事件、您的数字资产（如建筑、文字、艺术作品）以截图或数据摘录形式客观、中立地记录至 悠日计划 维基百科或存档中。&#039;&#039;&#039;若档案涉及隐私，请联系工程组解决。出于业务需要，工程组也可能将资产用于运营评估、审计，并接受您名下资产的全数导出申请。您了解并同意&#039;&#039;&#039;工程组已获得无偿授权可在经过通知、标注著作人信息后将您的数字资产编辑收录于 Creating 内外任何出版物、推荐清单或营销品中。&#039;&#039;&#039;您应保证工程组行使上述权利时不致侵害任何第三人之权利。若您无合法权利使用他人资产，请勿擅自将其上载至 Creating。&lt;br /&gt;
&lt;br /&gt;
六、&#039;&#039;&#039;您的任何数字资产、发表的言论由您自负责任。&#039;&#039;&#039;在不涉及侮辱、恶意中伤或违反人伦习惯之条件下，您了解并同意任何 Creating 玩家已获得您无偿授权，可对您的数字资产进行主观褒贬评价。&lt;br /&gt;
&lt;br /&gt;
七、&#039;&#039;&#039;您了解工程组并未针对“玩家内容”事先加以审查认可，工程组无法控制玩家自发产生的内容，不保证其正确性、完整性或品质。&#039;&#039;&#039;在游玩过程中，您可能会接触到令人不快、不适当的内容。在任何情况下，工程组均不为此类内容负责。工程组有权（但无义务）依考量主观拒绝或移除任何“玩家内容”。&lt;br /&gt;
&lt;br /&gt;
八、&#039;&#039;&#039;您承诺绝不为任何非法目的游玩 Creating，并保证不从事侵害他人权益之行为，&#039;&#039;&#039;包括但不限于：妨害名誉或隐私；发布侮辱、威胁、不雅、引起广泛政治立场冲突之内容；冒用他人名义游玩；从事不法交易或宣扬商业性质 Minecraft 服务器等。工程组有权以合理方式单方面直接临时封锁或永久清退此类行为者。&lt;br /&gt;
&lt;br /&gt;
九、工程组是地图的持有者，&#039;&#039;&#039;工程组将尽最大努力维护地图可持续性、服务器运作及资料安全。&#039;&#039;&#039;但部分时间服务可能因漏洞、维护或攻击出现中断，造成资产丧失、错误或损失。您应自行采取防护措施。工程组对您因使用（或无法使用）服务造成的损害不负赔偿责任，并保留随时暂停或终止服务的权利。&lt;br /&gt;
&lt;br /&gt;
十、&#039;&#039;&#039;您可自愿向工程组申请“退服”或“暂离”。退服后无法以原 ID 重新加入。&#039;&#039;&#039;暂离持续时间不得超过 1 年，若超过 1 年未登入，工程组有权将您从玩家名单内移除，移除后重新登入服务器将被视为非法进入服务器，可能会面临监禁。&lt;br /&gt;
&lt;br /&gt;
===运营法案===&lt;br /&gt;
一、&#039;&#039;&#039;Creating Creative (及生存区)(以下简称 Creating或虹海)是遵循 Mojang EULA 的 Minecraft 第三方公益性质服务器，位于悠日计划群组服中&#039;&#039;&#039;；Creating Survival （以下简称生存服)同是遵循 Mojang EULA 的 Minecraft 第三方公益性质服务器，由工程组独立运营，归属地基于当下 Creating 所用服务器所在的国家或地区。Creating Creative 是以城市建造、轨道交通为主要构成元素的 Minecraft服务器，部分地区在地方条款内进行 RP 制度。&lt;br /&gt;
&lt;br /&gt;
二、&#039;&#039;&#039;Creating 是民主、独立的 Minecraft 服务器，玩家在游戏中享有决策投票权、参政议政权、言论自由权及符合现实中习惯法所定义的基本人权。&#039;&#039;&#039;Creating 实行协商制共和制度，由 Creating 工程组(服务器级决策与外交、地区管理与建设维护)、Creating管理组（紧急时刻决策）共同管理。服务器内的土地所有权归 Creating 所有，由工程组进行管理。&lt;br /&gt;
&lt;br /&gt;
三、Creating 的服主仅代表Creating，服主不一定是当前群组服的实际运营者，但拥有保证 Creating 服务器的运行和境内事务的稳定的义务。&lt;br /&gt;
&lt;br /&gt;
===玩家行为法案===&lt;br /&gt;
一、不允许在服务器及群聊内过度谈论政治立场、发送令大多数人感到不适的内容。以上行为者经三个以上玩家反馈警告一次后无效直接清退。&lt;br /&gt;
&lt;br /&gt;
二、玩家私有资产受到保护。禁止在未经同意下复制、移动乃至破坏他人建筑，情节严重者最高直接清退。禁止偷窃、破坏其他玩家的私有载具，以上行为可最高监禁 1 个月。RP模式下游戏内物品若遭到偷窃、侵占可联系工程组处理。&lt;br /&gt;
&lt;br /&gt;
三、严禁破坏任何公共系统的运行（包括但不限于铁路、银行），情节严重者最高直接清退。&lt;br /&gt;
&lt;br /&gt;
四、禁止将 Creating 内部事务传播至其他服务器、群聊内。未经许可提取、改造、二次分发 uDays、SantorsiaWorks、悠日计划、Creating 所制作或购买的附加组件及基于“互通计划”引进的附加组件属于非法行为，Creating 作为主体有权予以追究，并在此类附加组件官方页面处公示违反条约的玩家 ID 及联系方式。&lt;br /&gt;
&lt;br /&gt;
五、严禁使用包括但不限于外挂等在 MC 原版游戏范围外提供作弊的工具进入服务器，一经发现最高可被标记为危险人物并直接清退。&lt;br /&gt;
&lt;br /&gt;
===境外旅行法案===&lt;br /&gt;
一、前往其他服务器领地内须具备由 Creating 所开具的护照与其他服务器管辖区域所开具的观光或建筑签证。申请 Creating 护照的玩家必须是从属于 Creating 中任意行政区的玩家。按照悠日计划法案约定，若须申请 Creating 护照，须向工程组有关负责人填写提交书面申请，并使用QQ 提供皮肤文件至工程组处以供制作护照，Creating 承诺不会将这些皮肤文件用于其他任何用途。&lt;br /&gt;
&lt;br /&gt;
二、悠日计划所有地区采用属地原则，玩家出境后一切行为均在当地法案约束下，Creating 作为主体不会作为玩家登记方为玩家做任何保释。若情节严重，玩家在境外的行为违反了《Creating 玩家法案》中达到清退条件的条文，在工程组公开投票后可能会面临直接清退。&lt;br /&gt;
&lt;br /&gt;
===玩家开发法案===&lt;br /&gt;
&lt;br /&gt;
一、基于 Creating 的创造服属性，玩家在审核后均可获得创造权限。任何玩家的开发建筑活动都需要在[[Creating_质量控制法案|《Creating 质量控制法案》]]下进行。&lt;br /&gt;
&lt;br /&gt;
二、Creating全境受工程组统筹规划，除自治区内（已获得管理者同意下），Creating其余地区包括未划定行政区域的地区均受工程组管理。玩家进行建设活动需要先将建筑大致三维信息、用途等发送至工程组相关成员报备。在服务器正常运行下，工程组需要在一天内给定回复。&lt;br /&gt;
&lt;br /&gt;
三、直辖市内大部分区域被划定了功能区及风格参考，在直辖区内建设需符合当地建设风格、符合不破坏天际线、具有实际运用原则。&lt;br /&gt;
&lt;br /&gt;
四、若玩家建设用地未经工程组审批同意，工程组有权直接进行拆除。&lt;br /&gt;
&lt;br /&gt;
请根据您规划建筑的风格选择您的建筑区域，以下列出部分规划区的风格要求：&lt;br /&gt;
 森园市林海区森园中心区域：定位为中心商务区（CBD），应以现代都市风格进行建设，建筑比例推荐为 1:1.25。&lt;br /&gt;
 森园市北海县：规划为海滨乡村风格。开发过程需遵循“生态优先”原则，严禁大肆破坏自然地形或过度砍伐原生植被；应完整保留原始森林风貌与自然海岸线，仅允许适度开发，建筑高度不宜超过 20 格。&lt;br /&gt;
 森园市雪原县：规划为雪乡乡村风格。&lt;br /&gt;
 新海市渚霞区：定位为新海市“郊区”，建筑风格允许实验性探索，推荐比例为 1:125 至 1:1，不宜建造比例过小的建筑。&lt;br /&gt;
 新海市渚霞区云城区域：规划为古城风格，建设时应参考“小王府”及“中国城”等现有建筑风貌，确保整体视觉统一。&lt;br /&gt;
 滨海市滨洲县：规划为现代都市类型。作为滨海市西进战略的新城重点区域，建筑施工应确保自然海岸线不被大规模填平或挖空，推荐建筑比例为 1:1 至 1:1.25。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====建筑保护法案====&lt;br /&gt;
一、&#039;&#039;&#039;建筑凡在 Creating 直辖城市或已报备的自治区内落成，就成为 Creating 世界线的一部分。&#039;&#039;&#039;玩家对其作品的构思、设计方案拥有排他性的精神权利。建造者永远拥有其作品的署名权，工程组在任何记录、展示或存档中，均须保留并标注原作者的游戏 ID 信息。服务器有权在玩家离开后，以“历史遗迹”的形式继续保留、维护这段数据，直接行使管理权。玩家虽享有该建筑的使用权与设计权，但&#039;&#039;&#039;不得单方面行使对该建筑的“毁灭性处置权”。&#039;&#039;&#039; 除非涉及安全隐患、严重违规或极其低质的敷衍建筑，工程组承诺不因玩家身份变更而直接移除建筑。若建筑出现严重破损或因版本更新产生显示错误，工程组有权在不征得玩家同意的情况下进行“复原性维修”。&lt;br /&gt;
&lt;br /&gt;
二、&#039;&#039;&#039;严禁玩家因个人情绪、他人煽动、退服抗议或其他消极理由，对其在服务器内存留的建筑进行大规模拆除、破坏或使其失去原有艺术/功能价值。&#039;&#039;&#039;此类行为可能会被工程组界定为“针对社区共有资产的恶意破坏&#039;&#039;（Griefing）&#039;&#039;”。同时严禁任何玩家以任何形式鼓动、教唆、威胁他人拆除其在服务器内的建筑。此类煽动行为将被视为严重违反《玩家行为法案》，工程组有权对煽动者执行直接清退处理。&lt;br /&gt;
&lt;br /&gt;
三、若玩家因合理的规划调整或建筑翻新需要拆除旧作，应在动工前向工程组进行简要报备。对于具有极高历史价值的地标建筑，即便由原作者提出，工程组亦保留“否决拆除请求”并将其转为官方托管遗迹的权利，但仍保留原作者的著作权。&lt;br /&gt;
&lt;br /&gt;
四、&#039;&#039;&#039;工程组严禁将任何玩家建筑资产用于商业化牟利。&#039;&#039;&#039;工程组在将建筑资产用于悠日计划 维基百科词条编写、宣传短片拍摄、Newsroom 汇编以及社区内部展示时应注明作者，此外无需另行征得玩家同意。&lt;br /&gt;
&lt;br /&gt;
===私铁法案===&lt;br /&gt;
一、虹海境内开放私铁建设，但须遵循《Creating 质量控制法案》的19、20条及以下规则&lt;br /&gt;
 1.所有私铁线路需要经报批经工程组审议后再进行建设，并保证线路建设标准不低于 7 号线，至少一个车站内注明运营等级。&lt;br /&gt;
 2.若设计与 Creating 现有铁道换乘，可选择以下几个车站：&lt;br /&gt;
 * C2 新海市 渚霞区 轭湖湾站、小王府站、渚霞站；甘地市 别野区 霜泽站&lt;br /&gt;
 3.为结合美观度要求，铁路线路周边环境需要专门景观优化、严禁裸露地形断面、大量桥梁悬浮，沿线必须要求美观程度符合 Creating 建设风格，做好环境优化相关措施。&lt;br /&gt;
 4.私铁建设需考虑线路实际乘坐需求、服务器承载程度、玩家投票表决、私铁自谋盈亏。以上每一点都为申报时工程组的考虑因素。&lt;br /&gt;
&lt;br /&gt;
二、自治区区域内&lt;br /&gt;
 1.私铁建设需考虑线路实际乘坐需求、服务器承载程度、玩家投票表决、私铁自谋盈亏。若以上因素超出工程组所认为接受程度，工程组可能会干涉、介入铁路线的建设。&lt;br /&gt;
 2.自治区内私铁仅限于自治区行政范围内，自治区外部分适用本部分第一条条文。&lt;br /&gt;
&lt;br /&gt;
违反&amp;lt;私铁法案&amp;gt;的处理方法同&amp;lt;玩家开发法案&amp;gt;第四条。&lt;br /&gt;
&lt;br /&gt;
===自治区法案===&lt;br /&gt;
====基本法====&lt;br /&gt;
在 EULA 及运营法案下，虹海广域地区土地的所有权归 Creating 所有，由其管理组织 Creating 工程组及 CzWorks 进行管理。自治区的地域范围内的地权归工程组所有，行政管辖权经由工程组授权，移交给自治区管理者。因此管理自治区并非管理者之天赋权利和必定拥有的权力，一切权力及权利仅是由工程组交予管理者的。工程组保留对所授权力的最终解释权与收回权。&lt;br /&gt;
&lt;br /&gt;
在自治区划定范围生效后，Creating 工程组无权以“服务器管理方”名义对自治区内进行插手或直接管理，保障其高度自治权。&lt;br /&gt;
&lt;br /&gt;
自治区的定义大致等同于“特定授权领地”，仅由管理者及其由其所任命的玩家进行管理。自治区拥有高度自治权力，由管理者进行统筹建设发展，在工程组的总体框架下，享有独立的建设规划权、司法准入权及经济发展自主权。&lt;br /&gt;
&lt;br /&gt;
自治区登记玩家与工程组直辖城市玩家在服务器归属上具有同等法律地位，统称为 Creating 玩家。在办理出入境事务时需到新海市的出入境办理大厅和目的地领事馆办理。&lt;br /&gt;
&lt;br /&gt;
====管理法====&lt;br /&gt;
自治区管理者对自治区内一切事务负责，管理者对自治区内的一切行为、建设及纠纷负有全面管理责任。&lt;br /&gt;
&lt;br /&gt;
一、《Creating 玩家基本法案》仅&amp;lt;最终用户许可&amp;gt;、&amp;lt;境外旅行法案&amp;gt;、&amp;lt;运营法案&amp;gt;、&amp;lt;玩家行为法案&amp;gt;第一、四条、&amp;lt;私铁建设法案&amp;gt;第二条、&amp;lt;建筑保护法案&amp;gt;第一、二、四条涉及自治区部分及&amp;lt;自治区法案&amp;gt;对自治区内生效，管理者可制定更多法案或启用《基本法案》中内容实施管辖。&lt;br /&gt;
&lt;br /&gt;
二、自治区领土是 Creating 不可分割的组成部分，为以虹海服务器名义所拥有的土地。任何管理者、玩家不得以任何形式进行自治区内的独立或任何分裂行为。自治区外交事务须由虹海外交部统一归口管理，其外交等级与直辖城市对等，严禁私自以自治区名义签署具有外交性质的协议，不得直接以自治区名义进行外交。&lt;br /&gt;
&lt;br /&gt;
三、凡自治区内已分配的建设(活动)区域，若 8 个月该区域内无任何实质性建设活动，或仅存在敷衍、消极建设行为，且未向工程组申请延期并获得批准的，工程组有权无偿收回该区域的管理权及相关权限。&lt;br /&gt;
  a. 因学业或其他正当理由无法兼顾建设的，可向工程组申请延期，延长期限最高不超过 4 个月（即总闲置期不得超过 12 个月）。&lt;br /&gt;
  b.工程组收回权限后原自治区将降级为临近工程组直辖城市的附属县/市。原管理者可重新申请管理权，但其过往履职表现将作为评估准入的核心指标。&lt;br /&gt;
&lt;br /&gt;
====回收法案====&lt;br /&gt;
&lt;br /&gt;
一、若自治区管理者自最后一天上线后 6 个月无任何游戏内活动，3 个月内无任何社交群聊内活动或宣布离开服务器，工程组将暂时收回自治区的所有权限进行管理。自治区管理者重新回到游戏可重新向工程组提出自治申请。&lt;br /&gt;
&lt;br /&gt;
二、自治区若违反&amp;lt;自治区法案&amp;gt;中的内容（包括但不限于：宣称独立、对抗中央管辖、严重破坏服务器生态等），工程组有权立即暂停管理者对自治区的自治权，收回自治区的一切权限。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===工程组、管理组法案===&lt;br /&gt;
&lt;br /&gt;
一、自 2022 年 10 月起，Creating 工程组确立为 Creating 广域地区之最高日常行政及执行主体。工程组实行民主票决机制，行政权力属于集体，而非任何单一成员。工程组全体成员依法行使决策权，负责外交事务、区域规划、建设维护以及对境内所有公有制经济实体进行行政管理。&lt;br /&gt;
&lt;br /&gt;
二、Creating 管理组（前身为“Creating 最高权限管理员”，现由 CatalpaCute、BenLi06、linyushu520 三位成员构成）作为 Creating 的最高权力储备主体，自 2022 年 9 月起，其日常行政职能正式移交工程组。管理组不参与平时的一切活动与决策，但保留部分权力。在Creating进入紧急状态、戒严或受到主权危机，或所用服务器遭遇打击的情况下，管理组有权直接控制工程组，在管理内投票超过半数情况下直接进行包括但不限于“清退玩家”、“收回所有权利”、“暂停服务器开放”等特殊决策。&lt;br /&gt;
&lt;br /&gt;
三、工程组成员在执行公务期间，必须恪守“权力法定、行政中立”原则。严禁以公权力侵犯玩家之正当权益，禁止任何形式的行政权力滥用。&lt;br /&gt;
除处理紧急违规或安全隐患外，工程组成员不得干涉玩家的正常游玩进程。严禁实施下列行为：&lt;br /&gt;
未经法定程序批准，严禁以“官方名义”占用玩家合法领地建设任何性质的构筑物。&lt;br /&gt;
严禁私自向玩家承诺或直接授予以任何形式的游戏资源、特权或地位。&lt;br /&gt;
未经玩家同意，严禁执行非必要的传送指令（TP）。&lt;br /&gt;
严禁利用官方身份煽动、诱导或鼓励玩家群体从事特定行为。&lt;br /&gt;
&lt;br /&gt;
四、为维护服务器整体运营安全，工程组成员在不影响、不干预玩家正常游戏体验的前提下可以隐身状态对入服七日内的新玩家进行随机抽查与行为观察。&lt;br /&gt;
&lt;br /&gt;
==法案正文 (2411 已停止使用)==&lt;br /&gt;
---现最新版本为 Creating玩家基本法案2411&lt;br /&gt;
&lt;br /&gt;
Creating是遵循 Mojang EULA 的 Minecraft 基岩平台第三⽅服务器，是以轨道交通、城镇建设为中心的创造服务器，以和平相处、实现共产为目标的生存服。&lt;br /&gt;
&lt;br /&gt;
一、 游戏&lt;br /&gt;
您成功进入主群，代表您已获得CreatingServer(Creative与Survival)的基本游玩资格，您仅需阅读公告即可进入Creating。&lt;br /&gt;
请和他人友好相处、友好交流，不要破坏别人的劳作，建议改群昵称为游戏ID，有问题可以找管理，你可以自己独自发展，也可以选择和大家一起发展，共享资源。如果发现有op或者外挂等危害服务器行为请截图或者视频向管理员或者群主举报，最后，祝你游玩快乐。&lt;br /&gt;
如发现有破坏服务器(包括但不限于外挂)等行为，我们将酌情进行处罚。&lt;br /&gt;
我们也非常重视玩家游戏体验，我们欢迎您在游戏过程中对我们提出建议，我们会尽可能的采纳&lt;br /&gt;
&lt;br /&gt;
二、 群内聊天&lt;br /&gt;
在主群，您可以自由地与他人聊天 (除血腥暴力等内容)，可以是我的世界Minecraft，甚至是荒野乱斗BrawlStars。&lt;br /&gt;
聊天过程中，如果有与对方不同的意见，除非您有绝对的信心自己是正确的，否则请您在网络上搜寻结果，对比自己的观点是否正确再进行争论。&lt;br /&gt;
您如与他人发生争执，我们会查看聊天记录并对涉事者酌情禁言。无缘无故骂人，无缘无故发送流汗黄豆等含有特殊意义的表情我们将最高进行清退。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
三、 邀请玩家&lt;br /&gt;
我们非常欢迎现有玩家邀请您的朋友等加入Creating，如果是优质玩家，我们更加感激，值得注意的是您不能直接将Creating的IP/端口直接分享给未进群的玩家，如有发现，您可能会受到处罚。&lt;br /&gt;
如何正确邀请玩家？您应将Creating审核群分享给您要邀请的人，待管理审核后即可进入主群。&lt;br /&gt;
&lt;br /&gt;
四、 捐赠&lt;br /&gt;
我们接受您的捐赠，但您捐赠后并不会在服务器内收到特别的待遇，您的捐赠我们将用于服务器升级、购买插件等。&lt;br /&gt;
&lt;br /&gt;
五、服务器的正确游玩方式&lt;br /&gt;
       若您要加入创造服，请寻找管理员为您添加白名单，生存服直接进入即可。&lt;br /&gt;
       我们建议您同时进入Creating的公告群、CreatingQQ频道&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=4972</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=4972"/>
		<updated>2026-03-08T09:55:38Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​更新&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:yuuniwiki1.png|center|700px|link=首页]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&#039;&amp;gt;&lt;br /&gt;
[[File:yuuniwiki2.1a.png|426px|link=Special:Random]][[File:yuuniwiki2.2a_2602.png|274px|link=9.2602 Yuuni Tsubaki]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&#039;&amp;gt;&lt;br /&gt;
[[File:recommend2603.png|700px|link=卡琉佩市]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&#039;&amp;gt;&lt;br /&gt;
[[File:yuuniwiki3.1a.png|274px|link=首页]][[File:yuuniwiki3.2a.png|425px|link=悠日计划 基本法案 5.22 发行版本 7]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&#039;&amp;gt;&lt;br /&gt;
[[File:Yuuniwiki4.1a.2026c.png|426px|link=Creating玩家基本法案]][[File:yuuniwiki4.2a.png|274px|link=《 MSSR 基本法（ v. 2206）》]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[File:yuuniwiki5.png|center|700px|link=悠日计划 宣传帖文 5.2210J]]&lt;br /&gt;
[[File:yuuniwikiend2603.png|center|700px|link=首页]]&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%96%87%E4%BB%B6:Yuuniwikiend2603.png&amp;diff=4971</id>
		<title>文件:Yuuniwikiend2603.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%96%87%E4%BB%B6:Yuuniwikiend2603.png&amp;diff=4971"/>
		<updated>2026-03-08T09:54:21Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%96%87%E4%BB%B6:Recommend2603.png&amp;diff=4970</id>
		<title>文件:Recommend2603.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%96%87%E4%BB%B6:Recommend2603.png&amp;diff=4970"/>
		<updated>2026-03-08T09:33:02Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%96%87%E4%BB%B6:Yuuniwiki4.1a.2026c.png&amp;diff=4969</id>
		<title>文件:Yuuniwiki4.1a.2026c.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%96%87%E4%BB%B6:Yuuniwiki4.1a.2026c.png&amp;diff=4969"/>
		<updated>2026-03-08T09:27:54Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=Creating%E7%8E%A9%E5%AE%B6%E5%9F%BA%E6%9C%AC%E6%B3%95%E6%A1%88&amp;diff=4966</id>
		<title>Creating玩家基本法案</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=Creating%E7%8E%A9%E5%AE%B6%E5%9F%BA%E6%9C%AC%E6%B3%95%E6%A1%88&amp;diff=4966"/>
		<updated>2026-03-08T08:23:32Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​更新&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Creating现已加入悠日计划，我们重新定制《Creating玩家基本法案》，以制约部分玩家不合规的行为。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
为了维护 Creating 建设的有序，并为保障所有 Creating 玩家的品质，任何 Creating 玩家必须同意《Creating玩家基本法案》当下发行版本方可游玩 Creating。当您进入服务器，即视为您已阅读并同意本法案。&lt;br /&gt;
&lt;br /&gt;
目前使用版本为 &#039;&#039;&#039;Creating玩家基本法案 2602&#039;&#039;&#039; (简称 基本法案 2602 或 基本法案)，是适用于 Creating 全境的主要法案。&lt;br /&gt;
&lt;br /&gt;
==历史==&lt;br /&gt;
《Creating玩家基本法案》前身为《Creating 玩家基本规则》(2022.1颁布)、由&#039;&#039;&#039;小蜜糖柚子(ayear)&#039;&#039;&#039;制定的群公告。法案在基本规则与群公告的基础上修改并添加了更多信息。&lt;br /&gt;
==法案正文 (2602)==&lt;br /&gt;
===最终用户许可===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;一、《Creating 玩家基本法案》各项内容之解释、适用及争议均应依照 Creating 当前所用服务器所在国家或地区的基本法令受理之。Creating 作为主体依据本最终玩家许可及运营法案为您提供名为“Creating”的 Minecraft 第三方服务器服务。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
二、&#039;&#039;&#039;“游玩 Creating”属 Creating 工程组(以下简称“工程组”)所赋予您的特权，而非您所享有的固定权利。&#039;&#039;&#039;游玩 Creating 即代表您同意并遵守《Creating 玩家基本法案》中的所有内容及其他 Creating 中所有已通过生效并公示的法案。&lt;br /&gt;
&lt;br /&gt;
三、&#039;&#039;&#039;工程组有权于任何时间经内部公投以修改或变更《Creating 玩家基本法案》。&#039;&#039;&#039;若遇任何基本法案重大变更，工程组将提前 7 个工作日于官方新闻频道或群聊中发布预览版本。7 日内您可提出修正意见，工程组将在投票后予以答复。若您于任何修改或变更后登入 Creating，即视为您已经阅读、了解并同意接受最新法案。若您不同意，应立刻停止使用 Creating 提供的任何服务。&lt;br /&gt;
&lt;br /&gt;
四、&#039;&#039;&#039;游玩 Creating 即代表您允许工程组作为主体记录您的隐私信息如下：&#039;&#039;&#039;&lt;br /&gt;
 1.您的登录数据、方块放置与破坏信息、公屏公开聊天信息与物品使用记录；&lt;br /&gt;
 2.您每次登录的 IP 地址；&lt;br /&gt;
 3.您的游戏 ID、UUID、邮箱及社交账户信息；&lt;br /&gt;
 4.基于您的方块交互记录所生成的游玩画像；&lt;br /&gt;
除法律要求、司法协作、紧急避险或恶意违规被列入黑名单披露外，工程组不会向任何人公开您的隐私信息。&lt;br /&gt;
&lt;br /&gt;
五、&#039;&#039;&#039;工程组作为主体，可将您的游戏 ID、间接参与或引发的事件、您的数字资产（如建筑、文字、艺术作品）以截图或数据摘录形式客观、中立地记录至 悠日计划 维基百科或存档中。&#039;&#039;&#039;若档案涉及隐私，请联系工程组解决。出于业务需要，工程组也可能将资产用于运营评估、审计，并接受您名下资产的全数导出申请。您了解并同意&#039;&#039;&#039;工程组已获得无偿授权可在经过通知、标注著作人信息后将您的数字资产编辑收录于 Creating 内外任何出版物、推荐清单或营销品中。&#039;&#039;&#039;您应保证工程组行使上述权利时不致侵害任何第三人之权利。若您无合法权利使用他人资产，请勿擅自将其上载至 Creating。&lt;br /&gt;
&lt;br /&gt;
六、&#039;&#039;&#039;您的任何数字资产、发表的言论由您自负责任。&#039;&#039;&#039;在不涉及侮辱、恶意中伤或违反人伦习惯之条件下，您了解并同意任何 Creating 玩家已获得您无偿授权，可对您的数字资产进行主观褒贬评价。&lt;br /&gt;
&lt;br /&gt;
七、&#039;&#039;&#039;您了解工程组并未针对“玩家内容”事先加以审查认可，工程组无法控制玩家自发产生的内容，不保证其正确性、完整性或品质。&#039;&#039;&#039;在游玩过程中，您可能会接触到令人不快、不适当的内容。在任何情况下，工程组均不为此类内容负责。工程组有权（但无义务）依考量主观拒绝或移除任何“玩家内容”。&lt;br /&gt;
&lt;br /&gt;
八、&#039;&#039;&#039;您承诺绝不为任何非法目的游玩 Creating，并保证不从事侵害他人权益之行为，&#039;&#039;&#039;包括但不限于：妨害名誉或隐私；发布侮辱、威胁、不雅、引起广泛政治立场冲突之内容；冒用他人名义游玩；从事不法交易或宣扬商业性质 Minecraft 服务器等。工程组有权以合理方式单方面直接临时封锁或永久清退此类行为者。&lt;br /&gt;
&lt;br /&gt;
九、工程组是地图的持有者，&#039;&#039;&#039;工程组将尽最大努力维护地图可持续性、服务器运作及资料安全。&#039;&#039;&#039;但部分时间服务可能因漏洞、维护或攻击出现中断，造成资产丧失、错误或损失。您应自行采取防护措施。工程组对您因使用（或无法使用）服务造成的损害不负赔偿责任，并保留随时暂停或终止服务的权利。&lt;br /&gt;
&lt;br /&gt;
十、&#039;&#039;&#039;您可自愿向工程组申请“退服”或“暂离”。退服后无法以原 ID 重新加入。&#039;&#039;&#039;暂离持续时间不得超过 1 年，若超过 1 年未登入，工程组有权将您从玩家名单内移除，移除后重新登入服务器将被视为非法进入服务器，可能会面临监禁。&lt;br /&gt;
&lt;br /&gt;
===运营法案===&lt;br /&gt;
一、&#039;&#039;&#039;Creating Creative (及生存区)(以下简称 Creating或虹海)是遵循 Mojang EULA 的 Minecraft 第三方公益性质服务器，位于悠日计划群组服中&#039;&#039;&#039;；Creating Survival （以下简称生存服)同是遵循 Mojang EULA 的 Minecraft 第三方公益性质服务器，由工程组独立运营，归属地基于当下 Creating 所用服务器所在的国家或地区。Creating Creative 是以城市建造、轨道交通为主要构成元素的 Minecraft服务器，部分地区在地方条款内进行 RP 制度。&lt;br /&gt;
&lt;br /&gt;
二、&#039;&#039;&#039;Creating 是民主、独立的 Minecraft 服务器，玩家在游戏中享有决策投票权、参政议政权、言论自由权及符合现实中习惯法所定义的基本人权。&#039;&#039;&#039;Creating 实行协商制共和制度，由 Creating 工程组(服务器级决策与外交、地区管理与建设维护)、Creating管理组（紧急时刻决策）共同管理。服务器内的土地所有权归 Creating 所有，由工程组进行管理。&lt;br /&gt;
&lt;br /&gt;
三、Creating 的服主仅代表Creating，服主不一定是当前群组服的实际运营者，但拥有保证 Creating 服务器的运行和境内事务的稳定的义务。&lt;br /&gt;
&lt;br /&gt;
===玩家行为法案===&lt;br /&gt;
一、不允许在服务器及群聊内过度谈论政治立场、发送令大多数人感到不适的内容。以上行为者经三个以上玩家反馈警告一次后无效直接清退。&lt;br /&gt;
&lt;br /&gt;
二、玩家私有资产受到保护。禁止在未经同意下复制、移动乃至破坏他人建筑，情节严重者最高直接清退。禁止偷窃、破坏其他玩家的私有载具，以上行为可最高监禁 1 个月。RP模式下游戏内物品若遭到偷窃、侵占可联系工程组处理。&lt;br /&gt;
&lt;br /&gt;
三、严禁破坏任何公共系统的运行（包括但不限于铁路、银行），情节严重者最高直接清退。&lt;br /&gt;
&lt;br /&gt;
四、禁止将 Creating 内部事务传播至其他服务器、群聊内。未经许可提取、改造、二次分发 uDays、SantorsiaWorks、悠日计划、Creating 所制作或购买的附加组件及基于“互通计划”引进的附加组件属于非法行为，Creating 作为主体有权予以追究，并在此类附加组件官方页面处公示违反条约的玩家 ID 及联系方式。&lt;br /&gt;
&lt;br /&gt;
五、严禁使用包括但不限于外挂等在 MC 原版游戏范围外提供作弊的工具进入服务器，一经发现最高可被标记为危险人物并直接清退。&lt;br /&gt;
&lt;br /&gt;
===境外旅行法案===&lt;br /&gt;
一、前往其他服务器领地内须具备由 Creating 所开具的护照与其他服务器管辖区域所开具的观光或建筑签证。申请 Creating 护照的玩家必须是从属于 Creating 中任意行政区的玩家。按照悠日计划法案约定，若须申请 Creating 护照，须向工程组有关负责人填写提交书面申请，并使用QQ 提供皮肤文件至工程组处以供制作护照，Creating 承诺不会将这些皮肤文件用于其他任何用途。&lt;br /&gt;
&lt;br /&gt;
二、悠日计划所有地区采用属地原则，玩家出境后一切行为均在当地法案约束下，Creating 作为主体不会作为玩家登记方为玩家做任何保释。若情节严重，玩家在境外的行为违反了《Creating 玩家法案》中达到清退条件的条文，在工程组公开投票后可能会面临直接清退。&lt;br /&gt;
&lt;br /&gt;
===玩家开发法案===&lt;br /&gt;
&lt;br /&gt;
一、基于 Creating 的创造服属性，玩家在审核后均可获得创造权限。任何玩家的开发建筑活动都需要在[[Creating_质量控制法案|《Creating 质量控制法案》]]下进行。&lt;br /&gt;
&lt;br /&gt;
二、Creating全境受工程组统筹规划，除自治区内（已获得管理者同意下），Creating其余地区包括未划定行政区域的地区均受工程组管理。玩家进行建设活动需要先将建筑大致三维信息、用途等发送至工程组相关成员报备。在服务器正常运行下，工程组需要在一天内给定回复。&lt;br /&gt;
&lt;br /&gt;
三、直辖市内大部分区域被划定了功能区及风格参考，在直辖区内建设需符合当地建设风格、符合不破坏天际线、具有实际运用原则。&lt;br /&gt;
&lt;br /&gt;
请根据您规划建筑的风格选择您的建筑区域，以下列出部分规划区的风格要求：&lt;br /&gt;
 森园市林海区森园中心区域：定位为中心商务区（CBD），应以现代都市风格进行建设，建筑比例推荐为 1:1.25。&lt;br /&gt;
 森园市北海县：规划为海滨乡村风格。开发过程需遵循“生态优先”原则，严禁大肆破坏自然地形或过度砍伐原生植被；应完整保留原始森林风貌与自然海岸线，仅允许适度开发，建筑高度不宜超过 20 格。&lt;br /&gt;
 森园市雪原县：规划为雪乡乡村风格。&lt;br /&gt;
 新海市渚霞区：定位为新海市“郊区”，建筑风格允许实验性探索，推荐比例为 1:125 至 1:1，不宜建造比例过小的建筑。&lt;br /&gt;
 新海市渚霞区云城区域：规划为古城风格，建设时应参考“小王府”及“中国城”等现有建筑风貌，确保整体视觉统一。&lt;br /&gt;
 滨海市滨洲县：规划为现代都市类型。作为滨海市西进战略的新城重点区域，建筑施工应确保自然海岸线不被大规模填平或挖空，推荐建筑比例为 1:1 至 1:1.25。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====建筑保护法案====&lt;br /&gt;
一、&#039;&#039;&#039;建筑凡在 Creating 直辖城市或已报备的自治区内落成，就成为 Creating 世界线的一部分。&#039;&#039;&#039;玩家对其作品的构思、设计方案拥有排他性的精神权利。建造者永远拥有其作品的署名权，工程组在任何记录、展示或存档中，均须保留并标注原作者的游戏 ID 信息。服务器有权在玩家离开后，以“历史遗迹”的形式继续保留、维护这段数据，直接行使管理权。玩家虽享有该建筑的使用权与设计权，但&#039;&#039;&#039;不得单方面行使对该建筑的“毁灭性处置权”。&#039;&#039;&#039; 除非涉及安全隐患、严重违规或极其低质的敷衍建筑，工程组承诺不因玩家身份变更而直接移除建筑。若建筑出现严重破损或因版本更新产生显示错误，工程组有权在不征得玩家同意的情况下进行“复原性维修”。&lt;br /&gt;
&lt;br /&gt;
二、&#039;&#039;&#039;严禁玩家因个人情绪、他人煽动、退服抗议或其他消极理由，对其在服务器内存留的建筑进行大规模拆除、破坏或使其失去原有艺术/功能价值。&#039;&#039;&#039;此类行为可能会被工程组界定为“针对社区共有资产的恶意破坏&#039;&#039;（Griefing）&#039;&#039;”。同时严禁任何玩家以任何形式鼓动、教唆、威胁他人拆除其在服务器内的建筑。此类煽动行为将被视为严重违反《玩家行为法案》，工程组有权对煽动者执行直接清退处理。&lt;br /&gt;
&lt;br /&gt;
三、若玩家因合理的规划调整或建筑翻新需要拆除旧作，应在动工前向工程组进行简要报备。对于具有极高历史价值的地标建筑，即便由原作者提出，工程组亦保留“否决拆除请求”并将其转为官方托管遗迹的权利，但仍保留原作者的著作权。&lt;br /&gt;
&lt;br /&gt;
四、&#039;&#039;&#039;工程组严禁将任何玩家建筑资产用于商业化牟利。&#039;&#039;&#039;工程组在将建筑资产用于悠日计划 维基百科词条编写、宣传短片拍摄、Newsroom 汇编以及社区内部展示时应注明作者，此外无需另行征得玩家同意。&lt;br /&gt;
&lt;br /&gt;
===私铁法案===&lt;br /&gt;
一、虹海境内开放私铁建设，但须遵循《Creating 质量控制法案》的19、20条及以下规则&lt;br /&gt;
 1.所有私铁线路需要经报批经工程组审议后再进行建设，并保证线路建设标准不低于 7 号线，至少一个车站内注明运营等级。&lt;br /&gt;
 2.若设计与 Creating 现有铁道换乘，可选择以下几个车站：&lt;br /&gt;
 * C2 新海市 渚霞区 轭湖湾站、小王府站、渚霞站；甘地市 别野区 霜泽站&lt;br /&gt;
 3.为结合美观度要求，铁路线路周边环境需要专门景观优化、严禁裸露地形断面、大量桥梁悬浮，沿线必须要求美观程度符合 Creating 建设风格，做好环境优化相关措施。&lt;br /&gt;
 4.私铁建设需考虑线路实际乘坐需求、服务器承载程度、玩家投票表决、私铁自谋盈亏。以上每一点都为申报时工程组的考虑因素。&lt;br /&gt;
&lt;br /&gt;
二、自治区区域内&lt;br /&gt;
 1.私铁建设需考虑线路实际乘坐需求、服务器承载程度、玩家投票表决、私铁自谋盈亏。若以上因素超出工程组所认为接受程度，工程组可能会干涉、介入铁路线的建设。&lt;br /&gt;
 2.自治区内私铁仅限于自治区行政范围内，自治区外部分适用本部分第一条条文。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===自治区法案===&lt;br /&gt;
====基本法====&lt;br /&gt;
在 EULA 及运营法案下，虹海广域地区土地的所有权归 Creating 所有，由其管理组织 Creating 工程组及 CzWorks 进行管理。自治区的地域范围内的地权归工程组所有，行政管辖权经由工程组授权，移交给自治区管理者。因此管理自治区并非管理者之天赋权利和必定拥有的权力，一切权力及权利仅是由工程组交予管理者的。工程组保留对所授权力的最终解释权与收回权。&lt;br /&gt;
&lt;br /&gt;
在自治区划定范围生效后，Creating 工程组无权以“服务器管理方”名义对自治区内进行插手或直接管理，保障其高度自治权。&lt;br /&gt;
&lt;br /&gt;
自治区的定义大致等同于“特定授权领地”，仅由管理者及其由其所任命的玩家进行管理。自治区拥有高度自治权力，由管理者进行统筹建设发展，在工程组的总体框架下，享有独立的建设规划权、司法准入权及经济发展自主权。&lt;br /&gt;
&lt;br /&gt;
自治区登记玩家与工程组直辖城市玩家在服务器归属上具有同等法律地位，统称为 Creating 玩家。在办理出入境事务时需到新海市的出入境办理大厅和目的地领事馆办理。&lt;br /&gt;
&lt;br /&gt;
====管理法====&lt;br /&gt;
自治区管理者对自治区内一切事务负责，管理者对自治区内的一切行为、建设及纠纷负有全面管理责任。&lt;br /&gt;
&lt;br /&gt;
一、《Creating 玩家基本法案》仅&amp;lt;最终用户许可&amp;gt;、&amp;lt;境外旅行法案&amp;gt;、&amp;lt;运营法案&amp;gt;、&amp;lt;玩家行为法案&amp;gt;第一、四条、&amp;lt;私铁建设法案&amp;gt;第二条、&amp;lt;建筑保护法案&amp;gt;第一、二、四条涉及自治区部分及&amp;lt;自治区法案&amp;gt;对自治区内生效，管理者可制定更多法案或启用《基本法案》中内容实施管辖。&lt;br /&gt;
&lt;br /&gt;
二、自治区领土是 Creating 不可分割的组成部分，为以虹海服务器名义所拥有的土地。任何管理者、玩家不得以任何形式进行自治区内的独立或任何分裂行为。自治区外交事务须由虹海外交部统一归口管理，其外交等级与直辖城市对等，严禁私自以自治区名义签署具有外交性质的协议，不得直接以自治区名义进行外交。&lt;br /&gt;
&lt;br /&gt;
三、凡自治区内已分配的建设(活动)区域，若 8 个月该区域内无任何实质性建设活动，或仅存在敷衍、消极建设行为，且未向工程组申请延期并获得批准的，工程组有权无偿收回该区域的管理权及相关权限。&lt;br /&gt;
  a. 因学业或其他正当理由无法兼顾建设的，可向工程组申请延期，延长期限最高不超过 4 个月（即总闲置期不得超过 12 个月）。&lt;br /&gt;
  b.工程组收回权限后原自治区将降级为临近工程组直辖城市的附属县/市。原管理者可重新申请管理权，但其过往履职表现将作为评估准入的核心指标。&lt;br /&gt;
&lt;br /&gt;
====回收法案====&lt;br /&gt;
&lt;br /&gt;
一、若自治区管理者自最后一天上线后 6 个月无任何游戏内活动，3 个月内无任何社交群聊内活动或宣布离开服务器，工程组将暂时收回自治区的所有权限进行管理。自治区管理者重新回到游戏可重新向工程组提出自治申请。&lt;br /&gt;
&lt;br /&gt;
二、自治区若违反&amp;lt;自治区法案&amp;gt;中的内容（包括但不限于：宣称独立、对抗中央管辖、严重破坏服务器生态等），工程组有权立即暂停管理者对自治区的自治权，收回自治区的一切权限。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===工程组、管理组法案===&lt;br /&gt;
&lt;br /&gt;
一、自 2022 年 10 月起，Creating 工程组确立为 Creating 广域地区之最高日常行政及执行主体。工程组实行民主票决机制，行政权力属于集体，而非任何单一成员。工程组全体成员依法行使决策权，负责外交事务、区域规划、建设维护以及对境内所有公有制经济实体进行行政管理。&lt;br /&gt;
&lt;br /&gt;
二、Creating 管理组（前身为“Creating 最高权限管理员”，现由 CatalpaCute、BenLi06、linyushu520 三位成员构成）作为 Creating 的最高权力储备主体，自 2022 年 9 月起，其日常行政职能正式移交工程组。管理组不参与平时的一切活动与决策，但保留部分权力。在Creating进入紧急状态、戒严或受到主权危机，或所用服务器遭遇打击的情况下，管理组有权直接控制工程组，在管理内投票超过半数情况下直接进行包括但不限于“清退玩家”、“收回所有权利”、“暂停服务器开放”等特殊决策。&lt;br /&gt;
&lt;br /&gt;
三、工程组成员在执行公务期间，必须恪守“权力法定、行政中立”原则。严禁以公权力侵犯玩家之正当权益，禁止任何形式的行政权力滥用。&lt;br /&gt;
除处理紧急违规或安全隐患外，工程组成员不得干涉玩家的正常游玩进程。严禁实施下列行为：&lt;br /&gt;
未经法定程序批准，严禁以“官方名义”占用玩家合法领地建设任何性质的构筑物。&lt;br /&gt;
严禁私自向玩家承诺或直接授予以任何形式的游戏资源、特权或地位。&lt;br /&gt;
未经玩家同意，严禁执行非必要的传送指令（TP）。&lt;br /&gt;
严禁利用官方身份煽动、诱导或鼓励玩家群体从事特定行为。&lt;br /&gt;
&lt;br /&gt;
四、为维护服务器整体运营安全，工程组成员在不影响、不干预玩家正常游戏体验的前提下可以隐身状态对入服七日内的新玩家进行随机抽查与行为观察。&lt;br /&gt;
&lt;br /&gt;
==法案正文 (2411 已停止使用)==&lt;br /&gt;
---现最新版本为 Creating玩家基本法案2411&lt;br /&gt;
&lt;br /&gt;
Creating是遵循 Mojang EULA 的 Minecraft 基岩平台第三⽅服务器，是以轨道交通、城镇建设为中心的创造服务器，以和平相处、实现共产为目标的生存服。&lt;br /&gt;
&lt;br /&gt;
一、 游戏&lt;br /&gt;
您成功进入主群，代表您已获得CreatingServer(Creative与Survival)的基本游玩资格，您仅需阅读公告即可进入Creating。&lt;br /&gt;
请和他人友好相处、友好交流，不要破坏别人的劳作，建议改群昵称为游戏ID，有问题可以找管理，你可以自己独自发展，也可以选择和大家一起发展，共享资源。如果发现有op或者外挂等危害服务器行为请截图或者视频向管理员或者群主举报，最后，祝你游玩快乐。&lt;br /&gt;
如发现有破坏服务器(包括但不限于外挂)等行为，我们将酌情进行处罚。&lt;br /&gt;
我们也非常重视玩家游戏体验，我们欢迎您在游戏过程中对我们提出建议，我们会尽可能的采纳&lt;br /&gt;
&lt;br /&gt;
二、 群内聊天&lt;br /&gt;
在主群，您可以自由地与他人聊天 (除血腥暴力等内容)，可以是我的世界Minecraft，甚至是荒野乱斗BrawlStars。&lt;br /&gt;
聊天过程中，如果有与对方不同的意见，除非您有绝对的信心自己是正确的，否则请您在网络上搜寻结果，对比自己的观点是否正确再进行争论。&lt;br /&gt;
您如与他人发生争执，我们会查看聊天记录并对涉事者酌情禁言。无缘无故骂人，无缘无故发送流汗黄豆等含有特殊意义的表情我们将最高进行清退。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
三、 邀请玩家&lt;br /&gt;
我们非常欢迎现有玩家邀请您的朋友等加入Creating，如果是优质玩家，我们更加感激，值得注意的是您不能直接将Creating的IP/端口直接分享给未进群的玩家，如有发现，您可能会受到处罚。&lt;br /&gt;
如何正确邀请玩家？您应将Creating审核群分享给您要邀请的人，待管理审核后即可进入主群。&lt;br /&gt;
&lt;br /&gt;
四、 捐赠&lt;br /&gt;
我们接受您的捐赠，但您捐赠后并不会在服务器内收到特别的待遇，您的捐赠我们将用于服务器升级、购买插件等。&lt;br /&gt;
&lt;br /&gt;
五、服务器的正确游玩方式&lt;br /&gt;
       若您要加入创造服，请寻找管理员为您添加白名单，生存服直接进入即可。&lt;br /&gt;
       我们建议您同时进入Creating的公告群、CreatingQQ频道&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%96%87%E4%BB%B6:Yuuniwiki3.2a.png&amp;diff=4962</id>
		<title>文件:Yuuniwiki3.2a.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%96%87%E4%BB%B6:Yuuniwiki3.2a.png&amp;diff=4962"/>
		<updated>2026-03-05T14:43:58Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​CatalpaCute上传文件:Yuuniwiki3.2a.png的新版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=9.2602_Yuuni_Tsubaki&amp;diff=4961</id>
		<title>9.2602 Yuuni Tsubaki</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=9.2602_Yuuni_Tsubaki&amp;diff=4961"/>
		<updated>2026-03-05T12:47:36Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​调整&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox OS&lt;br /&gt;
| bodystyle =&lt;br /&gt;
| title = 9.2602 Yuuni Tsubaki&lt;br /&gt;
| name = {{lang|en|9.2602 Yuuni Tsubaki}}&lt;br /&gt;
| family = 悠星 ~ Yuuni SkyViewer&lt;br /&gt;
| logo_size = 400px&lt;br /&gt;
| developer = 松霖各地方代表、[[Creating工程组|虹海工程组]]、猫尾草道桥工坊&lt;br /&gt;
| first_release_date = 2026 年 2 月 10 日&lt;br /&gt;
| release_version = 9.2602_R1 (Stable)&lt;br /&gt;
| source_model = 社区驱动 / 核心组件加密&lt;br /&gt;
| license = [[悠日计划 联合法案 2026]]&lt;br /&gt;
| preceded_by = [[8.25 Yuuni Endless]]&lt;br /&gt;
| succeeded_by =&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;9.2602 Yuuni Tsubaki&#039;&#039;&#039; 是 Yuuniverse 社区基于 Minecraft Java 平台制作的私有发行版本 &#039;&#039;&#039;悠游～Yuuni Experience 9.26&#039;&#039;&#039; 的首个稳定分支。该版本于 2026 年 2 月 10 日上线。&lt;br /&gt;
作为 26 年首个发行版本，本版本在大体上完成了 2025 年末遗留空洞的最终填补。&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
=== Java时代前期 ===&lt;br /&gt;
自 2022 年末起， Santorsia 通过多种渠道进行了小规模的玩家引入，这批成员构成了如今玩家群体的重要基石。在此期间（2022 至 2025 年），一批体现松霖核心价值观的设施先后制作并投入使用。&lt;br /&gt;
为解决玩家基数过少的问题，松霖地区通过放宽权限管制的方式，极大提升了建设与开发的效率，但也因此积累了一系列高速发展所带来的问题，亟待解决。&lt;br /&gt;
与此同时，Creating 地区保持稳步发展，猫尾草地区也通过统筹规划取得了一定的建设成果。&lt;br /&gt;
&lt;br /&gt;
=== 变革时代 ===&lt;br /&gt;
自 2025 年末 Santorsia 宣布永久退出、SantorsiaWorks交出所有权利后，松霖陷入社会动荡，各项工作陷入明显混乱。在此背景下，松霖各地区有部分玩家尝试重建差异层级的管理机构。由于各方利益诉求不同，反而在全服范围内催生出了一种较为民主的氛围。&lt;br /&gt;
&lt;br /&gt;
=== 公开与发布 ===&lt;br /&gt;
2月10日，9.2602 正式推送。在 2025 年中断的版本更新此刻恢复，接替 8.25 Yuuni Endless 继续保障玩家游戏。&lt;br /&gt;
&lt;br /&gt;
== 主要更新日志 ==&lt;br /&gt;
==== 9.2602 发行版本 1 ====&lt;br /&gt;
发行版本 1(9.2602_Release 1) 在 2026 年 2 月 10 日更新。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;核心组件与 MOD 阵列&#039;&#039;&#039;&lt;br /&gt;
* 松霖繁荣版本更新至 2026.2.1a&lt;br /&gt;
* 添加了 Create:Interiors 模组&lt;br /&gt;
* 添加了森罗物语模组&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;网络优化&#039;&#039;&#039;&lt;br /&gt;
* 增加了玩家提供的 FRP 服务器作为内网穿透，提高了游戏的稳定性与 Bluemap 的访问性。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;见证时光&#039;&#039;&#039;&lt;br /&gt;
* 恢复了 Yuuni Wiki &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;新工程启动&#039;&#039;&#039; &lt;br /&gt;
由 Wzxs9099 与 NanGauCover 主导的[[花都市|花都]]池店机场工程稳步推进，进一步增强花都的交通便利性、RP游戏情节的可用性。&lt;br /&gt;
&lt;br /&gt;
== 政治格局和治理形态变动 ==&lt;br /&gt;
=== 体现 ===&lt;br /&gt;
 1.松霖各地区核心玩家逐渐形成不同的利益代表，围绕各自的发展利益展开维护与争取；&lt;br /&gt;
&lt;br /&gt;
 2.猫尾草地区与 Creating 地区在此期间保持稳定，未见显著变动。&lt;br /&gt;
&lt;br /&gt;
== 评价 ==&lt;br /&gt;
=== 当下 ===&lt;br /&gt;
在 9.2602 的版本前言中，服务器资源提供方明确提出了对服务器运行的保障，此项举措对于对 Santorsia 事件有所顾忌的玩家起了一定的安抚作用，采用对话的方式协调，后重新回归到游戏中。&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=9.2602_Yuuni_Tsubaki&amp;diff=4960</id>
		<title>9.2602 Yuuni Tsubaki</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=9.2602_Yuuni_Tsubaki&amp;diff=4960"/>
		<updated>2026-03-04T15:41:51Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​新条目喵&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox OS&lt;br /&gt;
| bodystyle =&lt;br /&gt;
| title = 9.2602 Yuuni Tsubaki&lt;br /&gt;
| name = {{lang|en|9.2602 Yuuni Tsubaki}}&lt;br /&gt;
| family = 悠星 ~ Yuuni SkyViewer&lt;br /&gt;
| logo_size = 400px&lt;br /&gt;
| developer = 松霖各地方代表、虹海工程组、猫尾草道桥工坊&lt;br /&gt;
| first_release_date = 2026 年 2 月 10 日&lt;br /&gt;
| release_version = 9.2602_R1 (Stable)&lt;br /&gt;
| source_model = 社区驱动 / 核心组件加密&lt;br /&gt;
| license = [[悠日计划 联合法案 2026]]&lt;br /&gt;
| preceded_by = [[8.25 Yuuni Endless]]&lt;br /&gt;
| succeeded_by =&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;9.2602 Yuuni Tsubaki&#039;&#039;&#039; 是 Yuuniverse 社区基于 Minecraft Java 平台制作的私有发行版本 &#039;&#039;&#039;悠游～Yuuni Experience 9.26&#039;&#039;&#039; 的首个稳定分支。该版本于 2026 年 2 月 10 日上线。&lt;br /&gt;
作为 26 年首个发行版本，本版本在大体上完成了 2025 年末遗留空洞的最终填补。&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
=== Java时代前期 ===&lt;br /&gt;
自 2022 年末起， Santorsia 通过多种渠道进行了小规模的玩家引入，这批成员构成了如今玩家群体的重要基石。在此期间（2022至2025年），一批体现松霖核心价值观的设施先后制作并投入使用。&lt;br /&gt;
为解决玩家基数过少的问题，松霖地区通过放宽权限管制的方式，极大提升了建设与开发的效率，但也因此积累了一系列高速发展所带来的问题，亟待解决。&lt;br /&gt;
与此同时，Creating 地区保持稳步发展，猫尾草地区也通过统筹规划取得了一定的建设成果。&lt;br /&gt;
&lt;br /&gt;
=== 变革时代 ===&lt;br /&gt;
自 2025 年末 Santorsia 宣布永久退出、SantorsiaWorks交出所有权利后，松霖陷入社会动荡，各项工作陷入明显混乱。在此背景下，松霖各地区有部分玩家尝试重建差异层级的管理机构。由于各方利益诉求不同，反而在全服范围内催生出了一种较为民主的氛围。&lt;br /&gt;
&lt;br /&gt;
=== 公开与发布 ===&lt;br /&gt;
2月10日，9.2602 正式推送。在 2025 年中断的版本更新此刻恢复，接替 8.25 Yuuni Endless 继续保障玩家游戏。&lt;br /&gt;
&lt;br /&gt;
== 主要更新日志 ==&lt;br /&gt;
==== 9.2602 发行版本 1 ====&lt;br /&gt;
发行版本 1(9.2602_Release 1) 在 2026 年 2 月 10 日更新。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;核心组件与 MOD 阵列&#039;&#039;&#039;&lt;br /&gt;
* 松霖繁荣版本更新至2026.2.1a&lt;br /&gt;
* 添加了Create:Interiors模组&lt;br /&gt;
* 添加了森罗物语模组&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;网络优化&#039;&#039;&#039;&lt;br /&gt;
* 增加了玩家提供的 FRP 服务器作为内网穿透，提高了游戏的稳定性与 Bluemap 的访问性。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;见证时光&#039;&#039;&#039;&lt;br /&gt;
* 恢复了 Yuuni Wiki &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;新工程启动&#039;&#039;&#039; &lt;br /&gt;
由 Wzxs9099 与 NanGauCover 主导的[[花都市|花都]]池店机场工程稳步推进，进一步增强花都的交通便利性、RP游戏情节的可用性。&lt;br /&gt;
&lt;br /&gt;
== 政治格局和治理形态变动 ==&lt;br /&gt;
=== 体现 ===&lt;br /&gt;
 1.松霖各地区核心玩家逐渐形成不同的利益代表，围绕各自的发展利益展开维护与争取；&lt;br /&gt;
&lt;br /&gt;
 2.猫尾草地区与Creating地区在此期间保持稳定，未见显著变动。&lt;br /&gt;
&lt;br /&gt;
== 评价 ==&lt;br /&gt;
=== 当下 ===&lt;br /&gt;
在 9.2602 的版本前言中，服务器资源提供方明确提出了对服务器运行的保障，此项举措对于对 Santorsia 事件有所顾忌的玩家起了一定的安抚作用，采用对话的方式协调，后重新回归到游戏中。&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=4959</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=4959"/>
		<updated>2026-03-04T15:32:00Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:yuuniwiki1.png|center|700px|link=首页]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&#039;&amp;gt;&lt;br /&gt;
[[File:yuuniwiki2.1a.png|426px|link=Special:Random]][[File:yuuniwiki2.2a_2602.png|274px|link=9.2602 Yuuni Tsubaki]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&#039;&amp;gt;&lt;br /&gt;
[[File:yuuniwiki3.1a.png|274px|link=首页]][[File:yuuniwiki3.2a.png|426px|link=悠日计划 基本法案 5.22 发行版本 7]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&#039;&amp;gt;&lt;br /&gt;
[[File:yuuniwiki4.1a.png|426px|link=首页]][[File:yuuniwiki4.2a.png|274px|link=《 MSSR 基本法（ v. 2206）》]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[File:yuuniwiki5.png|center|700px|link=悠日计划 宣传帖文 5.2210J]]&lt;br /&gt;
[[File:yuuniwikiend.png|center|700px|link=首页]]&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%96%87%E4%BB%B6:Yuuniwiki2.2a_2602.png&amp;diff=4958</id>
		<title>文件:Yuuniwiki2.2a 2602.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%96%87%E4%BB%B6:Yuuniwiki2.2a_2602.png&amp;diff=4958"/>
		<updated>2026-03-04T13:06:36Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=UDays&amp;diff=4954</id>
		<title>UDays</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=UDays&amp;diff=4954"/>
		<updated>2026-02-27T15:31:54Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​恢复条目 重写内容&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Infobox Settlement&lt;br /&gt;
| name                            = uDays&lt;br /&gt;
| other_name                      = 松霖&lt;br /&gt;
| settlement_type                 = &#039;&#039;&#039;悠日计划中的一个服务器&#039;&#039;&#039;&lt;br /&gt;
| image_map                       = [[File:udays.png|200px]]&lt;br /&gt;
| map_caption                     = 服务器标识&lt;br /&gt;
| subdivision_type2               = 服主&lt;br /&gt;
| subdivision_name2               = 宵月ワトラ( -2024)&lt;br /&gt;
| seat_type                       = 主要城市&lt;br /&gt;
| seat                            = [[端点市]]、[[花都市]] 、[[叶原市]]&lt;br /&gt;
| seat1_type                      = 行政中心&lt;br /&gt;
| seat1                           = [[花都市]]&lt;br /&gt;
| parts                           = 3&amp;lt;br /&amp;gt;&lt;br /&gt;
| parts_type                      = 城市数量&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 地理 ==&lt;br /&gt;
[[File:Soonlin_2026.a.jpg|200px|thumb|松霖 2026 年初行政区划图]]&lt;br /&gt;
uDays 是悠日计划内唯一“原生生成”的地区，因此地形相对而言较接近原版。全域涵盖[[花都市]]、[[叶原市]]、[[端点市]]三大市级行政主体。&lt;br /&gt;
根据《悠日计划 基本法案》，松霖地区整体适用区间约位于地图 X 3500 至 -1500、Z 2000 至 -2500 内，包含对应轴坐标的下界关联区域与末路之地专属区域。&lt;br /&gt;
&lt;br /&gt;
任何归属于 uDays 的注册玩家、持有其他合作服务器护照及 uDays 签发有效签证的玩家，均可自由进入松霖共和地区全域；其中松霖自然保护区、叶原北生态文化保护地核心区仅开放观光权限，禁止任何未经审批的地形改造与建筑施工。&lt;br /&gt;
&lt;br /&gt;
== 交通 ==&lt;br /&gt;
=== 轨道交通 ===&lt;br /&gt;
==== 城际铁路 ====&lt;br /&gt;
&#039;&#039;参见：[[悠日铁道]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
uDays 曾被玩家 Handsome Zizun 评价为“铁道服务器的天花板”。其最核心的铁路系统——连接[[叶原市]]悠晴县与[[端点市]]新生区的纵贯线由[[悠日铁道|悠日铁道实业集团]]运营。&lt;br /&gt;
[[File:htvx5.jpg|200px|thumb|位于南岐区的南岐车辆段]]&lt;br /&gt;
* 目前纵贯线的运营情况如下&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
!线路!!标识符!!汉字!!信息&lt;br /&gt;
|-&lt;br /&gt;
|[[File:yuunitetsu.png|15px]] 纵贯线||&#039;&#039;&#039;YDHS&#039;&#039;&#039;||{{large|{{lang|en-us|新生}}}}||align=left|&lt;br /&gt;
|-&lt;br /&gt;
|[[File:yuunitetsu.png|15px]] 纵贯线||&#039;&#039;&#039;YDSS&#039;&#039;&#039;||{{large|{{lang|en-us|凛雪}}}}||align=left|&lt;br /&gt;
|-&lt;br /&gt;
|[[File:yuunitetsu.png|15px]] 纵贯线||&#039;&#039;&#039;YDAH&#039;&#039;&#039;||{{large|{{lang|en-us|安平}}}}||align=left|&lt;br /&gt;
|- style=&amp;quot;text-decoration: line-through; color: gray;&amp;quot;&lt;br /&gt;
|[[File:yuunitetsu.png|15px]] 纵贯线||&#039;&#039;&#039;YDLF&#039;&#039;&#039;||{{large|{{lang|en-us|叶原}}}}||align=left|（停运）&lt;br /&gt;
|-&lt;br /&gt;
|[[File:yuunitetsu.png|15px]] 纵贯线||&#039;&#039;&#039;YDDT&#039;&#039;&#039;||{{large|{{lang|en-us|大田}}}}||align=left|乘降所&lt;br /&gt;
|-&lt;br /&gt;
|[[File:yuunitetsu.png|15px]] 纵贯线||&#039;&#039;&#039;YDNV&#039;&#039;&#039;||{{large|{{lang|en-us|吧村}}}}||align=left|&lt;br /&gt;
|- style=&amp;quot;text-decoration: line-through; color: gray;&amp;quot;&lt;br /&gt;
|[[File:yuunitetsu.png|15px]] 纵贯线||&#039;&#039;&#039;YDCT&#039;&#039;&#039;||{{large|{{lang|en-us|池店}}}}||align=left|（停运）&lt;br /&gt;
|- style=&amp;quot;text-decoration: line-through; color: gray;&amp;quot;&lt;br /&gt;
|[[File:yuunitetsu.png|15px]] 纵贯线||&#039;&#039;&#039;YDYR&#039;&#039;&#039;||{{large|{{lang|en-us|悠兰}}}}||align=left|（停运） &lt;br /&gt;
|-&lt;br /&gt;
|[[File:yuunitetsu.png|15px]] 纵贯线||&#039;&#039;&#039;YDHT&#039;&#039;&#039;||{{large|{{lang|en-us|花都}}}}||align=left|&lt;br /&gt;
|-&lt;br /&gt;
|[[File:yuunitetsu.png|15px]] 纵贯线||&#039;&#039;&#039;YDYQ&#039;&#039;&#039;||{{large|{{lang|en-us|悠晴}}}}||align=left|&lt;br /&gt;
|-&lt;br /&gt;
|[[File:yuunitetsu.png|15px]] 纵贯线||&#039;&#039;&#039;YDCA&#039;&#039;&#039;||{{large|{{lang|en-us|池店机场}}}}||align=left|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 端点市域铁路 ====&lt;br /&gt;
&#039;&#039;参见：[[端点城市铁路]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
端点城市铁路是悠日计画 uDays 中第三大的铁路系统，名义上为端点市运营，但实际上是千宵草铁路在 uDays 运营的马甲。&lt;br /&gt;
&lt;br /&gt;
端点城铁目前拥有端白线、白沙线等线路。但是在 2023 年悠日计划事件之后服务器一度陷入低迷，使得千铁的运营整体赤字。2025 年，千铁宣布启动破产重组程序，所有列车班次停运。&lt;br /&gt;
&lt;br /&gt;
目前运营于[[花都市]]与 [[Creating]] [[新海市]]之间的花海号列车需经端点城铁及其联络线连接纵贯线与虹海铁路 C3 花海线运行。&lt;br /&gt;
&lt;br /&gt;
=== 公路 ===&lt;br /&gt;
====端巽公路====&lt;br /&gt;
一条贯穿全域的南北陆路交通主轴，20 年中旬左右分段手动铺设完工，全长 6157 格。自[[花都市]]向南，延伸至[[端点市]]安平，是松霖地区历史悠久的交通核心干线。&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
&lt;br /&gt;
[[File:udays_south_history.jpg|200px|thumb|一张反映了 uDays 南部历史的图表。]]&lt;br /&gt;
&lt;br /&gt;
uDays 的历史，起源于2014年Java平台《Minecraft》服务器&#039;&#039;&#039;Grand Theft Minecraft（简称GTM）&#039;&#039;&#039;，历经服务器平台迁移、玩家社群动荡、多城格局迭代与行政中心转移，形成了以端点市、花都市、风巽市、叶原市为核心的完整发展脉络，是uDays服务器从生存社群逐步发展为成熟RP（角色扮演）城市服务器的完整历程。&lt;br /&gt;
&lt;br /&gt;
=== GTM时代（2014 - 2017）===&lt;br /&gt;
[[File:gtm.jpg|200px|thumb|一张 Grand Theft Minecraft 的海报，背景是 St.Louis，左侧玩家即花都市第一任市长 IXA(Soul_IXA)]]&lt;br /&gt;
[[File:gtm2.jpg|200px|thumb|一张 GTM 迁移至 uDays 的海报]]&lt;br /&gt;
&lt;br /&gt;
本阶段是uDays全地区的历史源头，核心发展集中于GTM服务器多世界体系下的生存地图，覆盖今日[[花都市]]、[[风巽市]]、[[端点市]]南部的广阔区域。&lt;br /&gt;
&lt;br /&gt;
2014年8月，GTM服务器为接纳资金链断裂、即将关服的友好服务器&#039;&#039;&#039;ChinaCraft 天朝服务器&#039;&#039;&#039;的流亡玩家，在自身生存世界中设立&#039;&#039;&#039;风巽区域（ChinaCraft）&#039;&#039;&#039;，约定待ChinaCraft重建后交还区域建筑，这一区域即后世所称的&#039;&#039;&#039;前风巽地区(GTM)&#039;&#039;&#039;，也是&#039;&#039;&#039;花都市、风巽市&#039;&#039;&#039;的最早雏形。ChinaCraft关闭后，约六十名流亡玩家入驻风巽区域，在今花都市鹅城区建成主城出生点，建造大量ChinaCraft徽标建筑，期待回归原服务器；但3个月后，ChinaCraft筹集的重启资金被用于《Unturned》服务器运营，彻底放弃Minecraft业务，多数流亡玩家因无法适应GTM主世界的RP玩法陆续退服，仅少数留存玩家参与GTM服务器的建筑工程。&lt;br /&gt;
&lt;br /&gt;
同期，GTM服务器多世界下的生存地图北部（今端点市江南区江泽镇一带），被作为服务器管理组与核心玩家的生存“后花园”，已有大量玩家活动痕迹，成为日后端点市的起源地。这一时期全地区的核心管理者为GTM服主&#039;&#039;&#039;LYMAD（现昵称于可音/Heymay）&#039;&#039;&#039;，其也成为后续uDays服务器的核心创始人。&lt;br /&gt;
&lt;br /&gt;
=== uDays早期（2017 - 2018）===&lt;br /&gt;
[[File:cc2017.jpg|200px|thumb|一张 2018 年前后鱼市街附近的截图]]&lt;br /&gt;
[[File:ccXC.jpg|200px|thumb|uDays 初期风巽地区 ChinaCraft 用导览 NPC]]&lt;br /&gt;
[[File:cc2018.jpg|200px|thumb|2018 年初的天朝度假村旧影(今花都市鹅城区黍离岛)]]&lt;br /&gt;
[[File:2014jz.jpg|200px|thumb|2014的江泽镇玩家房屋，该玩家房屋在 2017 年左右被拆除，原址为今日江泽镇东门。]]&lt;br /&gt;
[[File:HsinLiuwar2.jpg|200px|thumb|left|战后的端点岛渲染图]]&lt;br /&gt;
[[File:HsinLiuwar.jpg|200px|thumb|一张描述新陆战争的概念画]]&lt;br /&gt;
&lt;br /&gt;
2017年2月，GTM 服务器正式关闭，原管理组共同出资组建新服务器&#039;&#039;&#039;uDays&#039;&#039;&#039;，保留 LYMAD 荣誉服主身份。因管理组成员多受学业限制难以使用 PC 端游玩，uDays 定为基岩平台服务器，未迁移 GTM 核心地图 St.Louis，而是继承了已有成熟发展、契合城市 RP 风格的生存世界地图，全地区历史正式进入 uDays 时代。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;核心区域发展与动荡&#039;&#039;&#039;&lt;br /&gt;
1.&#039;&#039;&#039;风巽地区的变迁&#039;&#039;&#039;：2017 年 3 月 7 日 uDays 正式开服后，跟随迁移的前 ChinaCraft 玩家仅剩七八人，风巽区域更名为[[ChinaCraft_天朝服务器(风巽服务器)|风巽地区(uDays：受 ChinaCraft 流亡玩家管辖)]]，保留近乎独立的自治权限，被多数玩家视为流亡服务器而非 uDays 下辖区域。2017 年末，流亡玩家大多退服或迁至端点市，2018 年前留守玩家的登记地与房屋被管理组强制迁移至端点市，2018 年 1 月 1 日，风巽地区(ChinaCraft)正式撤销区划。&lt;br /&gt;
&lt;br /&gt;
2.&#039;&#039;&#039;端点市的崛起与江泽镇事件&#039;&#039;&#039;：uDays 开服后，玩家 &#039;&#039;&#039;njlyf2011&#039;&#039;&#039; 于 2017 年 3 月在江泽镇一带开展生存建设，3个月内建成初具规模的聚落，定义了 uDays 传承至今的&#039;&#039;&#039;城镇化模式&#039;&#039;&#039;。2017 年 6 月江泽镇进入全盛期，9 月已成为 uDays 最大的玩家聚落，以江泽镇为起点，玩家陆续探索发现了岛区、石英镇、新陆岛等区域，奠定了端点市的全域框架。2018 年 2 月，玩家 Courier2002 挑战凋零时操作失误，将凋零引至木构为主的江泽镇，引发全城大火，管理组 1 小时后才介入灭火，江泽镇地表建筑几乎全毁，仅月见塔留存，大量资产受损的玩家渡海迁至端点岛区与新陆岛，江泽镇在此后 2 年内完全荒废。&lt;br /&gt;
&lt;br /&gt;
3.&#039;&#039;&#039;诺记吧村的早期发展&#039;&#039;&#039;：uDays 开服次月，百度贴吧诺基亚吧吧主&#039;&#039;&#039;香蕉蓝(Banana8lue)&#039;&#039;&#039;建立&#039;&#039;&#039;诺记吧村&#039;&#039;&#039;，为后续叶原市的核心组成部分。2017 年 12 月 31 日，诺记吧村举办 uDays 首次新年活动，成为服务器固定新年活动的雏形，大量诺记吧吧友入驻，形成了极具特色的丛林树顶建筑群落，进入第一次发展高峰期。&lt;br /&gt;
&lt;br /&gt;
4.&#039;&#039;&#039;新陆战争与全域冲击&#039;&#039;&#039;：江泽镇事件后，玩家间的不信任感持续加剧，保卫局的隐身巡查行为、生电玩家的“共产制度”物品免费分发行为，进一步激化了玩家矛盾。2018 年 5 月，端点市保卫局被不明玩家炸毁，成为&#039;&#039;&#039;新陆战争&#039;&#039;&#039;的导火索，玩家分化为保卫局派系的端点派、新陆派，与普通玩家分化的自由派、共产派，在端点岛、新陆岛展开无差别 TNT 轰炸，两地地形遭到毁灭性破坏。战争爆发半个月后被管理组叫停，零星冲突直至当年 12 月才完全平息，善后工作未清退任何涉事玩家，仅将少数核心人员放逐至风巽市一带。战后端点岛区启动修复，新陆岛则长期荒废；诺记吧村也被卷入战争，大量树顶建筑被焚毁，多数早期玩家退服，剩余玩家转向地面建设。&lt;br /&gt;
&lt;br /&gt;
5.&#039;&#039;&#039;悠亭城的建立&#039;&#039;&#039;：新陆战争后，部分被强制迁至端点市的前 ChinaCraft 玩家，徒步返回前风巽地区主城附近，在主城东北部建成&#039;&#039;&#039;悠亭城&#039;&#039;&#039;，采用台湾传统建筑风格，与端点市上都区的安平城形成抗衡，成为前风巽地区荒废期唯一的新建大型聚落。&lt;br /&gt;
&lt;br /&gt;
=== 全域初步复苏（2018 - 2019）===&lt;br /&gt;
[[File:jiangze.jpg|200px|thumb|2019 年的江泽镇遗迹]]&lt;br /&gt;
[[File:leavefield_view_church.jpg|200px|thumb|建设中的叶原教堂]]&lt;br /&gt;
[[File:shirakawa.jpg|200px|thumb|left|白川鱼塔，uDays 中现存最大生电设施，但因 Minecraft 1.16 版本更新失效，沦为端点市中最大的无用建筑]]&lt;br /&gt;
&lt;br /&gt;
本阶段前风巽地区进入无管控的荒废期，而端点市完成战后复苏，叶原市正式诞生，全地区从早期动荡转向有序发展的雏形阶段。&lt;br /&gt;
&lt;br /&gt;
2018-2020 年为前风巽地区的&#039;&#039;&#039;无区划时代&#039;&#039;&#039;，uDays 管理组未对区域内的 GTM 时代、ChinaCraft 流亡时代建筑设置任何保护，任由玩家剥离挪用建筑材料，甚至有传言称管理组鼓励拆除行为以抹除ChinaCraft的历史痕迹。2019 年末，玩家 John Cheung 在《uDays 观光推介路线》中记录，前风巽地区留存建筑“几乎只剩木石羊毛框架”。同期，悠亭城的建造玩家于 2020 年前后陆续退服，区域陷入荒废，被 uDays 工程组接管，相关资料直至 2022 年 8 月解严后才逐步披露。&lt;br /&gt;
&lt;br /&gt;
2018 年末，端点岛区完成战后重建，通过大规模填海造陆重塑了地形与港湾，2019 年 4 月地形修复基本完成，建成极光塔、郭师傅饭店等地标建筑。同期，uDays 轨道交通建设正式起步，端点市矿车线路 1 号线于 2019 年 4 月开建并开通首段，后续逐步形成以端点岛区为核心的矿车线网络；为分流出生点人流，上都区 3 号出生点&#039;&#039;&#039;祈雨阁&#039;&#039;&#039;正式开发，配套商业区域快速成型，直至 2020 年经济大崩溃前均保持高速发展。2019年末，uDays 管理组出台《主要区域排除无用生电设施法案》，设立&#039;&#039;&#039;白川自治区&#039;&#039;&#039;集中安置生电玩家，区域内建成冰船中转站、鱼塔等大量生电设施，进入全盛期。&lt;br /&gt;
&lt;br /&gt;
2019年4月，玩家 CCAVVanity 与 Losk WX 离开端点岛，在今叶原城区区域建立&#039;&#039;&#039;沃原&#039;&#039;&#039;，作为端点市的飞地；同年6月，沃原正式更名为&#039;&#039;&#039;叶原（LeaveField）&#039;&#039;&#039;，脱离端点市成为 uDays 第三个城市级行政区。2019 年 10 月，uDays 管理组、工程组正式通过&#039;&#039;&#039;叶原首都计划&#039;&#039;&#039;，将叶原升格为&#039;&#039;&#039;叶原特别市&#039;&#039;&#039;，与端点特别市并列，定为 uDays 未来的首都，成为《uDays 旅行指南 (2020)》的核心主推区域，同步启动了大同广场、uDays总保卫局等核心建筑的建设。&lt;br /&gt;
&lt;br /&gt;
2019 年，诺记吧村进入&#039;&#039;&#039;下树期&#039;&#039;&#039;，玩家建设从树顶转向地面，整体进入消亡期，大量玩家前往端点市寻求发展，仅少数原住民留存。年末玩家 lulujyc 在村内建成 27 米高的骷髅雕塑，因“影响天际线”引发管理组与玩家的争议，但最终未被拆除。&lt;br /&gt;
&lt;br /&gt;
=== 全域动荡（2020）===&lt;br /&gt;
[[File:wt2020.jpg|200px|thumb|5 号出生点设置前后的风巽洋河鸟瞰图，来自悠日档案馆。]]&lt;br /&gt;
[[File:htvxs.jpg|200px|thumb|《uDays 旅行指南 (2020)》中对于森川市的描述]]&lt;br /&gt;
[[File:wtss.jpg|200px|thumb|彼时联结风巽市与森川市的公铁二合一高架公路，ChinaCraft 时代历史建筑&amp;quot;Safari~飞机体素雕像&amp;quot;在该公路修建过程中被拆除]]&lt;br /&gt;
[[File:leavefield_view_2020_1.jpg|200px|thumb|2020 年 1 月叶原市的卫星地图]]&lt;br /&gt;
&lt;br /&gt;
2020 年是 uDays 全地区历史上动荡与发展并存的关键一年，年初爆发的经济大崩溃、年中的悠日戒严令、年末的地图大崩溃，三次重大事件彻底改变了服务器的发展格局；同时南部风巽市、森川市快速崛起，打破了端点市、叶原市双核心的原有格局。&lt;br /&gt;
&lt;br /&gt;
2020 年 1 月，uDays 更新至&amp;quot;2.2001:an uDays Odyssey&amp;quot;版本，基岩版第三方插件全面失效，所有箱子商店、房屋交易系统瘫痪，玩家物产与储蓄遭到毁灭性损失，端点市上都区地契全部丢失，一度沦为鬼城。插件失效状态持续了半年，完整的经济系统直至2年后才完成修复，期间管理组尝试的绿宝石交易制度未能挽回颓势，以玩家 Wherewhere7 为代表的生电玩家，通过生电设施免费分发物品的“共产主义”模式，快速在全服务器崛起。&lt;br /&gt;
&lt;br /&gt;
2020 年 2 月，玩家利用漏洞获取特殊方块导致 uDays 地图不可逆损毁，管理组将地图回档至2月初，并将事件归咎于生电设施，引发了生电玩家群体的强烈反对。2020 年 3 月 12 日，uDays 工程组发布&#039;&#039;&#039;生电戒严令&#039;&#039;&#039;，绕开基本法案清退玩家 Wherewhere7 ，拆除全服大量生电设施，白川自治区快速衰落，生电玩家大量避难至 Cake Mania 服务器。该事件被玩家广泛批评为管理组背弃民主，相关争议直至 2022 年 8 月戒严令解除后才有所缓和。&lt;br /&gt;
&lt;br /&gt;
2020 年 4 月，受端点市玩家流出、端巽公路与“新干线”冰船道开通的带动，前风巽地区进入快速发展期，uDays 出生点迁移至风巽 5 号出生点信义广场，当月设立风巽镇，由uDays 五大元老之一&#039;&#039;&#039;Nzbcorz&#039;&#039;&#039;掌控，后续正式成立玩家自治区域**风巽市**。2020 年 7 月，玩家&#039;&#039;&#039;MethylQAQ&#039;&#039;&#039;申请管理前风巽北部区域，同年 8 月正式成立&#039;&#039;&#039;森川市（并辖南岐镇）&#039;&#039;&#039;，两市初期均由Nzbcorz幕后控制。2020年9月，Nzbcorz 因弊案被 uDays 清退，风巽市由 Xanderminum 完全掌控，森川市由 MethylQAQ 独立管辖，两市进入&#039;&#039;&#039;“森巽友好”&#039;&#039;&#039;黄金时期，修建了大量互联的公路与铁路，同步推进现代化高层建筑建设。森川市在这一时期拆除了绝大多数 GTM 时代、 ChinaCraft 流亡时代的历史建筑，仅偏远的南岐镇留存了部分早期遗迹，因拆建速度失衡、规划混乱，森川市被玩家戏称“缝合城市”“垃圾桶”；同期领域中央铁道（今悠日铁道端巽线）开通，南岐车辆段与车辆控制器测试落地，带动森川市迎来客流与发展高峰。&lt;br /&gt;
2020 年 7 月，风巽市启动&#039;&#039;&#039;原野区&#039;&#039;&#039;（原名远野区，为规避不良梗更名）建设，计划打造全新现代化城区，但因规划过于庞大、玩家参与度低，最终沦为闲置空地。风巽市始终保持“玩家自治区域”定位，无民选制度，管理组与工程组仅拥有建筑豁免权，区域内事务由 Xanderminum 全权决定；同时风巽市接纳了大量对 uDays 管理组不满的玩家，出现了脱离 uDays 独立的思潮，但遭到管理组与 Xanderminum 的共同反对。&lt;br /&gt;
&lt;br /&gt;
2020 年悠日戒严令期间，大量生电玩家前往享有高度自治权的诺记吧村避难，为村落带来了短暂复兴，留下了大量红石生电机器。年末悠日铁道端巽线开通，诺记吧村站成为线路首个标准化车站，吸引大量观光玩家定居，村落放开了仅限诺记吧相关人士定居的限制，进入第二次活跃高峰期。&lt;br /&gt;
&lt;br /&gt;
2020 年，受经济大崩溃、悠日戒严令、地图大崩溃的连续冲击，叶原市所有建筑计划全面叫停，仅悠日铁道端巽线叶原-端点段于 2020 年 10 月勉强开通。2020 年末，受工程组成员流失、明日世界开发案失败的影响，叶原首都计划实际已无力推进，2021 年 1 月，叶原特别市被降格为普通叶原市，首都定位名存实亡。&lt;br /&gt;
&lt;br /&gt;
2020 年 6-9 月，uDays 开放无门槛入驻，大量恶意玩家涌入，端点市上都区核心区域被恶意掏空；同年 10 月，未知玩家利用毁档漏洞破坏地图数据，导致地图完全无法读取。管理组将地图在 Java 与基岩平台间转换修复后，坐标(10000,10000)内的新区块出现大面积断裂错误，形成了uDays 断裂带(No Man’s Days)，迁都叶原计划被迫彻底中断。&lt;br /&gt;
&lt;br /&gt;
2020 年，端巽公路开通后，玩家柠喵与大橙喵在公路中部建成日式乡村风格的&#039;&#039;&#039;池店镇&#039;&#039;&#039;，成为南部区域的重要小型聚落。&lt;br /&gt;
&lt;br /&gt;
=== 新首都开发（2021）===&lt;br /&gt;
[[File:htv3th.jpg|200px|thumb|2021 年 5 月最初的花都市规划，与当下区别实际极大]]&lt;br /&gt;
[[File:Hanato20217.jpg|200px|thumb|2021 年 7 月的花都市悠兰区、悠亭区地图，此时大同广场为森川市时代的原始形态，在 2022 年 4 月被完全拆除重建。]]&lt;br /&gt;
&lt;br /&gt;
2021 年的核心事件是《悠日都花都开发法案》的落地，花都市正式成立并成为 uDays 新的首都职能城市，全地区的政治、经济、发展重心从南部端点市、叶原市，彻底向北部花都市转移，延续至今的全域城市格局正式定型。&lt;br /&gt;
&lt;br /&gt;
2021 年 5 月，为解决端点市锈带化、叶原市首都计划停滞的核心问题，uDays 管理组、工程组、SantorsiaWorks、悠日玩家联合协会正式通过&#039;&#039;&#039;《悠日都花都开发法案》&#039;&#039;&#039;，将森川市、悠亭城、南岐镇、池店镇合并，成立&#039;&#039;&#039;花都市&#039;&#039;&#039;，定为 uDays 全新的首都职能城市。2021 年 6 月，MethylQAQ 交出森川市管辖权，森川市并入澄城市，后改花都市，设悠兰区（2023年更名为鹅城区），交接期间森川市内大量建筑被损毁，仅少量核心建筑留存。2021年6月至2022年4月为花都市&#039;&#039;&#039;悠兰中心期&#039;&#039;&#039;，以“基于 Minecraft 体验的田园城市”为核心理念，由 uDays 工程组与 SantorsiaWorks 联合开发，拆除了森川市时代所有60格以上的高层建筑，大量兴建 1930 年代兴亚式、南洋骑楼、闽粤民俗风格建筑，同步启动&#039;&#039;&#039;鹅城大街&#039;&#039;&#039;复刻计划，叠加在森川市旧城区之上，改造保留了鹅城钟楼等少量历史建筑，打造兼具生活感与工艺质感的核心街区；同期玩家 HondaSaki 负责悠兰区海铃湾开发，在建筑中融入生存服务器特色的公用附魔台、架高式农场等元素，引发玩家两极评价。&lt;br /&gt;
&lt;br /&gt;
2021年1月，&#039;&#039;&#039;Xinyu 事件&#039;&#039;&#039;爆发。因叶原首都计划停滞，玩家 Xinyu1921 预购的叶原房产无法交付，被临时安置在诺记吧村，其空置的房屋被诺记吧村玩家 SpiderGalaxy 当作无主房占用。2021 年 5 月，工程组在调停无效后强行拆除并迁移房屋，引发 SpiderGalaxy 的报复性破坏，最终两名玩家先后退服。该事件导致 uDays 工程组声望大跌，在花都开发项目中的话语权持续下降，最终花都市的开发权被 SantorsiaWorks 全盘掌控。&lt;br /&gt;
&lt;br /&gt;
八三零事件后，花都市荣誉市长 MethylQAQ 被正式清退，其持有的花咲塔、鹅城大街产权被 SantorsiaWorks 收回，相关政治游戏内幕被全面披露；森川老街更名为悠兰老街，其沿街的原 MethylQAQ 宅邸被改建为无名玩家纪念馆。&lt;br /&gt;
 &#039;&#039;&#039;各区域的发展变迁&#039;&#039;&#039;：&lt;br /&gt;
    - &#039;&#039;&#039;风巽市&#039;&#039;&#039;：2021年3月，服务器核心出生点移回端点市，风巽市新玩家补充中断，进入持续衰落期；同年6月花都开发案落地后，风巽市与原森川市的互联轻轨、高架线路被大量拆除，仅保留花巽高架公路等少数通道，对外联络大幅受限，仅洋河机场仍为uDays唯一可供固定翼飞机降落的机场。&lt;br /&gt;
    - &#039;&#039;&#039;诺记吧村与叶原市&#039;&#039;&#039;：2021年8月，诺记吧村正式并入叶原市，村民获得叶原城区同等玩家权利，未出现大规模反对；叶原市城区则持续处于荒废状态，城际铁路端巽线实行飞站，核心道路封闭，前景不明。&lt;br /&gt;
    - &#039;&#039;&#039;端点市&#039;&#039;&#039;：2021年3月起，端点市玩家持续流失，行政职能逐步向花都市转移，居留玩家不足总登记数的10%，大量商铺关闭，正式进入&#039;&#039;&#039;锈带期&#039;&#039;&#039;，仅保留历史观光的核心价值。&lt;br /&gt;
&lt;br /&gt;
=== 迁移至 Java 与前期工作（2022 - 2023）===&lt;br /&gt;
[[File:htv3t.jpg|200px|thumb|花都市 2022 年 8 月的地图]]&lt;br /&gt;
[[File:jiangze2022.jpg|200px|thumb|被翻修后的江泽镇遗址公园，被批失去了“遗址风味”]]&lt;br /&gt;
&lt;br /&gt;
本阶段全地区发展重心集中于花都市悠亭区，同时端点市启动更新计划。&lt;br /&gt;
&lt;br /&gt;
2022 年 4 月起，花都市城市中心从悠兰区（鹅城区）转移至悠亭区，&#039;&#039;&#039;大同广场&#039;&#039;&#039;正式开建，成为uDays行政中心的核心象征，广场以直径100格的环岛为核心，布局了uDays建服纪念碑、悠日银行、凛雪电信大楼、悠日监察部、玩家联合服务中心等核心行政与配套建筑。大同广场以南同步启动现代商务区建设，建成花咲塔、服务器际贸易中心等地标高层建筑，布局了各群组服驻uDays使馆与代表处，形成了行政、商务、居住一体化的核心城区。同期，悠亭城核心建筑与城门经工程组修缮后保留，定位为花都市文旅空间；池店镇保持原有建制，纳入花都市全域规划。&lt;br /&gt;
&lt;br /&gt;
2022 年“5.2202 uDays NewYear!”版本更新后，端点市玩家日活量有所回升，悠日玩家联合协会与地方基建团体启动了全区域基建翻修与道路更新，江泽镇故里遗址公园被 njlyf2011 翻修至 2017 年未受损状态，引发了关于“失去遗址风味”的争议；同时工程组的深度介入，也被玩家质疑通过低价材料垄断区域建设，相关争议始终未得到官方正面回应。&lt;br /&gt;
&lt;br /&gt;
2022 年 8 月 uDays 解严后，悠亭城的相关历史资料被全面披露，玩家发现修缮后的悠亭城与原始形制存在较大差异，引发了关于历史建筑修缮标准的广泛讨论；截至当前，花都市鹅城区仅留存少量森川市时代的建筑，GTM 与 ChinaCraft流亡时代的建筑近乎无存，仅南岐区保留了部分早期玩家建筑遗迹。&lt;br /&gt;
&lt;br /&gt;
2022 年 9 月 25 日，uDays 管理组、悠日计划管理组正式通过&#039;&#039;&#039;Rosetta计划&#039;&#039;&#039;，宣布将在 5.2210 Yuuni Paranoia 版本上线同期，开放 Java 平台测试服，并计划于 5.2212 Yuuni Rosetta 版本完成全服务器从基岩平台向 Java 平台的迁移，以解决基岩版后续版本自定义方块不可用的问题，提升服务器日活量。该计划将导致全地区经济系统全面崩溃，红石轨道交通自动发车系统、邮件分发系统、银行金库系统等核心功能全部失效，uDays 自研的红石轨道交通体系将被 Java 平台 MTR Mod 取代，被部分玩家指责违背《悠日计划 基本法案》中“ uDays 是基岩版服务器”的核心条文，遭到广泛抵制。2022 年 10 月 13 日发布的《基本法案 发行版本7》中，“ uDays 是基岩版服务器”的相关条文被正式删除。&lt;br /&gt;
[[File:lymad.jpg|200px|thumb|uDays 工程组候选试卷中所出现的以 LYMAD 为主题的材料题]]&lt;br /&gt;
[[File:ffxxs.jpg|200px|thumb|悠日戒严令时期(2020)要求 uDays 工程组候选者所做的试卷，其中出现了森川市]]&lt;br /&gt;
[[File:chiyuke_pre.jpg|200px|thumb|left|建设中的 3 号出生点-祈雨阁，日后成为了 uDays 的地标天际线]]&lt;br /&gt;
&lt;br /&gt;
== 文化 ==&lt;br /&gt;
===语言===&lt;br /&gt;
uDays 全域大致适用繁简汉语、英语及日语，部分地区加有德语、俄语。&lt;br /&gt;
&lt;br /&gt;
===艺术===&lt;br /&gt;
uDays 曾与现实中存在的一些咖啡店、酒吧举行了双向联名活动，例如中国浙江温州瑞安的风气咖啡馆、福建泉州的昼咖暮酒酒馆等。以风气咖啡馆为例，位于花都鹅城区菜市巷3号的线上数位店 1:1 复刻了瑞安店的场景，其中也以数位方式提供风气咖啡馆的所有饮品。&lt;br /&gt;
&lt;br /&gt;
uDays 建有许多展馆。例如位于花都市的悠日博物馆、悠日铁道博物馆等，基本服务于“见证时间” slogan。&lt;br /&gt;
&lt;br /&gt;
===建筑===&lt;br /&gt;
uDays 区域内以小比例建筑为主，各个地区有各个地区的特色，如端点市以东西风格兼具、古今交融的木制建筑为主；花都市以大量 1930 年代风格的兴亚风格装饰艺术建筑为主。&lt;br /&gt;
[[File:ht2x.jpg|200px|thumb|喵铃街上的建筑]]&lt;br /&gt;
[[File:zhongzhengmen.jpg|200px|thumb|中正门]]&lt;br /&gt;
uDays 区域内的建设工作基本需要遵照《悠日计划 玩家法案》，对建筑的美观度、协调度有较高的要求。有玩家对此评价：&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;玩家层面艺术行为遭到限制&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;建筑初学者在 uDays 内举步维艰&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;绝大多数调侃性的建筑无法通过审核、留言告示牌被拆除&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;s&amp;gt;我死也不会在 uDays 内进行建筑&amp;lt;/s&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===观光景点===&lt;br /&gt;
2020 年 9 月 13 日，uDays 工程组发布了一份参考性建筑名单，被登记在文保单位里的建筑共 127 项。此类建筑带有纪念意义或原创部分超过 50% 的景观性建筑。2022 年，名单内建筑被重新划分为[[悠日计划 特色建筑]]、[[悠日计划 记忆建筑]]。&lt;br /&gt;
&lt;br /&gt;
===活动===&lt;br /&gt;
&lt;br /&gt;
{{DISPLAYTITLE:uDays}}&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%96%87%E4%BB%B6:Soonlin_2026.a.jpg&amp;diff=4953</id>
		<title>文件:Soonlin 2026.a.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%96%87%E4%BB%B6:Soonlin_2026.a.jpg&amp;diff=4953"/>
		<updated>2026-02-27T13:17:30Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​CatalpaCute上传文件:Soonlin 2026.a.jpg的新版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%96%87%E4%BB%B6:Soonlin_2026.a.jpg&amp;diff=4952</id>
		<title>文件:Soonlin 2026.a.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%96%87%E4%BB%B6:Soonlin_2026.a.jpg&amp;diff=4952"/>
		<updated>2026-02-27T13:13:24Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=CreatingServer&amp;diff=4951</id>
		<title>CreatingServer</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=CreatingServer&amp;diff=4951"/>
		<updated>2026-02-27T12:44:34Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​CatalpaCute移动页面CreatingServer至Creating&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#重定向 [[Creating]]&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=Creating&amp;diff=4950</id>
		<title>Creating</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=Creating&amp;diff=4950"/>
		<updated>2026-02-27T12:44:32Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​CatalpaCute移动页面CreatingServer至Creating&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Settlement&lt;br /&gt;
| name                            = CreatingServer&lt;br /&gt;
| other_name                      = Creating/CR&lt;br /&gt;
| settlement_type                 = &#039;&#039;&#039;悠日计划中一个服务器&#039;&#039;&#039;&lt;br /&gt;
| image_map                       = [[File:Creating.png|80px]]&lt;br /&gt;
| map_caption                     = 服务器标识&lt;br /&gt;
| subdivision_type1               = 从属&lt;br /&gt;
| subdivision_name1               = [[Creating工程组]]&lt;br /&gt;
| subdivision_type2               = 服主&lt;br /&gt;
| subdivision_name2               = CatalpaCute&lt;br /&gt;
| seat_type                       = 主要城市&lt;br /&gt;
| seat                            = [[滨海市]]、[[甘地市]] 、[[新海市]]&lt;br /&gt;
| seat1_type                      = 行政中心&lt;br /&gt;
| seat1                           = [[滨海市]]&lt;br /&gt;
| parts                           = 7&amp;lt;br /&amp;gt;&lt;br /&gt;
| parts_type                      = 城市数量&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Creating&#039;&#039;&#039;，官方中文名为&#039;&#039;&#039;虹海&#039;&#039;&#039;，诞生于 2020 年 3 月下旬，并于 2020 年 4 月 1 日正式开服。Creating 是遵循 Mojang EULA 的 Minecraft 基岩平台第三方服务器，是以轨道交通、城镇建设为中心的创造服务器，以和平相处、实现共产为目标的生存服。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Creating 创造==&lt;br /&gt;
&lt;br /&gt;
当前 Creating 创造通常认为是一周目，地图由生存服后期改变而来。目前 Creating 创造 中设置的行政区有[[滨海市]]、[[甘地市]]、[[黄沙市]]、[[冰原市]]、[[森园市]]、[[新海市]]、[[花地市]]。服务器首府设置在建服第一市滨海市。&lt;br /&gt;
&lt;br /&gt;
滨海市是Creating 2021 年重建地图后的第一个城市, 是此创造服的前身——Creating 生存 于 2021 年 8 月建立存档以来的第一次聚集性建筑群所在。&lt;br /&gt;
&lt;br /&gt;
==Creating 生存==&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%A3%AE%E5%9B%AD%E5%B8%82&amp;diff=4949</id>
		<title>森园市</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%A3%AE%E5%9B%AD%E5%B8%82&amp;diff=4949"/>
		<updated>2026-02-27T11:04:48Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​内容扩充&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Settlement &lt;br /&gt;
| name                            = 森园市&lt;br /&gt;
| official_name                      = Forestland City&lt;br /&gt;
| settlement_type                 = Creating 中的城市级行政区&lt;br /&gt;
| subdivision_type                = 服务器&lt;br /&gt;
| subdivision_name                = [[File:creating.png|20px]] [[CreatingServer|Creating]]&lt;br /&gt;
| subdivision_type1               = 从属&lt;br /&gt;
| subdivision_name1               = [[Creating工程组]]&lt;br /&gt;
| subdivision_type2               = 游玩模式&lt;br /&gt;
| subdivision_name2               = 混合模式&lt;br /&gt;
| subdivision_type3               = 坐标&lt;br /&gt;
| subdivision_type3               = 中心区坐标&lt;br /&gt;
| subdivision_name3               = &#039;&#039;&#039;X 4050, Z 50&#039;&#039;&#039; &lt;br /&gt;
| seat_type                       = 下辖区县&lt;br /&gt;
| seat                            = [[森园市林海区|林海区]]、[[森园市#工业园时期(2021.11-2023.2)|工业园区]]、北海县、雪原县&lt;br /&gt;
| seat1_type                      = 行政中心&lt;br /&gt;
| seat1                           =  林海区、工业园区&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
森园市(Forestland City)，是 Creating 中承担“工业”“环境保护”职能的城市，且因其拥有虹海最长边境线故也为虹海对外的第一城。森园位于 Creating 东北部，为滨海都市圈北部组成部分，是都市圈内最大的城市。西北接uDays[[端点市]]、北接猫尾草、南部接[[甘地市]]、[[滨海市]]。森园市全境受自然保护政策保护。&lt;br /&gt;
&lt;br /&gt;
该市由 CatalpaCute 与 BenLi06 创立于 2021 年冬季，最早用于承接来自滨海市及甘地市的大型工业设施，后虹海新建的“工业设施”也多坐落于此。&lt;br /&gt;
&lt;br /&gt;
由 Creating 工程组编撰的[[Creating旅行手册|《Creating旅行手册》]]中描述了工程组规定的森园市主要地界及下辖区域：森园市总体呈东西长南北短，下辖工业园区、[[森园市林海区|林海区]]、北海县、雪原县。通常“森园市区”仅指林海区西部及工业园区。&lt;br /&gt;
&lt;br /&gt;
因边境城市属性，前往松霖、猫尾草的公路、铁路大多需要经过森园市，因此森园市有一系列边境设施。&lt;br /&gt;
&lt;br /&gt;
==特征==&lt;br /&gt;
森园市早期被探索到时是一片森林，因地理位置且有一片平原而被选作工业园所在地，以“森林中的工业园”命名为“森园市”。但同样因为其地理位置，长期以来 Creating 工程组都没有对这片区域重视。&lt;br /&gt;
&lt;br /&gt;
加入悠日计划后。森园成为边境城市。在多次行政区划调整及交通线路规划后森园市的地位极大提升，成为“第二轮城市建设计划”中的首位城市。但因“首批城市建设计划”中的新首都[[新海市]]建设缓慢，森园市的建筑计划被一再推迟，&lt;br /&gt;
&lt;br /&gt;
==历史==&lt;br /&gt;
===工业园时期(2021.11-2023.2)===&lt;br /&gt;
在[[《新海计划&amp;amp;花地计划》|新海计划]]中，Creating 提出在滨海市南面&amp;lt;ref&amp;gt;当时的指向标有错误，现为西面&amp;lt;/ref&amp;gt;建设新客站、新城，建设高质量的快速轨道交通和光速船道连接新建新海市。而当时同时也存在着滨海市工业外迁计划，猪人塔最早被计划为搬迁至南面树林（今南苑区南苑车站附近），后面因新城建设只得另寻他处。BenLi06 与 CatalpaCute 在协商后决定向北探索，形成四城的菱形格局&amp;lt;ref&amp;gt;自滨海起顺时针为滨海、工业园、甘地、黄沙&amp;lt;/ref&amp;gt;。最终选定外迁直今日工业园区平原处。&lt;br /&gt;
&lt;br /&gt;
在本时期内，森园市几乎没有迎来太大发展。在滨海-甘地公路改造完成后，由 BenLi06 建设了森园-黄沙公路，两条公路今日依旧是重要交通干线。铁路方面建设了由滨海站引出的 5 号线&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E5%8D%A1%E7%90%89%E4%BD%A9%E5%B8%82&amp;diff=4948</id>
		<title>卡琉佩市</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E5%8D%A1%E7%90%89%E4%BD%A9%E5%B8%82&amp;diff=4948"/>
		<updated>2026-02-27T10:49:54Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​内容扩充、添加图片&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Settlement &lt;br /&gt;
| name                            = 卡琉佩市&lt;br /&gt;
| official_name                      = Kaliopepolis City&lt;br /&gt;
| settlement_type                 = Creating 中的城市级行政区&lt;br /&gt;
| image_skyline                   = Kaliopepolis_View.png&lt;br /&gt;
| image_caption                   = 上：卡琉佩站&amp;lt;br /&amp;gt;中：卡琉佩艺术中心&amp;lt;br /&amp;gt;下：卡琉佩轻轨1号线&lt;br /&gt;
| subdivision_type                = 服务器&lt;br /&gt;
| subdivision_name                = [[File:creating.png|20px]] [[CreatingServer|Creating]]&lt;br /&gt;
| subdivision_type1               = 从属&lt;br /&gt;
| subdivision_name1               = 玩家自治(由Marcus_lzl 管理)&lt;br /&gt;
| subdivision_type2               = 游玩模式&lt;br /&gt;
| subdivision_name2               = 创造模式&lt;br /&gt;
| subdivision_type3               = 坐标&lt;br /&gt;
| subdivision_name3               = &#039;&#039;&#039;X 5000,  Z 10000&#039;&#039;&#039;&lt;br /&gt;
| seat_type                       = 主要城区&lt;br /&gt;
| seat                            = [[卡琉佩市上城区|上城区]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
卡琉佩市（Kaliopepolis City) 由 Marcus_lzl 建立于 2025 年 8 月，主要管辖范围为原[[新海市]]海南县南部。该市是目前 Creating 最南部的城市。&lt;br /&gt;
&lt;br /&gt;
目前卡琉佩市由 Marcus_lzl 所管理，由其直接统筹发展，建筑需要在其批准后建设。卡琉佩市境内建筑大多为欧式古典风格。&lt;br /&gt;
&lt;br /&gt;
卡琉佩市实行宽松的游戏制度，即不限制生存或创造，但绝大多数玩家仅在创造模式下在卡琉佩市进行活动。&lt;br /&gt;
&lt;br /&gt;
==地理==&lt;br /&gt;
&lt;br /&gt;
卡琉佩市所在区域为 Creating 建成区的最南部。为原[[新海市]]海南县析地而成，海南县南部地块（X:5000 Z:10000)附近最终于 2025 年 8 月由 Marcus_lzl 接管并建立城市。目前北部与[[北野市]]接壤。&lt;br /&gt;
&lt;br /&gt;
==历史==&lt;br /&gt;
&lt;br /&gt;
===海南县时期(2024 - 2025)===&lt;br /&gt;
卡琉佩市所在区域最早由 shinanJPG 发现，行政上属于[[新海市]]海南县，被划为远期建筑用地。后由于[[甘地市]]东北部的生存区被猫尾草破坏，因此处远离城市群，故被定为虹海区域非官方形式的生存区。&lt;br /&gt;
&lt;br /&gt;
===交由玩家自治(2025 -===&lt;br /&gt;
2025 年，海南县因辖区范围过大，令人疑惑，被玩家吐槽，引起了“海南县拆分运动”，Creating 工程组决定缩小海南县行政区域。7 月，工程组将海南县南部析出地块交与 Marcus_lzl 建立城市。&lt;br /&gt;
在此之前，卡琉佩市所在区域仅有少数生存玩家驻足。而在城市建立后，此地区进入了快速发展时期。&lt;br /&gt;
&lt;br /&gt;
==文化==&lt;br /&gt;
===语言===&lt;br /&gt;
卡琉佩市内基本通行简体中文，少数建筑有俄语、英文标记。另有部分以西里尔文为基础的语言。&lt;br /&gt;
&lt;br /&gt;
===建筑===&lt;br /&gt;
[[File:Kaliopepolis_a1.png|200px|thumb|卡琉佩艺术中心音乐厅]]&lt;br /&gt;
[[File:Kaliopepolis_a2.png|200px|thumb|哈基大道与老阴沟路路口]]&lt;br /&gt;
卡琉佩市内现存一定富有特色的欧式古典风格建筑，大部分由 Marcus_lzl 完成。卡琉佩艺术中心是虹海首个包含演出厅的地标建筑，此处曾承办跨年活动的音乐会部分。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==交通==&lt;br /&gt;
&lt;br /&gt;
===城际铁路===&lt;br /&gt;
机械动力铁路是卡琉佩市通往外界的首个交通方式，列车主要停靠站点为[[卡琉佩站]]，接入了机械动力[[南部环线]]，西部有联络线 Z1 北琉线 往[[水银铁道]] K1 寰雪线，目前开行星晖环线、C103、C109、深蓝快线等。卡琉佩站也预留有一个岛式站台供虹海高铁接入。&lt;br /&gt;
&lt;br /&gt;
===市内铁路===&lt;br /&gt;
&#039;&#039;&#039;卡琉佩轻轨 1 号线&#039;&#039;&#039;&lt;br /&gt;
* 轻轨 1 号线是卡琉佩市的首条境内轨道交通，全程设 4 个车站。&lt;br /&gt;
 火车站 - 运河 - 上城区 - 酒类博物馆&lt;br /&gt;
&lt;br /&gt;
===公路===&lt;br /&gt;
卡琉佩市目前有较为成熟的路网，大多数呈棋盘状分布。该市的公路命名是截至 2026 年 2 月虹海境内最完善的。&lt;br /&gt;
&lt;br /&gt;
* 哈基大道 （Haji Ave.)&lt;br /&gt;
* 老阴沟路(卡斯塔巴萨路)（Costa Bassa Rd.)&lt;br /&gt;
* 曼波大道（Mambo Ave.）&lt;br /&gt;
* 砬子沟路(卡缅斯卡路)（Kamenska Rd.)&lt;br /&gt;
* 头道桥北路（彼尔维莫斯特北路）（Pervymost N.Rd.)&lt;br /&gt;
* 头道桥南路（彼尔维莫斯特南路）（Pervymost S.Rd.)&lt;br /&gt;
* 头道沟北路（乌诺丰坦纳北路）（Unofontana N.Rd.)&lt;br /&gt;
* 头道沟南路（乌诺丰坦纳南路）（Unofontana S.Rd.)&lt;br /&gt;
* 烂泥林场路（米尔伦德路）（Myrlund Rd.)&lt;br /&gt;
* 边哨沟街（伯格苏德街）（Bergsund St.)&lt;br /&gt;
* 沿江岭路（蒙特拉夸路）（Montelaqua Rd.)&lt;br /&gt;
* 老荒甸子街（坎帕维乔街）（Campo Vecchio St.)&lt;br /&gt;
* 马鹿沟街（塞韦纳街）（Cervina St.)&lt;br /&gt;
* 烧锅路（阿兰比克路）（Alambic Rd.）&lt;br /&gt;
* 黑石砬子路（卡拉卡雅路）（Karakaya Rd.）&lt;br /&gt;
* 荒沟街（萨维金街）（Sauvage St.)&lt;br /&gt;
对外连接有往澜湾市、新海市的乡道。&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%96%87%E4%BB%B6:Kaliopepolis_a2.png&amp;diff=4947</id>
		<title>文件:Kaliopepolis a2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%96%87%E4%BB%B6:Kaliopepolis_a2.png&amp;diff=4947"/>
		<updated>2026-02-27T10:37:59Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%96%87%E4%BB%B6:Kaliopepolis_a1.png&amp;diff=4946</id>
		<title>文件:Kaliopepolis a1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%96%87%E4%BB%B6:Kaliopepolis_a1.png&amp;diff=4946"/>
		<updated>2026-02-27T10:32:09Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%82%A0%E6%97%A5%E8%A8%88%E7%94%BB_%E7%B6%AD%E5%9F%BA%E7%99%BE%E7%A7%91_%EF%BD%9E_Yuuni_Wiki:UDays&amp;diff=4944</id>
		<title>悠日計画 維基百科 ～ Yuuni Wiki:UDays</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%82%A0%E6%97%A5%E8%A8%88%E7%94%BB_%E7%B6%AD%E5%9F%BA%E7%99%BE%E7%A7%91_%EF%BD%9E_Yuuni_Wiki:UDays&amp;diff=4944"/>
		<updated>2026-02-27T09:57:20Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​CatalpaCute移动页面UDays至悠日計画 維基百科 ～ Yuuni Wiki:UDays：​更正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;注意：此页面内容因为脚本错误，引发数据库崩溃，暂时被移除。&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E5%8D%A1%E7%90%89%E4%BD%A9%E5%B8%82&amp;diff=4940</id>
		<title>卡琉佩市</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E5%8D%A1%E7%90%89%E4%BD%A9%E5%B8%82&amp;diff=4940"/>
		<updated>2026-02-26T16:06:46Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​新条目&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Settlement &lt;br /&gt;
| name                            = 卡琉佩市&lt;br /&gt;
| official_name                      = Kaliopepolis City&lt;br /&gt;
| settlement_type                 = Creating 中的城市级行政区&lt;br /&gt;
| image_skyline                   = Kaliopepolis_View.png&lt;br /&gt;
| image_caption                   = 上：卡琉佩站&amp;lt;br /&amp;gt;中：卡琉佩艺术中心&amp;lt;br /&amp;gt;下：卡琉佩轻轨1号线&lt;br /&gt;
| subdivision_type                = 服务器&lt;br /&gt;
| subdivision_name                = [[File:creating.png|20px]] [[CreatingServer|Creating]]&lt;br /&gt;
| subdivision_type1               = 从属&lt;br /&gt;
| subdivision_name1               = 玩家自治(由Marcus_lzl)&lt;br /&gt;
| subdivision_type2               = 游玩模式&lt;br /&gt;
| subdivision_name2               = 创造模式&lt;br /&gt;
| subdivision_type3               = 坐标&lt;br /&gt;
| subdivision_name3               = &#039;&#039;&#039;X 5000,  Z 10000&#039;&#039;&#039;&lt;br /&gt;
| seat_type                       = 主要城区&lt;br /&gt;
| seat                            = [[卡琉佩市上城区|上城区]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
卡琉佩市（Kaliopepolis City) 由 Marcus_lzl 建立于 2025 年 8 月，主要管辖范围为原[[新海市]]海南县南部。该市是目前 Creating 最南部的城市。&lt;br /&gt;
&lt;br /&gt;
目前卡琉佩市由 Marcus_lzl 所管理，由其直接统筹发展，建筑需要在其批准后建设。卡琉佩市境内建筑大多为欧式古典风格。&lt;br /&gt;
&lt;br /&gt;
卡琉佩市实行宽松的游戏制度，即不限制生存或创造，但绝大多数玩家仅在创造模式下在卡琉佩市进行活动。&lt;br /&gt;
&lt;br /&gt;
==地理==&lt;br /&gt;
&lt;br /&gt;
卡琉佩市所在区域为 Creating 建成区的最南部。为原[[新海市]]海南县析地而成，海南县南部地块（X:5000 Z:10000)附近最终于 2025 年 8 月由 Marcus_lzl 接管并建立城市。&lt;br /&gt;
&lt;br /&gt;
==历史==&lt;br /&gt;
&lt;br /&gt;
===海南县时期(2024 - 2025)===&lt;br /&gt;
卡琉佩市所在区域最早由 shinanJPG 发现，行政上属于[[新海市]]海南县，被划为远期建筑用地。后由于[[甘地市]]东北部的生存区被猫尾草破坏，因此处远离城市群，故被定为虹海区域非官方形式的生存区。&lt;br /&gt;
&lt;br /&gt;
===交由玩家自治(2025 -===&lt;br /&gt;
2025 年，海南县因辖区范围过大，令人疑惑，被玩家吐槽，引起了“海南县拆分运动”，Creating 工程组决定缩小海南县行政区域。7 月，海南县南部析出地块供 Marcus_lzl 建立城市。&lt;br /&gt;
在此之前，卡琉佩市所在区域仅有少数生存玩家驻足。而在城市建立后，卡琉佩市进入了快速发展时期。&lt;br /&gt;
&lt;br /&gt;
==文化==&lt;br /&gt;
===语言===&lt;br /&gt;
卡琉佩市内基本通行简体中文，少数建筑有俄语、英文标记。另有部分以西里尔文为基础的语言。&lt;br /&gt;
&lt;br /&gt;
===建筑===&lt;br /&gt;
卡琉佩市内现存一定富有特色的欧式古典风格建筑，大部分由 Marcus_lzl 完成。卡琉佩艺术中心是虹海首个包含演出厅的地标建筑，此处曾承办跨年活动的音乐会部分。&lt;br /&gt;
&lt;br /&gt;
==交通==&lt;br /&gt;
&lt;br /&gt;
===城际铁路===&lt;br /&gt;
机械动力铁路是卡琉佩市通往外界的首个交通方式，列车主要停靠站点为[[卡琉佩站]]，接入了机械动力[[南部环线]]，西部有联络线往[[水银铁路]] K1 寰雪线，目前开行星晖环线、C103、C109、深蓝快线等。卡琉佩站也预留有一个岛式站台供虹海高铁接入。&lt;br /&gt;
&lt;br /&gt;
===市内铁路===&lt;br /&gt;
&#039;&#039;&#039;卡琉佩轻轨 1 号线&#039;&#039;&#039;&lt;br /&gt;
* 轻轨 1 号线是卡琉佩市的首条境内轨道交通，全程设 4 个车站。&lt;br /&gt;
 火车站 - 运河 - 上城区 - 酒类博物馆&lt;br /&gt;
&lt;br /&gt;
===公路===&lt;br /&gt;
卡琉佩市目前有较为成熟的路网，大多数呈棋盘状分布。对外连接有往澜湾市、新海市的乡道。&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%96%87%E4%BB%B6:Kaliopepolis_View.png&amp;diff=4938</id>
		<title>文件:Kaliopepolis View.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%96%87%E4%BB%B6:Kaliopepolis_View.png&amp;diff=4938"/>
		<updated>2026-02-26T14:54:02Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%A3%AE%E5%9B%AD%E5%B8%82&amp;diff=4937</id>
		<title>森园市</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%A3%AE%E5%9B%AD%E5%B8%82&amp;diff=4937"/>
		<updated>2026-02-25T11:59:15Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Settlement &lt;br /&gt;
| name                            = 森园市&lt;br /&gt;
| official_name                      = Forestland City&lt;br /&gt;
| settlement_type                 = Creating 中的城市级行政区&lt;br /&gt;
| subdivision_type                = 服务器&lt;br /&gt;
| subdivision_name                = [[File:creating.png|20px]] [[CreatingServer|Creating]]&lt;br /&gt;
| subdivision_type1               = 从属&lt;br /&gt;
| subdivision_name1               = [[Creating工程组]]&lt;br /&gt;
| subdivision_type2               = 游玩模式&lt;br /&gt;
| subdivision_name2               = 混合模式&lt;br /&gt;
| subdivision_type3               = 坐标&lt;br /&gt;
| subdivision_type3               = 中心区坐标&lt;br /&gt;
| subdivision_name3               = &#039;&#039;&#039;X 4050, Z 50&#039;&#039;&#039; &lt;br /&gt;
| seat_type                       = 下辖区县&lt;br /&gt;
| seat                            = 林海区、工业园区、北海县、雪原县&lt;br /&gt;
| seat1_type                      = 行政中心&lt;br /&gt;
| seat1                           =  林海区、工业园区&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
森园市(Forestland City)，是 Creating 中承担“工业”“环境保护”职能的城市，且因其拥有虹海最长边境线故也为虹海对外的第一城。森园位于 Creating 东北部，为滨海都市圈北部组成部分，是都市圈内最大的城市。西北接uDays[[端点市]]、北接猫尾草、南部接[[甘地市]]、[[滨海市]]。森园市全境受自然保护政策保护。&lt;br /&gt;
&lt;br /&gt;
该市由 CatalpaCute 与 BenLi06 创立于 2021 年冬季，最早用于承接来自滨海市及甘地市的大型工业设施，后虹海新建的“工业设施”也多坐落于此。&lt;br /&gt;
&lt;br /&gt;
由 Creating 工程组编撰的[[Creating旅行手册|《Creating旅行手册》]]中描述了工程组规定的森园市主要地界及下辖区域：森园市总体呈东西长南北短，下辖工业园区、[[森园市林海区|林海区]]、北海县、雪原县。通常“森园市区”仅指林海区西部及工业园区。&lt;br /&gt;
&lt;br /&gt;
因边境城市属性，前往松霖、猫尾草的公路、铁路大多需要经过森园市，因此森园市有一系列边境设施。&lt;br /&gt;
&lt;br /&gt;
==特征==&lt;br /&gt;
森园市早期被探索到时是一片森林，因地理位置且有一片平原而被选作工业园所在地，以“森林中的工业园”命名为“森园市”。但同样因为其地理位置，长期以来 Creating 工程组都没有对这片区域重视。&lt;br /&gt;
&lt;br /&gt;
加入悠日计划后。森园成为边境城市。在多次行政区划调整及交通线路规划后森园市的地位极大提升，成为“第二轮城市建设计划”中的首位城市。但因“首批城市建设计划”中的新首都[[新海市]]建设缓慢，森园市的建筑计划被一再推迟，&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%A3%AE%E5%9B%AD%E5%B8%82&amp;diff=4936</id>
		<title>森园市</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%A3%AE%E5%9B%AD%E5%B8%82&amp;diff=4936"/>
		<updated>2026-02-25T11:51:57Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​创建页面，内容为“{{Infobox Settlement  | name                            = 森园市 | official_name                      = Forestland City | settlement_type                 = Creating 中的城市级行政区 | subdivision_type                = 服务器 | subdivision_name                = 20px Creating | subdivision_type1               = 从属 | subdivision_name1               = Creating工程组 | subdivision_type2…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Settlement &lt;br /&gt;
| name                            = 森园市&lt;br /&gt;
| official_name                      = Forestland City&lt;br /&gt;
| settlement_type                 = Creating 中的城市级行政区&lt;br /&gt;
| subdivision_type                = 服务器&lt;br /&gt;
| subdivision_name                = [[File:creating.png|20px]] [[CreatingServer|Creating]]&lt;br /&gt;
| subdivision_type1               = 从属&lt;br /&gt;
| subdivision_name1               = [[Creating工程组]]&lt;br /&gt;
| subdivision_type2               = 游玩模式&lt;br /&gt;
| subdivision_name2               = 混合模式&lt;br /&gt;
| subdivision_type3               = 坐标&lt;br /&gt;
| subdivision_type3               = 中心区坐标&lt;br /&gt;
| subdivision_name3               = &#039;&#039;&#039;X 4050, Z 50&#039;&#039;&#039; &lt;br /&gt;
| seat_type                       = 下辖区县&lt;br /&gt;
| seat                            = 林海区、工业园区、北海县、雪原县&lt;br /&gt;
| seat1_type                      = 行政中心&lt;br /&gt;
| seat1                           =  林海区、工业园区&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
森园市(Forestland City)，是 Creating 中承担“工业”“环境保护”职能的城市，且因其拥有虹海最长边境线故也为虹海对外的第一城。森园位于 Creating 东北部，为滨海都市圈北部组成部分，是都市圈内最大的城市。西北接uDays[[端点市]]、北接猫尾草、南部接[[甘地市]]、[[滨海市]]。森园市全境受自然保护政策保护。&lt;br /&gt;
&lt;br /&gt;
该市由 CatalpaCute 与 BenLi06 创立于 2021 年冬季，最早用于承接来自滨海市及甘地市的大型工业设施，后虹海新建的“工业设施”也多坐落于此。&lt;br /&gt;
&lt;br /&gt;
由 Creating 工程组编撰的[[Creating旅行手册|《Creating旅行手册》]]中描述了工程组规定的森园市主要地界及下辖区域：森园市总体呈东西长南北短，下辖工业园区、[[森园市林海区|林海区]]、北海县、雪原县。通常“森园市区”仅指林海区西部及工业园区。&lt;br /&gt;
&lt;br /&gt;
因边境城市属性，前往松霖、猫尾草的公路、铁路大多需要经过森园市，因此森园市有一系列边境设施。&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E8%8A%B1%E9%83%BD%E5%B8%82&amp;diff=4935</id>
		<title>花都市</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E8%8A%B1%E9%83%BD%E5%B8%82&amp;diff=4935"/>
		<updated>2026-02-25T10:46:41Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​行政区划调整&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;重定向至花都市(悠日都花都)，关于曾位于今花都市悠兰区的森川旧城，请参考词条[[森川市|森川市(2020)]]；关于曾位于今花都市及风巽市的风巽地区(Grand Theft Minecraft 交由 ChinaCraft 管理的地区)，请参考词条[[ChinaCraft 天朝服务器(风巽服务器)|风巽地区(受 ChinaCraft 流亡玩家管辖)]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Infobox Settlement &lt;br /&gt;
| name                            = 悠日都花都&lt;br /&gt;
| official_name                      = Hanato City (Hanato)&lt;br /&gt;
| settlement_type                 = uDays 中的城市级行政区&lt;br /&gt;
| image_skyline                   = Hanato_View_View.png&lt;br /&gt;
| image_caption                   = 由上图顺时针依序为：大同广场(在建)、无名玩家纪念馆、悠兰关帝祠、巽北水坝、鱼市街历史建筑群、花都基督教花巷堂、森川旧城鹅城大街菜市巷、悠亭区天际线&lt;br /&gt;
| subdivision_type                = 服务器&lt;br /&gt;
| subdivision_name                = [[File:udays.png|20px]][[uDays]]&lt;br /&gt;
| subdivision_type1               = 从属&lt;br /&gt;
| subdivision_name1               = uDays 工程组直辖区域、&amp;lt;br /&amp;gt;SantorsiaWorks&lt;br /&gt;
| subdivision_type2               = 游玩模式&lt;br /&gt;
| subdivision_name2               = 混合模式&lt;br /&gt;
| subdivision_type3               = 坐标&lt;br /&gt;
| subdivision_name3               = &#039;&#039;&#039;X 1500, Z -4500&#039;&#039;&#039; &lt;br /&gt;
| image_map                       = [[File:htlogo.png|64px]]&lt;br /&gt;
| map_caption                     = 市徽&lt;br /&gt;
| seat_type                       = 主要城区&lt;br /&gt;
| seat                            = [[花都市悠亭区|悠亭区]]、[[花都市悠兰区|鹅城区]] 、[[花都市南岐区|南岐区]]&lt;br /&gt;
| seat1_type                      = 行政中心&lt;br /&gt;
| seat1                           = [[花都市悠亭区|悠亭区]]&lt;br /&gt;
| parts                           = 5&amp;lt;br /&amp;gt;3&lt;br /&gt;
| parts_type                      = 下辖区&amp;lt;br /&amp;gt;下辖镇&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;花都&#039;&#039;&#039; (Hanato / Hanato City)，全称“&#039;&#039;&#039;花都市&#039;&#039;&#039;”或“&#039;&#039;&#039;悠日都花都&#039;&#039;&#039;”，由东方 Project 同人社团&amp;quot;狐の工作室&amp;quot;@mizuhasi_yukkie 命名，源自其曲《悠久花都》，&#039;&#039;&#039;与现实中国的同名城市行政区没有关联&#039;&#039;&#039;。 花都市是 uDays 中的“首都职能”城市。因境内建有“鹅城大街”，故昵称“&#039;&#039;&#039;鹅城&#039;&#039;&#039;”。花都位于 uDays 中南部，南往[[叶原市]]及[[端点市]]，北接猫尾草[[风巽市|风巽地区]]，城区由 uDays 工程组、uDays 管理组、SantorsiaWorks 三方管辖，其在悠亭、森川旧城的基础上以“兼顾 Minecraft 玩家取向的田园城市”理念重新规划建设，是 uDays 目前密集建筑区最广、风格最一致的城市。&lt;br /&gt;
&lt;br /&gt;
花都是 uDays 目前的经济、政治与文化中心，《[[悠日计划 基本法案 5.22 发行版本 6|悠日计划 基本法案]]》规定了花都市的辖区，广义上花都市涵盖其辖的悠亭、[[花都市悠兰区|鹅城]] 、南岐、悠芷、池店五区，狭义上更多指悠亭、[[花都市悠兰区|鹅城]] 、南岐这三个主城区。城区内银行与各大门市商店广布，位于悠亭区的大同广场是 uDays 四大组织未来的行政中心所在地、南岐区现存 uDays 最早追溯至 2014 年的玩家建筑群、悠亭区与鹅城区以兴亚式建筑、南洋式传统民居为基调，辅以现代都市风格建筑点缀，是 uDays 工程组所认定的“代表 uDays 工艺建筑水平的城区”。花都具备完善的道路网、高速路网，铁路线，悠日铁道在花都设有 2 个铁路车站与 1 个车辆段，未来亦有兴修地下铁、路面电车、航空机场的计划。&lt;br /&gt;
&lt;br /&gt;
花都市的观光地位与[[端点市]]并列，而行政地位高于前者，城区内实行宽松的混合模式制度，建筑玩家可在取得许可与地块后自由发挥，而生存玩家可以在此体验 uDays RP 模式的独到之处。截至“5.2208 uDays Saki” 发行版本 7，归属于花都市的玩家为  183 人。(含持居留、建筑签证的他服玩家，但不含退服者及被清退玩家)。因《悠日计划 基本法案 5.22 R5》导致的 [[悠日计划 基本法案 5.22 发行版本 5|beluga 案]]影响，位于花都市区的出生点停用(参见词条 [[出生点|uDays 中的出生点]])，目前距离花都最近的 [[信义广场|5 号出生点]]位于[[风巽市]]临海区，玩家须在秋泽溪口岸经安检后方可进入花都。&lt;br /&gt;
&lt;br /&gt;
== 特征 ==&lt;br /&gt;
[[File:ht.jpg|200px|thumb|位于鹅城区鹅城大街(通政街)的大花都理发厅]]&lt;br /&gt;
[[File:htvs.jpg|200px|thumb|森川市时期(2020)与花都时期(2022)同一区域某玩家房屋的前后对比]]&lt;br /&gt;
花都市是 uDays 中的“两代首都”，完全依照规划进行全方面的建设，在大量填海造陆的基础上保持了近似依地形构造的风格。城区以功能性与观赏性工艺建筑为主，有建筑限高限制，部分道路较为狭窄，车辆无法进入。藉由其作为前风巽地区&amp;quot;主城&amp;quot;及而后森川市的历史，城区内广泛分散有大量 14 年至当下的玩家房屋，uDays 工程组统一将这些玩家房屋外立面修缮为“适合花都”的风格，但亦遭来大量批评声认为其&amp;quot;乏味、威权”。&lt;br /&gt;
&lt;br /&gt;
==文化==&lt;br /&gt;
花都市是 uDays 管理组在 2021 年后以“代表 uDays 工艺水平”名义在 uDays 中南部以森川、悠亭、南岐、池店四城为基础，在其之上所建立的“首都职能”城市级行政区。因此相对于[[端点市]]，花都市在承接了其行政地位的同时融入了 uDays 南部地区活跃和多彩的文化，但政治气氛较之端点市甚至更为刻板。因严苛的各项管理规定，在 22 年以前一般认为花都市是一个“样板城市”而非“玩家城市”。22 年后景观管理限制有所放松。&lt;br /&gt;
&lt;br /&gt;
===语言===&lt;br /&gt;
[[File:Hanatov.jpg|200px|thumb|花都市早期的路标]]&lt;br /&gt;
花都市境内大致通行简繁汉字及日本语。许多路标设施加注简繁汉字、英文、日本语及罗马字。但藉由建设进度问题，大多数辅助设施更集中于鹅城区及悠亭区。&lt;br /&gt;
&lt;br /&gt;
花都市营地下铁所有车站均有中英文报站，在悠兰站、花咲站加报日语、台语、俄语，在秋泽站加报德语；悠日铁道在悠兰站播音加报日语及台语。以上报站播音采用真人录制，中日文使用女声由 uDays 工程组成员 Fenta 配音、英文使用女声由玩家 NekoCat 配音、台语使用男声由玩家 Hakowwwww 配音、德语由玩家“大姐姐”配音、俄语由 MSSR 工程组 Voladomir 友情配音。因配音规格过高，有许多玩家认为“悠日铁道报站是 AI 合成的”。&lt;br /&gt;
&lt;br /&gt;
藉由花都市历史繁杂，在历来区划更替之间，存留了许多未曾更新的指示引导辅助设施。较之端点市甚至更为严重。目前现存许多路标有“繁简中文”、“简体中文+翻译英文”、“繁体中文+翻译英文”、“日文+日文罗马字”、“繁简中文+日文+翻译英文”、“繁简中文+威妥玛拼音”+“简体中文+汉语拼音”、“汉语拼音+威妥玛拼音+翻译英文”、“英文 + 德文”，“俄文 + 简体中文”等别。也存在大量森川市乃至 ChinaCraft 时期的路标，赫然印有“通往主城”或“前往森川市 2KM”诸如此类字样。大量玩家批评这一现象，但实际截止当下并没有一个合理的多语言标注统一模型。目前花都市最新的路面标注系统使用“简体中文+威妥玛拼音+日文罗马字”；&lt;br /&gt;
&lt;br /&gt;
===艺术===&lt;br /&gt;
[[File:Hanatoxx.jpg|200px|thumb|风气咖啡馆 x uDays 数位联名活动海报]]&lt;br /&gt;
[[File:Hanato2.jpg|200px|thumb|位于悠兰车站旁的“招财猫雕像”]]&lt;br /&gt;
[[File:Hanatyyx.jpg|200px|thumb|悠日铁道博物馆基本陈列]]&lt;br /&gt;
uDays 与现实中存在的一些咖啡店、酒吧的双向联名活动数位店均位于花都市中，例如中国浙江温州瑞安的风气咖啡馆、福建泉州的昼咖暮酒酒馆等。以风气咖啡馆为例，位于花都鹅城区菜市巷3号的线上数位店 1:1 复刻了瑞安店的场景，其中也以数位方式提供风气咖啡馆的所有饮品；而任何经过验证、并在地图中留下痕迹的悠日计划玩家可在一定活动期间内自助前往线下实体店铺，出示 uDays 会籍，即可免费领取云南保山中烘豆特调“冰悠日拿铁～Hanato”、及洪都拉斯朗姆豆制“见证时间~Yuuni”两款限时饮品。&lt;br /&gt;
&lt;br /&gt;
此外，诸多 uDays 服务器级的展馆都规划建造于花都市中，例如悠日博物馆、悠日铁道博物馆、悠日档案馆花都分馆等。但藉由花都市实行的严苛建筑审核制度，玩家层面艺术行为遭到限制，Minecraft 方块雕像艺术作者在花都市内举步维艰、绝大多数调侃性的建筑无法通过审核、留言告示牌被拆除，因此玩家方面更愿意冒着风险前往风巽市建筑。&lt;br /&gt;
&lt;br /&gt;
部分与 SantorsiaWorks 有一定关系的玩家利用花都市内的公用建筑开办自己的作品展，也亦有部分亲 uDays 工程组的玩家受邀在花都市中申领地皮用作主题建筑营造。&lt;br /&gt;
&lt;br /&gt;
===祭典活动===&lt;br /&gt;
[[File:ht2.jpg|200px|thumb|花都市内的基督新教招贴海报]]&lt;br /&gt;
花都市内的宗教性建筑不多，但存在大量基督新教、天主教的招贴海报、目前主要宗教建筑为 ChinaCraft 管辖时期建造的花都花巷基督新教教堂以及一些后天建造的例如悠兰关帝祠、崇福寺、白山神社等。花巷教堂与悠兰关帝祠因呈特殊对角线样式而被戏称“关帝遥望天父”。&lt;br /&gt;
&lt;br /&gt;
花都市的纪念性质建筑相对更多，但并非[[端点市]]“繁花里”此类对于逝者的纪念设施，而是对于某事、某时间的纪念碑，例如“GTM 纪念塔”。&lt;br /&gt;
&lt;br /&gt;
uDays 时间与现实世界一致，自 2020 年以后，花都花巷基督新教教堂每年圣诞节期间举行守夜活动，玩家可佩戴 VR 与此接受牧师布道。自 2022 年始，许多原先位于端点市的活动被移到花都市召开，玩家 John Cheung 认为这代表了“端点市地位逐渐被花都市所取代”&lt;br /&gt;
&lt;br /&gt;
===建筑===&lt;br /&gt;
[[File:ht2x.jpg|200px|thumb|喵铃街上的建筑]]&lt;br /&gt;
花都市以大量 1930 年代风格的兴亚风格装饰艺术建筑为主，辅有传统中式潮汕、闽南风格建筑，整体呈现“深红-淡黄-浅灰-黑-白”主题颜色布局。玩家 Linger 称其“城建极其接近台北”、Hakowwwww 称更像台中、Ashin Hung 称因为没什么高楼，所以更像泉州，因此引发了一些争论。&lt;br /&gt;
&lt;br /&gt;
较知名的装饰艺术建筑包含花巷教堂、花乐门、森川第一百货、大同广场、鹅城县衙、悠日铁道博物馆、ChinaCraft 纪念馆、GTM 纪念塔、悠日铁道悠兰车站、悠日银行、凛雪电信大楼、悠日监察部、玩家联合服务中心、悠亭饭店等&lt;br /&gt;
&lt;br /&gt;
较知名的中式建筑包含悠兰关帝祠、无名玩家纪念馆、悠亭城宁康门、菜市巷及通政街建筑群(鹅城大街)、南岐驿站、白山神社等&lt;br /&gt;
&lt;br /&gt;
===行政建筑===&lt;br /&gt;
uDays 服务器级行政建筑以放射状分布于大同广场周边，主要由三栋建筑构成&lt;br /&gt;
&lt;br /&gt;
 悠日监察部( uDays 管理组)：自助受理 uDays 境内犯罪案件、作为法庭判决弊案、临时关押玩家。&lt;br /&gt;
&lt;br /&gt;
 玩家联合服务中心 (悠日计划玩家联合服务中心)：自助受理 uDays 玩家护照办理、作为法庭解决玩家间争端问题。&lt;br /&gt;
&lt;br /&gt;
 凛雪电信大楼 (SantorsiaWorks)：自助受理 uDays 客制化伺服器终端“悠游”及AuroraLink(凛雪终端)BUG之现象、&lt;br /&gt;
&lt;br /&gt;
花都市级行政建筑位于花都市悠亭区西北处(近悠亭城)，主要由两栋建筑构成&lt;br /&gt;
&lt;br /&gt;
 花都市政府：登记为原市长 MethylQAQ 的“办公场所”，在八三零事件后被清空改称民主纪念堂，但内部完全空置。&lt;br /&gt;
&lt;br /&gt;
 悠日档案馆花都分馆：原规划悠日档案馆、因端点市岛区玩家抗议后改为花都分馆，存储 2021 年后的档案数据。&lt;br /&gt;
&lt;br /&gt;
===地标建筑===&lt;br /&gt;
[[File:Hanatoncc.jpg|200px|thumb|花都建工(NCC)双子塔]]&lt;br /&gt;
花都市绝大多数建筑物都在 60 格高度以下、目前公认的地标建筑是兴亚式风格的大同广场建筑群。22 年初悠亭商务区成型后高层建筑“花咲塔”、“悠日计划服务器际贸易中心”、“花都建工(NCC)双子塔”、亦成现代高层地标建筑。&lt;br /&gt;
&lt;br /&gt;
===观光景点===&lt;br /&gt;
花都市境内大量历史建筑在森川市时代前后遭到不可逆的破坏，在 20 年[[悠日计划 文保单位]]发布时，今花都市境内已然仅存 9 项。&lt;br /&gt;
&lt;br /&gt;
位于花都市的[[悠日计划 特色建筑]]共有 6 项，具体请参考对应词条。&lt;br /&gt;
&lt;br /&gt;
位于花都市的[[悠日计划 记忆建筑]]共有 12 项，具体请参考对应词条。&lt;br /&gt;
&lt;br /&gt;
==历史==&lt;br /&gt;
[[File:udays_south_history.jpg|200px|thumb|一张反映了 uDays 南部历史的图表。]]&lt;br /&gt;
===Grand Theft Minecraft 时代 (2014 - 2017)===&lt;br /&gt;
[[File:gtm.jpg|200px|thumb|一张 Grand Theft Minecraft 的海报，背景是 St.Louis，左侧玩家即花都市第一任市长 IXA(Soul_IXA)]]&lt;br /&gt;
[[File:gtm2.jpg|200px|thumb|一张 GTM 迁移至 uDays 的海报]]&lt;br /&gt;
花都市最早历史追溯至 2014 年至 2017 年 Java 平台服务器 &amp;quot;Grand Theft Minecraft (简称 GTM 服务器)&amp;quot;多世界下的生存地图。在 2014 年 8 月左右，因彼时 GTM 服务器的友好服务器&amp;quot;ChinaCraft 天朝服务器(简称 ChinaCraft)&amp;quot;资金不足并预计在 1 个月内关闭。GTM 服务器与 ChinaCraft 达成协议，在 GTM 服务器的生存世界中成立“风巽区域（ChinaCraft)”以供 ChinaCraft 流亡玩家临时游玩，在 ChinaCraft 得到足够的资金重建后将风巽区域的建筑移出交还于 ChinaCraft。2014 - 2017 年的&amp;quot;风巽地区&amp;quot;在今天通常被称为&amp;quot;前风巽地区(GTM)&amp;quot;。&lt;br /&gt;
&lt;br /&gt;
在 ChinaCraft 关闭后，GTM 服务器生存世界中的“风巽区域”接纳了一部分来自 ChinaCraft 的“流亡玩家”，总数在六十人左右。他们在今花都市鹅城区建立了“主城级”的出生点，并大量建造“ChinaCraft”的徽标建筑、安插旗帜，希望能够有朝一日能够归于 ChinaCraft 中。但事实上，风巽地区建立 3 个月后， ChinaCraft 便筹集到了用于重新重启服务器的资金，但他们将这笔资金用于开设游戏 Unturned 的服务器，不再运营 Minecraft 服务器业务。许多 ChinaCraft 流亡玩家对 ChinaCraft 感到失望，但藉由其中一部分玩家对 Grand Theft Minecraft 主世界中的 RP 玩法难以适从。日后也有纷纷退服者，所剩无几的留存玩家负责了 GTM 服务器的建筑工程。&lt;br /&gt;
&lt;br /&gt;
===ChinaCraft 流亡时代 (2017 - 2018)===&lt;br /&gt;
* 见词条 [[ChinaCraft 天朝服务器(风巽服务器)]]&lt;br /&gt;
[[File:cc2017.jpg|200px|thumb|一张 2018 年前后鱼市街附近的截图]]&lt;br /&gt;
[[File:ccXC.jpg|200px|thumb|uDays 初期风巽地区 ChinaCraft 用导览 NPC]]&lt;br /&gt;
[[File:cc2018.jpg|200px|thumb|2018 年初的天朝度假村旧影(今花都市鹅城区黍离岛)]]&lt;br /&gt;
[[File:lymad.jpg|200px|thumb|uDays 工程组候选试卷中所出现的以 LYMAD 为主题的材料题]]&lt;br /&gt;
在 2017 年 2 月  Grand Theft Minecraft 关闭后，前 GTM 服务器管理组共同出资组建新服务器，但保留荣誉性质的&amp;quot;服主&amp;quot;称号，依然由 GTM 服主 LYMAD(现昵称&amp;quot;于可音或Heymay&amp;quot;）担任。新服务器被命名为 uDays，考虑到彼时 GTM 服务器管理组因学业问题难以使用 PC 游玩，因此 uDays 被作为基岩平台服务器，考虑到将 GTM 原始地图 St.Louis 迁移至基岩平台意义不大，且“不具备任何游戏性“，因此 uDays 继承了 GTM 服务器多世界下的“已然有所发展、并与 GTM 主世界大保持一致城市 RP 风格”的生存世界地图而非 St.Louis 地图。&lt;br /&gt;
&lt;br /&gt;
在 uDays 于同年 3 月 7 日成立后，跟随 uDays 前往基岩版本的前 ChinaCraft 玩家总数仅剩七八，风巽地区行政区划保持不变，名称由“风巽区域(ChinaCraft) ”改为 “风巽地区(uDays：受 ChinaCraft 流亡玩家管辖)”以宣誓 uDays 的主权。但风巽地区依然享受到了近乎与独立与 uDays 的权利因而通常被许多玩家视为一个流亡服务器，而非 uDays 中的一部分。到了 2017 年末，绝大多数 ChinaCraft 流亡玩家都已或多或少的退服或前往端点市，此时留守于风巽地区的少数玩家在 2018 年前登记地连同房屋都被 uDays 管理组全数强制迁移至端点市。2018 年 1 月 1 日起，风巽地区(ChinaCraft)区划被撤销。&lt;br /&gt;
&lt;br /&gt;
===无区划时代 (2018 - 2020)===&lt;br /&gt;
对于前风巽地区的各种建筑，uDays 管理组并未设置任何保护措施，任由其构成材料被其他玩家剥离挪用，部分相信阴谋论的玩家亦相信 uDays 管理组甚至鼓励玩家前来拆除前风巽地区的建筑“以抹除 ChinaCraft 留下的痕迹”。2019 年末，玩家 John Cheung 在其发布的《uDays 观光推介路线》中提到前风巽地区留存的建筑“几乎只剩木石羊毛框架”。2020 年[[森川市]]成立后，所有 GTM 时代与 ChinaCraft 流亡时代的官方建筑都被地区管理者 MethylQAQ 彻底拆除以腾出空间建立现代风格高楼，今花都市南岐区彼时因距离森川市较远，虽实际受森川市管辖，但并未被波及，今存部分 GTM 时代与 ChinaCraft 流亡时代的玩家建筑。&lt;br /&gt;
&lt;br /&gt;
===悠亭城 (2018 - 2021.5)===&lt;br /&gt;
新陆战争后，一些资产被强制移动到端点市的前 ChinaCraft 玩家徒步回到前风巽市地区主城附近，并在主城东北部建造了“悠亭城”。以同彼时端点市上都区兴建的“安平城(安平地区)”抗衡。相对于“安平城”的江南传统建筑风格，“悠亭城”采用了台湾传统建筑风格建造，并在形制上比实际安平城更为精致，同时具有完整的玩家居住空间。建造悠亭城的玩家在 20 年前后完全退出了 uDays，至此地区荒废，被 uDays 工程组接管，但因 uDays 中常见的政治游戏影响，悠亭城完全不被 uDays 管理组或工程组所提及，直到 22 年 8 月解严后才有部分资料披露。&lt;br /&gt;
&lt;br /&gt;
21 年 5 月《悠日都花都开发案》后，悠亭城被并入花都市中，设悠亭区。悠亭城在花都中今存主要建筑结构与城门，并经过 uDays 工程组的“重新修缮”，当下定位类似于花都市鹅城区当下的鹅城大街景区，但更接近于“文旅空间”而非鹅城大街的“生活空间”风格。据 20 年探访过原始悠亭城的玩家&amp;quot;Yushu&amp;quot;称“形制乃至方向都和原来不一样&amp;quot;。&lt;br /&gt;
&lt;br /&gt;
===池店镇 (2020 - 2021.5)===&lt;br /&gt;
池店镇是端巽公路开通后在其中部由玩家柠喵与大橙喵建立的小镇，为日式乡村风格。21 年 5 月《悠日都花都开发案》后，池店镇被并入花都市中，设池店镇。&lt;br /&gt;
&lt;br /&gt;
===森川市 (2020 - 2021.5)===&lt;br /&gt;
* 见词条 [[森川市]]&lt;br /&gt;
[[File:htvxs.jpg|200px|thumb|《uDays 旅行指南 (2020)》中对于森川市的描述]]&lt;br /&gt;
[[File:ffxxs.jpg|200px|thumb|悠日戒严令时期(2020)要求 uDays 工程组候选者所做的试卷，其中出现了森川市]]&lt;br /&gt;
在无区划时代，许多玩家试图前往这些被废弃的区域剥取材料，2020 年，受端巽公路与彼时”新干线“冰船道的开通，位于前风巽地区南部在 uDays 五大元老 Nzbcorz 的操纵下于 2020 年 4 月成立了&amp;quot;玩家自治区域&amp;quot;[[风巽市]]，但实际由 Nzbcorz 控制。处于同样的弊案，在当年 7 月由前风巽地区北部由玩家 MethylQAQ 申请管理，并当年 8 月由 uDays 管理组(实际由 Nzbcorz 授权)交由其正式管理该地区，地区被命名为[[森川市]]，但依然幕后完全由 Nzbcorz 所控制。2020 年 9 月，Nzbcorz 因弊案事件影响而被 uDays 清退，在此之后 MethylQAQ 完全控制了森川市。&lt;br /&gt;
&lt;br /&gt;
因玩家 MethylQAQ 实际与彼时风巽市有一衣带水的关系，因此在其任期间，森川市与风巽市的关系宛如同一座城市中的不同城区，这段时间被称作“森巽友好”时期。有许多公路与铁路被直接从风巽市修建至森川市。因受风巽市翻新的洋河区与新建的原野区影响，森川市境内也开始大力发展“现代化高层建筑”，因此森川市城区中绝大多数 GTM 时代与 ChinaCraft 流亡时代的历史建筑在这一时期被直接拆除，原地兴建了许多现代化风格的苏联市高层建筑，但却缺乏实际用途，城区规划也相当凌乱，因而被称作&amp;quot;缝合城市&amp;quot;。彼时一些前 ChinaCraft 玩家这一情况感到痛心并试图以保留历史为名来令旧建筑物得以保存，但被 MethylQAQ 以&amp;quot;前朝的建筑不予保留&amp;quot;遭拒绝。&lt;br /&gt;
&lt;br /&gt;
在森川市成立同期， 领域中央铁道(今悠日铁道端巽线)开通，藉由彼时唯一的车辆段设置于森川市南岐镇(南岐车辆段)，uDays RTM BE 2 实体车辆控制器同样在此测试，迎来了许多观光玩家，藉由来往玩家较多，许多玩家在此建立房屋，森川市实际存在期间十分繁华。但因森川市兴建建筑的速度依然远低于拆除旧建筑与平整原始地形的速度，到了 2020 年末，森川市中充斥着许多旧建筑被拆除，新建筑来不及兴建的超平坦空地，地区管理者 MethylQAQ 曾经在 2021 年 3 月期间向 uDays 所有地区宣称可以将区域内“不要的、即将拆迁的”建筑使用结构方块移至森川市中以填满“超平坦空地”，这一倡议导致森川市被称作“垃圾桶”，但实际上也没有任何将被拆除的建筑最终被移至森川市。&lt;br /&gt;
&lt;br /&gt;
===地权收回(森川市)(2021.5 - 2021.6)===&lt;br /&gt;
2021 年 5 月，uDays 管理组、uDays 工程组、SantorsiaWorks、悠日玩家联合协会通过了《悠日都花都开发法案》以解决彼时端点市沦为锈带而原先设定的新首都职能城市“叶原市”规划与建设进度落差极大的问题。《悠日都花都开发法案》将森川市、悠亭老城、南岐镇、池店镇合并成花都市，作为 uDays 的新“首都职能”城市。至 6 月，MethylQAQ 交出了森川市((并辖南岐镇)的管辖权限，但森川市内部分建筑在地权交接阶段被其损毁，例如樱茶区的克林姆林宫在 2021 年 6 月初交接前日夜间被烧毁，uDays 管理组与工程组容忍了这一行为，并继续将 MethylQAQ 视作花都市的荣誉市长。八三零事件后，MethylQAQ 被清退，而许多这一时期的政治游戏被披露，实际上在 21 年 6 月。彼时 uDays 工程组内部发行(现已解密)的《2021 年 6 月 森川市实际报告》中报告“实际在地权被收回后，森川市表面已无完整建筑，大量建筑表面存留着尚未爆炸的 TNT”。森川市在 21 年 6 月 1 日被并入花都市中，设悠兰区，后于 23 年改名为鹅城区。今日的鹅城区有部分森川市时期的建筑加以“修缮”后留存，但 GTM 时代与 ChinaCraft 流亡时代的建筑物近乎不存。&lt;br /&gt;
&lt;br /&gt;
===悠兰中心期 (2021 - 2022)===&lt;br /&gt;
[[File:htv3th.jpg|200px|thumb|2021 年 5 月最初的花都市规划，与当下区别实际极大]]&lt;br /&gt;
[[File:Hanato20217.jpg|200px|thumb|2021 年 7 月的花都市悠兰区、悠亭区地图，此时大同广场为森川市时代的原始形态，在 2022 年 4 月被完全拆除重建。]]&lt;br /&gt;
[[File:hanato202171.jpg|200px|thumb|2021 年 7 月的花都市悠兰区、悠亭区，原始森川市的轮廓依然可见。]]&lt;br /&gt;
[[File:htv3t.jpg|200px|thumb|花都市 2022 年 8 月的地图]]&lt;br /&gt;
2021 年 6 月后，花都市成立，以“基于 Minecraft 体验的田园城市”理论为构造，施工完全依照规划图进行，但规划在 21 年至 22 年变更了许多次。花都市始终由 uDays 工程组与 SantorsiaWorks 一同开发，在 22 年 4 月前，因主要建筑计划位于悠兰区，因此花都市的中心城区在这一时期内位于悠兰区，但悠亭区在这时亦有许多由玩家及 uDays 工程组所完成的建筑计划，例如以现代建筑为主的的商务区与居住区、长滩沙滩等观光区。&lt;br /&gt;
&lt;br /&gt;
相对于森川市的“高楼成群”，花都市在成立初期反而开始大量建造 1930 年风格的兴亚式建筑、南洋风格骑楼建筑、传统中国南方福建风格、及台湾风格的民俗建筑。先前森川市时代所有高于 60 格的建筑都被 uDays 工程组以“平衡天际线”理由而拆除，当下鹅城区仅保留“森川老街(八三零事件后被称为悠兰老街)”沿街的部分森川市建筑。玩家 John Cheung 戏称其这种“1930 年的建筑”取代“现代建筑”是“历史的大倒退”。在八三零事件前，原花都市市长 MethylQAQ 的宅邸也位于这条街上，在八三零事件后改作“无名玩家纪念馆”。&lt;br /&gt;
&lt;br /&gt;
同期 SantorsiaWorks 开始了“鹅城大街”建筑计划，即复刻电影《让子弹飞》中以南洋骑楼风格为主的&amp;quot;鹅城&amp;quot;。&amp;quot;鹅城大街&amp;quot;叠加在森川市绝大部分旧城区中，以起到“在保留玩家建筑的同时，营造能够代表 uDays 精致感与生活感的工艺建筑群”。森川中轴线所在“森川大街”被改建为中国广东闽粤地区传统骑楼建筑构成的“菜市巷”，原始 ChinaCraft 出生点(森川钟楼)亦得到保留，但改建为更为复古的&amp;quot;鹅城钟楼”。端巽公路森川段中南岐区与鹅城区间的一小段被修缮为“南岐公园”以纪念端巽公路的修建，南岐公园亦建有复刻电影的“鹅城城门”，但实际上鹅城区从 ChinaCraft 时代至森川市时代并没有任何“城门”，只有位于悠亭区的“悠亭城”筑有城墙与城门。截至 22 年 9 月，鹅城大街依然处于“未完工状态”，虽然工期已经接近末尾，但已经有部分商店开始营业。22 年 9 月因 Rosetta 事件影响，部分商家亦担心出现类似于“2020 年经济大崩溃”状况，因此闭店停业。&lt;br /&gt;
&lt;br /&gt;
HondaSaki 在 21 年 7 月加入了 uDays 工程组，并负责悠兰区海铃湾附近的开发计画。兴建了一些低矮风格的现代建筑来在解决“限高”的同时符合花都多元城市的定位。同时在兼顾符合花都审美的风格上亦在建筑上加入了一些常见 Minecraft 生存服务器中的可见元素，例如带有“公用附魔台”的公园、架高式农场、刷怪塔等建筑来解决生存玩家在花都市的部分需求。许多玩家称赞 HondaSaki 的设计，但也有部分玩家批“生存不生存、RP 不 RP、创造不创造”。&lt;br /&gt;
&lt;br /&gt;
===悠亭中心期 (2022 - 今日)===&lt;br /&gt;
2022 年 4 月后，位于悠亭区的大同广场开建，大同广场通常被视为花都市的城市标志之一，也是 uDays 行政中心的象征，大同广场以直径 100 格的环岛为中心，设有 uDays 建服纪念碑，周围规划设有悠日银行、凛雪电信大楼(SantorsiaWorks 代理处)、悠日监察部(保卫局)、玩家联合服务中心、悠亭饭店五大建筑及一预留地块。但直到 22 年 9 月，大同广场建筑群依然尚未完工。因此绝大多数行政单位依然位于端点市岛区及上都区。&lt;br /&gt;
&lt;br /&gt;
大同广场以南是悠亭区的现代“商务区”风格城区，在 2022 年 2 月后开始兴建许多高层建筑，例如地标建筑花咲塔、服务器际贸易中心、uDays 所加入的 NCC 都市计画组织“办公楼”、各悠日计画群组服旗下服务器驻 uDays 使馆及代表处也在这一区域。同时也兴建了一些玩家所使用的公寓楼及“度假村”风格的酒店设施。&lt;br /&gt;
&lt;br /&gt;
=== uDays Rosetta（2022)(有争议)===&lt;br /&gt;
在 2022 年 9 月 25 日，uDays 管理组通过了  Rosetta 计画，该计画旨在 5.2210 Yuuni Paranoia 版本上线同期上线 uDays Java 平台测试版本以供“至 5.2212 Yuuni Rosetta 后 uDays 将转移回 Java 平台、获取更高的日活量及避免 Minecraft 基岩版本 1.19.30 后自定义方块不可用的问题”。在迁移之后，&#039;&#039;&#039;花都市的所有经济系统全面崩溃，所有银行、商店均无法工作，乃至基本的邮件分发、护照系统都将需要完全 uDays 管理组手动投递&#039;&#039;&#039;。此外所有红石系统、悠日铁道的自动发车计算机都将无法使用。虽然玩家的背包、经济将得以保存，但事实上玩家也无法使用这些数据购买任何物品，玩家亦无法使用密钥从银行金库中取出其保险物。uDays 管理组宣称将在 2 - 3 个月内修复经济系统问题，&#039;&#039;&#039;但 uDays 曾经骄傲的自主红石计算机制轨道交通系统将彻底被 Java 平台 MTR Mod 自助发车系统取代&#039;&#039;&#039;，&#039;&#039;&#039;成熟的邮件分发链亦将遭到致命打击&#039;&#039;&#039;，部分玩家亦抵制 Rosetta 计画，认为其破坏了[[悠日计划 基本法案 5.22 发行版本 6|悠日计划 基本法案 5.22 发行版本 6 修订版本 1]]的第一条&amp;quot;uDays 是基岩版服务器&amp;quot;条文。而 uDays 管理组则不予回应。玩家 John Chueng 指”uDays 管理组可能在 12 月之前发布新版基本法案&#039;&#039;&#039;以删除 uDays 是基岩版服务器&#039;&#039;&#039;相关。&lt;br /&gt;
&lt;br /&gt;
==地理==&lt;br /&gt;
花都市位于 uDays 现公认中南部地区，下辖悠亭区、鹅城区、南岐区、悠芷区、五和区、池店镇。根据《悠日计划 基本法案 悠日都花都景观保护与游玩法案》，及对应轴坐标的下界区域与末路之地区域”，整体适用坐标约位于地图 X 2500 至 -1000、Z -2500 至 - 5500 区间内。在前风巽地区时代及森川市时代，现花都市区域内经历了较为重大的地形变更，许多山脉被削平、沼泽被填平、海湾被重塑。但大体轮廓上依然改动不大。&lt;br /&gt;
&lt;br /&gt;
任何归属于 uDays 的玩家、持有其他服务器护照及 uDays 签发签证的玩家在经过安检后都可以进入花都市。由花都市前往端点市根据具体通勤方式需要约 15 分钟 - 1 小时不等(乘搭铁路、驾车或徒步旅行)。&lt;br /&gt;
&lt;br /&gt;
==交通==&lt;br /&gt;
花都市拥有全 uDays 最完善的路网，uDays 2、3号高速公路均由花都市发端。花都是 uDays 中唯一一个所有道路都被命名的城市。花都市营地下铁是 uDays 中唯一一个完全基于 MCA、TCMB 实体控制器设计规划建造中的全比例地下铁系统，喵铃路面电车系统至今仍然是 uDay 中唯一的路面电车系统。航运在花都市相当发达，花都市也亦有悠日服际花都悠晴机场开发案，但因建设进度问题目前仍未开建。&lt;br /&gt;
&lt;br /&gt;
===主要公路===&lt;br /&gt;
====城际高速花巽高架公路====&lt;br /&gt;
前身是 21 年的端巽高架高速公路(端巽新道)，为双向两车道。在悠日都花都计划后，这条高架高速公路被拆为两段：南段为花巽高速公路(uDays 2 号高速公路)，连结花都鹅城、悠亭区与风巽市原野区。&lt;br /&gt;
&lt;br /&gt;
====城际高速花叶高架公路====&lt;br /&gt;
前身是 21 年的端巽高架高速公路(端巽新道)，为双向两车道。但叶原至端点段因叶原计划延期导致公路仅到诺记吧村。在悠日都花都计划后，端巽高架高速公路被拆为两段：北段为花叶高速公路(uDays 1 号高速公路)，连结花都悠亭区与叶原市诺记吧村。将来亦有重新连结端点市与Creating 滨海市计画，但被质疑“人力不足、雇佣人力预算更不足”。&lt;br /&gt;
&lt;br /&gt;
====城际高速花朔高架公路 (在建)====&lt;br /&gt;
22 年 5 月开建，经由黍离岛，连结新设立的朔川市，为双向三车道。&lt;br /&gt;
&lt;br /&gt;
====城际高速花田公路 (在建)====&lt;br /&gt;
22 年 8 月开建，经由花都市悠亭区连结花都市南岐区的离岛，为双向三车道。&lt;br /&gt;
&lt;br /&gt;
====花都半环公路====&lt;br /&gt;
22 年 2 月建成，环花都市悠兰区、悠亭区的公路，但在海铃湾处终结，未来有连结城际高速花朔高架公路的计画。&lt;br /&gt;
&lt;br /&gt;
====端巽公路====&lt;br /&gt;
20 年中旬左右分段手动铺设完工，全长 6157 格，联通了端点市上都区与风巽市洋河区，因宽度仅为 3 格，只得勉强单辆汽车通行。在端巽高架高速公路分段开通后原端巽公路被称为端巽旧道。位于花都市内的端巽公路除南岐公园内的“纪念道路”外其他均被拆除。&lt;br /&gt;
&lt;br /&gt;
===航空===&lt;br /&gt;
花都市至今没有任何能够起落固定翼飞机的机场，玩家通常需要前往风巽市洋河机场起落小型私人固定翼飞机。目前有在悠芷区古树镇建设悠晴机场的计划，但受制于人力不足与严苛的建筑审批，目前悠晴机场建设遥遥无期。&lt;br /&gt;
&lt;br /&gt;
花都市悠亭区商务区部分建筑物上拥有直升机停机坪，可供部分玩家临时降落起飞私人直升机。目前花都市境内没有任何直升机为媒介的商业航班。&lt;br /&gt;
&lt;br /&gt;
===轨道交通(铁道)===&lt;br /&gt;
花都是全 uDays 中轨道交通分布第二密集的城市，仅次于[[端点市]]。早在 ChinaCraft 时期，便开建了第一条矿车线路，但最终并未开通。森川市时期，藉由 RTM BE 2 在南岐车辆段测试，诸多观光玩家令彼时的森川市十分繁荣，此时森川市境内的森巽轻轨 S1 线是 uDays 中第一条法理上民营的线路、喵铃电车是 uDays 中迄今唯一的路面电车系统。在悠日都花都计划后，地下铁计划亦被提上日程，但因斟酌过多，地下铁规划被改动数次，经过了六次迭代后方确定了最终由三条交汇于花咲站的线路及一条路面轻轨所构成的路网。&lt;br /&gt;
====花都市观光矿车线路 (修缮中)====&lt;br /&gt;
花都观光矿车线路是基于 ChinaCraft 时代及森川市时代留下的未完工的矿车线修缮而得的。&lt;br /&gt;
&lt;br /&gt;
其隧道在 2016 年初ChinaCraft时代时挖掘了部分，在 2020 年森川市时期由 MethylQAQ 继续向西挖掘了一部分，试图通往彼时的“森巽轻轨 S1线”森川站点，但直到《悠日都花都》计画实施前，也并未正式开放。&lt;br /&gt;
&lt;br /&gt;
花都观光矿车线路现有两个车站，其一位于悠兰区悠兰老街“铃湾站”，其二位于悠兰区菜市巷“主城站”。沿矿车线路设有历史照片展览，同时车站使用了 2016 年地区命名作为站点名。&lt;br /&gt;
&lt;br /&gt;
====花都市市营地下铁 (修建中)====&lt;br /&gt;
[[File:htvx.jpg|200px|thumb|2021 年 6 月的 uDays 地图，其中有彼时的花都市轨道交通规划图]]&lt;br /&gt;
[[File:htv3tsh.jpg|200px|thumb|当下的花都市轨道交通规划]]&lt;br /&gt;
花都市市营地下铁由星海线(HT)、星奏线(HH)，秋泽线(CT)构成，三条线路以花咲站为换乘中转站。在早期规划中被简单的根据途经地区称为悠亭线、悠兰线、悠晴线，但因辨识度问题最终使用了完全不一样的命名。同时线路规划亦进行了彻底的修改以解决初期规划“走路都比坐地铁快”与“途经地点人流量缺乏”的问题。&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
!线路!!colspan=5| 车站信息&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;星海线&#039;&#039;&#039;&amp;lt;br /&amp;gt;(HT)||星海&amp;lt;br /&amp;gt;{{small|{{lang|en-us|Hsin Hai&amp;lt;br /&amp;gt;(HOSHIUMI)}}}}||西门&amp;lt;br /&amp;gt;{{small|{{lang|en-us|Hsi Men&amp;lt;br /&amp;gt;(NISHIMONN)}}}}||花咲&amp;lt;br /&amp;gt;{{small|{{lang|en-us|Hua Hsiao&amp;lt;br /&amp;gt;(HANASAKI)}}}}||海铃&amp;lt;br /&amp;gt;{{small|{{lang|en-us|Hai Lin&amp;lt;br /&amp;gt;(UMISUZU)}}}}||朔川&amp;lt;br /&amp;gt;{{small|{{lang|en-us|Shuo Chuan&amp;lt;br /&amp;gt;(SAKUKAWA)}}}}&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;星奏线&#039;&#039;&#039;&amp;lt;br /&amp;gt;(HH)||星奏&amp;lt;br /&amp;gt;{{small|{{lang|en-us|Hsin Tsou&amp;lt;br /&amp;gt;(HOSHISENA)}}}}||大同&amp;lt;br /&amp;gt;{{small|{{lang|en-us|Ta Tung&amp;lt;br /&amp;gt;(DAIDOU)}}}}||花咲&amp;lt;br /&amp;gt;{{small|{{lang|en-us|Hua Hsiao&amp;lt;br /&amp;gt;(HANASAKI)}}}}||白山&amp;lt;br /&amp;gt;{{small|{{lang|en-us|Pai  Shan&amp;lt;br /&amp;gt;(SHIROYAMA)}}}}||陆桥&amp;lt;br /&amp;gt;{{small|{{lang|en-us|Liou Chiao&amp;lt;br /&amp;gt;(RIKKYOU)}}}}&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;秋泽线&#039;&#039;&#039;&amp;lt;br /&amp;gt;(CT)||秋泽&amp;lt;br /&amp;gt;{{small|{{lang|en-us|Chiou Tze&amp;lt;br /&amp;gt;(AKITATU)}}}}||悠兰&amp;lt;br /&amp;gt;{{small|{{lang|en-us|You Lan&amp;lt;br /&amp;gt;(YUURANN)}}}}||花咲&amp;lt;br /&amp;gt;{{small|{{lang|en-us|Hua Hsiao&amp;lt;br /&amp;gt;(HANASAKI)}}}}||文乃&amp;lt;br /&amp;gt;{{small|{{lang|en-us|Wen Nai&amp;lt;br /&amp;gt;(AYANO)}}}}||古树&amp;lt;br /&amp;gt;{{small|{{lang|en-us|Gu Shu&amp;lt;br /&amp;gt;(FURUKI)}}}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 喵铃有轨电车（修缮中)====&lt;br /&gt;
[[File:nyaline.jpg|200px|thumb|2021 年的喵铃有轨电车，使用 RTM BE 实体控制器]]&lt;br /&gt;
喵铃有轨电车是 21 年 4 月森川市时代末期由玩家柠喵建立的一段地面电车线路，早期使用低地板有轨电车运行。用于接驳森川站与森川城区。全线共设置 3 个车站。分别是：&lt;br /&gt;
&lt;br /&gt;
 南岐 — 森川站 — 森川城区&lt;br /&gt;
&lt;br /&gt;
在悠日都花都计画后，喵铃有轨电车以“修缮”之名停运，并计划将首段缩至铁路车站处，末端改为地下铁西门站路面处。新的规划按照以下方式运行。但至今仍然未复线。&lt;br /&gt;
&lt;br /&gt;
 铁道博物馆(不办理客运) — 悠兰车站 — 花咲 — 西门 — 花都市政府&lt;br /&gt;
&lt;br /&gt;
====悠日铁道(城际铁路)====&lt;br /&gt;
[[File:htvx5.jpg|200px|thumb|位于南岐区的南岐车辆段]]&lt;br /&gt;
悠日铁道在花都市境内有两个车站，分别为悠兰车站、池店车站。&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
!线路!!标识符!!汉字!!日本语!!罗马字!!换乘信息&lt;br /&gt;
|-&lt;br /&gt;
|[[File:yuunitetsu.png|15px]] 端巽线||&#039;&#039;&#039;YDYR&#039;&#039;&#039;||{{large|{{lang|en-us|悠兰}}}}||ゆうらん||Yuurann||align=left|花都市营地下铁秋泽线 (HTCT)&lt;br /&gt;
|-&lt;br /&gt;
|[[File:yuunitetsu.png|15px]] 端巽线||&#039;&#039;&#039;YDCT&#039;&#039;&#039;||{{large|{{lang|en-us|池店}}}}||ちてん||Chitenn||align=left|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====悠日铁道 [[悠兰车站]]=====&lt;br /&gt;
[[File:yuurann.jpg|200px|thumb|悠兰车站位于悠兰区与悠亭区的分界线上，前身是森川车站]]&lt;br /&gt;
[[File:yuurann2.jpg|200px|thumb|uDays Intro 中的悠兰车站]]&lt;br /&gt;
[[File:yuurann3.jpg|200px|thumb|2021 年 5 月建成时悠兰车站，此时悠日都花都计划依然在地权移交中，背面即为森川市时期的铁道大楼建筑。]]&lt;br /&gt;
悠日铁道[[悠兰车站]]是在森川站基础上于 2021 年 5 月重建而成的匹配花都主题色构成的新车站，是悠日城际铁路中目前第三大站，为双线侧式站台(西下东上)。但受制于悠日铁道 2020 年设计时考量 2025 年实际玩家人数需求所最终确认的“地铁级规模”城际铁路规划，因此即使经 2022 年的扩建，站台也仅仅可停靠三节编组单节 18 格长的车体，亦无法配置任何快慢车系统。以下是悠兰车站的布局：&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
!楼层!!功能!!设备&lt;br /&gt;
|-&lt;br /&gt;
|G||[[File:yuunitetsu.png|15px]] (端巽线列车)到达出发层、玩家出站层||uDays RTM BE 轨道清障系统&lt;br /&gt;
|-&lt;br /&gt;
|B1||玩家进站层、设备层||红石售验票机(第二代)、红石安检设备(停用)、播音设施、uDays Intro 剧情模式过场效果控制器、MCA 区间实体控制器(联动B2追踪计算机及区间计算机)&lt;br /&gt;
|-&lt;br /&gt;
|B2||设备层||红石实体追踪计算机、红石车辆区间计算机(第二代)、管理员区间控制板、半自动收发车系统(uDays RTM BE)、常加载区块控制器&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====悠日铁道 池店车站=====&lt;br /&gt;
[[File:chitenn.jpg|200px|thumb|一张著名的悠日铁道截图，即 2020 年期间使用 uDays RTM BE 初代实体控制器进入池店站的 900 系电联车。]]&lt;br /&gt;
[[File:chitenn2.jpg|200px|thumb|2020 年 8 月 uDays RTM BE 实体控制器测试期间，位于池店区间的 2000 系电联车。]]&lt;br /&gt;
悠日铁道池店车站是悠日铁道端巽线上唯二的现代风格车站之一。是在原有领域中央铁道池店车站基础上重建而成适合“地铁化”模式运营的新车站。但实际上悠日铁道最初设计是单节 18 米胶轮列车、在人流量多的时候加挂一节。在 21 年 7 月悠日铁道启用了新车辆基准，取消了胶轮设计，转为使用 UD 402 与 UD 500 系电联车运营，但基于悠日铁道先前规划，仅能停下两节编组单节 18 格长的车体。在 22 年初悠日铁道取消“地铁化”模式后地位较为尴尬。以下是池店车站的布局：&lt;br /&gt;
&lt;br /&gt;
{|class=wikitable style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
!楼层!!功能!!设备&lt;br /&gt;
|-&lt;br /&gt;
|2F||[[File:yuunitetsu.png|15px]] (端巽线列车)到达出发层||uDays RTM BE 轨道清障系统&lt;br /&gt;
|-&lt;br /&gt;
|G||玩家出站层、设备层||MCA 区间实体控制器(联动B1追踪计算机及区间计算机)、uDays RTM BE 实体控制器(停用)、常加载区块控制器、播音设施、管理员区间控制板&lt;br /&gt;
|-&lt;br /&gt;
|B1||玩家进站层、设备层||红石售验票机(第二代)、红石安检设备(停用)、红石实体追踪计算机、红石车辆区间计算机(第二代)、点对点发车远程红石控制器、半自动收发车系统(uDays RTM BE)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====森巽轻轨 S1 线 (已拆除)====&lt;br /&gt;
森巽轻轨是森川市时代一条使用 RTM BE 2 实体控制器驱动、连结风巽市洋河区落城港与森川市海铃湾半岛的轻轨线路，由 MethylQAQ 建立，但不具备自动发车能力，只能手动放置实体车辆运行，因此在建成后平日里不曾开行。 在 2021 年 6 月经悠日计划玩家联合协会投票表决通过后，由玩家柠喵拆除，在拆除过程中，一段长 15 格的轨道被移动至悠日铁道博物馆中做静态实物保存。 以下是 森巽轻轨 S1 线的车站线路设置&lt;br /&gt;
&lt;br /&gt;
 森川沼津 - 风巽洋河&lt;br /&gt;
&lt;br /&gt;
===冰船道===&lt;br /&gt;
====下界线 (位于 uDays 南部的下界冰船道)====&lt;br /&gt;
注意：此条目不是端点市下界线路&lt;br /&gt;
&lt;br /&gt;
下界冰船道是 uDays 南部对应下界部分中的一条已经被拆除的冰船道的简称。其最初在 2017 年至 2018 年中的一个尚不明确的时间点由未知玩家修建的，两个没有标明创建者的下界传送门直接位于地表被用于连结彼时前风巽地区的&amp;quot;主城&amp;quot;区域(位于今花都市鹅城区)与主要玩家聚落(位于今风巽市洋河区)。在 2018 年中旬被封闭，2019 年初被重新启用，在 19 年末由 uDays 工程组加以修缮，并将其连结至叶原(今叶原市叶原城区)与华林(今端点市上都区华林地区)。之后与端点市旧下界中枢“第一安置点”相连通。同期各站房加装红石验证装置收取使用费用。20年 8 月因 Losk WX 称主世界“新干线”冰船道定位重叠，因 Nzbcorz 弊案影响，这条线路未经投票便被 Nzbcorz 填平。&lt;br /&gt;
&lt;br /&gt;
在“下界冰船道”存在期间，其拥有 4 个与主世界相互中转的站点，自南往北分别是 &amp;quot;风巽南&amp;quot;中转站(20 年称“风巽车站”，在同年铁路通车后改称“风巽下界中转站”，今存站房)、&amp;quot;主城&amp;quot;中转站(20 年称“森川车站”，在同年铁路通车后改称“森川下界中转站”，今存站房)、&amp;quot;叶原&amp;quot;中转站(20 年 8 月拆除)、&amp;quot;华林&amp;quot;站(20 年 8 月拆除)，目前于鹅城区菜市巷存森川下界中转站站房。&lt;br /&gt;
&lt;br /&gt;
====“新干线”冰船道 (今不存)====&lt;br /&gt;
在 2019 年至 2020 年，uDays 境内早前地表拥有一条贯通南北的冰船道命名为“新干线”，在今花都市境内拥有池店站与森川站，在由玩家 Losk WX 在 2020 年 3 月开始建立，但据称原 uDays 五大元老中 Nzbcorz 无视了 uDays 的基本规则，直接给予了 Losk EX 创造权限并令其建造这条冰船道&amp;quot;新干线&amp;quot;。&lt;br /&gt;
&lt;br /&gt;
2020 年 9 月，因 Nzbcorz 在现实中与 uDays 管理组、uDays 工程组、SantorsiaWorks 间的严重摩擦，加之其在 uDays 中各式弊案事件影响，其被完全清退出 uDays，并被抹除了在 uDays 中几乎所有痕迹。在这种情况下下，受 uDays 中常见的“政治游戏”影响及为了“强推端巽线”，完全由 Nzbcorz 支持的“新干线”冰船道以&amp;quot;极为影响 uDays 天际线“理由在当年 10 月从风巽站开始被逐段拆除，仅端点市境内的一小段冰船道被存留并加于修缮用于“纪念”性质。位于森川市的一小段冰船道与新干线冰船站森川站(注：不是下界冰船线森川站)的铭牌在拆除时被移到悠日铁道博物馆展示纪念。&lt;br /&gt;
&lt;br /&gt;
===航运===&lt;br /&gt;
[[File:Hanatonya.jpg|200px|thumb|玩家 SakuraKotori 位于樱叶内海中的游艇]]&lt;br /&gt;
相对于端点市注重“运输”的商业航运，花都市的航运系统更依赖于观光业与渔业。星宫湾、星河湾是花都市知名的快艇停泊地，许多玩家在星宫湾、海铃湾附近捕捞鱼类送至岸上售卖。富足的玩家时常将停泊在樱叶内海中的超级水瓶座游艇四处移动。&lt;br /&gt;
&lt;br /&gt;
==政治==&lt;br /&gt;
[[File:htvxgx.jpg|200px|thumb|市长选举闹剧中要求候选人做的考核试卷]]&lt;br /&gt;
花都市是 uDays 工程组直辖的城市，整体由 uDays 管理组、uDays 工程组、悠日玩家联合协会、SantorsiaWorks 控制。在八三零事件后花都市的市长这一职位被取消。目前花都市的管理由 uDays 工程组(行政与建筑)、花都建工(SantorsiaWorks 马甲)(建筑)、悠日玩家联合协会(玩家管理与监察)负责。藉由强有力的控制，风巽市中蔓延的独立思潮在花都市中迫近于无。但在秋泽溪口岸处风巽界普利特镇，有一些 uDays 的异议者在此建立反对标语牌匾。&lt;br /&gt;
&lt;br /&gt;
====市长 (已废除)====&lt;br /&gt;
花都市市长选举在每年 4 月 1 日举行，使用 QQ 群聊及 Discord 服务器中投票决定，基于《悠日计划 基本法案 运营法案》选举的获胜者由选票多数而决定。但藉由政治动荡，市长选举实际难以进行、且候选人通常由 uDays 四大组织之一提供支持。相对于端点市的相对安定，花都市的摩擦更为剧烈，许多玩家认为“市长”可以通过与 uDays 管理组间关系以获取无限的 CR 货币并可任意清退玩家，玩家亦认为花都市市长代表了“亲 uDays 管理组”的群体，因此玩家间的抗议与宏观上的政治游戏频发。在八三零事件后，花都市取消了市长一职。以下是曾经花都市的市长列表：&lt;br /&gt;
&lt;br /&gt;
 IXA (2021.6)(被清退)&lt;br /&gt;
&lt;br /&gt;
 unAngryMiao1234 (2021.6-2021.8)(被清退)&lt;br /&gt;
&lt;br /&gt;
 MagicMirr0r (2021.8-2021.12)(被清退)&lt;br /&gt;
&lt;br /&gt;
 Leobai (2022.1 - 2022.4)(被清退)&lt;br /&gt;
&lt;br /&gt;
 MilkLemonRegular (2022.4)(拒绝受任）&lt;br /&gt;
&lt;br /&gt;
 MethylQAQ (2022.4 - 2022.8)(被清退)&lt;br /&gt;
&lt;br /&gt;
====荣誉市长====&lt;br /&gt;
 MethylQAQ （2021.6 - 2022.8)(被清退)&lt;br /&gt;
&lt;br /&gt;
根据 uDays 工程组、SantorsiaWorks 投票结果，22 年 8 月 30 日后，花都市不设荣誉市长。&lt;br /&gt;
&lt;br /&gt;
====地区法规====&lt;br /&gt;
《uDays 工程组直辖区域 悠日都花都 游玩法案及景观保护法案》见 悠日计划 基本法案&lt;br /&gt;
&lt;br /&gt;
====争议====&lt;br /&gt;
=====“矫情”争议=====&lt;br /&gt;
22 年 6 月，《悠日计划 基本法案 悠日都花都景观保护法与游玩法案》发布后，Creating 玩家 i35010u 批 uDays 管理组“矫情”：“玩家没进服务器先背几十条禁令”、“反正我选择退服”。这一事件促成了《悠日计划 基本法案 5.22 发行版本 5》的诞生，但此法案亦因过简单遭到玩家轻视，从而导致 beluga 案的发生。&lt;br /&gt;
&lt;br /&gt;
=====uDays 工程组被架空争议=====&lt;br /&gt;
目前玩家普遍认为花都市是被 SantorsiaWorks 完全控制的，SantorsiaWorks 将 uDays 工程组完全架空，主导了整个花都市的开发。&lt;br /&gt;
&lt;br /&gt;
=====规划修改事件=====&lt;br /&gt;
花都市在开建后规划亦常遭更改，通常是一片建筑计划完成后再次修改城区规划再进行下一片建筑计划方案，直到 2022 年完整统一的最终方案才最终定型。玩家 John Cheung 称“等于没有规划”。&lt;br /&gt;
&lt;br /&gt;
==气候==&lt;br /&gt;
花都市绝大多数地形是平原、沼泽、山地。藉由uDays 中时间与现实一致，因此一天内降雨次数可达 10-15 次以上。&lt;br /&gt;
&lt;br /&gt;
==琐事==&lt;br /&gt;
* 14 年至 17 年 ChinaCraft 管辖时代留下的绝大多数建筑物在 20 年至 21 年森川市时代被拆除，原地改建其他建筑物。而在 21 年至 22 年悠日都花都兴建过程中， 20 年至 21 年森川市时代兴建的绝大多数建筑物亦被拆除。&lt;br /&gt;
* 花都市是 uDays 常见政治游戏的主要舞台。&lt;br /&gt;
&lt;br /&gt;
==画廊==&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%A8%A1%E5%9D%97:String&amp;diff=4922</id>
		<title>模块:String</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%A8%A1%E5%9D%97:String&amp;diff=4922"/>
		<updated>2025-12-07T03:00:06Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[&lt;br /&gt;
&lt;br /&gt;
This module is intended to provide access to basic string functions.&lt;br /&gt;
&lt;br /&gt;
Most of the functions provided here can be invoked with named parameters,&lt;br /&gt;
unnamed parameters, or a mixture.  If named parameters are used, Mediawiki will&lt;br /&gt;
automatically remove any leading or trailing whitespace from the parameter.&lt;br /&gt;
Depending on the intended use, it may be advantageous to either preserve or&lt;br /&gt;
remove such whitespace.&lt;br /&gt;
&lt;br /&gt;
Global options&lt;br /&gt;
    ignore_errors: If set to &#039;true&#039; or 1, any error condition will result in&lt;br /&gt;
        an empty string being returned rather than an error message.&lt;br /&gt;
&lt;br /&gt;
    error_category: If an error occurs, specifies the name of a category to&lt;br /&gt;
        include with the error message.  The default category is&lt;br /&gt;
        [Category:Errors reported by Module String].&lt;br /&gt;
&lt;br /&gt;
    no_category: If set to &#039;true&#039; or 1, no category will be added if an error&lt;br /&gt;
        is generated.&lt;br /&gt;
&lt;br /&gt;
Unit tests for this module are available at Module:String/tests.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local str = {}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
len&lt;br /&gt;
&lt;br /&gt;
This function returns the length of the target string.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|len|target_string|}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|len|s=target_string}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    s: The string whose length to report&lt;br /&gt;
&lt;br /&gt;
If invoked using named parameters, Mediawiki will automatically remove any leading or&lt;br /&gt;
trailing whitespace from the target string.&lt;br /&gt;
]]&lt;br /&gt;
function str.len( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&#039;s&#039;} )&lt;br /&gt;
	local s = new_args[&#039;s&#039;] or &#039;&#039;&lt;br /&gt;
	return mw.ustring.len( s )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
sub&lt;br /&gt;
&lt;br /&gt;
This function returns a substring of the target string at specified indices.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|sub|target_string|start_index|end_index}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    s: The string to return a subset of&lt;br /&gt;
    i: The first index of the substring to return, defaults to 1.&lt;br /&gt;
    j: The last index of the string to return, defaults to the last character.&lt;br /&gt;
&lt;br /&gt;
The first character of the string is assigned an index of 1.  If either i or j&lt;br /&gt;
is a negative value, it is interpreted the same as selecting a character by&lt;br /&gt;
counting from the end of the string.  Hence, a value of -1 is the same as&lt;br /&gt;
selecting the last character of the string.&lt;br /&gt;
&lt;br /&gt;
If the requested indices are out of range for the given string, an error is&lt;br /&gt;
reported.&lt;br /&gt;
]]&lt;br /&gt;
function str.sub( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, { &#039;s&#039;, &#039;i&#039;, &#039;j&#039; } )&lt;br /&gt;
	local s = new_args[&#039;s&#039;] or &#039;&#039;&lt;br /&gt;
	local i = tonumber( new_args[&#039;i&#039;] ) or 1&lt;br /&gt;
	local j = tonumber( new_args[&#039;j&#039;] ) or -1&lt;br /&gt;
&lt;br /&gt;
	local len = mw.ustring.len( s )&lt;br /&gt;
&lt;br /&gt;
	-- Convert negatives for range checking&lt;br /&gt;
	if i &amp;lt; 0 then&lt;br /&gt;
		i = len + i + 1&lt;br /&gt;
	end&lt;br /&gt;
	if j &amp;lt; 0 then&lt;br /&gt;
		j = len + j + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if i &amp;gt; len or j &amp;gt; len or i &amp;lt; 1 or j &amp;lt; 1 then&lt;br /&gt;
		return str._error( &#039;String subset index out of range&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if j &amp;lt; i then&lt;br /&gt;
		return str._error( &#039;String subset indices out of order&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mw.ustring.sub( s, i, j )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
This function implements that features of {{str sub old}} and is kept in order&lt;br /&gt;
to maintain these older templates.&lt;br /&gt;
]]&lt;br /&gt;
function str.sublength( frame )&lt;br /&gt;
	local i = tonumber( frame.args.i ) or 0&lt;br /&gt;
	local len = tonumber( frame.args.len )&lt;br /&gt;
	return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
_match&lt;br /&gt;
&lt;br /&gt;
This function returns a substring from the source string that matches a&lt;br /&gt;
specified pattern. It is exported for use in other modules&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
strmatch = require(&amp;quot;Module:String&amp;quot;)._match&lt;br /&gt;
sresult = strmatch( s, pattern, start, match, plain, nomatch )&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    s: The string to search&lt;br /&gt;
    pattern: The pattern or string to find within the string&lt;br /&gt;
    start: The index within the source string to start the search.  The first&lt;br /&gt;
        character of the string has index 1.  Defaults to 1.&lt;br /&gt;
    match: In some cases it may be possible to make multiple matches on a single&lt;br /&gt;
        string.  This specifies which match to return, where the first match is&lt;br /&gt;
        match= 1.  If a negative number is specified then a match is returned&lt;br /&gt;
        counting from the last match.  Hence match = -1 is the same as requesting&lt;br /&gt;
        the last match.  Defaults to 1.&lt;br /&gt;
    plain: A flag indicating that the pattern should be understood as plain&lt;br /&gt;
        text.  Defaults to false.&lt;br /&gt;
    nomatch: If no match is found, output the &amp;quot;nomatch&amp;quot; value rather than an error.&lt;br /&gt;
&lt;br /&gt;
For information on constructing Lua patterns, a form of [regular expression], see:&lt;br /&gt;
&lt;br /&gt;
* http://www.lua.org/manual/5.1/manual.html#5.4.1&lt;br /&gt;
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns&lt;br /&gt;
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
-- This sub-routine is exported for use in other modules&lt;br /&gt;
function str._match( s, pattern, start, match_index, plain_flag, nomatch )&lt;br /&gt;
	if s == &#039;&#039; then&lt;br /&gt;
		return str._error( &#039;Target string is empty&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if pattern == &#039;&#039; then&lt;br /&gt;
		return str._error( &#039;Pattern string is empty&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	start = tonumber(start) or 1&lt;br /&gt;
	if math.abs(start) &amp;lt; 1 or math.abs(start) &amp;gt; mw.ustring.len( s ) then&lt;br /&gt;
		return str._error( &#039;Requested start is out of range&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if match_index == 0 then&lt;br /&gt;
		return str._error( &#039;Match index is out of range&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if plain_flag then&lt;br /&gt;
		pattern = str._escapePattern( pattern )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result&lt;br /&gt;
	if match_index == 1 then&lt;br /&gt;
		-- Find first match is simple case&lt;br /&gt;
		result = mw.ustring.match( s, pattern, start )&lt;br /&gt;
	else&lt;br /&gt;
		if start &amp;gt; 1 then&lt;br /&gt;
			s = mw.ustring.sub( s, start )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local iterator = mw.ustring.gmatch(s, pattern)&lt;br /&gt;
		if match_index &amp;gt; 0 then&lt;br /&gt;
			-- Forward search&lt;br /&gt;
			for w in iterator do&lt;br /&gt;
				match_index = match_index - 1&lt;br /&gt;
				if match_index == 0 then&lt;br /&gt;
					result = w&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- Reverse search&lt;br /&gt;
			local result_table = {}&lt;br /&gt;
			local count = 1&lt;br /&gt;
			for w in iterator do&lt;br /&gt;
				result_table[count] = w&lt;br /&gt;
				count = count + 1&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			result = result_table[ count + match_index ]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if result == nil then&lt;br /&gt;
		if nomatch == nil then&lt;br /&gt;
			return str._error( &#039;Match not found&#039; )&lt;br /&gt;
		else&lt;br /&gt;
			return nomatch&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return result&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
match&lt;br /&gt;
&lt;br /&gt;
This function returns a substring from the source string that matches a&lt;br /&gt;
specified pattern.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index&lt;br /&gt;
    |match=match_number|plain=plain_flag|nomatch=nomatch_output}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    s: The string to search&lt;br /&gt;
    pattern: The pattern or string to find within the string&lt;br /&gt;
    start: The index within the source string to start the search.  The first&lt;br /&gt;
        character of the string has index 1.  Defaults to 1.&lt;br /&gt;
    match: In some cases it may be possible to make multiple matches on a single&lt;br /&gt;
        string.  This specifies which match to return, where the first match is&lt;br /&gt;
        match= 1.  If a negative number is specified then a match is returned&lt;br /&gt;
        counting from the last match.  Hence match = -1 is the same as requesting&lt;br /&gt;
        the last match.  Defaults to 1.&lt;br /&gt;
    plain: A flag indicating that the pattern should be understood as plain&lt;br /&gt;
        text.  Defaults to false.&lt;br /&gt;
    nomatch: If no match is found, output the &amp;quot;nomatch&amp;quot; value rather than an error.&lt;br /&gt;
&lt;br /&gt;
If invoked using named parameters, Mediawiki will automatically remove any leading or&lt;br /&gt;
trailing whitespace from each string.  In some circumstances this is desirable, in&lt;br /&gt;
other cases one may want to preserve the whitespace.&lt;br /&gt;
&lt;br /&gt;
If the match_number or start_index are out of range for the string being queried, then&lt;br /&gt;
this function generates an error.  An error is also generated if no match is found.&lt;br /&gt;
If one adds the parameter ignore_errors=true, then the error will be suppressed and&lt;br /&gt;
an empty string will be returned on any failure.&lt;br /&gt;
&lt;br /&gt;
For information on constructing Lua patterns, a form of [regular expression], see:&lt;br /&gt;
&lt;br /&gt;
* http://www.lua.org/manual/5.1/manual.html#5.4.1&lt;br /&gt;
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns&lt;br /&gt;
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
-- This is the entry point for #invoke:String|match&lt;br /&gt;
function str.match( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&#039;s&#039;, &#039;pattern&#039;, &#039;start&#039;, &#039;match&#039;, &#039;plain&#039;, &#039;nomatch&#039;} )&lt;br /&gt;
	local s = new_args[&#039;s&#039;] or &#039;&#039;&lt;br /&gt;
	local start = tonumber( new_args[&#039;start&#039;] ) or 1&lt;br /&gt;
	local plain_flag = str._getBoolean( new_args[&#039;plain&#039;] or false )&lt;br /&gt;
	local pattern = new_args[&#039;pattern&#039;] or &#039;&#039;&lt;br /&gt;
	local match_index = math.floor( tonumber(new_args[&#039;match&#039;]) or 1 )&lt;br /&gt;
	local nomatch = new_args[&#039;nomatch&#039;]&lt;br /&gt;
&lt;br /&gt;
	return str._match( s, pattern, start, match_index, plain_flag, nomatch )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
pos&lt;br /&gt;
&lt;br /&gt;
This function returns a single character from the target string at position pos.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|pos|target_string|index_value}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|pos|target=target_string|pos=index_value}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    target: The string to search&lt;br /&gt;
    pos: The index for the character to return&lt;br /&gt;
&lt;br /&gt;
If invoked using named parameters, Mediawiki will automatically remove any leading or&lt;br /&gt;
trailing whitespace from the target string.  In some circumstances this is desirable, in&lt;br /&gt;
other cases one may want to preserve the whitespace.&lt;br /&gt;
&lt;br /&gt;
The first character has an index value of 1.&lt;br /&gt;
&lt;br /&gt;
If one requests a negative value, this function will select a character by counting backwards&lt;br /&gt;
from the end of the string.  In other words pos = -1 is the same as asking for the last character.&lt;br /&gt;
&lt;br /&gt;
A requested value of zero, or a value greater than the length of the string returns an error.&lt;br /&gt;
]]&lt;br /&gt;
function str.pos( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&#039;target&#039;, &#039;pos&#039;} )&lt;br /&gt;
	local target_str = new_args[&#039;target&#039;] or &#039;&#039;&lt;br /&gt;
	local pos = tonumber( new_args[&#039;pos&#039;] ) or 0&lt;br /&gt;
&lt;br /&gt;
	if pos == 0 or math.abs(pos) &amp;gt; mw.ustring.len( target_str ) then&lt;br /&gt;
		return str._error( &#039;String index out of range&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mw.ustring.sub( target_str, pos, pos )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
str_find&lt;br /&gt;
&lt;br /&gt;
This function duplicates the behavior of {{str_find}}, including all of its quirks.&lt;br /&gt;
This is provided in order to support existing templates, but is NOT RECOMMENDED for&lt;br /&gt;
new code and templates.  New code is recommended to use the &amp;quot;find&amp;quot; function instead.&lt;br /&gt;
&lt;br /&gt;
Returns the first index in &amp;quot;source&amp;quot; that is a match to &amp;quot;target&amp;quot;.  Indexing is 1-based,&lt;br /&gt;
and the function returns -1 if the &amp;quot;target&amp;quot; string is not present in &amp;quot;source&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Important Note: If the &amp;quot;target&amp;quot; string is empty / missing, this function returns a&lt;br /&gt;
value of &amp;quot;1&amp;quot;, which is generally unexpected behavior, and must be accounted for&lt;br /&gt;
separatetly.&lt;br /&gt;
]]&lt;br /&gt;
function str.str_find( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&#039;source&#039;, &#039;target&#039;} )&lt;br /&gt;
	local source_str = new_args[&#039;source&#039;] or &#039;&#039;&lt;br /&gt;
	local target_str = new_args[&#039;target&#039;] or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	if target_str == &#039;&#039; then&lt;br /&gt;
		return 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local start = mw.ustring.find( source_str, target_str, 1, true )&lt;br /&gt;
	if start == nil then&lt;br /&gt;
		start = -1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return start&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
find&lt;br /&gt;
&lt;br /&gt;
This function allows one to search for a target string or pattern within another&lt;br /&gt;
string.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    source: The string to search&lt;br /&gt;
    target: The string or pattern to find within source&lt;br /&gt;
    start: The index within the source string to start the search, defaults to 1&lt;br /&gt;
    plain: Boolean flag indicating that target should be understood as plain&lt;br /&gt;
        text and not as a Lua style regular expression, defaults to true&lt;br /&gt;
&lt;br /&gt;
If invoked using named parameters, Mediawiki will automatically remove any leading or&lt;br /&gt;
trailing whitespace from the parameter.  In some circumstances this is desirable, in&lt;br /&gt;
other cases one may want to preserve the whitespace.&lt;br /&gt;
&lt;br /&gt;
This function returns the first index &amp;gt;= &amp;quot;start&amp;quot; where &amp;quot;target&amp;quot; can be found&lt;br /&gt;
within &amp;quot;source&amp;quot;.  Indices are 1-based.  If &amp;quot;target&amp;quot; is not found, then this&lt;br /&gt;
function returns 0.  If either &amp;quot;source&amp;quot; or &amp;quot;target&amp;quot; are missing / empty, this&lt;br /&gt;
function also returns 0.&lt;br /&gt;
&lt;br /&gt;
This function should be safe for UTF-8 strings.&lt;br /&gt;
]]&lt;br /&gt;
function str.find( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&#039;source&#039;, &#039;target&#039;, &#039;start&#039;, &#039;plain&#039; } )&lt;br /&gt;
	local source_str = new_args[&#039;source&#039;] or &#039;&#039;&lt;br /&gt;
	local pattern = new_args[&#039;target&#039;] or &#039;&#039;&lt;br /&gt;
	local start_pos = tonumber(new_args[&#039;start&#039;]) or 1&lt;br /&gt;
	local plain = new_args[&#039;plain&#039;] or true&lt;br /&gt;
&lt;br /&gt;
	if source_str == &#039;&#039; or pattern == &#039;&#039; then&lt;br /&gt;
		return 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	plain = str._getBoolean( plain )&lt;br /&gt;
&lt;br /&gt;
	local start = mw.ustring.find( source_str, pattern, start_pos, plain )&lt;br /&gt;
	if start == nil then&lt;br /&gt;
		start = 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return start&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
replace&lt;br /&gt;
&lt;br /&gt;
This function allows one to replace a target string or pattern within another&lt;br /&gt;
string.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|&lt;br /&gt;
   count=replacement_count|plain=plain_flag}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    source: The string to search&lt;br /&gt;
    pattern: The string or pattern to find within source&lt;br /&gt;
    replace: The replacement text&lt;br /&gt;
    count: The number of occurences to replace, defaults to all.&lt;br /&gt;
    plain: Boolean flag indicating that pattern should be understood as plain&lt;br /&gt;
        text and not as a Lua style regular expression, defaults to true&lt;br /&gt;
]]&lt;br /&gt;
function str.replace( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&#039;source&#039;, &#039;pattern&#039;, &#039;replace&#039;, &#039;count&#039;, &#039;plain&#039; } )&lt;br /&gt;
	local source_str = new_args[&#039;source&#039;] or &#039;&#039;&lt;br /&gt;
	local pattern = new_args[&#039;pattern&#039;] or &#039;&#039;&lt;br /&gt;
	local replace = new_args[&#039;replace&#039;] or &#039;&#039;&lt;br /&gt;
	local count = tonumber( new_args[&#039;count&#039;] )&lt;br /&gt;
	local plain = new_args[&#039;plain&#039;] or true&lt;br /&gt;
&lt;br /&gt;
	if source_str == &#039;&#039; or pattern == &#039;&#039; then&lt;br /&gt;
		return source_str&lt;br /&gt;
	end&lt;br /&gt;
	plain = str._getBoolean( plain )&lt;br /&gt;
&lt;br /&gt;
	if plain then&lt;br /&gt;
		pattern = str._escapePattern( pattern )&lt;br /&gt;
		replace = string.gsub( replace, &amp;quot;%%&amp;quot;, &amp;quot;%%%%&amp;quot; ) --Only need to escape replacement sequences.&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result&lt;br /&gt;
&lt;br /&gt;
	if count ~= nil then&lt;br /&gt;
		result = mw.ustring.gsub( source_str, pattern, replace, count )&lt;br /&gt;
	else&lt;br /&gt;
		result = mw.ustring.gsub( source_str, pattern, replace )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    simple function to pipe string.rep to templates.&lt;br /&gt;
]]&lt;br /&gt;
function str.rep( frame )&lt;br /&gt;
	local repetitions = tonumber( frame.args[2] )&lt;br /&gt;
	if not repetitions then&lt;br /&gt;
		return str._error( &#039;function rep expects a number as second parameter, received &amp;quot;&#039; .. ( frame.args[2] or &#039;&#039; ) .. &#039;&amp;quot;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	return string.rep( frame.args[1] or &#039;&#039;, repetitions )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
escapePattern&lt;br /&gt;
&lt;br /&gt;
This function escapes special characters from a Lua string pattern. See [1]&lt;br /&gt;
for details on how patterns work.&lt;br /&gt;
&lt;br /&gt;
[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|escapePattern|pattern_string}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    pattern_string: The pattern string to escape.&lt;br /&gt;
]]&lt;br /&gt;
function str.escapePattern( frame )&lt;br /&gt;
	local pattern_str = frame.args[1]&lt;br /&gt;
	if not pattern_str then&lt;br /&gt;
		return str._error( &#039;No pattern string specified&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	local result = str._escapePattern( pattern_str )&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
count&lt;br /&gt;
This function counts the number of occurrences of one string in another.&lt;br /&gt;
]]&lt;br /&gt;
function str.count(frame)&lt;br /&gt;
	local args = str._getParameters(frame.args, {&#039;source&#039;, &#039;pattern&#039;, &#039;plain&#039;})&lt;br /&gt;
	local source = args.source or &#039;&#039;&lt;br /&gt;
	local pattern = args.pattern or &#039;&#039;&lt;br /&gt;
	local plain = str._getBoolean(args.plain or true)&lt;br /&gt;
	if plain then&lt;br /&gt;
		pattern = str._escapePattern(pattern)&lt;br /&gt;
	end&lt;br /&gt;
	local _, count = mw.ustring.gsub(source, pattern, &#039;&#039;)&lt;br /&gt;
	return count&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
endswith&lt;br /&gt;
This function determines whether a string ends with another string.&lt;br /&gt;
]]&lt;br /&gt;
function str.endswith(frame)&lt;br /&gt;
	local args = str._getParameters(frame.args, {&#039;source&#039;, &#039;pattern&#039;})&lt;br /&gt;
	local source = args.source or &#039;&#039;&lt;br /&gt;
	local pattern = args.pattern or &#039;&#039;&lt;br /&gt;
	if pattern == &#039;&#039; then&lt;br /&gt;
		-- All strings end with the empty string.&lt;br /&gt;
		return &amp;quot;yes&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then&lt;br /&gt;
		return &amp;quot;yes&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
join&lt;br /&gt;
&lt;br /&gt;
Join all non empty arguments together; the first argument is the separator.&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|join|sep|one|two|three}}&lt;br /&gt;
]]&lt;br /&gt;
function str.join(frame)&lt;br /&gt;
	local args = {}&lt;br /&gt;
	local sep&lt;br /&gt;
	for _, v in ipairs( frame.args ) do&lt;br /&gt;
		if sep then&lt;br /&gt;
			if v ~= &#039;&#039; then&lt;br /&gt;
				table.insert(args, v)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			sep = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat( args, sep or &#039;&#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- findpagetext returns the position of a piece of text in a page&lt;br /&gt;
-- First positional parameter or |text is the search text&lt;br /&gt;
-- Optional parameter |title is the page title, defaults to current page&lt;br /&gt;
-- Optional parameter |plain is either true for plain search (default) or false for Lua pattern search&lt;br /&gt;
-- Optional parameter |nomatch is the return value when no match is found; default is nil&lt;br /&gt;
function str._findpagetext(args)&lt;br /&gt;
	-- process parameters&lt;br /&gt;
	local nomatch = args.nomatch or &amp;quot;&amp;quot;&lt;br /&gt;
	if nomatch == &amp;quot;&amp;quot; then nomatch = nil end&lt;br /&gt;
	--&lt;br /&gt;
	local text = mw.text.trim(args[1] or args.text or &amp;quot;&amp;quot;)&lt;br /&gt;
	if text == &amp;quot;&amp;quot; then return nil end&lt;br /&gt;
	--&lt;br /&gt;
	local title = args.title or &amp;quot;&amp;quot;&lt;br /&gt;
	local titleobj&lt;br /&gt;
	if title == &amp;quot;&amp;quot; then&lt;br /&gt;
		titleobj = mw.title.getCurrentTitle()&lt;br /&gt;
	else&lt;br /&gt;
		titleobj = mw.title.new(title)&lt;br /&gt;
	end&lt;br /&gt;
	--&lt;br /&gt;
	local plain = args.plain or &amp;quot;&amp;quot;&lt;br /&gt;
	if plain:sub(1, 1) == &amp;quot;f&amp;quot; then plain = false else plain = true end&lt;br /&gt;
	-- get the page content and look for &#039;text&#039; - return position or nomatch&lt;br /&gt;
	local content = titleobj and titleobj:getContent()&lt;br /&gt;
	return content and mw.ustring.find(content, text, 1, plain) or nomatch&lt;br /&gt;
end&lt;br /&gt;
function str.findpagetext(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local pargs = frame:getParent().args&lt;br /&gt;
	for k, v in pairs(pargs) do&lt;br /&gt;
		args[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	if not (args[1] or args.text) then return nil end&lt;br /&gt;
	-- just the first value&lt;br /&gt;
	return (str._findpagetext(args))&lt;br /&gt;
end&lt;br /&gt;
--[[&lt;br /&gt;
Helper function that populates the argument list given that user may need to use a mix of&lt;br /&gt;
named and unnamed parameters.  This is relevant because named parameters are not&lt;br /&gt;
identical to unnamed parameters due to string trimming, and when dealing with strings&lt;br /&gt;
we sometimes want to either preserve or remove that whitespace depending on the application.&lt;br /&gt;
]]&lt;br /&gt;
function str._getParameters( frame_args, arg_list )&lt;br /&gt;
	local new_args = {}&lt;br /&gt;
	local index = 1&lt;br /&gt;
	local value&lt;br /&gt;
&lt;br /&gt;
	for _, arg in ipairs( arg_list ) do&lt;br /&gt;
		value = frame_args[arg]&lt;br /&gt;
		if value == nil then&lt;br /&gt;
			value = frame_args[index]&lt;br /&gt;
			index = index + 1&lt;br /&gt;
		end&lt;br /&gt;
		new_args[arg] = value&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return new_args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper function to handle error messages.&lt;br /&gt;
]]&lt;br /&gt;
function str._error( error_str )&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	local error_category = frame.args.error_category or &#039;Errors reported by Module String&#039;&lt;br /&gt;
	local ignore_errors = frame.args.ignore_errors or false&lt;br /&gt;
	local no_category = frame.args.no_category or false&lt;br /&gt;
&lt;br /&gt;
	if str._getBoolean(ignore_errors) then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local error_str = &#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;String Module Error: &#039; .. error_str .. &#039;&amp;lt;/strong&amp;gt;&#039;&lt;br /&gt;
	if error_category ~= &#039;&#039; and not str._getBoolean( no_category ) then&lt;br /&gt;
		error_str = &#039;[[Category:&#039; .. error_category .. &#039;]]&#039; .. error_str&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return error_str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper Function to interpret boolean strings&lt;br /&gt;
]]&lt;br /&gt;
function str._getBoolean( boolean_str )&lt;br /&gt;
	local boolean_value&lt;br /&gt;
&lt;br /&gt;
	if type( boolean_str ) == &#039;string&#039; then&lt;br /&gt;
		boolean_str = boolean_str:lower()&lt;br /&gt;
		if boolean_str == &#039;false&#039; or boolean_str == &#039;no&#039; or boolean_str == &#039;0&#039;&lt;br /&gt;
				or boolean_str == &#039;&#039; then&lt;br /&gt;
			boolean_value = false&lt;br /&gt;
		else&lt;br /&gt;
			boolean_value = true&lt;br /&gt;
		end&lt;br /&gt;
	elseif type( boolean_str ) == &#039;boolean&#039; then&lt;br /&gt;
		boolean_value = boolean_str&lt;br /&gt;
	else&lt;br /&gt;
		error( &#039;No boolean value found&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	return boolean_value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper function that escapes all pattern characters so that they will be treated&lt;br /&gt;
as plain text.&lt;br /&gt;
]]&lt;br /&gt;
function str._escapePattern( pattern_str )&lt;br /&gt;
	return ( string.gsub( pattern_str, &amp;quot;[%(%)%.%%%+%-%*%?%[%^%$%]]&amp;quot;, &amp;quot;%%%0&amp;quot; ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return str&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%A8%A1%E5%9D%97:Check_for_unknown_parameters&amp;diff=4920</id>
		<title>模块:Check for unknown parameters</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%A8%A1%E5%9D%97:Check_for_unknown_parameters&amp;diff=4920"/>
		<updated>2025-12-07T03:00:02Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module may be used to compare the arguments passed to the parent&lt;br /&gt;
-- with a list of arguments, returning a specified result if an argument is&lt;br /&gt;
-- not on the list&lt;br /&gt;
&lt;br /&gt;
require (&#039;strict&#039;);&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local mapframe_params = {&lt;br /&gt;
	&#039;coord&#039;,&lt;br /&gt;
	&#039;coordinates&#039;,&lt;br /&gt;
	&#039;id&#039;,&lt;br /&gt;
	&#039;qid&#039;,&lt;br /&gt;
	&#039;mapframe&#039;,&lt;br /&gt;
	&#039;mapframe-area_km2&#039;,&lt;br /&gt;
	&#039;mapframe-area_mi2&#039;,&lt;br /&gt;
	&#039;mapframe-caption&#039;,&lt;br /&gt;
	&#039;mapframe-coord&#039;,&lt;br /&gt;
	&#039;mapframe-coordinates&#039;,&lt;br /&gt;
	&#039;mapframe-custom&#039;,&lt;br /&gt;
	&#039;mapframe-frame-coord&#039;,&lt;br /&gt;
	&#039;mapframe-frame-coordinates&#039;,&lt;br /&gt;
	&#039;mapframe-frame-height&#039;,&lt;br /&gt;
	&#039;mapframe-frame-width&#039;,&lt;br /&gt;
	&#039;mapframe-geomask&#039;,&lt;br /&gt;
	&#039;mapframe-geomask-fill&#039;,&lt;br /&gt;
	&#039;mapframe-geomask-fill-opacity&#039;,&lt;br /&gt;
	&#039;mapframe-geomask-stroke-color&#039;,&lt;br /&gt;
	&#039;mapframe-geomask-stroke-colour&#039;,&lt;br /&gt;
	&#039;mapframe-geomask-stroke-width&#039;,&lt;br /&gt;
	&#039;mapframe-height&#039;,&lt;br /&gt;
	&#039;mapframe-id&#039;,&lt;br /&gt;
	&#039;mapframe-length_km&#039;,&lt;br /&gt;
	&#039;mapframe-length_mi&#039;,&lt;br /&gt;
	&#039;mapframe-line&#039;,&lt;br /&gt;
	&#039;mapframe-line-stroke-color&#039;,&lt;br /&gt;
	&#039;mapframe-line-stroke-colour&#039;,&lt;br /&gt;
	&#039;mapframe-marker&#039;,&lt;br /&gt;
	&#039;mapframe-marker-color&#039;,&lt;br /&gt;
	&#039;mapframe-marker-colour&#039;,&lt;br /&gt;
	&#039;mapframe-point&#039;,&lt;br /&gt;
	&#039;mapframe-population&#039;,&lt;br /&gt;
	&#039;mapframe-shape&#039;,&lt;br /&gt;
	&#039;mapframe-shape-fill&#039;,&lt;br /&gt;
	&#039;mapframe-shape-fill-opacity&#039;,&lt;br /&gt;
	&#039;mapframe-shape-stroke-color&#039;,&lt;br /&gt;
	&#039;mapframe-shape-stroke-colour&#039;,&lt;br /&gt;
	&#039;mapframe-stroke-color&#039;,&lt;br /&gt;
	&#039;mapframe-stroke-colour&#039;,&lt;br /&gt;
	&#039;mapframe-stroke-width&#039;,&lt;br /&gt;
	&#039;mapframe-switcher&#039;,&lt;br /&gt;
	&#039;mapframe-type&#039;,&lt;br /&gt;
	&#039;mapframe-width&#039;,&lt;br /&gt;
	&#039;mapframe-wikidata&#039;,&lt;br /&gt;
	&#039;mapframe-zoom&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function trim(s)&lt;br /&gt;
	return s:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isnotempty(s)&lt;br /&gt;
	return s and s:match(&#039;%S&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function clean(text)&lt;br /&gt;
	-- Return text cleaned for display and truncated if too long.&lt;br /&gt;
	-- Strip markers are replaced with dummy text representing the original wikitext.&lt;br /&gt;
	local pos, truncated&lt;br /&gt;
	local function truncate(text)&lt;br /&gt;
		if truncated then&lt;br /&gt;
			return &#039;&#039;&lt;br /&gt;
		end&lt;br /&gt;
		if mw.ustring.len(text) &amp;gt; 25 then&lt;br /&gt;
			truncated = true&lt;br /&gt;
			text = mw.ustring.sub(text, 1, 25) .. &#039;...&#039;&lt;br /&gt;
		end&lt;br /&gt;
		return mw.text.nowiki(text)&lt;br /&gt;
	end&lt;br /&gt;
	local parts = {}&lt;br /&gt;
	for before, tag, remainder in text:gmatch(&#039;([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()&#039;) do&lt;br /&gt;
		pos = remainder&lt;br /&gt;
		table.insert(parts, truncate(before) .. &#039;&amp;amp;lt;&#039; .. tag .. &#039;&amp;amp;gt;...&amp;amp;lt;/&#039; .. tag .. &#039;&amp;amp;gt;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(parts, truncate(text:sub(pos or 1)))&lt;br /&gt;
	return table.concat(parts)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._check(args, pargs)&lt;br /&gt;
	if type(args) ~= &amp;quot;table&amp;quot; or type(pargs) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
		-- TODO: error handling&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- create the list of known args, regular expressions, and the return string&lt;br /&gt;
	local knownargs = {}&lt;br /&gt;
	&lt;br /&gt;
	if isnotempty(args[&#039;mapframe_args&#039;]) then&lt;br /&gt;
		for _, v in ipairs(mapframe_params) do&lt;br /&gt;
    		knownargs[v] = 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local regexps = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if type(k) == &#039;number&#039; then&lt;br /&gt;
			v = trim(v)&lt;br /&gt;
			knownargs[v] = 1&lt;br /&gt;
		elseif k:find(&#039;^regexp[1-9][0-9]*$&#039;) then&lt;br /&gt;
			table.insert(regexps, &#039;^&#039; .. v .. &#039;$&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- loop over the parent args, and make sure they are on the list&lt;br /&gt;
	local ignoreblank = isnotempty(args[&#039;ignoreblank&#039;])&lt;br /&gt;
	local showblankpos = isnotempty(args[&#039;showblankpositional&#039;])&lt;br /&gt;
	local values = {}&lt;br /&gt;
	for k, v in pairs(pargs) do&lt;br /&gt;
		if type(k) == &#039;string&#039; and knownargs[k] == nil then&lt;br /&gt;
			local knownflag = false&lt;br /&gt;
			for _, regexp in ipairs(regexps) do&lt;br /&gt;
				if mw.ustring.match(k, regexp) then&lt;br /&gt;
					knownflag = true&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if not knownflag and ( not ignoreblank or isnotempty(v) )  then&lt;br /&gt;
				table.insert(values, clean(k))&lt;br /&gt;
			end&lt;br /&gt;
		elseif type(k) == &#039;number&#039; and knownargs[tostring(k)] == nil then&lt;br /&gt;
			local knownflag = false&lt;br /&gt;
			for _, regexp in ipairs(regexps) do&lt;br /&gt;
				if mw.ustring.match(tostring(k), regexp) then&lt;br /&gt;
					knownflag = true&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if not knownflag and ( showblankpos or isnotempty(v) ) then&lt;br /&gt;
				table.insert(values, k .. &#039; = &#039; .. clean(v))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- add results to the output tables&lt;br /&gt;
	local res = {}&lt;br /&gt;
	if #values &amp;gt; 0 then&lt;br /&gt;
		local unknown_text = args[&#039;unknown&#039;] or &#039;Found _VALUE_, &#039;&lt;br /&gt;
&lt;br /&gt;
		if mw.getCurrentFrame():preprocess( &amp;quot;{{REVISIONID}}&amp;quot; ) == &amp;quot;&amp;quot; then&lt;br /&gt;
			local preview_text = args[&#039;preview&#039;]&lt;br /&gt;
			if isnotempty(preview_text) then&lt;br /&gt;
				preview_text = require(&#039;Module:If preview&#039;)._warning({preview_text})&lt;br /&gt;
			elseif preview_text == nil then&lt;br /&gt;
				preview_text = unknown_text&lt;br /&gt;
			end&lt;br /&gt;
			unknown_text = preview_text&lt;br /&gt;
		end&lt;br /&gt;
		for _, v in pairs(values) do&lt;br /&gt;
			-- Fix odd bug for | = which gets stripped to the empty string and&lt;br /&gt;
			-- breaks category links&lt;br /&gt;
			if v == &#039;&#039; then v = &#039; &#039; end&lt;br /&gt;
&lt;br /&gt;
			-- avoid error with v = &#039;example%2&#039; (&amp;quot;invalid capture index&amp;quot;)&lt;br /&gt;
			local r = unknown_text:gsub(&#039;_VALUE_&#039;, {_VALUE_ = v})&lt;br /&gt;
			table.insert(res, r)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat(res)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.check(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local pargs = frame:getParent().args&lt;br /&gt;
	return p._check(args, pargs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%A8%A1%E5%9D%97:Message_box/configuration&amp;diff=4918</id>
		<title>模块:Message box/configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%A8%A1%E5%9D%97:Message_box/configuration&amp;diff=4918"/>
		<updated>2025-12-07T03:00:01Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                          Message box configuration                         --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- This module contains configuration data for [[Module:Message box]].        --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	ambox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = &#039;ambox-speedy&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = &#039;ambox-delete&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = &#039;ambox-content&#039;,&lt;br /&gt;
				image = &#039;Ambox important.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = &#039;ambox-style&#039;,&lt;br /&gt;
				image = &#039;Edit-clear.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = &#039;ambox-move&#039;,&lt;br /&gt;
				image = &#039;Merge-split-transwiki default.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = &#039;ambox-protection&#039;,&lt;br /&gt;
				image = &#039;Semi-protection-shackle-keyhole.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = &#039;ambox-notice&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default                     = &#039;notice&#039;,&lt;br /&gt;
		allowBlankParams            = {&#039;talk&#039;, &#039;sect&#039;, &#039;date&#039;, &#039;issue&#039;, &#039;fix&#039;, &#039;subst&#039;, &#039;hidden&#039;},&lt;br /&gt;
		allowSmall                  = true,&lt;br /&gt;
		smallParam                  = &#039;left&#039;,&lt;br /&gt;
		smallClass                  = &#039;mbox-small-left&#039;,&lt;br /&gt;
		substCheck                  = true,&lt;br /&gt;
		classes                     = {&#039;metadata&#039;, &#039;ambox&#039;},&lt;br /&gt;
		imageEmptyCell              = true,&lt;br /&gt;
		imageCheckBlank             = true,&lt;br /&gt;
		imageSmallSize              = &#039;20x20px&#039;,&lt;br /&gt;
		imageCellDiv                = true,&lt;br /&gt;
		useCollapsibleTextFields    = true,&lt;br /&gt;
		imageRightNone              = true,&lt;br /&gt;
		sectionDefault              = &#039;article&#039;,&lt;br /&gt;
		allowMainspaceCategories    = true,&lt;br /&gt;
		templateCategory            = &#039;Article message templates&#039;,&lt;br /&gt;
	        templateCategoryRequireName = true,&lt;br /&gt;
		templateErrorCategory       = &#039;Article message templates with missing parameters&#039;,&lt;br /&gt;
		templateErrorParamsToCheck  = {&#039;issue&#039;, &#039;fix&#039;, &#039;subst&#039;},&lt;br /&gt;
		removalNotice               = &#039;&amp;lt;small&amp;gt;[[Help:Maintenance template removal|Learn how and when to remove this message]]&amp;lt;/small&amp;gt;&#039;,&lt;br /&gt;
		templatestyles              = &#039;Module:Message box/ambox.css&#039;&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	cmbox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = &#039;cmbox-speedy&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = &#039;cmbox-delete&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = &#039;cmbox-content&#039;,&lt;br /&gt;
				image = &#039;Ambox important.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = &#039;cmbox-style&#039;,&lt;br /&gt;
				image = &#039;Edit-clear.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = &#039;cmbox-move&#039;,&lt;br /&gt;
				image = &#039;Merge-split-transwiki default.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = &#039;cmbox-protection&#039;,&lt;br /&gt;
				image = &#039;Semi-protection-shackle-keyhole.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = &#039;cmbox-notice&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = &#039;notice&#039;,&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {&#039;cmbox&#039;},&lt;br /&gt;
		imageEmptyCell       = true,&lt;br /&gt;
		templatestyles       = &#039;Module:Message box/cmbox.css&#039;,&lt;br /&gt;
		div_structure        = true,&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	fmbox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			warning = {&lt;br /&gt;
				class = &#039;fmbox-warning&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			editnotice = {&lt;br /&gt;
				class = &#039;fmbox-editnotice&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			system = {&lt;br /&gt;
				class = &#039;fmbox-system&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = &#039;system&#039;,&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {&#039;fmbox&#039;},&lt;br /&gt;
		imageEmptyCell       = false,&lt;br /&gt;
		imageRightNone       = false,&lt;br /&gt;
		templatestyles       = &#039;Module:Message box/fmbox.css&#039;,&lt;br /&gt;
		div_structure        = true,&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	imbox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = &#039;imbox-speedy&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = &#039;imbox-delete&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = &#039;imbox-content&#039;,&lt;br /&gt;
				image = &#039;Ambox important.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = &#039;imbox-style&#039;,&lt;br /&gt;
				image = &#039;Edit-clear.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = &#039;imbox-move&#039;,&lt;br /&gt;
				image = &#039;Merge-split-transwiki default.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = &#039;imbox-protection&#039;,&lt;br /&gt;
				image = &#039;Semi-protection-shackle-keyhole.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			license = {&lt;br /&gt;
				class = &#039;imbox-license licensetpl&#039;,&lt;br /&gt;
				image = &#039;Imbox-license.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			[&amp;quot;license-related&amp;quot;] = {&lt;br /&gt;
				class = &#039;imbox-license&#039;,&lt;br /&gt;
				image = &#039;Imbox-license.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			featured = {&lt;br /&gt;
				class = &#039;imbox-featured&#039;,&lt;br /&gt;
				image = &#039;Cscr-featured.svg&#039;,&lt;br /&gt;
				imageNeedsLink = true&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = &#039;imbox-notice&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = &#039;notice&#039;,&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {&#039;imbox&#039;},&lt;br /&gt;
		imageEmptyCell       = true,&lt;br /&gt;
		below                = true,&lt;br /&gt;
		templateCategory     = &#039;File message boxes&#039;,&lt;br /&gt;
		templatestyles       = &#039;Module:Message box/imbox.css&#039;,&lt;br /&gt;
		div_structure        = true,&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	ombox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = &#039;ombox-speedy&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = &#039;ombox-delete&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = &#039;ombox-content&#039;,&lt;br /&gt;
				image = &#039;Ambox important.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = &#039;ombox-style&#039;,&lt;br /&gt;
				image = &#039;Edit-clear.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = &#039;ombox-move&#039;,&lt;br /&gt;
				image = &#039;Merge-split-transwiki default.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = &#039;ombox-protection&#039;,&lt;br /&gt;
				image = &#039;Semi-protection-shackle-keyhole.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = &#039;ombox-notice&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = &#039;notice&#039;,&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {&#039;ombox&#039;},&lt;br /&gt;
		allowSmall           = true,&lt;br /&gt;
		imageEmptyCell       = true,&lt;br /&gt;
		imageRightNone       = true,&lt;br /&gt;
		templatestyles       = &#039;Module:Message box/ombox.css&#039;&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	tmbox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = &#039;tmbox-speedy&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = &#039;tmbox-delete&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = &#039;tmbox-content&#039;,&lt;br /&gt;
				image = &#039;Ambox important.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = &#039;tmbox-style&#039;,&lt;br /&gt;
				image = &#039;Edit-clear.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = &#039;tmbox-move&#039;,&lt;br /&gt;
				image = &#039;Merge-split-transwiki default.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = &#039;tmbox-protection&#039;,&lt;br /&gt;
				image = &#039;Semi-protection-shackle-keyhole.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = &#039;tmbox-notice&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = &#039;notice&#039;,&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {&#039;tmbox&#039;},&lt;br /&gt;
		allowSmall           = true,&lt;br /&gt;
		imageRightNone       = true,&lt;br /&gt;
		imageEmptyCell       = true,&lt;br /&gt;
		templateCategory     = &#039;Talk message boxes&#039;,&lt;br /&gt;
		templatestyles       = &#039;Module:Message box/tmbox.css&#039;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%A8%A1%E5%9D%97:Message_box&amp;diff=4916</id>
		<title>模块:Message box</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%A8%A1%E5%9D%97:Message_box&amp;diff=4916"/>
		<updated>2025-12-07T03:00:00Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;require(&#039;strict&#039;)&lt;br /&gt;
local getArgs&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
local lang = mw.language.getContentLanguage()&lt;br /&gt;
&lt;br /&gt;
local CONFIG_MODULE = &#039;Module:Message box/configuration&#039;&lt;br /&gt;
local DEMOSPACES = {talk = &#039;tmbox&#039;, image = &#039;imbox&#039;, file = &#039;imbox&#039;, category = &#039;cmbox&#039;, article = &#039;ambox&#039;, main = &#039;ambox&#039;}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function getTitleObject(...)&lt;br /&gt;
	-- Get the title object, passing the function through pcall&lt;br /&gt;
	-- in case we are over the expensive function count limit.&lt;br /&gt;
	local success, title = pcall(mw.title.new, ...)&lt;br /&gt;
	if success then&lt;br /&gt;
		return title&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function union(t1, t2)&lt;br /&gt;
	-- Returns the union of two arrays.&lt;br /&gt;
	local vals = {}&lt;br /&gt;
	for i, v in ipairs(t1) do&lt;br /&gt;
		vals[v] = true&lt;br /&gt;
	end&lt;br /&gt;
	for i, v in ipairs(t2) do&lt;br /&gt;
		vals[v] = true&lt;br /&gt;
	end&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k in pairs(vals) do&lt;br /&gt;
		table.insert(ret, k)&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(ret)&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getArgNums(args, prefix)&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		local num = mw.ustring.match(tostring(k), &#039;^&#039; .. prefix .. &#039;([1-9]%d*)$&#039;)&lt;br /&gt;
		if num then&lt;br /&gt;
			table.insert(nums, tonumber(num))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(nums)&lt;br /&gt;
	return nums&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Box class definition&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local MessageBox = {}&lt;br /&gt;
MessageBox.__index = MessageBox&lt;br /&gt;
&lt;br /&gt;
function MessageBox.new(boxType, args, cfg)&lt;br /&gt;
	args = args or {}&lt;br /&gt;
	local obj = {}&lt;br /&gt;
&lt;br /&gt;
	-- Set the title object and the namespace.&lt;br /&gt;
	obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()&lt;br /&gt;
&lt;br /&gt;
	-- Set the config for our box type.&lt;br /&gt;
	obj.cfg = cfg[boxType]&lt;br /&gt;
	if not obj.cfg then&lt;br /&gt;
		local ns = obj.title.namespace&lt;br /&gt;
		-- boxType is &amp;quot;mbox&amp;quot; or invalid input&lt;br /&gt;
		if args.demospace and args.demospace ~= &#039;&#039; then&lt;br /&gt;
			-- implement demospace parameter of mbox&lt;br /&gt;
			local demospace = string.lower(args.demospace)&lt;br /&gt;
			if DEMOSPACES[demospace] then&lt;br /&gt;
				-- use template from DEMOSPACES&lt;br /&gt;
				obj.cfg = cfg[DEMOSPACES[demospace]]&lt;br /&gt;
			elseif string.find( demospace, &#039;talk&#039; ) then&lt;br /&gt;
				-- demo as a talk page&lt;br /&gt;
				obj.cfg = cfg.tmbox&lt;br /&gt;
			else&lt;br /&gt;
				-- default to ombox&lt;br /&gt;
				obj.cfg = cfg.ombox&lt;br /&gt;
			end&lt;br /&gt;
		elseif ns == 0 then&lt;br /&gt;
			obj.cfg = cfg.ambox -- main namespace&lt;br /&gt;
		elseif ns == 6 then&lt;br /&gt;
			obj.cfg = cfg.imbox -- file namespace&lt;br /&gt;
		elseif ns == 14 then&lt;br /&gt;
			obj.cfg = cfg.cmbox -- category namespace&lt;br /&gt;
		else&lt;br /&gt;
			local nsTable = mw.site.namespaces[ns]&lt;br /&gt;
			if nsTable and nsTable.isTalk then&lt;br /&gt;
				obj.cfg = cfg.tmbox -- any talk namespace&lt;br /&gt;
			else&lt;br /&gt;
				obj.cfg = cfg.ombox -- other namespaces or invalid input&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the arguments, and remove all blank arguments except for the ones&lt;br /&gt;
	-- listed in cfg.allowBlankParams.&lt;br /&gt;
	do&lt;br /&gt;
		local newArgs = {}&lt;br /&gt;
		for k, v in pairs(args) do&lt;br /&gt;
			if v ~= &#039;&#039; then&lt;br /&gt;
				newArgs[k] = v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		for i, param in ipairs(obj.cfg.allowBlankParams or {}) do&lt;br /&gt;
			newArgs[param] = args[param]&lt;br /&gt;
		end&lt;br /&gt;
		obj.args = newArgs&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Define internal data structure.&lt;br /&gt;
	obj.categories = {}&lt;br /&gt;
	obj.classes = {}&lt;br /&gt;
	-- For lazy loading of [[Module:Category handler]].&lt;br /&gt;
	obj.hasCategories = false&lt;br /&gt;
&lt;br /&gt;
	return setmetatable(obj, MessageBox)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:addCat(ns, cat, sort)&lt;br /&gt;
	if not cat then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if sort then&lt;br /&gt;
		cat = string.format(&#039;[[Category:%s|%s]]&#039;, cat, sort)&lt;br /&gt;
	else&lt;br /&gt;
		cat = string.format(&#039;[[Category:%s]]&#039;, cat)&lt;br /&gt;
	end&lt;br /&gt;
	self.hasCategories = true&lt;br /&gt;
	self.categories[ns] = self.categories[ns] or {}&lt;br /&gt;
	table.insert(self.categories[ns], cat)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:addClass(class)&lt;br /&gt;
	if not class then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(self.classes, class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setParameters()&lt;br /&gt;
	local args = self.args&lt;br /&gt;
	local cfg = self.cfg&lt;br /&gt;
&lt;br /&gt;
	-- Get type data.&lt;br /&gt;
	self.type = args.type&lt;br /&gt;
	local typeData = cfg.types[self.type]&lt;br /&gt;
	self.invalidTypeError = cfg.showInvalidTypeError&lt;br /&gt;
		and self.type&lt;br /&gt;
		and not typeData&lt;br /&gt;
	typeData = typeData or cfg.types[cfg.default]&lt;br /&gt;
	self.typeClass = typeData.class&lt;br /&gt;
	self.typeImage = typeData.image&lt;br /&gt;
	self.typeImageNeedsLink = typeData.imageNeedsLink&lt;br /&gt;
&lt;br /&gt;
	-- Find if the box has been wrongly substituted.&lt;br /&gt;
	self.isSubstituted = cfg.substCheck and args.subst == &#039;SUBST&#039;&lt;br /&gt;
&lt;br /&gt;
	-- Find whether we are using a small message box.&lt;br /&gt;
	self.isSmall = cfg.allowSmall and (&lt;br /&gt;
		cfg.smallParam and args.small == cfg.smallParam&lt;br /&gt;
		or not cfg.smallParam and yesno(args.small)&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	-- Set the below row.&lt;br /&gt;
	self.below = cfg.below and args.below&lt;br /&gt;
	&lt;br /&gt;
	-- Add attributes, classes and styles.&lt;br /&gt;
	self.id = args.id&lt;br /&gt;
	self.name = args.name&lt;br /&gt;
	if self.name then&lt;br /&gt;
		self:addClass(&#039;box-&#039; .. string.gsub(self.name,&#039; &#039;,&#039;_&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	if yesno(args.plainlinks) ~= false then&lt;br /&gt;
		self:addClass(&#039;plainlinks&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if self.below then&lt;br /&gt;
		self:addClass(&#039;mbox-with-below&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	for _, class in ipairs(cfg.classes or {}) do&lt;br /&gt;
		self:addClass(class)&lt;br /&gt;
	end&lt;br /&gt;
	if self.isSmall then&lt;br /&gt;
		self:addClass(cfg.smallClass or &#039;mbox-small&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	self:addClass(self.typeClass)&lt;br /&gt;
	self:addClass(args.class)&lt;br /&gt;
	self.style = args.style&lt;br /&gt;
	self.attrs = args.attrs&lt;br /&gt;
&lt;br /&gt;
	-- Set text style.&lt;br /&gt;
	self.textstyle = args.textstyle&lt;br /&gt;
&lt;br /&gt;
	-- Set image classes.&lt;br /&gt;
	self.imageRightClass = args.imagerightclass or args.imageclass&lt;br /&gt;
	self.imageLeftClass = args.imageleftclass or args.imageclass&lt;br /&gt;
&lt;br /&gt;
	-- Find if we are on the template page or not. This functionality is only&lt;br /&gt;
	-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory&lt;br /&gt;
	-- and cfg.templateCategoryRequireName are set.&lt;br /&gt;
	self.useCollapsibleTextFields = cfg.useCollapsibleTextFields&lt;br /&gt;
	if self.useCollapsibleTextFields&lt;br /&gt;
		or cfg.templateCategory&lt;br /&gt;
		and cfg.templateCategoryRequireName&lt;br /&gt;
	then&lt;br /&gt;
		if self.name then&lt;br /&gt;
			local templateName = mw.ustring.match(&lt;br /&gt;
				self.name,&lt;br /&gt;
				&#039;^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$&#039;&lt;br /&gt;
			) or self.name&lt;br /&gt;
			templateName = &#039;Template:&#039; .. templateName&lt;br /&gt;
			self.templateTitle = getTitleObject(templateName)&lt;br /&gt;
		end&lt;br /&gt;
		self.isTemplatePage = self.templateTitle&lt;br /&gt;
			and mw.title.equals(self.title, self.templateTitle)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Process data for collapsible text fields. At the moment these are only&lt;br /&gt;
	-- used in {{ambox}}.&lt;br /&gt;
	if self.useCollapsibleTextFields then&lt;br /&gt;
		-- Get the self.issue value.&lt;br /&gt;
		if self.isSmall and args.smalltext then&lt;br /&gt;
			self.issue = args.smalltext&lt;br /&gt;
		else&lt;br /&gt;
			local sect&lt;br /&gt;
			if args.sect == &#039;&#039; then&lt;br /&gt;
				sect = &#039;This &#039; .. (cfg.sectionDefault or &#039;page&#039;)&lt;br /&gt;
			elseif type(args.sect) == &#039;string&#039; then&lt;br /&gt;
				sect = &#039;This &#039; .. args.sect&lt;br /&gt;
			end&lt;br /&gt;
			local issue = args.issue&lt;br /&gt;
			issue = type(issue) == &#039;string&#039; and issue ~= &#039;&#039; and issue or nil&lt;br /&gt;
			local text = args.text&lt;br /&gt;
			text = type(text) == &#039;string&#039; and text or nil&lt;br /&gt;
			local issues = {}&lt;br /&gt;
			table.insert(issues, sect)&lt;br /&gt;
			table.insert(issues, issue)&lt;br /&gt;
			table.insert(issues, text)&lt;br /&gt;
			self.issue = table.concat(issues, &#039; &#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Get the self.talk value.&lt;br /&gt;
		local talk = args.talk&lt;br /&gt;
		-- Show talk links on the template page or template subpages if the talk&lt;br /&gt;
		-- parameter is blank.&lt;br /&gt;
		if talk == &#039;&#039;&lt;br /&gt;
			and self.templateTitle&lt;br /&gt;
			and (&lt;br /&gt;
				mw.title.equals(self.templateTitle, self.title)&lt;br /&gt;
				or self.title:isSubpageOf(self.templateTitle)&lt;br /&gt;
			)&lt;br /&gt;
		then&lt;br /&gt;
			talk = &#039;#&#039;&lt;br /&gt;
		elseif talk == &#039;&#039; then&lt;br /&gt;
			talk = nil&lt;br /&gt;
		end&lt;br /&gt;
		if talk then&lt;br /&gt;
			-- If the talk value is a talk page, make a link to that page. Else&lt;br /&gt;
			-- assume that it&#039;s a section heading, and make a link to the talk&lt;br /&gt;
			-- page of the current page with that section heading.&lt;br /&gt;
			local talkTitle = getTitleObject(talk)&lt;br /&gt;
			local talkArgIsTalkPage = true&lt;br /&gt;
			if not talkTitle or not talkTitle.isTalkPage then&lt;br /&gt;
				talkArgIsTalkPage = false&lt;br /&gt;
				talkTitle = getTitleObject(&lt;br /&gt;
					self.title.text,&lt;br /&gt;
					mw.site.namespaces[self.title.namespace].talk.id&lt;br /&gt;
				)&lt;br /&gt;
			end&lt;br /&gt;
			if talkTitle and talkTitle.exists then&lt;br /&gt;
                local talkText&lt;br /&gt;
                if self.isSmall then&lt;br /&gt;
                    local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. (talk == &#039;#&#039; and &#039;&#039; or &#039;#&#039;) .. talk)&lt;br /&gt;
                    talkText = string.format(&#039;([[%s|talk]])&#039;, talkLink)&lt;br /&gt;
                else&lt;br /&gt;
                    talkText = &#039;Relevant discussion may be found on&#039;&lt;br /&gt;
                    if talkArgIsTalkPage then&lt;br /&gt;
                        talkText = string.format(&lt;br /&gt;
                            &#039;%s [[%s|%s]].&#039;,&lt;br /&gt;
                            talkText,&lt;br /&gt;
                            talk,&lt;br /&gt;
                            talkTitle.prefixedText&lt;br /&gt;
                        )&lt;br /&gt;
                    else&lt;br /&gt;
                        talkText = string.format(&lt;br /&gt;
                            &#039;%s the [[%s&#039; .. (talk == &#039;#&#039; and &#039;&#039; or &#039;#&#039;) .. &#039;%s|talk page]].&#039;,&lt;br /&gt;
                            talkText,&lt;br /&gt;
                            talkTitle.prefixedText,&lt;br /&gt;
                            talk&lt;br /&gt;
                        )&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
				self.talk = talkText&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Get other values.&lt;br /&gt;
		self.fix = args.fix ~= &#039;&#039; and args.fix or nil&lt;br /&gt;
		local date&lt;br /&gt;
		if args.date and args.date ~= &#039;&#039; then&lt;br /&gt;
			date = args.date&lt;br /&gt;
		elseif args.date == &#039;&#039; and self.isTemplatePage then&lt;br /&gt;
			date = lang:formatDate(&#039;F Y&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if date then&lt;br /&gt;
			self.date = string.format(&amp;quot; &amp;lt;span class=&#039;date-container&#039;&amp;gt;&amp;lt;i&amp;gt;(&amp;lt;span class=&#039;date&#039;&amp;gt;%s&amp;lt;/span&amp;gt;)&amp;lt;/i&amp;gt;&amp;lt;/span&amp;gt;&amp;quot;, date)&lt;br /&gt;
		end&lt;br /&gt;
		self.info = args.info&lt;br /&gt;
		if yesno(args.removalnotice) then&lt;br /&gt;
			self.removalNotice = cfg.removalNotice&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the non-collapsible text field. At the moment this is used by all box&lt;br /&gt;
	-- types other than ambox, and also by ambox when small=yes.&lt;br /&gt;
	if self.isSmall then&lt;br /&gt;
		self.text = args.smalltext or args.text&lt;br /&gt;
	else&lt;br /&gt;
		self.text = args.text&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- General image settings.&lt;br /&gt;
	self.imageCellDiv = not self.isSmall and cfg.imageCellDiv&lt;br /&gt;
	self.imageEmptyCell = cfg.imageEmptyCell&lt;br /&gt;
&lt;br /&gt;
	-- Left image settings.&lt;br /&gt;
	local imageLeft = self.isSmall and args.smallimage or args.image&lt;br /&gt;
	if cfg.imageCheckBlank and imageLeft ~= &#039;blank&#039; and imageLeft ~= &#039;none&#039;&lt;br /&gt;
		or not cfg.imageCheckBlank and imageLeft ~= &#039;none&#039;&lt;br /&gt;
	then&lt;br /&gt;
		self.imageLeft = imageLeft&lt;br /&gt;
		if not imageLeft then&lt;br /&gt;
			local imageSize = self.isSmall&lt;br /&gt;
				and (cfg.imageSmallSize or &#039;30x30px&#039;)&lt;br /&gt;
				or &#039;40x40px&#039;&lt;br /&gt;
			self.imageLeft = string.format(&#039;[[File:%s|%s%s|alt=]]&#039;, self.typeImage&lt;br /&gt;
				or &#039;Information icon4.svg&#039;, imageSize, self.typeImageNeedsLink and &amp;quot;&amp;quot; or &amp;quot;|link=&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Right image settings.&lt;br /&gt;
	local imageRight = self.isSmall and args.smallimageright or args.imageright&lt;br /&gt;
	if not (cfg.imageRightNone and imageRight == &#039;none&#039;) then&lt;br /&gt;
		self.imageRight = imageRight&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- set templatestyles&lt;br /&gt;
	self.base_templatestyles = cfg.templatestyles&lt;br /&gt;
	self.templatestyles = args.templatestyles&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setMainspaceCategories()&lt;br /&gt;
	local args = self.args&lt;br /&gt;
	local cfg = self.cfg&lt;br /&gt;
&lt;br /&gt;
	if not cfg.allowMainspaceCategories then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for _, prefix in ipairs{&#039;cat&#039;, &#039;category&#039;, &#039;all&#039;} do&lt;br /&gt;
		args[prefix .. &#039;1&#039;] = args[prefix]&lt;br /&gt;
		nums = union(nums, getArgNums(args, prefix))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- The following is roughly equivalent to the old {{Ambox/category}}.&lt;br /&gt;
	local date = args.date&lt;br /&gt;
	date = type(date) == &#039;string&#039; and date&lt;br /&gt;
	local preposition = &#039;from&#039;&lt;br /&gt;
	for _, num in ipairs(nums) do&lt;br /&gt;
		local mainCat = args[&#039;cat&#039; .. tostring(num)]&lt;br /&gt;
			or args[&#039;category&#039; .. tostring(num)]&lt;br /&gt;
		local allCat = args[&#039;all&#039; .. tostring(num)]&lt;br /&gt;
		mainCat = type(mainCat) == &#039;string&#039; and mainCat&lt;br /&gt;
		allCat = type(allCat) == &#039;string&#039; and allCat&lt;br /&gt;
		if mainCat and date and date ~= &#039;&#039; then&lt;br /&gt;
			local catTitle = string.format(&#039;%s %s %s&#039;, mainCat, preposition, date)&lt;br /&gt;
			self:addCat(0, catTitle)&lt;br /&gt;
			catTitle = getTitleObject(&#039;Category:&#039; .. catTitle)&lt;br /&gt;
			if not catTitle or not catTitle.exists then&lt;br /&gt;
				self:addCat(0, &#039;Articles with invalid date parameter in template&#039;)&lt;br /&gt;
			end&lt;br /&gt;
		elseif mainCat and (not date or date == &#039;&#039;) then&lt;br /&gt;
			self:addCat(0, mainCat)&lt;br /&gt;
		end&lt;br /&gt;
		if allCat then&lt;br /&gt;
			self:addCat(0, allCat)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setTemplateCategories()&lt;br /&gt;
	local args = self.args&lt;br /&gt;
	local cfg = self.cfg&lt;br /&gt;
&lt;br /&gt;
	-- Add template categories.&lt;br /&gt;
	if cfg.templateCategory then&lt;br /&gt;
		if cfg.templateCategoryRequireName then&lt;br /&gt;
			if self.isTemplatePage then&lt;br /&gt;
				self:addCat(10, cfg.templateCategory)&lt;br /&gt;
			end&lt;br /&gt;
		elseif not self.title.isSubpage then&lt;br /&gt;
			self:addCat(10, cfg.templateCategory)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add template error categories.&lt;br /&gt;
	if cfg.templateErrorCategory then&lt;br /&gt;
		local templateErrorCategory = cfg.templateErrorCategory&lt;br /&gt;
		local templateCat, templateSort&lt;br /&gt;
		if not self.name and not self.title.isSubpage then&lt;br /&gt;
			templateCat = templateErrorCategory&lt;br /&gt;
		elseif self.isTemplatePage then&lt;br /&gt;
			local paramsToCheck = cfg.templateErrorParamsToCheck or {}&lt;br /&gt;
			local count = 0&lt;br /&gt;
			for i, param in ipairs(paramsToCheck) do&lt;br /&gt;
				if not args[param] then&lt;br /&gt;
					count = count + 1&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if count &amp;gt; 0 then&lt;br /&gt;
				templateCat = templateErrorCategory&lt;br /&gt;
				templateSort = tostring(count)&lt;br /&gt;
			end&lt;br /&gt;
			if self.categoryNums and #self.categoryNums &amp;gt; 0 then&lt;br /&gt;
				templateCat = templateErrorCategory&lt;br /&gt;
				templateSort = &#039;C&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		self:addCat(10, templateCat, templateSort)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setAllNamespaceCategories()&lt;br /&gt;
	-- Set categories for all namespaces.&lt;br /&gt;
	if self.invalidTypeError then&lt;br /&gt;
		local allSort = (self.title.namespace == 0 and &#039;Main:&#039; or &#039;&#039;) .. self.title.prefixedText&lt;br /&gt;
		self:addCat(&#039;all&#039;, &#039;Wikipedia message box parameter needs fixing&#039;, allSort)&lt;br /&gt;
	end&lt;br /&gt;
	if self.isSubstituted then&lt;br /&gt;
		self:addCat(&#039;all&#039;, &#039;Pages with incorrectly substituted templates&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setCategories()&lt;br /&gt;
	if self.title.namespace == 0 then&lt;br /&gt;
		self:setMainspaceCategories()&lt;br /&gt;
	elseif self.title.namespace == 10 then&lt;br /&gt;
		self:setTemplateCategories()&lt;br /&gt;
	end&lt;br /&gt;
	self:setAllNamespaceCategories()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:renderCategories()&lt;br /&gt;
	if not self.hasCategories then&lt;br /&gt;
		-- No categories added, no need to pass them to Category handler so,&lt;br /&gt;
		-- if it was invoked, it would return the empty string.&lt;br /&gt;
		-- So we shortcut and return the empty string.&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	-- Convert category tables to strings and pass them through&lt;br /&gt;
	-- [[Module:Category handler]].&lt;br /&gt;
	return require(&#039;Module:Category handler&#039;)._main{&lt;br /&gt;
		main = table.concat(self.categories[0] or {}),&lt;br /&gt;
		template = table.concat(self.categories[10] or {}),&lt;br /&gt;
		all = table.concat(self.categories.all or {}),&lt;br /&gt;
		nocat = self.args.nocat,&lt;br /&gt;
		page = self.args.page&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:exportDiv()&lt;br /&gt;
	local root = mw.html.create()&lt;br /&gt;
&lt;br /&gt;
	-- Add the subst check error.&lt;br /&gt;
	if self.isSubstituted and self.name then&lt;br /&gt;
		root:tag(&#039;b&#039;)&lt;br /&gt;
			:addClass(&#039;error&#039;)&lt;br /&gt;
			:wikitext(string.format(&lt;br /&gt;
				&#039;Template &amp;lt;code&amp;gt;%s[[Template:%s|%s]]%s&amp;lt;/code&amp;gt; has been incorrectly substituted.&#039;,&lt;br /&gt;
				mw.text.nowiki(&#039;{{&#039;), self.name, self.name, mw.text.nowiki(&#039;}}&#039;)&lt;br /&gt;
			))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	root:wikitext(frame:extensionTag{&lt;br /&gt;
		name = &#039;templatestyles&#039;,&lt;br /&gt;
		args = { src = self.base_templatestyles },&lt;br /&gt;
	})&lt;br /&gt;
	-- Add support for a single custom templatestyles sheet. Undocumented as&lt;br /&gt;
	-- need should be limited and many templates using mbox are substed; we&lt;br /&gt;
	-- don&#039;t want to spread templatestyles sheets around to arbitrary places&lt;br /&gt;
	if self.templatestyles then&lt;br /&gt;
		root:wikitext(frame:extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;,&lt;br /&gt;
			args = { src = self.templatestyles },&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Create the box.&lt;br /&gt;
	local mbox = root:tag(&#039;div&#039;)&lt;br /&gt;
	mbox:attr(&#039;id&#039;, self.id or nil)&lt;br /&gt;
	for i, class in ipairs(self.classes or {}) do&lt;br /&gt;
		mbox:addClass(class or nil)&lt;br /&gt;
	end&lt;br /&gt;
	mbox&lt;br /&gt;
		:cssText(self.style or nil)&lt;br /&gt;
&lt;br /&gt;
	if self.attrs then&lt;br /&gt;
		mbox:attr(self.attrs)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local flex_container&lt;br /&gt;
	if self.below then&lt;br /&gt;
		-- we need to wrap the flex components (`image(right)` and `text`) in their&lt;br /&gt;
		-- own container div to support the `below` parameter&lt;br /&gt;
		flex_container = mw.html.create(&#039;div&#039;)&lt;br /&gt;
		flex_container:addClass(&#039;mbox-flex&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		-- the mbox itself is the parent, so we need no HTML flex_container&lt;br /&gt;
		flex_container = mw.html.create()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the left-hand image.&lt;br /&gt;
	if self.imageLeft then&lt;br /&gt;
		local imageLeftCell = flex_container:tag(&#039;div&#039;):addClass(&#039;mbox-image&#039;)&lt;br /&gt;
		imageLeftCell&lt;br /&gt;
			:addClass(self.imageLeftClass)&lt;br /&gt;
			:wikitext(self.imageLeft or nil)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the text.&lt;br /&gt;
	local textCell = flex_container:tag(&#039;div&#039;):addClass(&#039;mbox-text&#039;)&lt;br /&gt;
	if self.useCollapsibleTextFields then&lt;br /&gt;
		-- The message box uses advanced text parameters that allow things to be&lt;br /&gt;
		-- collapsible. At the moment, only ambox uses this.&lt;br /&gt;
		textCell:cssText(self.textstyle or nil)&lt;br /&gt;
		local textCellDiv = textCell:tag(&#039;div&#039;)&lt;br /&gt;
		textCellDiv&lt;br /&gt;
			:addClass(&#039;mbox-text-span&#039;)&lt;br /&gt;
			:wikitext(self.issue or nil)&lt;br /&gt;
		if (self.talk or self.fix) then&lt;br /&gt;
			textCellDiv:tag(&#039;span&#039;)&lt;br /&gt;
				:addClass(&#039;hide-when-compact&#039;)&lt;br /&gt;
				:wikitext(self.talk and (&#039; &#039; .. self.talk) or nil)&lt;br /&gt;
				:wikitext(self.fix and (&#039; &#039; .. self.fix) or nil)&lt;br /&gt;
		end&lt;br /&gt;
		textCellDiv:wikitext(self.date and (&#039; &#039; .. self.date) or nil)&lt;br /&gt;
		if self.info and not self.isSmall then&lt;br /&gt;
			textCellDiv&lt;br /&gt;
				:tag(&#039;span&#039;)&lt;br /&gt;
				:addClass(&#039;hide-when-compact&#039;)&lt;br /&gt;
				:wikitext(self.info and (&#039; &#039; .. self.info) or nil)&lt;br /&gt;
		end&lt;br /&gt;
		if self.removalNotice then&lt;br /&gt;
			textCellDiv:tag(&#039;span&#039;)&lt;br /&gt;
				:addClass(&#039;hide-when-compact&#039;)&lt;br /&gt;
				:tag(&#039;i&#039;)&lt;br /&gt;
					:wikitext(string.format(&amp;quot; (%s)&amp;quot;, self.removalNotice))&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- Default text formatting - anything goes.&lt;br /&gt;
		textCell&lt;br /&gt;
			:cssText(self.textstyle or nil)&lt;br /&gt;
			:wikitext(self.text or nil)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the right-hand image.&lt;br /&gt;
	if self.imageRight then&lt;br /&gt;
		local imageRightCell = flex_container:tag(&#039;div&#039;):addClass(&#039;mbox-imageright&#039;)&lt;br /&gt;
		imageRightCell&lt;br /&gt;
			:addClass(self.imageRightClass)&lt;br /&gt;
			:wikitext(self.imageRight or nil)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	mbox:node(flex_container)&lt;br /&gt;
&lt;br /&gt;
	-- Add the below row.&lt;br /&gt;
	if self.below then&lt;br /&gt;
		mbox:tag(&#039;div&#039;)&lt;br /&gt;
			:addClass(&#039;mbox-text mbox-below&#039;)&lt;br /&gt;
			:cssText(self.textstyle or nil)&lt;br /&gt;
			:wikitext(self.below or nil)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add error message for invalid type parameters.&lt;br /&gt;
	if self.invalidTypeError then&lt;br /&gt;
		root:tag(&#039;div&#039;)&lt;br /&gt;
			:addClass(&#039;mbox-invalid-type&#039;)&lt;br /&gt;
			:wikitext(string.format(&lt;br /&gt;
				&#039;This message box is using an invalid &amp;quot;type=%s&amp;quot; parameter and needs fixing.&#039;,&lt;br /&gt;
				self.type or &#039;&#039;&lt;br /&gt;
			))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add categories.&lt;br /&gt;
	root:wikitext(self:renderCategories() or nil)&lt;br /&gt;
&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:export()&lt;br /&gt;
&lt;br /&gt;
	local root = mw.html.create()&lt;br /&gt;
&lt;br /&gt;
	-- Add the subst check error.&lt;br /&gt;
	if self.isSubstituted and self.name then&lt;br /&gt;
		root:tag(&#039;b&#039;)&lt;br /&gt;
			:addClass(&#039;error&#039;)&lt;br /&gt;
			:wikitext(string.format(&lt;br /&gt;
				&#039;Template &amp;lt;code&amp;gt;%s[[Template:%s|%s]]%s&amp;lt;/code&amp;gt; has been incorrectly substituted.&#039;,&lt;br /&gt;
				mw.text.nowiki(&#039;{{&#039;), self.name, self.name, mw.text.nowiki(&#039;}}&#039;)&lt;br /&gt;
			))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	root:wikitext(frame:extensionTag{&lt;br /&gt;
		name = &#039;templatestyles&#039;,&lt;br /&gt;
		args = { src = self.base_templatestyles },&lt;br /&gt;
	})&lt;br /&gt;
	-- Add support for a single custom templatestyles sheet. Undocumented as&lt;br /&gt;
	-- need should be limited and many templates using mbox are substed; we&lt;br /&gt;
	-- don&#039;t want to spread templatestyles sheets around to arbitrary places&lt;br /&gt;
	if self.templatestyles then&lt;br /&gt;
		root:wikitext(frame:extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;,&lt;br /&gt;
			args = { src = self.templatestyles },&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Create the box table.&lt;br /&gt;
	local boxTable = root:tag(&#039;table&#039;)&lt;br /&gt;
	boxTable:attr(&#039;id&#039;, self.id or nil)&lt;br /&gt;
	for i, class in ipairs(self.classes or {}) do&lt;br /&gt;
		boxTable:addClass(class or nil)&lt;br /&gt;
	end&lt;br /&gt;
	boxTable&lt;br /&gt;
		:cssText(self.style or nil)&lt;br /&gt;
		:attr(&#039;role&#039;, &#039;presentation&#039;)&lt;br /&gt;
&lt;br /&gt;
	if self.attrs then&lt;br /&gt;
		boxTable:attr(self.attrs)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the left-hand image.&lt;br /&gt;
	local row = boxTable:tag(&#039;tr&#039;)&lt;br /&gt;
	if self.imageLeft then&lt;br /&gt;
		local imageLeftCell = row:tag(&#039;td&#039;):addClass(&#039;mbox-image&#039;)&lt;br /&gt;
		if self.imageCellDiv then&lt;br /&gt;
			-- If we are using a div, redefine imageLeftCell so that the image&lt;br /&gt;
			-- is inside it. Divs use style=&amp;quot;width: 52px;&amp;quot;, which limits the&lt;br /&gt;
			-- image width to 52px. If any images in a div are wider than that,&lt;br /&gt;
			-- they may overlap with the text or cause other display problems.&lt;br /&gt;
			imageLeftCell = imageLeftCell:tag(&#039;div&#039;):addClass(&#039;mbox-image-div&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		imageLeftCell&lt;br /&gt;
			:addClass(self.imageLeftClass)&lt;br /&gt;
			:wikitext(self.imageLeft or nil)&lt;br /&gt;
	elseif self.imageEmptyCell then&lt;br /&gt;
		-- Some message boxes define an empty cell if no image is specified, and&lt;br /&gt;
		-- some don&#039;t. The old template code in templates where empty cells are&lt;br /&gt;
		-- specified gives the following hint: &amp;quot;No image. Cell with some width&lt;br /&gt;
		-- or padding necessary for text cell to have 100% width.&amp;quot;&lt;br /&gt;
		row:tag(&#039;td&#039;)&lt;br /&gt;
			:addClass(&#039;mbox-empty-cell&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the text.&lt;br /&gt;
	local textCell = row:tag(&#039;td&#039;):addClass(&#039;mbox-text&#039;)&lt;br /&gt;
	if self.useCollapsibleTextFields then&lt;br /&gt;
		-- The message box uses advanced text parameters that allow things to be&lt;br /&gt;
		-- collapsible. At the moment, only ambox uses this.&lt;br /&gt;
		textCell:cssText(self.textstyle or nil)&lt;br /&gt;
		local textCellDiv = textCell:tag(&#039;div&#039;)&lt;br /&gt;
		textCellDiv&lt;br /&gt;
			:addClass(&#039;mbox-text-span&#039;)&lt;br /&gt;
			:wikitext(self.issue or nil)&lt;br /&gt;
		if (self.talk or self.fix) then&lt;br /&gt;
			textCellDiv:tag(&#039;span&#039;)&lt;br /&gt;
				:addClass(&#039;hide-when-compact&#039;)&lt;br /&gt;
				:wikitext(self.talk and (&#039; &#039; .. self.talk) or nil)&lt;br /&gt;
				:wikitext(self.fix and (&#039; &#039; .. self.fix) or nil)&lt;br /&gt;
		end&lt;br /&gt;
		textCellDiv:wikitext(self.date and (&#039; &#039; .. self.date) or nil)&lt;br /&gt;
		if self.info and not self.isSmall then&lt;br /&gt;
			textCellDiv&lt;br /&gt;
				:tag(&#039;span&#039;)&lt;br /&gt;
				:addClass(&#039;hide-when-compact&#039;)&lt;br /&gt;
				:wikitext(self.info and (&#039; &#039; .. self.info) or nil)&lt;br /&gt;
		end&lt;br /&gt;
		if self.removalNotice then&lt;br /&gt;
			textCellDiv:tag(&#039;span&#039;)&lt;br /&gt;
				:addClass(&#039;hide-when-compact&#039;)&lt;br /&gt;
				:tag(&#039;i&#039;)&lt;br /&gt;
					:wikitext(string.format(&amp;quot; (%s)&amp;quot;, self.removalNotice))&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- Default text formatting - anything goes.&lt;br /&gt;
		textCell&lt;br /&gt;
			:cssText(self.textstyle or nil)&lt;br /&gt;
			:wikitext(self.text or nil)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the right-hand image.&lt;br /&gt;
	if self.imageRight then&lt;br /&gt;
		local imageRightCell = row:tag(&#039;td&#039;):addClass(&#039;mbox-imageright&#039;)&lt;br /&gt;
		if self.imageCellDiv then&lt;br /&gt;
			-- If we are using a div, redefine imageRightCell so that the image&lt;br /&gt;
			-- is inside it.&lt;br /&gt;
			imageRightCell = imageRightCell:tag(&#039;div&#039;):addClass(&#039;mbox-image-div&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		imageRightCell&lt;br /&gt;
			:addClass(self.imageRightClass)&lt;br /&gt;
			:wikitext(self.imageRight or nil)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the below row.&lt;br /&gt;
	if self.below then&lt;br /&gt;
		boxTable:tag(&#039;tr&#039;)&lt;br /&gt;
			:tag(&#039;td&#039;)&lt;br /&gt;
				:attr(&#039;colspan&#039;, self.imageRight and &#039;3&#039; or &#039;2&#039;)&lt;br /&gt;
				:addClass(&#039;mbox-text&#039;)&lt;br /&gt;
				:cssText(self.textstyle or nil)&lt;br /&gt;
				:wikitext(self.below or nil)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add error message for invalid type parameters.&lt;br /&gt;
	if self.invalidTypeError then&lt;br /&gt;
		root:tag(&#039;div&#039;)&lt;br /&gt;
			:addClass(&#039;mbox-invalid-type&#039;)&lt;br /&gt;
			:wikitext(string.format(&lt;br /&gt;
				&#039;This message box is using an invalid &amp;quot;type=%s&amp;quot; parameter and needs fixing.&#039;,&lt;br /&gt;
				self.type or &#039;&#039;&lt;br /&gt;
			))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add categories.&lt;br /&gt;
	root:wikitext(self:renderCategories() or nil)&lt;br /&gt;
&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Exports&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local p, mt = {}, {}&lt;br /&gt;
&lt;br /&gt;
function p._exportClasses()&lt;br /&gt;
	-- For testing.&lt;br /&gt;
	return {&lt;br /&gt;
		MessageBox = MessageBox&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(boxType, args, cfgTables)&lt;br /&gt;
	local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))&lt;br /&gt;
	box:setParameters()&lt;br /&gt;
	box:setCategories()&lt;br /&gt;
	-- DIV MIGRATION CONDITIONAL&lt;br /&gt;
	if box.cfg.div_structure then&lt;br /&gt;
		return box:exportDiv()&lt;br /&gt;
	end&lt;br /&gt;
	-- END DIV MIGRATION CONDITIONAL&lt;br /&gt;
	return box:export()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mt.__index(t, k)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		if not getArgs then&lt;br /&gt;
			getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
		end&lt;br /&gt;
		return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return setmetatable(p, mt)&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%A8%A1%E6%9D%BF:Template_link&amp;diff=4914</id>
		<title>模板:Template link</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%A8%A1%E6%9D%BF:Template_link&amp;diff=4914"/>
		<updated>2025-12-07T02:59:59Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&amp;amp;#123;&amp;amp;#123;&amp;lt;/span&amp;gt;[[Template:{{{1}}}|{{{1}}}]]&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&amp;amp;#125;&amp;amp;#125;&amp;lt;/span&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Categories go on the /doc subpage and interwikis go on Wikidata. --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%A8%A1%E5%9D%97:Infobox&amp;diff=4912</id>
		<title>模块:Infobox</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%A8%A1%E5%9D%97:Infobox&amp;diff=4912"/>
		<updated>2025-12-07T02:59:53Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​导入1个版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
local args = {}&lt;br /&gt;
local origArgs = {}&lt;br /&gt;
local root&lt;br /&gt;
local empty_row_categories = {}&lt;br /&gt;
local category_in_empty_row_pattern = &#039;%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]&#039;&lt;br /&gt;
local has_rows = false&lt;br /&gt;
local lists = {&lt;br /&gt;
	plainlist_t = {&lt;br /&gt;
		patterns = {&lt;br /&gt;
			&#039;^plainlist$&#039;,&lt;br /&gt;
			&#039;%splainlist$&#039;,&lt;br /&gt;
			&#039;^plainlist%s&#039;,&lt;br /&gt;
			&#039;%splainlist%s&#039;&lt;br /&gt;
		},&lt;br /&gt;
		found = false,&lt;br /&gt;
		styles = &#039;Plainlist/styles.css&#039;&lt;br /&gt;
	},&lt;br /&gt;
	hlist_t = {&lt;br /&gt;
		patterns = {&lt;br /&gt;
			&#039;^hlist$&#039;,&lt;br /&gt;
			&#039;%shlist$&#039;,&lt;br /&gt;
			&#039;^hlist%s&#039;,&lt;br /&gt;
			&#039;%shlist%s&#039;&lt;br /&gt;
		},&lt;br /&gt;
		found = false,&lt;br /&gt;
		styles = &#039;Hlist/styles.css&#039;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function has_list_class(args_to_check)&lt;br /&gt;
	for _, list in pairs(lists) do&lt;br /&gt;
		if not list.found then&lt;br /&gt;
			for _, arg in pairs(args_to_check) do&lt;br /&gt;
				for _, pattern in ipairs(list.patterns) do&lt;br /&gt;
					if mw.ustring.find(arg or &#039;&#039;, pattern) then&lt;br /&gt;
						list.found = true&lt;br /&gt;
						break&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				if list.found then break end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function fixChildBoxes(sval, tt)&lt;br /&gt;
	local function notempty( s ) return s and s:match( &#039;%S&#039; ) end&lt;br /&gt;
	&lt;br /&gt;
	if notempty(sval) then&lt;br /&gt;
		local marker = &#039;&amp;lt;span class=special_infobox_marker&amp;gt;&#039;&lt;br /&gt;
		local s = sval&lt;br /&gt;
		-- start moving templatestyles and categories inside of table rows&lt;br /&gt;
		local slast = &#039;&#039;&lt;br /&gt;
		while slast ~= s do&lt;br /&gt;
			slast = s&lt;br /&gt;
			s = mw.ustring.gsub(s, &#039;(&amp;lt;/[Tt][Rr]%s*&amp;gt;%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%])&#039;, &#039;%2%1&#039;)&lt;br /&gt;
			s = mw.ustring.gsub(s, &#039;(&amp;lt;/[Tt][Rr]%s*&amp;gt;%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)&#039;, &#039;%2%1&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		-- end moving templatestyles and categories inside of table rows&lt;br /&gt;
		s = mw.ustring.gsub(s, &#039;(&amp;lt;%s*[Tt][Rr])&#039;, marker .. &#039;%1&#039;)&lt;br /&gt;
		s = mw.ustring.gsub(s, &#039;(&amp;lt;/[Tt][Rr]%s*&amp;gt;)&#039;, &#039;%1&#039; .. marker)&lt;br /&gt;
		if s:match(marker) then&lt;br /&gt;
			s = mw.ustring.gsub(s, marker .. &#039;%s*&#039; .. marker, &#039;&#039;)&lt;br /&gt;
			s = mw.ustring.gsub(s, &#039;([\r\n]|-[^\r\n]*[\r\n])%s*&#039; .. marker, &#039;%1&#039;)&lt;br /&gt;
			s = mw.ustring.gsub(s, marker .. &#039;%s*([\r\n]|-)&#039;, &#039;%1&#039;)&lt;br /&gt;
			s = mw.ustring.gsub(s, &#039;(&amp;lt;/[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*&amp;gt;%s*)&#039; .. marker, &#039;%1&#039;)&lt;br /&gt;
			s = mw.ustring.gsub(s, &#039;(&amp;lt;%s*[Tt][Aa][Bb][Ll][Ee][^&amp;lt;&amp;gt;]*&amp;gt;%s*)&#039; .. marker, &#039;%1&#039;)&lt;br /&gt;
			s = mw.ustring.gsub(s, &#039;^(%{|[^\r\n]*[\r\n]%s*)&#039; .. marker, &#039;%1&#039;)&lt;br /&gt;
			s = mw.ustring.gsub(s, &#039;([\r\n]%{|[^\r\n]*[\r\n]%s*)&#039; .. marker, &#039;%1&#039;)&lt;br /&gt;
			s = mw.ustring.gsub(s, marker .. &#039;(%s*&amp;lt;/[Tt][Aa][Bb][Ll][Ee]%s*&amp;gt;)&#039;, &#039;%1&#039;)&lt;br /&gt;
			s = mw.ustring.gsub(s, marker .. &#039;(%s*\n|%})&#039;, &#039;%1&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if s:match(marker) then&lt;br /&gt;
			local subcells = mw.text.split(s, marker)&lt;br /&gt;
			s = &#039;&#039;&lt;br /&gt;
			for k = 1, #subcells do&lt;br /&gt;
				if k == 1 then&lt;br /&gt;
					s = s .. subcells[k] .. &#039;&amp;lt;/&#039; .. tt .. &#039;&amp;gt;&amp;lt;/tr&amp;gt;&#039;&lt;br /&gt;
				elseif k == #subcells then&lt;br /&gt;
					local rowstyle = &#039; style=&amp;quot;display:none&amp;quot;&#039;&lt;br /&gt;
					if notempty(subcells[k]) then rowstyle = &#039;&#039;	end&lt;br /&gt;
					s = s .. &#039;&amp;lt;tr&#039; .. rowstyle ..&#039;&amp;gt;&amp;lt;&#039; .. tt .. &#039; colspan=2&amp;gt;\n&#039; ..&lt;br /&gt;
						subcells[k]&lt;br /&gt;
				elseif notempty(subcells[k]) then&lt;br /&gt;
					if (k % 2) == 0 then&lt;br /&gt;
						s = s .. subcells[k]&lt;br /&gt;
					else&lt;br /&gt;
						s = s .. &#039;&amp;lt;tr&amp;gt;&amp;lt;&#039; .. tt .. &#039; colspan=2&amp;gt;\n&#039; ..&lt;br /&gt;
							subcells[k] .. &#039;&amp;lt;/&#039; .. tt .. &#039;&amp;gt;&amp;lt;/tr&amp;gt;&#039;&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		-- the next two lines add a newline at the end of lists for the PHP parser&lt;br /&gt;
		-- [[Special:Diff/849054481]]&lt;br /&gt;
		-- remove when [[:phab:T191516]] is fixed or OBE&lt;br /&gt;
		s = mw.ustring.gsub(s, &#039;([\r\n][%*#;:][^\r\n]*)$&#039;, &#039;%1\n&#039;)&lt;br /&gt;
		s = mw.ustring.gsub(s, &#039;^([%*#;:][^\r\n]*)$&#039;, &#039;%1\n&#039;)&lt;br /&gt;
		s = mw.ustring.gsub(s, &#039;^([%*#;:])&#039;, &#039;\n%1&#039;)&lt;br /&gt;
		s = mw.ustring.gsub(s, &#039;^(%{%|)&#039;, &#039;\n%1&#039;)&lt;br /&gt;
		return s&lt;br /&gt;
	else&lt;br /&gt;
		return sval&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Cleans empty tables&lt;br /&gt;
local function cleanInfobox()&lt;br /&gt;
	root = tostring(root)&lt;br /&gt;
	if has_rows == false then&lt;br /&gt;
		root = mw.ustring.gsub(root, &#039;&amp;lt;table[^&amp;lt;&amp;gt;]*&amp;gt;%s*&amp;lt;/table&amp;gt;&#039;, &#039;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Returns the union of the values of two tables, as a sequence.&lt;br /&gt;
local function union(t1, t2)&lt;br /&gt;
&lt;br /&gt;
	local vals = {}&lt;br /&gt;
	for k, v in pairs(t1) do&lt;br /&gt;
		vals[v] = true&lt;br /&gt;
	end&lt;br /&gt;
	for k, v in pairs(t2) do&lt;br /&gt;
		vals[v] = true&lt;br /&gt;
	end&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k, v in pairs(vals) do&lt;br /&gt;
		table.insert(ret, k)&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Returns a table containing the numbers of the arguments that exist&lt;br /&gt;
-- for the specified prefix. For example, if the prefix was &#039;data&#039;, and&lt;br /&gt;
-- &#039;data1&#039;, &#039;data2&#039;, and &#039;data5&#039; exist, it would return {1, 2, 5}.&lt;br /&gt;
local function getArgNums(prefix)&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		local num = tostring(k):match(&#039;^&#039; .. prefix .. &#039;([1-9]%d*)$&#039;)&lt;br /&gt;
		if num then table.insert(nums, tonumber(num)) end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(nums)&lt;br /&gt;
	return nums&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Adds a row to the infobox, with either a header cell&lt;br /&gt;
-- or a label/data cell combination.&lt;br /&gt;
local function addRow(rowArgs)&lt;br /&gt;
	&lt;br /&gt;
	if rowArgs.header and rowArgs.header ~= &#039;_BLANK_&#039; then&lt;br /&gt;
		has_rows = true&lt;br /&gt;
		has_list_class({ rowArgs.rowclass, rowArgs.class, args.headerclass })&lt;br /&gt;
		&lt;br /&gt;
		root&lt;br /&gt;
			:tag(&#039;tr&#039;)&lt;br /&gt;
				:addClass(rowArgs.rowclass)&lt;br /&gt;
				:cssText(rowArgs.rowstyle)&lt;br /&gt;
				:tag(&#039;th&#039;)&lt;br /&gt;
					:attr(&#039;colspan&#039;, &#039;2&#039;)&lt;br /&gt;
					:addClass(&#039;infobox-header&#039;)&lt;br /&gt;
					:addClass(rowArgs.class)&lt;br /&gt;
					:addClass(args.headerclass)&lt;br /&gt;
					-- @deprecated next; target .infobox-&amp;lt;name&amp;gt; .infobox-header&lt;br /&gt;
					:cssText(args.headerstyle)&lt;br /&gt;
					:cssText(rowArgs.rowcellstyle)&lt;br /&gt;
					:wikitext(fixChildBoxes(rowArgs.header, &#039;th&#039;))&lt;br /&gt;
		if rowArgs.data then&lt;br /&gt;
			root:wikitext(&lt;br /&gt;
				&#039;[[Category:Pages using infobox templates with ignored data cells]]&#039;&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	elseif rowArgs.data and rowArgs.data:gsub(category_in_empty_row_pattern, &#039;&#039;):match(&#039;^%S&#039;) then&lt;br /&gt;
		has_rows = true&lt;br /&gt;
		has_list_class({ rowArgs.rowclass, rowArgs.class })&lt;br /&gt;
		&lt;br /&gt;
		local row = root:tag(&#039;tr&#039;)&lt;br /&gt;
		row:addClass(rowArgs.rowclass)&lt;br /&gt;
		row:cssText(rowArgs.rowstyle)&lt;br /&gt;
		if rowArgs.label then&lt;br /&gt;
			row&lt;br /&gt;
				:tag(&#039;th&#039;)&lt;br /&gt;
					:attr(&#039;scope&#039;, &#039;row&#039;)&lt;br /&gt;
					:addClass(&#039;infobox-label&#039;)&lt;br /&gt;
					-- @deprecated next; target .infobox-&amp;lt;name&amp;gt; .infobox-label&lt;br /&gt;
					:cssText(args.labelstyle)&lt;br /&gt;
					:cssText(rowArgs.rowcellstyle)&lt;br /&gt;
					:wikitext(rowArgs.label)&lt;br /&gt;
					:done()&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local dataCell = row:tag(&#039;td&#039;)&lt;br /&gt;
		dataCell&lt;br /&gt;
			:attr(&#039;colspan&#039;, not rowArgs.label and &#039;2&#039; or nil)&lt;br /&gt;
			:addClass(not rowArgs.label and &#039;infobox-full-data&#039; or &#039;infobox-data&#039;)&lt;br /&gt;
			:addClass(rowArgs.class)&lt;br /&gt;
			-- @deprecated next; target .infobox-&amp;lt;name&amp;gt; .infobox(-full)-data&lt;br /&gt;
			:cssText(rowArgs.datastyle)&lt;br /&gt;
			:cssText(rowArgs.rowcellstyle)&lt;br /&gt;
			:wikitext(fixChildBoxes(rowArgs.data, &#039;td&#039;))&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(empty_row_categories, rowArgs.data or &#039;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderTitle()&lt;br /&gt;
	if not args.title then return end&lt;br /&gt;
&lt;br /&gt;
	has_rows = true&lt;br /&gt;
	has_list_class({args.titleclass})&lt;br /&gt;
	&lt;br /&gt;
	root&lt;br /&gt;
		:tag(&#039;caption&#039;)&lt;br /&gt;
			:addClass(&#039;infobox-title&#039;)&lt;br /&gt;
			:addClass(args.titleclass)&lt;br /&gt;
			-- @deprecated next; target .infobox-&amp;lt;name&amp;gt; .infobox-title&lt;br /&gt;
			:cssText(args.titlestyle)&lt;br /&gt;
			:wikitext(args.title)&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderAboveRow()&lt;br /&gt;
	if not args.above then return end&lt;br /&gt;
&lt;br /&gt;
	has_rows = true&lt;br /&gt;
	has_list_class({ args.aboveclass })&lt;br /&gt;
	&lt;br /&gt;
	root&lt;br /&gt;
		:tag(&#039;tr&#039;)&lt;br /&gt;
			:tag(&#039;th&#039;)&lt;br /&gt;
				:attr(&#039;colspan&#039;, &#039;2&#039;)&lt;br /&gt;
				:addClass(&#039;infobox-above&#039;)&lt;br /&gt;
				:addClass(args.aboveclass)&lt;br /&gt;
				-- @deprecated next; target .infobox-&amp;lt;name&amp;gt; .infobox-above&lt;br /&gt;
				:cssText(args.abovestyle)&lt;br /&gt;
				:wikitext(fixChildBoxes(args.above,&#039;th&#039;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderBelowRow()&lt;br /&gt;
	if not args.below then return end&lt;br /&gt;
&lt;br /&gt;
	has_rows = true&lt;br /&gt;
	has_list_class({ args.belowclass })&lt;br /&gt;
	&lt;br /&gt;
	root&lt;br /&gt;
		:tag(&#039;tr&#039;)&lt;br /&gt;
			:tag(&#039;td&#039;)&lt;br /&gt;
				:attr(&#039;colspan&#039;, &#039;2&#039;)&lt;br /&gt;
				:addClass(&#039;infobox-below&#039;)&lt;br /&gt;
				:addClass(args.belowclass)&lt;br /&gt;
				-- @deprecated next; target .infobox-&amp;lt;name&amp;gt; .infobox-below&lt;br /&gt;
				:cssText(args.belowstyle)&lt;br /&gt;
				:wikitext(fixChildBoxes(args.below,&#039;td&#039;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addSubheaderRow(subheaderArgs)&lt;br /&gt;
	if subheaderArgs.data and&lt;br /&gt;
		subheaderArgs.data:gsub(category_in_empty_row_pattern, &#039;&#039;):match(&#039;^%S&#039;) then&lt;br /&gt;
		has_rows = true&lt;br /&gt;
		has_list_class({ subheaderArgs.rowclass, subheaderArgs.class })&lt;br /&gt;
		&lt;br /&gt;
		local row = root:tag(&#039;tr&#039;)&lt;br /&gt;
		row:addClass(subheaderArgs.rowclass)&lt;br /&gt;
&lt;br /&gt;
		local dataCell = row:tag(&#039;td&#039;)&lt;br /&gt;
		dataCell&lt;br /&gt;
			:attr(&#039;colspan&#039;, &#039;2&#039;)&lt;br /&gt;
			:addClass(&#039;infobox-subheader&#039;)&lt;br /&gt;
			:addClass(subheaderArgs.class)&lt;br /&gt;
			:cssText(subheaderArgs.datastyle)&lt;br /&gt;
			:cssText(subheaderArgs.rowcellstyle)&lt;br /&gt;
			:wikitext(fixChildBoxes(subheaderArgs.data, &#039;td&#039;))&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(empty_row_categories, subheaderArgs.data or &#039;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderSubheaders()&lt;br /&gt;
	if args.subheader then&lt;br /&gt;
		args.subheader1 = args.subheader&lt;br /&gt;
	end&lt;br /&gt;
	if args.subheaderrowclass then&lt;br /&gt;
		args.subheaderrowclass1 = args.subheaderrowclass&lt;br /&gt;
	end&lt;br /&gt;
	local subheadernums = getArgNums(&#039;subheader&#039;)&lt;br /&gt;
	for k, num in ipairs(subheadernums) do&lt;br /&gt;
		addSubheaderRow({&lt;br /&gt;
			data = args[&#039;subheader&#039; .. tostring(num)],&lt;br /&gt;
			-- @deprecated next; target .infobox-&amp;lt;name&amp;gt; .infobox-subheader&lt;br /&gt;
			datastyle = args.subheaderstyle,&lt;br /&gt;
			rowcellstyle = args[&#039;subheaderstyle&#039; .. tostring(num)],&lt;br /&gt;
			class = args.subheaderclass,&lt;br /&gt;
			rowclass = args[&#039;subheaderrowclass&#039; .. tostring(num)]&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addImageRow(imageArgs)&lt;br /&gt;
&lt;br /&gt;
	if imageArgs.data and&lt;br /&gt;
		imageArgs.data:gsub(category_in_empty_row_pattern, &#039;&#039;):match(&#039;^%S&#039;) then&lt;br /&gt;
&lt;br /&gt;
		has_rows = true&lt;br /&gt;
		has_list_class({ imageArgs.rowclass, imageArgs.class })&lt;br /&gt;
		&lt;br /&gt;
		local row = root:tag(&#039;tr&#039;)&lt;br /&gt;
		row:addClass(imageArgs.rowclass)&lt;br /&gt;
&lt;br /&gt;
		local dataCell = row:tag(&#039;td&#039;)&lt;br /&gt;
		dataCell&lt;br /&gt;
			:attr(&#039;colspan&#039;, &#039;2&#039;)&lt;br /&gt;
			:addClass(&#039;infobox-image&#039;)&lt;br /&gt;
			:addClass(imageArgs.class)&lt;br /&gt;
			:cssText(imageArgs.datastyle)&lt;br /&gt;
			:wikitext(fixChildBoxes(imageArgs.data, &#039;td&#039;))&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(empty_row_categories, imageArgs.data or &#039;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderImages()&lt;br /&gt;
	if args.image then&lt;br /&gt;
		args.image1 = args.image&lt;br /&gt;
	end&lt;br /&gt;
	if args.caption then&lt;br /&gt;
		args.caption1 = args.caption&lt;br /&gt;
	end&lt;br /&gt;
	local imagenums = getArgNums(&#039;image&#039;)&lt;br /&gt;
	for k, num in ipairs(imagenums) do&lt;br /&gt;
		local caption = args[&#039;caption&#039; .. tostring(num)]&lt;br /&gt;
		local data = mw.html.create():wikitext(args[&#039;image&#039; .. tostring(num)])&lt;br /&gt;
		if caption then&lt;br /&gt;
			data&lt;br /&gt;
				:tag(&#039;div&#039;)&lt;br /&gt;
					:addClass(&#039;infobox-caption&#039;)&lt;br /&gt;
					-- @deprecated next; target .infobox-&amp;lt;name&amp;gt; .infobox-caption&lt;br /&gt;
					:cssText(args.captionstyle)&lt;br /&gt;
					:wikitext(caption)&lt;br /&gt;
		end&lt;br /&gt;
		addImageRow({&lt;br /&gt;
			data = tostring(data),&lt;br /&gt;
			-- @deprecated next; target .infobox-&amp;lt;name&amp;gt; .infobox-image&lt;br /&gt;
			datastyle = args.imagestyle,&lt;br /&gt;
			class = args.imageclass,&lt;br /&gt;
			rowclass = args[&#039;imagerowclass&#039; .. tostring(num)]&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- When autoheaders are turned on, preprocesses the rows&lt;br /&gt;
local function preprocessRows()&lt;br /&gt;
	if not args.autoheaders then return end&lt;br /&gt;
	&lt;br /&gt;
	local rownums = union(getArgNums(&#039;header&#039;), getArgNums(&#039;data&#039;))&lt;br /&gt;
	table.sort(rownums)&lt;br /&gt;
	local lastheader&lt;br /&gt;
	for k, num in ipairs(rownums) do&lt;br /&gt;
		if args[&#039;header&#039; .. tostring(num)] then&lt;br /&gt;
			if lastheader then&lt;br /&gt;
				args[&#039;header&#039; .. tostring(lastheader)] = nil&lt;br /&gt;
			end&lt;br /&gt;
			lastheader = num&lt;br /&gt;
		elseif args[&#039;data&#039; .. tostring(num)] and&lt;br /&gt;
			args[&#039;data&#039; .. tostring(num)]:gsub(&lt;br /&gt;
				category_in_empty_row_pattern, &#039;&#039;&lt;br /&gt;
			):match(&#039;^%S&#039;) then&lt;br /&gt;
			local data = args[&#039;data&#039; .. tostring(num)]&lt;br /&gt;
			if data:gsub(category_in_empty_row_pattern, &#039;&#039;):match(&#039;%S&#039;) then&lt;br /&gt;
				lastheader = nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if lastheader then&lt;br /&gt;
		args[&#039;header&#039; .. tostring(lastheader)] = nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Gets the union of the header and data argument numbers,&lt;br /&gt;
-- and renders them all in order&lt;br /&gt;
local function renderRows()&lt;br /&gt;
&lt;br /&gt;
	local rownums = union(getArgNums(&#039;header&#039;), getArgNums(&#039;data&#039;))&lt;br /&gt;
	table.sort(rownums)&lt;br /&gt;
	for k, num in ipairs(rownums) do&lt;br /&gt;
		addRow({&lt;br /&gt;
			header = args[&#039;header&#039; .. tostring(num)],&lt;br /&gt;
			label = args[&#039;label&#039; .. tostring(num)],&lt;br /&gt;
			data = args[&#039;data&#039; .. tostring(num)],&lt;br /&gt;
			datastyle = args.datastyle,&lt;br /&gt;
			class = args[&#039;class&#039; .. tostring(num)],&lt;br /&gt;
			rowclass = args[&#039;rowclass&#039; .. tostring(num)],&lt;br /&gt;
			-- @deprecated next; target .infobox-&amp;lt;name&amp;gt; rowclass&lt;br /&gt;
			rowstyle = args[&#039;rowstyle&#039; .. tostring(num)],&lt;br /&gt;
			rowcellstyle = args[&#039;rowcellstyle&#039; .. tostring(num)]&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderNavBar()&lt;br /&gt;
	if not args.name then return end&lt;br /&gt;
&lt;br /&gt;
	has_rows = true&lt;br /&gt;
	root&lt;br /&gt;
		:tag(&#039;tr&#039;)&lt;br /&gt;
			:tag(&#039;td&#039;)&lt;br /&gt;
				:attr(&#039;colspan&#039;, &#039;2&#039;)&lt;br /&gt;
				:addClass(&#039;infobox-navbar&#039;)&lt;br /&gt;
				:wikitext(require(&#039;Module:Navbar&#039;)._navbar{&lt;br /&gt;
					args.name,&lt;br /&gt;
					mini = 1,&lt;br /&gt;
				})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderItalicTitle()&lt;br /&gt;
	local italicTitle = args[&#039;italic title&#039;] and mw.ustring.lower(args[&#039;italic title&#039;])&lt;br /&gt;
	if italicTitle == &#039;&#039; or italicTitle == &#039;force&#039; or italicTitle == &#039;yes&#039; then&lt;br /&gt;
		root:wikitext(require(&#039;Module:Italic title&#039;)._main({}))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Categories in otherwise empty rows are collected in empty_row_categories.&lt;br /&gt;
-- This function adds them to the module output. It is not affected by&lt;br /&gt;
-- args.decat because this module should not prevent module-external categories&lt;br /&gt;
-- from rendering.&lt;br /&gt;
local function renderEmptyRowCategories()&lt;br /&gt;
	for _, s in ipairs(empty_row_categories) do&lt;br /&gt;
		root:wikitext(s)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Render tracking categories. args.decat == turns off tracking categories.&lt;br /&gt;
local function renderTrackingCategories()&lt;br /&gt;
	if args.decat == &#039;yes&#039; then return end&lt;br /&gt;
	if args.child == &#039;yes&#039; then&lt;br /&gt;
		if args.title then&lt;br /&gt;
			root:wikitext(&lt;br /&gt;
				&#039;[[Category:Pages using embedded infobox templates with the title parameter]]&#039;&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	elseif #(getArgNums(&#039;data&#039;)) == 0 and mw.title.getCurrentTitle().namespace == 0 then&lt;br /&gt;
		root:wikitext(&#039;[[Category:Articles using infobox templates with no data rows]]&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[=[&lt;br /&gt;
Loads the templatestyles for the infobox.&lt;br /&gt;
&lt;br /&gt;
TODO: FINISH loading base templatestyles here rather than in&lt;br /&gt;
MediaWiki:Common.css. There are 4-5000 pages with &#039;raw&#039; infobox tables.&lt;br /&gt;
See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :).&lt;br /&gt;
When we do this we should clean up the inline CSS below too.&lt;br /&gt;
Will have to do some bizarre conversion category like with sidebar.&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
local function loadTemplateStyles()&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	&lt;br /&gt;
	local hlist_templatestyles = &#039;&#039;&lt;br /&gt;
	if lists.hlist_t.found then&lt;br /&gt;
		hlist_templatestyles = frame:extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;, args = { src = lists.hlist_t.styles }&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local plainlist_templatestyles = &#039;&#039;&lt;br /&gt;
	if lists.plainlist_t.found then&lt;br /&gt;
		plainlist_templatestyles = frame:extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;, args = { src = lists.plainlist_t.styles }&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- See function description&lt;br /&gt;
	local base_templatestyles = frame:extensionTag{&lt;br /&gt;
		name = &#039;templatestyles&#039;, args = { src = &#039;Module:Infobox/styles.css&#039; }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local templatestyles = &#039;&#039;&lt;br /&gt;
	if args[&#039;templatestyles&#039;] then&lt;br /&gt;
		templatestyles = frame:extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;, args = { src = args[&#039;templatestyles&#039;] }&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local child_templatestyles = &#039;&#039;&lt;br /&gt;
	if args[&#039;child templatestyles&#039;] then&lt;br /&gt;
		child_templatestyles = frame:extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;, args = { src = args[&#039;child templatestyles&#039;] }&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local grandchild_templatestyles = &#039;&#039;&lt;br /&gt;
	if args[&#039;grandchild templatestyles&#039;] then&lt;br /&gt;
		grandchild_templatestyles = frame:extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;, args = { src = args[&#039;grandchild templatestyles&#039;] }&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat({&lt;br /&gt;
		-- hlist -&amp;gt; plainlist -&amp;gt; base is best-effort to preserve old Common.css ordering.&lt;br /&gt;
		-- this ordering is not a guarantee because the rows of interest invoking&lt;br /&gt;
		-- each class may not be on a specific page&lt;br /&gt;
		hlist_templatestyles,&lt;br /&gt;
		plainlist_templatestyles,&lt;br /&gt;
		base_templatestyles,&lt;br /&gt;
		templatestyles,&lt;br /&gt;
		child_templatestyles,&lt;br /&gt;
		grandchild_templatestyles&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- common functions between the child and non child cases&lt;br /&gt;
local function structure_infobox_common()&lt;br /&gt;
	renderSubheaders()&lt;br /&gt;
	renderImages()&lt;br /&gt;
	preprocessRows()&lt;br /&gt;
	renderRows()&lt;br /&gt;
	renderBelowRow()&lt;br /&gt;
	renderNavBar()&lt;br /&gt;
	renderItalicTitle()&lt;br /&gt;
	renderEmptyRowCategories()&lt;br /&gt;
	renderTrackingCategories()&lt;br /&gt;
	cleanInfobox()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Specify the overall layout of the infobox, with special settings if the&lt;br /&gt;
-- infobox is used as a &#039;child&#039; inside another infobox.&lt;br /&gt;
local function _infobox()&lt;br /&gt;
	if args.child ~= &#039;yes&#039; then&lt;br /&gt;
		root = mw.html.create(&#039;table&#039;)&lt;br /&gt;
&lt;br /&gt;
		root&lt;br /&gt;
			:addClass(args.subbox == &#039;yes&#039; and &#039;infobox-subbox&#039; or &#039;infobox&#039;)&lt;br /&gt;
			:addClass(args.bodyclass)&lt;br /&gt;
			-- @deprecated next; target .infobox-&amp;lt;name&amp;gt;&lt;br /&gt;
			:cssText(args.bodystyle)&lt;br /&gt;
		&lt;br /&gt;
		has_list_class({ args.bodyclass })&lt;br /&gt;
&lt;br /&gt;
		renderTitle()&lt;br /&gt;
		renderAboveRow()&lt;br /&gt;
	else&lt;br /&gt;
		root = mw.html.create()&lt;br /&gt;
&lt;br /&gt;
		root&lt;br /&gt;
			:wikitext(args.title)&lt;br /&gt;
	end&lt;br /&gt;
	structure_infobox_common()&lt;br /&gt;
	&lt;br /&gt;
	return loadTemplateStyles() .. root&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- If the argument exists and isn&#039;t blank, add it to the argument table.&lt;br /&gt;
-- Blank arguments are treated as nil to match the behaviour of ParserFunctions.&lt;br /&gt;
local function preprocessSingleArg(argName)&lt;br /&gt;
	if origArgs[argName] and origArgs[argName] ~= &#039;&#039; then&lt;br /&gt;
		args[argName] = origArgs[argName]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Assign the parameters with the given prefixes to the args table, in order, in&lt;br /&gt;
-- batches of the step size specified. This is to prevent references etc. from&lt;br /&gt;
-- appearing in the wrong order. The prefixTable should be an array containing&lt;br /&gt;
-- tables, each of which has two possible fields, a &amp;quot;prefix&amp;quot; string and a&lt;br /&gt;
-- &amp;quot;depend&amp;quot; table. The function always parses parameters containing the &amp;quot;prefix&amp;quot;&lt;br /&gt;
-- string, but only parses parameters in the &amp;quot;depend&amp;quot; table if the prefix&lt;br /&gt;
-- parameter is present and non-blank.&lt;br /&gt;
local function preprocessArgs(prefixTable, step)&lt;br /&gt;
	if type(prefixTable) ~= &#039;table&#039; then&lt;br /&gt;
		error(&amp;quot;Non-table value detected for the prefix table&amp;quot;, 2)&lt;br /&gt;
	end&lt;br /&gt;
	if type(step) ~= &#039;number&#039; then&lt;br /&gt;
		error(&amp;quot;Invalid step value detected&amp;quot;, 2)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Get arguments without a number suffix, and check for bad input.&lt;br /&gt;
	for i,v in ipairs(prefixTable) do&lt;br /&gt;
		if type(v) ~= &#039;table&#039; or type(v.prefix) ~= &amp;quot;string&amp;quot; or&lt;br /&gt;
			(v.depend and type(v.depend) ~= &#039;table&#039;) then&lt;br /&gt;
			error(&#039;Invalid input detected to preprocessArgs prefix table&#039;, 2)&lt;br /&gt;
		end&lt;br /&gt;
		preprocessSingleArg(v.prefix)&lt;br /&gt;
		-- Only parse the depend parameter if the prefix parameter is present&lt;br /&gt;
		-- and not blank.&lt;br /&gt;
		if args[v.prefix] and v.depend then&lt;br /&gt;
			for j, dependValue in ipairs(v.depend) do&lt;br /&gt;
				if type(dependValue) ~= &#039;string&#039; then&lt;br /&gt;
					error(&#039;Invalid &amp;quot;depend&amp;quot; parameter value detected in preprocessArgs&#039;)&lt;br /&gt;
				end&lt;br /&gt;
				preprocessSingleArg(dependValue)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Get arguments with number suffixes.&lt;br /&gt;
	local a = 1 -- Counter variable.&lt;br /&gt;
	local moreArgumentsExist = true&lt;br /&gt;
	while moreArgumentsExist == true do&lt;br /&gt;
		moreArgumentsExist = false&lt;br /&gt;
		for i = a, a + step - 1 do&lt;br /&gt;
			for j,v in ipairs(prefixTable) do&lt;br /&gt;
				local prefixArgName = v.prefix .. tostring(i)&lt;br /&gt;
				if origArgs[prefixArgName] then&lt;br /&gt;
					-- Do another loop if any arguments are found, even blank ones.&lt;br /&gt;
					moreArgumentsExist = true&lt;br /&gt;
					preprocessSingleArg(prefixArgName)&lt;br /&gt;
				end&lt;br /&gt;
				-- Process the depend table if the prefix argument is present&lt;br /&gt;
				-- and not blank, or we are processing &amp;quot;prefix1&amp;quot; and &amp;quot;prefix&amp;quot; is&lt;br /&gt;
				-- present and not blank, and if the depend table is present.&lt;br /&gt;
				if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then&lt;br /&gt;
					for j,dependValue in ipairs(v.depend) do&lt;br /&gt;
						local dependArgName = dependValue .. tostring(i)&lt;br /&gt;
						preprocessSingleArg(dependArgName)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		a = a + step&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Parse the data parameters in the same order that the old {{infobox}} did, so&lt;br /&gt;
-- that references etc. will display in the expected places. Parameters that&lt;br /&gt;
-- depend on another parameter are only processed if that parameter is present,&lt;br /&gt;
-- to avoid phantom references appearing in article reference lists.&lt;br /&gt;
local function parseDataParameters()&lt;br /&gt;
&lt;br /&gt;
	preprocessSingleArg(&#039;autoheaders&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;child&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;bodyclass&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;subbox&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;bodystyle&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;title&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;titleclass&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;titlestyle&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;above&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;aboveclass&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;abovestyle&#039;)&lt;br /&gt;
	preprocessArgs({&lt;br /&gt;
		{prefix = &#039;subheader&#039;, depend = {&#039;subheaderstyle&#039;, &#039;subheaderrowclass&#039;}}&lt;br /&gt;
	}, 10)&lt;br /&gt;
	preprocessSingleArg(&#039;subheaderstyle&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;subheaderclass&#039;)&lt;br /&gt;
	preprocessArgs({&lt;br /&gt;
		{prefix = &#039;image&#039;, depend = {&#039;caption&#039;, &#039;imagerowclass&#039;}}&lt;br /&gt;
	}, 10)&lt;br /&gt;
	preprocessSingleArg(&#039;captionstyle&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;imagestyle&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;imageclass&#039;)&lt;br /&gt;
	preprocessArgs({&lt;br /&gt;
		{prefix = &#039;header&#039;},&lt;br /&gt;
		{prefix = &#039;data&#039;, depend = {&#039;label&#039;}},&lt;br /&gt;
		{prefix = &#039;rowclass&#039;},&lt;br /&gt;
		{prefix = &#039;rowstyle&#039;},&lt;br /&gt;
		{prefix = &#039;rowcellstyle&#039;},&lt;br /&gt;
		{prefix = &#039;class&#039;}&lt;br /&gt;
	}, 50)&lt;br /&gt;
	preprocessSingleArg(&#039;headerclass&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;headerstyle&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;labelstyle&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;datastyle&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;below&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;belowclass&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;belowstyle&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;name&#039;)&lt;br /&gt;
	-- different behaviour for italics if blank or absent&lt;br /&gt;
	args[&#039;italic title&#039;] = origArgs[&#039;italic title&#039;]&lt;br /&gt;
	preprocessSingleArg(&#039;decat&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;templatestyles&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;child templatestyles&#039;)&lt;br /&gt;
	preprocessSingleArg(&#039;grandchild templatestyles&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- If called via #invoke, use the args passed into the invoking template.&lt;br /&gt;
-- Otherwise, for testing purposes, assume args are being passed directly in.&lt;br /&gt;
function p.infobox(frame)&lt;br /&gt;
	if frame == mw.getCurrentFrame() then&lt;br /&gt;
		origArgs = frame:getParent().args&lt;br /&gt;
	else&lt;br /&gt;
		origArgs = frame&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	parseDataParameters()&lt;br /&gt;
	&lt;br /&gt;
	return _infobox()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- For calling via #invoke within a template&lt;br /&gt;
function p.infoboxTemplate(frame)&lt;br /&gt;
	origArgs = {}&lt;br /&gt;
	for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end&lt;br /&gt;
	&lt;br /&gt;
	parseDataParameters()&lt;br /&gt;
	&lt;br /&gt;
	return _infobox()&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=Creating%E6%97%85%E8%A1%8C%E6%89%8B%E5%86%8C&amp;diff=4908</id>
		<title>Creating旅行手册</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=Creating%E6%97%85%E8%A1%8C%E6%89%8B%E5%86%8C&amp;diff=4908"/>
		<updated>2025-04-04T09:31:23Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​/* 历史 */ Yuuni BE-JE&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;虽名为“旅行手册”，但实际就是Creating的各方面统编而成。我们撰写这一本“手册”，是为了让新玩家更易了解Creating的各方面，更好融入我们服的氛围&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;本手册由CatalpaCute、BenLi06、Meteorite、shinanJPG及小蜜糖柚子等工程组成员参与工作编写而成。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==历史==&lt;br /&gt;
要谈及Creating的历史，必先认识几位关键的千代人物：现“服主”CatalpaCute、“名誉服主/旧服主”小蜜糖柚子、PCGAIR、Meteorite...以及当时的时代背景。&lt;br /&gt;
===前期(2019-2020.3)===&lt;br /&gt;
2020 年 1 月起，COVID-19 肆虐全球，中国大陆大部分范围内受到影响，大部分非毕业班的学生在四月中旬后才重返学校，而 Creating 就诞生于这段时间里面。&lt;br /&gt;
&lt;br /&gt;
CatalpaCute 于 2019 年 4 月左右重新接触到 Minecraft服务器（中国版），在云城服务器中学到了指令的基础，同时也惊叹于服务器中建筑之美。后与好友共开一服，但由于网易的限制，服务器存档无法导出，无法添加 mod、插件等，2020 年后甚至限制了服务器指令的使用，加之价格高昂，CatalpaCute 便萌生出开Minecraft基岩版(a.k.a 国际版)服务器的想法。但并未找到有其他志同道合之人一同游戏，寻找教程之路也异常艰辛。&lt;br /&gt;
===开服！早期(2020.4-2021.7)===&lt;br /&gt;
====基安MC====&lt;br /&gt;
2 月中旬，CatalpaCute 于酷安招募帖子中加入了小蜜糖柚子的服务器，这一招募方式后面也被 Creating 继承所用。虽是网易服，但成员多对网易不满。3 月中服务器到期后，小蜜糖柚子因新限制无法续费，CatalpaCute 提议开一个“国际版服务器”的想法，获得了群内不少玩家的支持。3月下旬，CatalpaCute 在 xiayu 的帮助下第一次启动了服务端，并在推荐下购买了自己的服务器（阿里云学生机）及域名。&lt;br /&gt;
&lt;br /&gt;
CatalpaCute 开始将服务器信息发布在群内，吸引玩家进入，K3、小蜜糖柚子、丁仪、近月者等原于“MC”群内的成员，PCGAIR 等云城的成员以及 Meteorite等在酷安结识到的同龄人，被认为是服务器的第一批玩家。&lt;br /&gt;
&lt;br /&gt;
为何Creating的开服纪念日定于 4 月 4 日？2020 年 4 月 4 日，因部分原因全国游戏停服一日。在此之前，进入游戏的玩家零零散散，游戏积极性不高，而且服务器也多次更换地图，并没有一个固定的服务器性质。而 3 日晚商议后决定创建一个新的生存地图用于服务器，4 日各大厂游戏停服因此有了部分之前从未了解服务器的群成员也在此日加入游戏，而服务器也在这天迎来了第一次玩家顶峰，在线人数 5 人+，游戏时间也相对长，直至开学前都会有玩家进入服务器游戏，故也迎来了服务器的“第一次大开发”&lt;br /&gt;
&lt;br /&gt;
2020.6 - 2021.3的历史因存储介质丢失和[[2263事件]]难以考证。根据酷安动态可知 Creating 在此期间曾两次对外招新，linyushu520 就是第三次招新入群的代表人物。&lt;br /&gt;
&lt;br /&gt;
2020 年 8 月，CatalpaCute 曾尝试为服务器加入 mod 与插件，但因网络教程缺失、BDX 加载器停更以及 Github 被墙等问题以失败告终。&lt;br /&gt;
&lt;br /&gt;
2020 年 5 月，CatalpaCute 曾加入 Santorsia&#039;s Server（今悠日计划 uDays），由 Xander 带领游览参观了[[森川市]]、[[风巽市]]、[[端点市]]，对当时 uDays 的铁路叹为观止。CatalpaCute 同 PCGAIR 随即尝试在 Creating 中发展铁路，但因为技术原因效果是极差的。&lt;br /&gt;
&lt;br /&gt;
====暂时停服====&lt;br /&gt;
&lt;br /&gt;
2021 年 3 月，因阿里云调价，CatalpaCute 不堪高价费用而宣布暂时停服至 7 月暑假，7 月 28 日，CatalpaCute重新开启服务器——即 Creating生存（五周目），并在酷安发布帖文。&lt;br /&gt;
&lt;br /&gt;
===新起点(2021.7-2022.8)===&lt;br /&gt;
&lt;br /&gt;
====五周目时期====&lt;br /&gt;
&lt;br /&gt;
发布帖文过后反向尚可，本次招新进入的玩家有 BenLi06、yyzy3911 等，且因“肥皂君”服务器停服，CatalpaCute 在征得同意后邀请了其群内的 HakimYu、shinanJPG、Fumikado 等人进入服务器。在群内商议下，服务器正式定名为由 HakimYu 建议的“Creating”。&lt;br /&gt;
&lt;br /&gt;
7 月 30 日前后，Creating生存（五周目）迎来 Creating 第二次玩家顶峰，CatalpaCute 允许玩家使用创造模式建设主城，由 BenLi06 主持并修建了&#039;&#039;&#039;滨海车站（五周目）、滨海 1 号线环线、临海公寓&#039;&#039;&#039;等，由 PCGAIR 与 linyushu520 修建了&#039;&#039;&#039;半山酒店&#039;&#039;&#039;，由 yyzy3911 修建了&#039;&#039;&#039;猪人塔&#039;&#039;&#039;，这些工程在当时的玩家中基本获得好评，尽管依旧有反对创造权限的抗议声。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;参见：[[Creating重大事故#Creating重大事故:2021/7/31]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
然而，Creating生存（五周目） 却在 7 月 31 日晚，由于对服务器的错误设置和玩家的错误操作，服务器多次异常停止，但管理并未意识到问题之所在，在停止后重新启动服务器。最后约为 20:30 时服务器停止运行并无法再启动，后续 CatalpaCute 将存档导出发现其区块已损坏，本地运行仅可找到极少一部分的“遗迹”，据群内复盘得知当时有玩家所在的区块皆损坏。Creating生存（五周目）以遗憾告终。&lt;br /&gt;
&lt;br /&gt;
====六周目时期====&lt;br /&gt;
次日，BenLi06推荐了其服务器的地图种子，让 CatalpaCute创建地图后重新开启服务器，即Creating生存（六周目）。“初期”延续了五周目的创造开发政策。虽在一次事故后玩家对服务器的建设热情有所减弱，但“第二次玩家顶峰”基本延续到了 8 月中下旬。&lt;br /&gt;
&lt;br /&gt;
同五周目，玩家于海岸寻找了一片平原建设了公寓楼、车站等设施，并由 Meteorite 主持修建了 Central Park ，该区域逐步发展为今日[[滨海市]]。（猪人塔、“CreatingServer”灯牌、公寓等，基本与五周目相同）&lt;br /&gt;
&lt;br /&gt;
除重建五周目时期建筑外，滨海市也在寻找向外发展的机会，于滨海市东部 400 格左右的平原上设立&#039;&#039;&#039;副城&#039;&#039;&#039;（即今日[[甘地市]][[副城区]])作为住宅区，大力支持玩家在此建设自己的居所，yyzy3911 的木屋被多次复制，Meteorite、yushu、CatalpaCute 在副城的居所皆为其改造而成。CatalpaCute 与 BenLi06设计了一条从滨海主城到副城的铁路线，由滨海站经副城南站到副城站，全地下线路，即为今日[[滨海2号线]]。海花城际 C1 完工前，2号线一直为 Creating 中最高规格质量的铁路。后在机缘巧合下副城得名“甘地市”&#039;&#039;&#039;（与现实中人物无任何关联）&#039;&#039;&#039;，甘地新村、甘地南站等地名一直沿用至今。当时甘地市也迎来了蓬勃发展。后由 K3、BenLi06 与 Meteorite 合作修建了一条由滨海市东至甘地市双向六道的公路（今&#039;&#039;&#039;甘海公路&#039;&#039;&#039;），两侧设有货运线（6 号线 甘地新村 - 滨海粮仓，现已部分拆除）。&lt;br /&gt;
&lt;br /&gt;
====分服——生存六周目与创造一周目====&lt;br /&gt;
&lt;br /&gt;
根据“创造开发政策”的约定， 8 月 29 日“全员deop回归生存模式”。但当时有玩家提出可以使用这张地图的存档分开开设两个服务器，供生存玩家继续探索生电，而创造玩家可以继续建设。8 月 30 日最终采取后者即创造生存分服运作，也就造成如今此地图被称之为 Creating生存六周目/创造一周目。但后续生存服极少玩家进入游戏，在商议后决定听取 LIGHTNINGZYL 的建议重开新图作生存服，勉强挽留了生存玩家和游戏热情。&lt;br /&gt;
&lt;br /&gt;
====转向实体机+FRP开服模式====&lt;br /&gt;
&lt;br /&gt;
2021 年 9 月，yushu 和 BenLi06 提出可提供自己的家用电脑用作开服，提供算力缓解云主机压力，提升游戏体验。后大约在 10 月正式将服务器转移至实体机，使用原阿里云深圳服务器作 FRP 节点连接，后再增购一台腾讯云上海服务器用作 FRP。至此形成双主机双 FRP 运行的局面，此措施有效地减少了游戏中的卡顿问题，体验大大增加。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;参见：[[Creating重大事故#Creating重大事故:2021/11/25]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
在此期间也出现了严重的问题，11 月 25 日两台用于开服的电脑被&#039;&#039;&#039;勒索病毒入侵&#039;&#039;&#039;，导致电脑全部数据丢失，&#039;&#039;&#039;服务器存档被迫回档至上一次备份&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
因当时管理组重心主要放在了创造服，而生存服被生存玩家直接管理，出现了&#039;&#039;&#039;生存服与创造服的割裂现象&#039;&#039;&#039;,管理组对生存服缺少打理、不大关心，导致了生存服由 yushu &#039;&#039;&#039;直管且仅被其管&#039;&#039;&#039;，生存服创造服的玩家互不相识，且后在 Creating管理组 再度将服务器“上云”时 yushu 拒绝听从管理组号令、拒绝交出地图等。&lt;br /&gt;
&lt;br /&gt;
但不可否认的是 Creating 在这一时期发展超出预期，甘地市的广播电台、图书馆、WTC 等建筑皆为此时期建成，生存服、创造服的在线玩家数量及日活稳定，生存玩家热情高涨，多次在通关后更换地图起新周目（在此期间的地图工程组后以“Creating生存（yushu 时期 x 周目）计数”，有多生存玩家加入游戏。&lt;br /&gt;
&lt;br /&gt;
2021 年 11 月，[[《新海计划&amp;amp;花地计划》]]编写完成。12 月滨海新区（今[[南苑区]]）开工建造，同时设立新海市、花地市，开启了 Creating 发展的新篇章。&lt;br /&gt;
&lt;br /&gt;
在此期间，Creating 与 Railham 结为友好服务器，双方共设跨服设施。12 月开始在官方形式上向 uDays 合作，Creating 派出玩家协助 花都 - 叶原 的铁路修建，而 uDays 将退役的 UR3000、UR4000 赠予 Creating 使用。&lt;br /&gt;
&lt;br /&gt;
====见证英雄时期====&lt;br /&gt;
&lt;br /&gt;
2022 年 2 月，创造服因实体机性能不足再度上云，拥有更好性能的服务器后 Creating 加快了对铁路的建设，在周年庆前建设完成开通，可供 MCA 车型如“佐浦重工7100型”、UR3000 以 50 km/h 的速度运行。&lt;br /&gt;
&lt;br /&gt;
自 2022 年 2 月起，国内舆论氛围发生改变，群内聊天也逐渐出现了矛盾。而 3 月后上海市严加封控，各地管控措施加严，Creating 群内爆发不满情绪，多次使用“匿名聊天”功能议论国事，而服务器的建设变为缓慢。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;主条目：[[2263事件]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
2022 年 6 月 3 日晚，群内有成员发送 89 年 6 月 4 日中事件的影片截图，半小时后群聊被封禁，CatalpaCute、BenLi06、K3等多位群管被封号7天，Creating 临时使用旧群并组建新群重新发展。但此后群聊分为依然存在问题，直至 11 月才逐渐回归正常。&lt;br /&gt;
&lt;br /&gt;
此期间诞生了一个臭名昭著的工程——9 号线一期。从立项到开工仅用时三日，但隧道贯通全程用了半年之久，而施工开挖道路留下的坑洞至今仍未回填。而站点、轨道的建设直至 2025 年 3 月才完工开通，3 个站点用时 3 年，创造了“Creating奇迹”。&lt;br /&gt;
&lt;br /&gt;
2022 年 7 月，Creating 于花地市举办 2 周年庆。&lt;br /&gt;
&lt;br /&gt;
===悠日计划时期(2022.8至今)===&lt;br /&gt;
&lt;br /&gt;
欢迎加入悠日计划 Yuuniverse！&lt;br /&gt;
&lt;br /&gt;
====基岩版时期(2022.8-2022.10)====&lt;br /&gt;
&lt;br /&gt;
2022 年 8 月，CatalpaCute 以 Creating 管理组名义与 Santorsia 商量合作共同发展之宜，而后双方同意将 Creating 的地图复制进 uDays 东南部（当时约定端点市滨海地区附件为界），由 uDays、Creating、MSSR 三服组成&#039;&#039;&#039;悠日计划&#039;&#039;&#039;群组服，三服各自为政，互不干涉服内部事务，三服间设有联合议会商讨服际合作事宜。&lt;br /&gt;
&lt;br /&gt;
因 Creating 地区为复制进入地图，地形方面存在大量问题，本时期主要以修复地形与建筑为主。&lt;br /&gt;
&lt;br /&gt;
====转向Java(2022.10至今)====&lt;br /&gt;
经联合议会中投票通过同意悠日计划转为 Java 版服务器，有更多 MOD 可供选择使用，其中最重要之一为 MTR MOD，能更好地运用服内铁路线&lt;br /&gt;
&lt;br /&gt;
初期依旧以修复图内问题为主（如转换版本丢失的BE MOD 方块需要重新摆放）。留客在森园市尝试超大型建筑，建成今浮叶公园。&lt;br /&gt;
&lt;br /&gt;
在转为 Java 后，Creating 开始与 uDays 商量跨境交通方面的解决方案，对服内玩家进行身份登记记录身份代码（现已弃用），为跨境需求的玩家发放护照，两服互设使馆…最后决定陆路由白川连接滨海，铁路经由 uDays 端巽线并延申南端至 Creating 海花城际 花地 - 新海 弯道接入海花城际，实现两服铁路连接，Creating 方称此铁路线为 花海线/C3，两服各自配车在上开行&#039;&#039;&#039;花海号&#039;&#039;&#039;列车。Santorsia 为花海号制作了 UD702、UD720 两款车型。&lt;br /&gt;
&lt;br /&gt;
2022 年 12 月，为改善[[南苑车站]]的诸多问题，以及延长站台供花海号列车能够停靠，BenLi06 主持南苑站改造项目，CatalpaCute 与 shinanJPG 协助。&lt;br /&gt;
&lt;br /&gt;
==城市游玩导览==&lt;br /&gt;
&lt;br /&gt;
===滨海市===&lt;br /&gt;
&lt;br /&gt;
[[滨海市]]是悠日计划 Creating 区域中最早的城市，现划有[[主城区]]、[[滨海新村]]、[[南苑区]]和[[滨州县]]。&lt;br /&gt;
&lt;br /&gt;
[[主城区]]是最早被开发的区域，大部分区域已被 Creating 工程组确定为保护区，从 1 号出生点出发，斜对面即为公寓楼，而后方即为滨海市中央公园，您可以在此享受都市里的静谧。在穿越公园后，可达纪念建筑“CreatingServer”灯牌，搭乘 1 号线回到滨海车站，欣赏这座站台分离式的车站，其接入 6 条线路，曾一度吊打[[滨海南苑站]]，为 Creating 地区最重要的车站之一。除此以外，你可以到海滩上的滨海湾餐厅观看海景就餐，到海滨路的滨海宴会厅/滨海市政府看早期建筑。&lt;br /&gt;
&lt;br /&gt;
[[滨海新村]]是滨海市的居民区，多数生存服时期的建筑被工程组统一复制至此，您可以在这里寻找五年前生存的足迹，到这里回归农耕生活。&lt;br /&gt;
&lt;br /&gt;
[[南苑区]]是滨海的新区，是滨海市的交通枢纽，是新海计划中的附属规划之一。目前 Creating 最重要的车站——[[南苑车站]]即在南苑区陆地的南端，作为滨海铁路局管辖的特等站，此车站接入了 4 条城际铁路、3 条地铁线路。[[南苑机场]]为 Creating 的第一座机场，与[[滨海北站]]形成空铁联运。除此以外，由于新区性质，南苑区的建筑风格更为现代化、更具科技感，街道与主城区截然不同，&lt;br /&gt;
&lt;br /&gt;
[[滨州县]]为未开发区域，计划后续建为滨海市陆路交通枢纽，扩大滨海城区面积。&lt;br /&gt;
&lt;br /&gt;
===甘地市===&lt;br /&gt;
&lt;br /&gt;
===黄沙市===&lt;br /&gt;
&lt;br /&gt;
===森园市===&lt;br /&gt;
&lt;br /&gt;
===新海市===&lt;br /&gt;
&lt;br /&gt;
===花地市===&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=Creating%E6%97%85%E8%A1%8C%E6%89%8B%E5%86%8C&amp;diff=4903</id>
		<title>Creating旅行手册</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=Creating%E6%97%85%E8%A1%8C%E6%89%8B%E5%86%8C&amp;diff=4903"/>
		<updated>2025-04-04T08:08:28Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;虽名为“旅行手册”，但实际就是Creating的各方面统编而成。我们撰写这一本“手册”，是为了让新玩家更易了解Creating的各方面，更好融入我们服的氛围&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;本手册由CatalpaCute、BenLi06、Meteorite、shinanJPG及小蜜糖柚子等工程组成员参与工作编写而成。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==历史==&lt;br /&gt;
要谈及Creating的历史，必先认识几位关键的千代人物：现“服主”CatalpaCute、“名誉服主/旧服主”小蜜糖柚子、PCGAIR、Meteorite...以及当时的时代背景。&lt;br /&gt;
===前期(2019-2020.3)===&lt;br /&gt;
2020 年 1 月起，COVID-19 肆虐全球，中国大陆大部分范围内受到影响，大部分非毕业班的学生在四月中旬后才重返学校，而 Creating 就诞生于这段时间里面。&lt;br /&gt;
&lt;br /&gt;
CatalpaCute 于 2019 年 4 月左右重新接触到 Minecraft服务器（中国版），在云城服务器中学到了指令的基础，同时也惊叹于服务器中建筑之美。后与好友共开一服，但由于网易的限制，服务器存档无法导出，无法添加 mod、插件等，2020 年后甚至限制了服务器指令的使用，加之价格高昂，CatalpaCute 便萌生出开Minecraft基岩版(a.k.a 国际版)服务器的想法。但并未找到有其他志同道合之人一同游戏，寻找教程之路也异常艰辛。&lt;br /&gt;
===开服！早期(2020.4-2021.7)===&lt;br /&gt;
====基安MC====&lt;br /&gt;
2 月中旬，CatalpaCute 于酷安招募帖子中加入了小蜜糖柚子的服务器，这一招募方式后面也被 Creating 继承所用。虽是网易服，但成员多对网易不满。3 月中服务器到期后，小蜜糖柚子因新限制无法续费，CatalpaCute 提议开一个“国际版服务器”的想法，获得了群内不少玩家的支持。3月下旬，CatalpaCute 在 xiayu 的帮助下第一次启动了服务端，并在推荐下购买了自己的服务器（阿里云学生机）及域名。&lt;br /&gt;
&lt;br /&gt;
CatalpaCute 开始将服务器信息发布在群内，吸引玩家进入，K3、小蜜糖柚子、丁仪、近月者等原于“MC”群内的成员，PCGAIR 等云城的成员以及 Meteorite等在酷安结识到的同龄人，被认为是服务器的第一批玩家。&lt;br /&gt;
&lt;br /&gt;
为何Creating的开服纪念日定于 4 月 4 日？2020 年 4 月 4 日，因部分原因全国游戏停服一日。在此之前，进入游戏的玩家零零散散，游戏积极性不高，而且服务器也多次更换地图，并没有一个固定的服务器性质。而 3 日晚商议后决定创建一个新的生存地图用于服务器，4 日各大厂游戏停服因此有了部分之前从未了解服务器的群成员也在此日加入游戏，而服务器也在这天迎来了第一次玩家顶峰，在线人数 5 人+，游戏时间也相对长，直至开学前都会有玩家进入服务器游戏，故也迎来了服务器的“第一次大开发”&lt;br /&gt;
&lt;br /&gt;
2020.6 - 2021.3的历史因存储介质丢失和[[2263事件]]难以考证。根据酷安动态可知 Creating 在此期间曾两次对外招新，linyushu520 就是第三次招新入群的代表人物。&lt;br /&gt;
&lt;br /&gt;
2020 年 8 月，CatalpaCute 曾尝试为服务器加入 mod 与插件，但因网络教程缺失、BDX 加载器停更以及 Github 被墙等问题以失败告终。&lt;br /&gt;
&lt;br /&gt;
2020 年 5 月，CatalpaCute 曾加入 Santorsia&#039;s Server（今悠日计划 uDays），由 Xander 带领游览参观了[[森川市]]、[[风巽市]]、[[端点市]]，对当时 uDays 的铁路叹为观止。CatalpaCute 同 PCGAIR 随即尝试在 Creating 中发展铁路，但因为技术原因效果是极差的。&lt;br /&gt;
&lt;br /&gt;
====暂时停服====&lt;br /&gt;
&lt;br /&gt;
2021 年 3 月，因阿里云调价，CatalpaCute 不堪高价费用而宣布暂时停服至 7 月暑假，7 月 28 日，CatalpaCute重新开启服务器——即 Creating生存（五周目），并在酷安发布帖文。&lt;br /&gt;
&lt;br /&gt;
===新起点(2021.7-2022.8)===&lt;br /&gt;
&lt;br /&gt;
====五周目时期====&lt;br /&gt;
&lt;br /&gt;
发布帖文过后反向尚可，本次招新进入的玩家有 BenLi06、yyzy3911 等，且因“肥皂君”服务器停服，CatalpaCute 在征得同意后邀请了其群内的 HakimYu、shinanJPG、Fumikado 等人进入服务器。在群内商议下，服务器正式定名为由 HakimYu 建议的“Creating”。&lt;br /&gt;
&lt;br /&gt;
7 月 30 日前后，Creating生存（五周目）迎来 Creating 第二次玩家顶峰，CatalpaCute 允许玩家使用创造模式建设主城，由 BenLi06 主持并修建了&#039;&#039;&#039;滨海车站（五周目）、滨海 1 号线环线、临海公寓&#039;&#039;&#039;等，由 PCGAIR 与 linyushu520 修建了&#039;&#039;&#039;半山酒店&#039;&#039;&#039;，由 yyzy3911 修建了&#039;&#039;&#039;猪人塔&#039;&#039;&#039;，这些工程在当时的玩家中基本获得好评，尽管依旧有反对创造权限的抗议声。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;参见[[Creating重大事故#Creating重大事故:2021/7/31]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
然而，Creating生存（五周目） 却在 7 月 31 日晚，由于对服务器的错误设置和玩家的错误操作，服务器多次异常停止，但管理并未意识到问题之所在，在停止后重新启动服务器。最后约为 20:30 时服务器停止运行并无法再启动，后续 CatalpaCute 将存档导出发现其区块已损坏，本地运行仅可找到极少一部分的“遗迹”，据群内复盘得知当时有玩家所在的区块皆损坏。Creating生存（五周目）以遗憾告终。&lt;br /&gt;
&lt;br /&gt;
====六周目时期====&lt;br /&gt;
次日，BenLi06推荐了其服务器的地图种子，让 CatalpaCute创建地图后重新开启服务器，即Creating生存（六周目）。“初期”延续了五周目的创造开发政策。虽在一次事故后玩家对服务器的建设热情有所减弱，但“第二次玩家顶峰”基本延续到了 8 月中下旬。&lt;br /&gt;
&lt;br /&gt;
同五周目，玩家于海岸寻找了一片平原建设了公寓楼、车站等设施，并由 Meteorite 主持修建了 Central Park ，该区域逐步发展为今日[[滨海市]]。（猪人塔、“CreatingServer”灯牌、公寓等，基本与五周目相同）&lt;br /&gt;
&lt;br /&gt;
除重建五周目时期建筑外，滨海市也在寻找向外发展的机会，于滨海市东部 400 格左右的平原上设立&#039;&#039;&#039;副城&#039;&#039;&#039;（即今日[[甘地市]][[副城区]])作为住宅区，大力支持玩家在此建设自己的居所，yyzy3911 的木屋被多次复制，Meteorite、yushu、CatalpaCute 在副城的居所皆为其改造而成。CatalpaCute 与 BenLi06设计了一条从滨海主城到副城的铁路线，由滨海站经副城南站到副城站，全地下线路，即为今日[[滨海2号线]]。海花城际 C1 完工前，2号线一直为 Creating 中最高规格质量的铁路。后在机缘巧合下副城得名“甘地市”&#039;&#039;&#039;（与现实中人物无任何关联）&#039;&#039;&#039;，甘地新村、甘地南站等地名一直沿用至今。当时甘地市也迎来了蓬勃发展。后由 K3、BenLi06 与 Meteorite 合作修建了一条由滨海市东至甘地市双向六道的公路（今&#039;&#039;&#039;甘海公路&#039;&#039;&#039;），两侧设有货运线（6 号线 甘地新村 - 滨海粮仓，现已部分拆除）。&lt;br /&gt;
&lt;br /&gt;
====分服——生存六周目与创造一周目====&lt;br /&gt;
&lt;br /&gt;
根据“创造开发政策”的约定， 8 月 29 日“全员deop回归生存模式”。但当时有玩家提出可以使用这张地图的存档分开开设两个服务器，供生存玩家继续探索生电，而创造玩家可以继续建设。8 月 30 日最终采取后者即创造生存分服运作，也就造成如今此地图被称之为 Creating生存六周目/创造一周目。但后续生存服极少玩家进入游戏，在商议后决定听取 LIGHTNINGZYL 的建议重开新图作生存服，勉强挽留了生存玩家和游戏热情。&lt;br /&gt;
&lt;br /&gt;
====转向实体机+FRP开服模式====&lt;br /&gt;
&lt;br /&gt;
2021 年 9 月，yushu 和 BenLi06 提出可提供自己的家用电脑用作开服，提供算力缓解云主机压力，提升游戏体验。后大约在 10 月正式将服务器转移至实体机，使用原阿里云深圳服务器作 FRP 节点连接，后再增购一台腾讯云上海服务器用作 FRP。至此形成双主机双 FRP 运行的局面，此措施有效地减少了游戏中的卡顿问题，体验大大增加。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;参见：[[Creating重大事故#Creating重大事故:2021/11/25]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
在此期间也出现了严重的问题，11 月 25 日两台用于开服的电脑被&#039;&#039;&#039;勒索病毒入侵&#039;&#039;&#039;，导致电脑全部数据丢失，&#039;&#039;&#039;服务器存档被迫回档至上一次备份&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
因当时管理组重心主要放在了创造服，而生存服被生存玩家直接管理，出现了&#039;&#039;&#039;生存服与创造服的割裂现象&#039;&#039;&#039;,管理组对生存服缺少打理、不大关心，导致了生存服由 yushu &#039;&#039;&#039;直管且仅被其管&#039;&#039;&#039;，生存服创造服的玩家互不相识，且后在 Creating管理组 再度将服务器“上云”时 yushu 拒绝听从管理组号令、拒绝交出地图等。&lt;br /&gt;
&lt;br /&gt;
但不可否认的是 Creating 在这一时期发展超出预期，甘地市的广播电台、图书馆、WTC 等建筑皆为此时期建成，生存服、创造服的在线玩家数量及日活稳定，生存玩家热情高涨，多次在通关后更换地图起新周目（在此期间的地图工程组后以“Creating生存（yushu 时期 x 周目）计数”，有多生存玩家加入游戏。&lt;br /&gt;
&lt;br /&gt;
2021 年 11 月，[[《新海计划&amp;amp;花地计划》]]编写完成。12 月滨海新区（今[[南苑区]]）开工建造，同时设立新海市、花地市，开启了 Creating 发展的新篇章。&lt;br /&gt;
&lt;br /&gt;
在此期间，Creating 与 Railham 结为友好服务器，双方共设跨服设施。12 月开始在官方形式上向 uDays 合作，Creating 派出玩家协助 花都 - 叶原 的铁路修建，而 uDays 将退役的 UR3000、UR4000 赠予 Creating 使用。&lt;br /&gt;
&lt;br /&gt;
====见证英雄时期====&lt;br /&gt;
&lt;br /&gt;
2022 年 2 月，创造服因实体机性能不足再度上云，拥有更好性能的服务器后 Creating 加快了对铁路的建设，在周年庆前建设完成开通，可供 MCA 车型如“佐浦重工7100型”、UR3000 以 50 km/h 的速度运行。&lt;br /&gt;
&lt;br /&gt;
自 2022 年 2 月起，国内舆论氛围发生改变，群内聊天也逐渐出现了矛盾。而 3 月后上海市严加封控，各地管控措施加严，Creating 群内爆发不满情绪，多次使用“匿名聊天”功能议论国事，而服务器的建设变为缓慢。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;主条目：[[2263事件]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
2022 年 6 月 3 日晚，群内有成员发送 89 年 6 月 4 日中事件的影片截图，半小时后群聊被封禁，CatalpaCute、BenLi06、K3等多位群管被封号7天，Creating 临时使用旧群并组建新群重新发展。但此后群聊分为依然存在问题，直至 11 月才逐渐回归正常。&lt;br /&gt;
&lt;br /&gt;
此期间诞生了一个臭名昭著的工程——9 号线一期。从立项到开工仅用时三日，但隧道贯通全程用了半年之久，而施工开挖道路留下的坑洞至今仍未回填。而站点、轨道的建设直至 2025 年 3 月才完工开通，3 个站点用时 3 年，创造了“Creating奇迹”。&lt;br /&gt;
&lt;br /&gt;
2022 年 7 月，Creating 于花地市举办 2 周年庆。&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=Creating%E6%97%85%E8%A1%8C%E6%89%8B%E5%86%8C&amp;diff=4900</id>
		<title>Creating旅行手册</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=Creating%E6%97%85%E8%A1%8C%E6%89%8B%E5%86%8C&amp;diff=4900"/>
		<updated>2025-04-03T16:59:42Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​创建页面，内容为“&amp;#039;&amp;#039;&amp;#039;虽名为“旅行手册”，但实际就是Creating的各方面统编而成。我们撰写这一本“手册”，是为了让新玩家更易了解Creating的各方面，更好融入我们服的氛围&amp;#039;&amp;#039;&amp;#039;。  &amp;#039;&amp;#039;本手册由CatalpaCute、BenLi06、Meteorite、shinanJPG及小蜜糖柚子等工程组成员参与工作编写而成。&amp;#039;&amp;#039;  ==历史== 要谈及Creating的历史，必先认识几位关键的千代人物：现“服主”CatalpaCute、“名誉服主…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;虽名为“旅行手册”，但实际就是Creating的各方面统编而成。我们撰写这一本“手册”，是为了让新玩家更易了解Creating的各方面，更好融入我们服的氛围&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;本手册由CatalpaCute、BenLi06、Meteorite、shinanJPG及小蜜糖柚子等工程组成员参与工作编写而成。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==历史==&lt;br /&gt;
要谈及Creating的历史，必先认识几位关键的千代人物：现“服主”CatalpaCute、“名誉服主/旧服主”小蜜糖柚子、PCGAIR、Meteorite...以及当时的时代背景。&lt;br /&gt;
===前期(2019-2020.3)===&lt;br /&gt;
2020 年 1 月起，COVID-19 肆虐全球，中国大陆大部分范围内受到影响，大部分非毕业班的学生在四月中旬后才重返学校，而 Creating 就诞生于这段时间里面。&lt;br /&gt;
&lt;br /&gt;
CatalpaCute 于 2019 年 4 月左右重新接触到 Minecraft服务器（中国版），在云城服务器中学到了指令的基础，同时也惊叹于服务器中建筑之美。后与好友共开一服，但由于网易的限制，服务器存档无法导出，无法添加 mod、插件等，2020 年后甚至限制了服务器指令的使用，加之价格高昂，CatalpaCute 便萌生出开Minecraft基岩版(a.k.a 国际版)服务器的想法。但并未找到有其他志同道合之人一同游戏，寻找教程之路也异常艰辛。&lt;br /&gt;
===开服！早期(2020.4-2021.7)===&lt;br /&gt;
2 月中旬，CatalpaCute 于酷安招募帖子中加入了小蜜糖柚子的服务器，这一招募方式后面也被 Creating 继承所用。虽是网易服，但成员多对网易不满。3 月中服务器到期后，小蜜糖柚子因新限制无法续费，CatalpaCute 提议开一个“国际版服务器”的想法，获得了群内不少玩家的支持。3月下旬，CatalpaCute 在 xiayu 的帮助下第一次启动了服务端，并在推荐下购买了自己的服务器（阿里云学生机）及域名。&lt;br /&gt;
&lt;br /&gt;
CatalpaCute 开始将服务器信息发布在群内，吸引玩家进入，K3、小蜜糖柚子、丁仪、近月者等原于“MC”群内的成员，PCGAIR 等云城的成员以及 Meteorite等在酷安结识到的同龄人，被认为是服务器的第一批玩家。&lt;br /&gt;
&lt;br /&gt;
为何Creating的开服纪念日定于 4 月 4 日？2020 年 4 月 4 日，因部分原因全国游戏停服一日。在此之前，进入游戏的玩家零零散散，游戏积极性不高，而且服务器也多次更换地图，并没有一个固定的服务器性质。而 3 日晚商议后决定创建一个新的生存地图用于服务器，4 日各大厂游戏停服因此有了部分之前从未了解服务器的群成员也在此日加入游戏，而服务器也在这天迎来了第一次玩家顶峰，在线人数 5 人+，游戏时间也相对长，直至开学前都会有玩家进入服务器游戏，故也迎来了服务器的“第一次大开发”&lt;br /&gt;
&lt;br /&gt;
2020.6 - 2021.3的历史因存储介质丢失和[[2263事件]]难以考证。根据酷安动态&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=2263%E4%BA%8B%E4%BB%B6&amp;diff=4899</id>
		<title>2263事件</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=2263%E4%BA%8B%E4%BB%B6&amp;diff=4899"/>
		<updated>2025-04-03T15:29:40Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​重定向页面至Creating重大事故#Creating重大事故:2022/6/3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#重定向 [[Creating重大事故#Creating重大事故:2022/6/3]]&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E5%8D%97%E8%8B%91%E8%BD%A6%E7%AB%99&amp;diff=4898</id>
		<title>南苑车站</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E5%8D%97%E8%8B%91%E8%BD%A6%E7%AB%99&amp;diff=4898"/>
		<updated>2025-01-26T15:06:47Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​/* 一代站（2021.12-2022.12） */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;此条目的主题不是与南苑机场空铁联运的铁路站点“2号线[[南苑机场站]]”及“C2、C4[[滨海北站]]”&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
南苑车站（Nanyuan Railway Station），旧称滨海南苑站、滨海新站，位于滨海市南苑区，是由滨海铁路局管辖的特等车站，途径铁路线路为[[C2滨海环线]]、[[C3花海线]]、[[C4海花城际]]，城际场规模为4台6线。&lt;br /&gt;
&lt;br /&gt;
==历史==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===一代站（2021.12-2022.12）===&lt;br /&gt;
&lt;br /&gt;
南苑车站最早出现于 2021 年 11 月由 CatalpaCute 撰写的[[《新海计划&amp;amp;花地计划》]]中，当时计划新建一条由滨海东部前往新规划[[新海市]]的[[新海快线]]和新海至花地的“新花城际”。后经商讨合二为一成[[海花城际]]。2021 年 12 月，新站点以滨海新站为名开工后随滨海东部新设南苑区而定下新名“滨海南苑站”，约 2022 年 3 月建成基本架构与站台层，能够接发运行于 C1 的列车。2022 年 8 月举行的Creating二周年庆活动也于此开始，第一项活动就为由滨海南苑搭乘当时运行于 C1 的悠日铁道400系前往花地。&lt;br /&gt;
&lt;br /&gt;
一代站无疑是 Creating 高标准城际铁道梦的开始，与其同步建设的 C1 质量也高于现如今使用MTR MOD暴力建造的铁路，但一代站也存在着诸多严重的问题：&lt;br /&gt;
&lt;br /&gt;
1.站台灯光偏暗，墙体偏黑，灯光偏暖色调，使用光影后体验较差，可见度低。&lt;br /&gt;
&lt;br /&gt;
2.站台及轨道缺乏规划，导致 C1 与后建设的 C2 有所冲突，也决定了南苑站的站台站场结构，此问题遗留至今。&lt;br /&gt;
&lt;br /&gt;
3.站台层(3F)与地面层(1F)直至 2022 年 7 月都无楼梯/升降电梯予以连接，7 月底因周年庆活动和拍摄宣传片需要而临时搭建一条由C1站台下地面的楼梯，但极其简陋，视觉效果及使用效果都极差。负责南苑站建设的成员也被部分工程组元老成员及玩家批评。&lt;br /&gt;
&lt;br /&gt;
4.缺乏标识。&lt;br /&gt;
&lt;br /&gt;
2022 年 8 月，Creating加入悠日计划，而 10 月后转为 Java 服务器。12 月疫情全面放开，工程组大部分学生得以回家进行网课学习，故拥有了更多空余时间。BenLi06 宣布将滨海南苑站重建，以改善一代站反映出来的问题，并更适合 Java 的 MTR 模组使用。&lt;br /&gt;
&lt;br /&gt;
===二代站（2022.12至今）===&lt;br /&gt;
&lt;br /&gt;
受？，Ben决定以此为模板参考重建滨海南苑站，2022 年 12 月，滨海南苑站及上盖TOD项目，除站台结构保留供参考，其余全部被拆除。此次改造的操作被评为“Creating史上最彻底的改造工作”，也被视为Creating对MTR模组及后续发展的决心，与悠日计划各服务器联合的向往，对融入一体化的决心。&lt;br /&gt;
&lt;br /&gt;
约 23 年 1 月下旬，滨海南苑站完成站体建设，其中站东侧外立面由玩家 shinanJPG 设计建造，站内 MTR 模组由CatalpaCute 布置。&lt;br /&gt;
&lt;br /&gt;
23 年 8 月（？）完成全部建设工作，且线路标识齐全，大部分一代站反映出的问题被解决，乘车体验大幅提升。同期，为避免玩家对地名认知不清，站名混乱，由Creating工程组开展了地名更改的工作，“滨海南苑站”被去除市级名称，直接称以“南苑车站”(Nanyuan Railway Station)。&lt;br /&gt;
&lt;br /&gt;
==站场==&lt;br /&gt;
&lt;br /&gt;
南苑站城际场规模为4台6线（双岛双侧），因站点等级极高，不设越行线；且皆为客运专用，不设货场。截至 2024 年 11 月，所有经过南苑站的列车均在此停靠。&lt;br /&gt;
&lt;br /&gt;
城际场自西向东分别为 C4/C2/C3 下行， C3/C2/C4下行。&lt;br /&gt;
&lt;br /&gt;
除城际场外，南苑站也有多条地铁接入，滨海 2 号线由地下接入， 滨海 7 号线在南苑站南端新建平台接入，滨海 5 号线（矿车）在南苑站二层接入。故南苑站目前总共接入六条线路，总规模为9台12线。&lt;br /&gt;
&lt;br /&gt;
==设计初衷==&lt;br /&gt;
&lt;br /&gt;
南苑站在规划中名为滨海新站，2021 年 11 月时 Creating 规划修建城际铁路，而现有滨海站位于市中心，四周已有建筑且设立了保护区，不便于扩建，彼时计划使用 RTMBE、MCA模组及光速船，对线路的曲直、高度差要求较高。故 BenLi06 与 CatalpaCute最终选定在滨海南部的荒地进行改造，在此修建新客站，同步建设前往新都新海及旅游区花地的铁路。&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%BB%A8%E6%B5%B7%E6%96%B0%E5%AE%A2%E7%AB%99&amp;diff=4897</id>
		<title>滨海新客站</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%BB%A8%E6%B5%B7%E6%96%B0%E5%AE%A2%E7%AB%99&amp;diff=4897"/>
		<updated>2024-12-03T05:04:38Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​重定向页面至南苑车站&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#重定向 [[南苑车站]]&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%96%B0%E6%B5%B7%E5%B8%82&amp;diff=4888</id>
		<title>新海市</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%96%B0%E6%B5%B7%E5%B8%82&amp;diff=4888"/>
		<updated>2024-11-26T10:25:56Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;本词条仅为Creating管辖范围内&#039;&#039;&#039;新海市&#039;&#039;&#039;的词条，如需查看归属&#039;&#039;&#039;小刘的游戏日常&#039;&#039;&#039;的&#039;&#039;&#039;新海县&#039;&#039;&#039;，请重定向至[[新海县]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;新海市(Xinhai City)&#039;&#039;&#039;，服内一般简称为新海，由滨海市东南方向海上的部分岛屿及填海造陆组成。主要城区有&#039;&#039;&#039;澄海区、原海区&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
新海最初规划与2021年11月，后因观感等问题改变2次中心区所在，目前新海市已开始建设。&lt;br /&gt;
&lt;br /&gt;
==新海轨道交通==&lt;br /&gt;
&lt;br /&gt;
管辖新海市轨道交通的铁路公司为&#039;&#039;&#039;CR新海&#039;&#039;&#039;&lt;br /&gt;
===主要车站===&lt;br /&gt;
&lt;br /&gt;
新海站、原海站&lt;br /&gt;
&lt;br /&gt;
===线路===&lt;br /&gt;
&lt;br /&gt;
目前新海1号线、2号线已经规划完成，但直至本wiki修改之时尚未开工建设。&lt;br /&gt;
&lt;br /&gt;
海花城际新海市内段已建设完毕。&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E5%8D%97%E8%8B%91%E8%BD%A6%E7%AB%99&amp;diff=4887</id>
		<title>南苑车站</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E5%8D%97%E8%8B%91%E8%BD%A6%E7%AB%99&amp;diff=4887"/>
		<updated>2024-11-26T10:25:24Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;此条目的主题不是与南苑机场空铁联运的铁路站点“2号线[[南苑机场站]]”及“C2、C4[[滨海北站]]”&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
南苑车站（Nanyuan Railway Station），旧称滨海南苑站、滨海新站，位于滨海市南苑区，是由滨海铁路局管辖的特等车站，途径铁路线路为[[C2滨海环线]]、[[C3花海线]]、[[C4海花城际]]，城际场规模为4台6线。&lt;br /&gt;
&lt;br /&gt;
===历史===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====一代站（2021.12-2022.12）====&lt;br /&gt;
&lt;br /&gt;
南苑车站最早出现于 2021 年 11 月由 CatalpaCute 撰写的[[《新海计划&amp;amp;花地计划》]]中，当时计划新建一条由滨海东部前往新规划[[新海市]]的[[新海快线]]和新海至花地的“新花城际”。后经商讨合二为一成[[海花城际]]。2021 年 12 月，新站点以滨海新站为名开工后随滨海东部新设南苑区而定下新名“滨海南苑站”，约 2022 年 3 月建成基本架构与站台层，能够接发运行于 C1 的列车。2022 年 8 月举行的Creating二周年庆活动也于此开始，第一项活动就为由滨海南苑搭乘当时运行于 C1 的悠日铁道400系前往花地。&lt;br /&gt;
&lt;br /&gt;
一代站无疑是Creating高标准城际铁道梦的开始，与其同步建设的 C1 质量也高于现如今使用MTR MOD暴力建造的铁路，但一代站也存在着诸多严重的问题：&lt;br /&gt;
&lt;br /&gt;
1.站台灯光偏暗，墙体偏黑，灯光偏暖色调，使用光影后体验较差，可见度低。&lt;br /&gt;
2.站台及轨道缺乏规划，导致 C1 与后建设的 C2 有所冲突，也决定了南苑站的站台站场结构，此问题遗留至今。&lt;br /&gt;
3.站台层(3F)与地面层(1F)直至 2022 年 7 月都无楼梯/升降电梯予以连接，7月底因周年庆活动和拍摄宣传片需要而临时搭建一条由C1站台下地面的楼梯，但极其简陋，视觉效果及使用效果都极差。负责南苑站建设的成员也被部分工程组元老成员及玩家批评。&lt;br /&gt;
4.缺乏标识。&lt;br /&gt;
&lt;br /&gt;
2022 年 8 月，Creating加入悠日计划，而10 月后转为Java服务器。12 月疫情全面放开，工程组大部分学生得以回家进行网课学习，故拥有了更多空余时间。BenLi06 宣布将滨海南苑站重建，以改善一代站反映出来的问题，并更适合Java的MTR模组使用。&lt;br /&gt;
&lt;br /&gt;
====二代站（2022.12至今）====&lt;br /&gt;
&lt;br /&gt;
受？，Ben决定以此为模板参考重建滨海南苑站，2022 年 12 月，滨海南苑站及上盖TOD项目，除站台结构保留供参考，其余全部被拆除。此次改造的操作被评为“Creating史上最彻底的改造工作”，也被视为Creating对MTR模组及后续发展的决心，与悠日计划各服务器联合的向往，对融入一体化的决心。&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E6%BB%A8%E6%B5%B7%E5%8D%97%E8%8B%91%E7%AB%99&amp;diff=4886</id>
		<title>滨海南苑站</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E6%BB%A8%E6%B5%B7%E5%8D%97%E8%8B%91%E7%AB%99&amp;diff=4886"/>
		<updated>2024-11-26T10:24:44Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​重定向页面至南苑车站&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#重定向 [[南苑车站]]&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E5%8D%97%E8%8B%91%E8%BD%A6%E7%AB%99&amp;diff=4885</id>
		<title>南苑车站</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E5%8D%97%E8%8B%91%E8%BD%A6%E7%AB%99&amp;diff=4885"/>
		<updated>2024-11-26T10:23:34Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;此条目的主题不是与南苑机场空铁联运的铁路站点“2号线[[南苑机场站]]”及“C2、C4[[滨海北站]]”&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
南苑车站（Nanyuan Railway Station），旧称滨海南苑站、滨海新站，位于滨海市南苑区，是由滨海铁路局管辖的特等车站，途径铁路线路为[[C2滨海环线]]、[[C3花海线]]、[[C4海花城际]]，城际场规模为4台6线。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===历史===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====一代站（2021.12-2022.12）====&lt;br /&gt;
&lt;br /&gt;
南苑车站最早出现于 2021 年 11 月由 CatalpaCute 撰写的[[《新海计划&amp;amp;花地计划》]]中，当时计划新建一条由滨海东部前往新规划[[新海市]]的[[新海快线]]和新海至花地的“新花城际”。后经商讨合二为一成[[海花城际]]。2021 年 12 月，新站点以滨海新站为名开工后随滨海东部新设南苑区而定下新名“滨海南苑站”，约 2022 年 3 月建成基本架构与站台层，能够接发运行于 C1 的列车。2022 年 8 月举行的Creating二周年庆活动也于此开始，第一项活动就为由滨海南苑搭乘当时运行于 C1 的悠日铁道400系前往花地。&lt;br /&gt;
&lt;br /&gt;
一代站无疑是Creating高标准城际铁道梦的开始，与其同步建设的 C1 质量也高于现如今使用MTR MOD暴力建造的铁路，但一代站也存在着诸多严重的问题：&lt;br /&gt;
&lt;br /&gt;
1.站台灯光偏暗，墙体偏黑，灯光偏暖色调，使用光影后体验较差，可见度低。&lt;br /&gt;
2.站台及轨道缺乏规划，导致 C1 与后建设的 C2 有所冲突，也决定了南苑站的站台站场结构，此问题遗留至今。&lt;br /&gt;
3.站台层(3F)与地面层(1F)直至 2022 年 7 月都无楼梯/升降电梯予以连接，7月底因周年庆活动和拍摄宣传片需要而临时搭建一条由C1站台下地面的楼梯，但极其简陋，视觉效果及使用效果都极差。负责南苑站建设的成员也被部分工程组元老成员及玩家批评。&lt;br /&gt;
4.缺乏标识。&lt;br /&gt;
&lt;br /&gt;
2022 年 8 月，Creating加入悠日计划，而10 月后转为Java服务器。12 月疫情全面放开，工程组大部分学生得以回家进行网课学习，故拥有了更多空余时间。BenLi06 宣布将滨海南苑站重建，以改善一代站反映出来的问题，并更适合Java的MTR模组使用。&lt;br /&gt;
&lt;br /&gt;
====二代站（2022.12至今）====&lt;br /&gt;
&lt;br /&gt;
受？，Ben决定以此为模板参考重建滨海南苑站，2022 年 12 月，滨海南苑站及上盖TOD项目，除站台结构保留供参考，其余全部被拆除。此次改造的操作被评为“Creating史上最彻底的改造工作”，也被视为Creating对MTR模组及后续发展的决心，与悠日计划各服务器联合的向往，对融入一体化的决心。&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E5%8D%97%E8%8B%91%E8%BD%A6%E7%AB%99&amp;diff=4884</id>
		<title>南苑车站</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E5%8D%97%E8%8B%91%E8%BD%A6%E7%AB%99&amp;diff=4884"/>
		<updated>2024-11-26T10:23:09Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​/* 一代站（2021/12-2022.12） */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;此条目的主题不是与南苑机场空铁联运的铁路站点“2号线[[南苑机场站]]”及“C2、C4[[滨海北站]]。”&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
南苑车站（Nanyuan Railway Station），旧称滨海南苑站、滨海新站，位于滨海市南苑区，是由滨海铁路局管辖的特等车站，途径铁路线路为[[C2滨海环线]]、[[C3花海线]]、[[C4海花城际]]，城际场规模为4台6线。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===历史===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====一代站（2021.12-2022.12）====&lt;br /&gt;
&lt;br /&gt;
南苑车站最早出现于 2021 年 11 月由 CatalpaCute 撰写的[[《新海计划&amp;amp;花地计划》]]中，当时计划新建一条由滨海东部前往新规划[[新海市]]的[[新海快线]]和新海至花地的“新花城际”。后经商讨合二为一成[[海花城际]]。2021 年 12 月，新站点以滨海新站为名开工后随滨海东部新设南苑区而定下新名“滨海南苑站”，约 2022 年 3 月建成基本架构与站台层，能够接发运行于 C1 的列车。2022 年 8 月举行的Creating二周年庆活动也于此开始，第一项活动就为由滨海南苑搭乘当时运行于 C1 的悠日铁道400系前往花地。&lt;br /&gt;
&lt;br /&gt;
一代站无疑是Creating高标准城际铁道梦的开始，与其同步建设的 C1 质量也高于现如今使用MTR MOD暴力建造的铁路，但一代站也存在着诸多严重的问题：&lt;br /&gt;
&lt;br /&gt;
1.站台灯光偏暗，墙体偏黑，灯光偏暖色调，使用光影后体验较差，可见度低。&lt;br /&gt;
2.站台及轨道缺乏规划，导致 C1 与后建设的 C2 有所冲突，也决定了南苑站的站台站场结构，此问题遗留至今。&lt;br /&gt;
3.站台层(3F)与地面层(1F)直至 2022 年 7 月都无楼梯/升降电梯予以连接，7月底因周年庆活动和拍摄宣传片需要而临时搭建一条由C1站台下地面的楼梯，但极其简陋，视觉效果及使用效果都极差。负责南苑站建设的成员也被部分工程组元老成员及玩家批评。&lt;br /&gt;
4.缺乏标识。&lt;br /&gt;
&lt;br /&gt;
2022 年 8 月，Creating加入悠日计划，而10 月后转为Java服务器。12 月疫情全面放开，工程组大部分学生得以回家进行网课学习，故拥有了更多空余时间。BenLi06 宣布将滨海南苑站重建，以改善一代站反映出来的问题，并更适合Java的MTR模组使用。&lt;br /&gt;
&lt;br /&gt;
====二代站（2022.12至今）====&lt;br /&gt;
&lt;br /&gt;
受？，Ben决定以此为模板参考重建滨海南苑站，2022 年 12 月，滨海南苑站及上盖TOD项目，除站台结构保留供参考，其余全部被拆除。此次改造的操作被评为“Creating史上最彻底的改造工作”，也被视为Creating对MTR模组及后续发展的决心，与悠日计划各服务器联合的向往，对融入一体化的决心。&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E5%8D%97%E8%8B%91%E8%BD%A6%E7%AB%99&amp;diff=4883</id>
		<title>南苑车站</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E5%8D%97%E8%8B%91%E8%BD%A6%E7%AB%99&amp;diff=4883"/>
		<updated>2024-11-26T10:21:10Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​撤销CatalpaCute（讨论）的修订版本4880&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;此条目的主题不是与南苑机场空铁联运的铁路站点“2号线[[南苑机场站]]”及“C2、C4[[滨海北站]]。”&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
南苑车站（Nanyuan Railway Station），旧称滨海南苑站、滨海新站，位于滨海市南苑区，是由滨海铁路局管辖的特等车站，途径铁路线路为[[C2滨海环线]]、[[C3花海线]]、[[C4海花城际]]，城际场规模为4台6线。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===历史===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====一代站（2021/12-2022.12）====&lt;br /&gt;
&lt;br /&gt;
南苑车站最早出现于2021年11月由 CatalpaCute 撰写的[[《新海计划&amp;amp;花地计划》]]中，当时计划新建一条由滨海东部前往新规划[[新海市]]的[[新海快线]]和新海至花地的“新花城际”。后经商讨合二为一成[[海花城际]]。2021年12月，新站点以滨海新站为名开工后随滨海东部新设南苑区而定下新名“滨海南苑站”，约2022年3月建成基本架构与站台层，能够接发运行于C1的列车。2022年8月举行的Creating二周年庆活动也于此开始，第一项活动就为由滨海南苑搭乘当时运行于C1的悠日铁道400系前往花地。&lt;br /&gt;
&lt;br /&gt;
一代站无疑是Creating高标准城际铁道梦的开始，与其同步建设的C1质量也高于现如今使用MTR MOD暴力建造的铁路，但一代站也存在着诸多严重的问题：&lt;br /&gt;
&lt;br /&gt;
1.站台灯光偏暗，墙体偏黑，灯光偏暖色调，使用光影后体验较差，可见度低。&lt;br /&gt;
2.站台及轨道缺乏规划，导致C1与后建设的C2有所冲突，也决定了南苑站的站台站场结构，此问题遗留至今。&lt;br /&gt;
3.站台层(3F)与地面层(1F)直至2022年7月都无楼梯/升降电梯予以连接，7月底因周年庆活动和拍摄宣传片需要而临时搭建一条由C1站台下地面的楼梯，但极其简陋，视觉效果及使用效果都极差。负责南苑站建设的成员也被部分工程组元老成员及玩家批评。&lt;br /&gt;
4.缺乏标识。&lt;br /&gt;
&lt;br /&gt;
2022 年 8 月，Creating加入悠日计划，而10月后转为Java服务器。12 月疫情全面放开，工程组大部分学生得以回家进行网课学习，故拥有了更多空余时间。BenLi06 宣布将滨海南苑站重建，以改善一代站反映出来的问题，并更适合Java的MTR模组使用。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====二代站（2022.12至今）====&lt;br /&gt;
&lt;br /&gt;
受？，Ben决定以此为模板参考重建滨海南苑站，2022 年 12 月，滨海南苑站及上盖TOD项目，除站台结构保留供参考，其余全部被拆除。此次改造的操作被评为“Creating史上最彻底的改造工作”，也被视为Creating对MTR模组及后续发展的决心，与悠日计划各服务器联合的向往，对融入一体化的决心。&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E5%8D%97%E8%8B%91%E7%AB%99&amp;diff=4882</id>
		<title>南苑站</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E5%8D%97%E8%8B%91%E7%AB%99&amp;diff=4882"/>
		<updated>2024-11-26T10:18:37Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​CatalpaCute移动页面南苑站至南苑车站：​重定向&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#重定向 [[南苑车站]]&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E5%8D%97%E8%8B%91%E8%BD%A6%E7%AB%99&amp;diff=4881</id>
		<title>南苑车站</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E5%8D%97%E8%8B%91%E8%BD%A6%E7%AB%99&amp;diff=4881"/>
		<updated>2024-11-26T10:18:37Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​CatalpaCute移动页面南苑站至南苑车站：​重定向&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;南苑站&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E5%8D%97%E8%8B%91%E8%BD%A6%E7%AB%99&amp;diff=4880</id>
		<title>南苑车站</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E5%8D%97%E8%8B%91%E8%BD%A6%E7%AB%99&amp;diff=4880"/>
		<updated>2024-11-26T10:17:12Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​创建页面，内容为“南苑站”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;南苑站&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=%E5%8D%97%E8%8B%91%E8%BD%A6%E7%AB%99&amp;diff=4879</id>
		<title>南苑车站</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=%E5%8D%97%E8%8B%91%E8%BD%A6%E7%AB%99&amp;diff=4879"/>
		<updated>2024-11-26T10:13:25Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;此条目的主题不是与南苑机场空铁联运的铁路站点“2号线[[南苑机场站]]”及“C2、C4[[滨海北站]]。”&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
南苑车站（Nanyuan Railway Station），旧称滨海南苑站、滨海新站，位于滨海市南苑区，是由滨海铁路局管辖的特等车站，途径铁路线路为[[C2滨海环线]]、[[C3花海线]]、[[C4海花城际]]，城际场规模为4台6线。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===历史===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====一代站（2021/12-2022.12）====&lt;br /&gt;
&lt;br /&gt;
南苑车站最早出现于2021年11月由 CatalpaCute 撰写的[[《新海计划&amp;amp;花地计划》]]中，当时计划新建一条由滨海东部前往新规划[[新海市]]的[[新海快线]]和新海至花地的“新花城际”。后经商讨合二为一成[[海花城际]]。2021年12月，新站点以滨海新站为名开工后随滨海东部新设南苑区而定下新名“滨海南苑站”，约2022年3月建成基本架构与站台层，能够接发运行于C1的列车。2022年8月举行的Creating二周年庆活动也于此开始，第一项活动就为由滨海南苑搭乘当时运行于C1的悠日铁道400系前往花地。&lt;br /&gt;
&lt;br /&gt;
一代站无疑是Creating高标准城际铁道梦的开始，与其同步建设的C1质量也高于现如今使用MTR MOD暴力建造的铁路，但一代站也存在着诸多严重的问题：&lt;br /&gt;
&lt;br /&gt;
1.站台灯光偏暗，墙体偏黑，灯光偏暖色调，使用光影后体验较差，可见度低。&lt;br /&gt;
2.站台及轨道缺乏规划，导致C1与后建设的C2有所冲突，也决定了南苑站的站台站场结构，此问题遗留至今。&lt;br /&gt;
3.站台层(3F)与地面层(1F)直至2022年7月都无楼梯/升降电梯予以连接，7月底因周年庆活动和拍摄宣传片需要而临时搭建一条由C1站台下地面的楼梯，但极其简陋，视觉效果及使用效果都极差。负责南苑站建设的成员也被部分工程组元老成员及玩家批评。&lt;br /&gt;
4.缺乏标识。&lt;br /&gt;
&lt;br /&gt;
2022 年 8 月，Creating加入悠日计划，而10月后转为Java服务器。12 月疫情全面放开，工程组大部分学生得以回家进行网课学习，故拥有了更多空余时间。BenLi06 宣布将滨海南苑站重建，以改善一代站反映出来的问题，并更适合Java的MTR模组使用。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====二代站（2022.12至今）====&lt;br /&gt;
&lt;br /&gt;
受？，Ben决定以此为模板参考重建滨海南苑站，2022 年 12 月，滨海南苑站及上盖TOD项目，除站台结构保留供参考，其余全部被拆除。此次改造的操作被评为“Creating史上最彻底的改造工作”，也被视为Creating对MTR模组及后续发展的决心，与悠日计划各服务器联合的向往，对融入一体化的决心。&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=Creating%E7%8E%A9%E5%AE%B6%E5%9F%BA%E6%9C%AC%E6%B3%95%E6%A1%88&amp;diff=4875</id>
		<title>Creating玩家基本法案</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=Creating%E7%8E%A9%E5%AE%B6%E5%9F%BA%E6%9C%AC%E6%B3%95%E6%A1%88&amp;diff=4875"/>
		<updated>2024-11-22T02:59:58Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Creating现已加入悠日计划，我们重新定制《Creating玩家基本法案》，以制约部分玩家不合规的行为。——CatalpaCute&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
为了维护 Creating 建设的有序，并为保障所有 Creating 玩家的品质，任何 Creating 玩家必须同意《Creating玩家基本法案》当下发行版本方可游玩 Creating。&lt;br /&gt;
&lt;br /&gt;
==历史==&lt;br /&gt;
《Creating玩家基本法案》前身为《Creating玩家基本规则》(2022.1颁布)、由&#039;&#039;&#039;小蜜糖柚子(ayear)&#039;&#039;&#039;制定的群公告。法案在基本规则与群公告的基础上修改并添加了更多信息。&lt;br /&gt;
&lt;br /&gt;
==正文==&lt;br /&gt;
---现最新版本为 Creating玩家基本法案2411&lt;br /&gt;
&lt;br /&gt;
Creating是遵循 Mojang EULA 的 Minecraft 基岩平台第三⽅服务器，是以轨道交通、城镇建设为中心的创造服务器，以和平相处、实现共产为目标的生存服。&lt;br /&gt;
&lt;br /&gt;
一、 游戏&lt;br /&gt;
您成功进入主群，代表您已获得CreatingServer(Creative与Survival)的基本游玩资格，您仅需阅读公告即可进入Creating。&lt;br /&gt;
请和他人友好相处、友好交流，不要破坏别人的劳作，建议改群昵称为游戏ID，有问题可以找管理，你可以自己独自发展，也可以选择和大家一起发展，共享资源。如果发现有op或者外挂等危害服务器行为请截图或者视频向管理员或者群主举报，最后，祝你游玩快乐。&lt;br /&gt;
如发现有破坏服务器(包括但不限于外挂)等行为，我们将酌情进行处罚。&lt;br /&gt;
我们也非常重视玩家游戏体验，我们欢迎您在游戏过程中对我们提出建议，我们会尽可能的采纳&lt;br /&gt;
&lt;br /&gt;
二、 群内聊天&lt;br /&gt;
在主群，您可以自由地与他人聊天 (除血腥暴力等内容)，可以是我的世界Minecraft，甚至是荒野乱斗BrawlStars。&lt;br /&gt;
聊天过程中，如果有与对方不同的意见，除非您有绝对的信心自己是正确的，否则请您在网络上搜寻结果，对比自己的观点是否正确再进行争论。&lt;br /&gt;
您如与他人发生争执，我们会查看聊天记录并对涉事者酌情禁言。无缘无故骂人，无缘无故发送流汗黄豆等含有特殊意义的表情我们将最高进行清退。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
三、 邀请玩家&lt;br /&gt;
我们非常欢迎现有玩家邀请您的朋友等加入Creating，如果是优质玩家，我们更加感激，值得注意的是您不能直接将Creating的IP/端口直接分享给未进群的玩家，如有发现，您可能会受到处罚。&lt;br /&gt;
如何正确邀请玩家？您应将Creating审核群分享给您要邀请的人，待管理审核后即可进入主群。&lt;br /&gt;
&lt;br /&gt;
四、 捐赠&lt;br /&gt;
我们接受您的捐赠，但您捐赠后并不会在服务器内收到特别的待遇，您的捐赠我们将用于服务器升级、购买插件等。&lt;br /&gt;
&lt;br /&gt;
五、服务器的正确游玩方式&lt;br /&gt;
       若您要加入创造服，请寻找管理员为您添加白名单，生存服直接进入即可。&lt;br /&gt;
       我们建议您同时进入Creating的公告群、CreatingQQ频道&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
	<entry>
		<id>https://wiki.czzzz.work/index.php?title=Creating%E9%87%8D%E5%A4%A7%E4%BA%8B%E6%95%85&amp;diff=4874</id>
		<title>Creating重大事故</title>
		<link rel="alternate" type="text/html" href="https://wiki.czzzz.work/index.php?title=Creating%E9%87%8D%E5%A4%A7%E4%BA%8B%E6%95%85&amp;diff=4874"/>
		<updated>2024-11-19T10:05:22Z</updated>

		<summary type="html">&lt;p&gt;CatalpaCute：​/* 重大事故:2022/6/3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本文为记载[[CreatingServer]]中重大事故的词条&lt;br /&gt;
&lt;br /&gt;
==Creating重大事故:2021/7/31==&lt;br /&gt;
&lt;br /&gt;
7月31日，Creating生存(五周目)开服三天，玩家对于建设服务器仍然热情高涨，经常能看见服务器里有玩家在线。&lt;br /&gt;
&lt;br /&gt;
晚上大约八点时，全部在线玩家突然与服务器断开连接，CatalpaCute本以为只是一次小崩服，但ssh连接上服务器后发现无法开启服务器。&lt;br /&gt;
&lt;br /&gt;
调查后发现为宝塔面板自动任务中设置了备份，热备份导致地图损坏。&lt;br /&gt;
&lt;br /&gt;
===事故主要原因及后续===&lt;br /&gt;
&lt;br /&gt;
1)服务器人数设置为了114514人&lt;br /&gt;
&lt;br /&gt;
2)BDS热备份地图损坏&lt;br /&gt;
&lt;br /&gt;
Creating生存(六周末)在当天晚上开启。&lt;br /&gt;
&lt;br /&gt;
==Creating重大事故:2021/8/29==&lt;br /&gt;
&lt;br /&gt;
因&#039;&#039;&#039;创造建设时期&#039;&#039;&#039;政策，Creating当时仅有一个服务器。&lt;br /&gt;
&lt;br /&gt;
8月29日晚，一位玩家进入服务器后并无发现服务器有哪里不对劲，但当他尝试修改&#039;&#039;&#039;CatalpaCute所建设的滨海市政楼&#039;&#039;&#039;时，发现其一楼有几个地方无法放置方块，遂向Creating工程组反馈。&lt;br /&gt;
&lt;br /&gt;
3位隶属于Creating工程组的玩家上线进行调查，在滨海市南（今南苑-滨海桥）处发现了不明方块以及一个箱子，内部放有&#039;&#039;&#039;代理机器人(agent)&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
经查询MinecraftWiki，确认为有玩家在滨海市政楼放置了代理机器人，但代理机器人本当为教育版独有，基岩平台上寻找了几种方法均无法消灭，直至今日仍未清除。&lt;br /&gt;
&lt;br /&gt;
Creating工程组立即查看当天服务器日志，但没有发现可疑人员，无法直接对当日进入的所有玩家进行清退，故事件并未得到真正解决。&lt;br /&gt;
&lt;br /&gt;
===事故主要原因及后续===&lt;br /&gt;
&lt;br /&gt;
没有装置反作弊插件&lt;br /&gt;
&lt;br /&gt;
进服手续加紧&lt;br /&gt;
&lt;br /&gt;
==Creating重大事故:2021/11/25==&lt;br /&gt;
&lt;br /&gt;
[[File:frp1125.png|200px|thumb|frp被攻击部分截图。]]&lt;br /&gt;
&lt;br /&gt;
11月25日时，创造服与生存服为&#039;&#039;&#039;BenLi06与linyushu520&#039;&#039;&#039;分别管理，使用个人电脑开服，frp映射到公网开放游戏。&lt;br /&gt;
&lt;br /&gt;
午时，yushu回家与往常一样打开电脑，但是进入系统后，却发现壁纸变为黑色，桌面上的文件全被加密且有一窗口弹出，yushu意识到电脑中了勒索病毒。随即向Creating群中报告了这一件事并寻找解决方法，但尝试多种方法均无果，故放弃数据重装系统。&lt;br /&gt;
&lt;br /&gt;
CatalpaCute收到信息时已是傍晚，随即与yushu一同寻找解决方案并尝试连接BenLi06开服使用的Surface3，RDP连接失败但是Todesk成功连接，没有例外的文件也是全部被加密，且在一次重启后无法再次连接。&lt;br /&gt;
&lt;br /&gt;
创造服：回档至2021/11/5的存档 ； 生存服：放弃旧存档重新开服&lt;br /&gt;
&lt;br /&gt;
===事故主要原因及后续===&lt;br /&gt;
&lt;br /&gt;
Windows账户为默认的Administrator且使用弱密码(12345678),FRP没有以正确方式设置token可以直接连接。&lt;br /&gt;
&lt;br /&gt;
创造服惨遭重创，玩家有一定的愤怒与惋惜的情绪，当月工程在2022/1全部重新恢复。&lt;br /&gt;
&lt;br /&gt;
==Creating重大事故:2022/6/3==&lt;br /&gt;
&lt;br /&gt;
6月3日晚，因部分玩家在&#039;&#039;&#039;Creating今天崩什么&#039;&#039;&#039;(即Creating对外大群)中发送了政治敏感等不合时宜的图片、链接，导致群被永久封禁，CatalpaCute、BenLi06和k3被封禁7天。&lt;br /&gt;
&lt;br /&gt;
===事故主要原因及后续===&lt;br /&gt;
&lt;br /&gt;
在不合适的时间发布政治敏感内容&lt;br /&gt;
&lt;br /&gt;
Creating创建新群，60%以上的玩家被重新邀请进群&lt;/div&gt;</summary>
		<author><name>CatalpaCute</name></author>
	</entry>
</feed>