From 82627a18b3e065f7c00a11ce5274f1f3d93918e6 Mon Sep 17 00:00:00 2001
From: akihofuyuka <252703622+akihofuyuka@users.noreply.github.com>
Date: Sun, 8 Nov 2026 23:22:02 +0800
Subject: [PATCH] feat(i18n): add multi-language support (13 locales) and
Simplified Chinese documentation
- Configure i18n support in docusaurus.config.js matching TEdit 5's 13 locales: en, zh-Hans, zh-Hant, ar, de, es, fr, it, ja, ko, pl, pt-BR, ru.
- Add locale dropdown selector to navbar and enable bilingual local search.
- Translate all UI component strings and categories for Simplified Chinese.
- Provide complete, verified Simplified Chinese documentation (38 markdown pages) covering all TEdit 5 features, interface tools, sidebar panels, and full scripting API.
- Align terminology with TEdit's official Language.zh-Hans.resx and Terraria zh-Hans data.
---
docusaurus.config.js | 76 +-
i18n/zh-Hans/code.json | 364 +++++
.../current.json | 46 +
.../current/advanced/api-reference.md | 762 ++++++++++
.../current/advanced/auto-update.md | 37 +
.../advanced/corrupted-world-recovery.md | 29 +
.../current/advanced/image-schematics.md | 23 +
.../current/advanced/scripting-guide.md | 1237 +++++++++++++++++
.../current/advanced/troubleshooting.md | 73 +
.../current/configuration/keybindings.md | 81 ++
.../current/configuration/localization.md | 38 +
.../configuration/saves-and-backups.md | 49 +
.../current/configuration/settings.md | 58 +
.../current/contributing/developing.md | 54 +
.../current/getting-started.md | 45 +
.../current/install-requirements.md | 72 +
.../current/interface/action-bar.md | 23 +
.../current/interface/brush-settings.md | 61 +
.../current/interface/overview.md | 61 +
.../current/interface/paint-mode.md | 115 ++
.../current/interface/status-bar.md | 23 +
.../current/interface/toolbar.md | 157 +++
.../current/interface/wire-routing.md | 138 ++
.../current/intro.md | 47 +
.../migration/upgrading-from-tedit4.md | 46 +
.../current/sidebar-panels/banners.md | 12 +
.../current/sidebar-panels/bestiary.md | 12 +
.../current/sidebar-panels/clipboard.md | 89 ++
.../current/sidebar-panels/creative-powers.md | 20 +
.../current/sidebar-panels/filter.md | 75 +
.../current/sidebar-panels/find.md | 42 +
.../current/sidebar-panels/npcs.md | 36 +
.../current/sidebar-panels/overview.md | 27 +
.../current/sidebar-panels/palette.md | 69 +
.../current/sidebar-panels/scripting.md | 46 +
.../current/sidebar-panels/special-tiles.md | 55 +
.../current/sidebar-panels/sprites.md | 42 +
.../sidebar-panels/tile-entity-debug.md | 12 +
.../current/sidebar-panels/world-analysis.md | 21 +
.../sidebar-panels/world-properties.md | 48 +
.../current/whats-new.md | 176 +++
.../version-4.json | 34 +
.../docusaurus-theme-classic/footer.json | 42 +
.../docusaurus-theme-classic/navbar.json | 22 +
44 files changed, 4594 insertions(+), 1 deletion(-)
create mode 100644 i18n/zh-Hans/code.json
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current.json
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/api-reference.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/auto-update.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/corrupted-world-recovery.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/image-schematics.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/scripting-guide.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/troubleshooting.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/configuration/keybindings.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/configuration/localization.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/configuration/saves-and-backups.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/configuration/settings.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/contributing/developing.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/getting-started.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/install-requirements.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/action-bar.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/brush-settings.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/overview.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/paint-mode.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/status-bar.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/toolbar.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/wire-routing.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/intro.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/migration/upgrading-from-tedit4.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/banners.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/bestiary.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/clipboard.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/creative-powers.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/filter.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/find.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/npcs.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/overview.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/palette.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/scripting.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/special-tiles.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/sprites.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/tile-entity-debug.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/world-analysis.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/world-properties.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/current/whats-new.md
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/version-4.json
create mode 100644 i18n/zh-Hans/docusaurus-theme-classic/footer.json
create mode 100644 i18n/zh-Hans/docusaurus-theme-classic/navbar.json
diff --git a/docusaurus.config.js b/docusaurus.config.js
index e05a7d5..05c63da 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -22,7 +22,76 @@ const config = {
i18n: {
defaultLocale: 'en',
- locales: ['en'],
+ locales: [
+ 'en',
+ 'zh-Hans',
+ 'zh-Hant',
+ 'ar',
+ 'de',
+ 'es',
+ 'fr',
+ 'it',
+ 'ja',
+ 'ko',
+ 'pl',
+ 'pt-BR',
+ 'ru',
+ ],
+ localeConfigs: {
+ en: {
+ label: 'English',
+ htmlLang: 'en-US',
+ },
+ 'zh-Hans': {
+ label: '简体中文',
+ htmlLang: 'zh-Hans',
+ },
+ 'zh-Hant': {
+ label: '繁體中文',
+ htmlLang: 'zh-Hant',
+ },
+ ar: {
+ label: 'العربية',
+ direction: 'rtl',
+ htmlLang: 'ar',
+ },
+ de: {
+ label: 'Deutsch',
+ htmlLang: 'de',
+ },
+ es: {
+ label: 'Español',
+ htmlLang: 'es',
+ },
+ fr: {
+ label: 'Français',
+ htmlLang: 'fr',
+ },
+ it: {
+ label: 'Italiano',
+ htmlLang: 'it',
+ },
+ ja: {
+ label: '日本語',
+ htmlLang: 'ja',
+ },
+ ko: {
+ label: '한국어',
+ htmlLang: 'ko',
+ },
+ pl: {
+ label: 'Polski',
+ htmlLang: 'pl',
+ },
+ 'pt-BR': {
+ label: 'Português (Brasil)',
+ htmlLang: 'pt-BR',
+ },
+ ru: {
+ label: 'Русский',
+ htmlLang: 'ru',
+ },
+ },
},
themes: [
@@ -31,6 +100,7 @@ const config = {
{
hashed: true,
docsRouteBasePath: '/',
+ language: ['en', 'zh'],
},
],
],
@@ -90,6 +160,10 @@ const config = {
type: 'docsVersionDropdown',
position: 'left',
},
+ {
+ type: 'localeDropdown',
+ position: 'right',
+ },
{
href: 'https://www.tedit.dev',
label: 'Web Editor',
diff --git a/i18n/zh-Hans/code.json b/i18n/zh-Hans/code.json
new file mode 100644
index 0000000..e4f7470
--- /dev/null
+++ b/i18n/zh-Hans/code.json
@@ -0,0 +1,364 @@
+{
+ "theme.ErrorPageContent.title": {
+ "message": "页面已崩溃。",
+ "description": "The title of the fallback page when the page crashed"
+ },
+ "theme.BackToTopButton.buttonAriaLabel": {
+ "message": "回到顶部",
+ "description": "The ARIA label for the back to top button"
+ },
+ "theme.blog.paginator.navAriaLabel": {
+ "message": "博文列表分页导航",
+ "description": "The ARIA label for the blog pagination"
+ },
+ "theme.blog.paginator.newerEntries": {
+ "message": "较新的博文",
+ "description": "The label used to navigate to the newer blog posts page (previous page)"
+ },
+ "theme.blog.paginator.olderEntries": {
+ "message": "较旧的博文",
+ "description": "The label used to navigate to the older blog posts page (next page)"
+ },
+ "theme.blog.archive.title": {
+ "message": "历史博文",
+ "description": "The page & hero title of the blog archive page"
+ },
+ "theme.blog.archive.description": {
+ "message": "历史博文",
+ "description": "The page & hero description of the blog archive page"
+ },
+ "theme.blog.post.paginator.navAriaLabel": {
+ "message": "博文分页导航",
+ "description": "The ARIA label for the blog posts pagination"
+ },
+ "theme.blog.post.paginator.newerPost": {
+ "message": "较新一篇",
+ "description": "The blog post button label to navigate to the newer/previous post"
+ },
+ "theme.blog.post.paginator.olderPost": {
+ "message": "较旧一篇",
+ "description": "The blog post button label to navigate to the older/next post"
+ },
+ "theme.tags.tagsPageLink": {
+ "message": "查看所有标签",
+ "description": "The label of the link targeting the tag list page"
+ },
+ "theme.colorToggle.ariaLabel.mode.system": {
+ "message": "跟随系统",
+ "description": "The name for the system color mode"
+ },
+ "theme.colorToggle.ariaLabel.mode.light": {
+ "message": "浅色模式",
+ "description": "The name for the light color mode"
+ },
+ "theme.colorToggle.ariaLabel.mode.dark": {
+ "message": "暗黑模式",
+ "description": "The name for the dark color mode"
+ },
+ "theme.colorToggle.ariaLabel": {
+ "message": "切换浅色/暗黑模式(当前为{mode})",
+ "description": "The ARIA label for the color mode toggle"
+ },
+ "theme.docs.breadcrumbs.navAriaLabel": {
+ "message": "页面路径",
+ "description": "The ARIA label for the breadcrumbs"
+ },
+ "theme.docs.DocCard.categoryDescription.plurals": {
+ "message": "{count} 个项目",
+ "description": "The default description for a category card in the generated index about how many items this category includes"
+ },
+ "theme.docs.paginator.navAriaLabel": {
+ "message": "文件选项卡",
+ "description": "The ARIA label for the docs pagination"
+ },
+ "theme.docs.paginator.previous": {
+ "message": "上一页",
+ "description": "The label used to navigate to the previous doc"
+ },
+ "theme.docs.paginator.next": {
+ "message": "下一页",
+ "description": "The label used to navigate to the next doc"
+ },
+ "theme.docs.tagDocListPageTitle.nDocsTagged": {
+ "message": "{count} 篇文档带有标签",
+ "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.docs.tagDocListPageTitle": {
+ "message": "{nDocsTagged}「{tagName}」",
+ "description": "The title of the page for a docs tag"
+ },
+ "theme.docs.versions.unreleasedVersionLabel": {
+ "message": "此为 {siteTitle} {versionLabel} 版尚未发行的文档。",
+ "description": "The label used to tell the user that he's browsing an unreleased doc version"
+ },
+ "theme.docs.versions.unmaintainedVersionLabel": {
+ "message": "此为 {siteTitle} {versionLabel} 版的文档,现已不再积极维护。",
+ "description": "The label used to tell the user that he's browsing an unmaintained doc version"
+ },
+ "theme.docs.versions.latestVersionSuggestionLabel": {
+ "message": "最新的文档请参阅 {latestVersionLink} ({versionLabel})。",
+ "description": "The label used to tell the user to check the latest version"
+ },
+ "theme.docs.versions.latestVersionLinkLabel": {
+ "message": "最新版本",
+ "description": "The label used for the latest version suggestion link label"
+ },
+ "theme.docs.versionBadge.label": {
+ "message": "版本:{versionLabel}"
+ },
+ "theme.common.editThisPage": {
+ "message": "编辑此页",
+ "description": "The link label to edit the current page"
+ },
+ "theme.common.headingLinkTitle": {
+ "message": "{heading}的直接链接",
+ "description": "Title for link to heading"
+ },
+ "theme.lastUpdated.atDate": {
+ "message": "于 {date} ",
+ "description": "The words used to describe on which date a page has been last updated"
+ },
+ "theme.lastUpdated.byUser": {
+ "message": "由 {user} ",
+ "description": "The words used to describe by who the page has been last updated"
+ },
+ "theme.lastUpdated.lastUpdatedAtBy": {
+ "message": "最后{byUser}{atDate}更新",
+ "description": "The sentence used to display when a page has been last updated, and by who"
+ },
+ "theme.NotFound.title": {
+ "message": "找不到页面",
+ "description": "The title of the 404 page"
+ },
+ "theme.navbar.mobileVersionsDropdown.label": {
+ "message": "选择版本",
+ "description": "The label for the navbar versions dropdown on mobile view"
+ },
+ "theme.tags.tagsListLabel": {
+ "message": "标签:",
+ "description": "The label alongside a tag list"
+ },
+ "theme.admonition.caution": {
+ "message": "警告",
+ "description": "The default label used for the Caution admonition (:::caution)"
+ },
+ "theme.admonition.danger": {
+ "message": "危险",
+ "description": "The default label used for the Danger admonition (:::danger)"
+ },
+ "theme.admonition.info": {
+ "message": "信息",
+ "description": "The default label used for the Info admonition (:::info)"
+ },
+ "theme.admonition.note": {
+ "message": "备注",
+ "description": "The default label used for the Note admonition (:::note)"
+ },
+ "theme.admonition.tip": {
+ "message": "提示",
+ "description": "The default label used for the Tip admonition (:::tip)"
+ },
+ "theme.admonition.warning": {
+ "message": "注意",
+ "description": "The default label used for the Warning admonition (:::warning)"
+ },
+ "theme.AnnouncementBar.closeButtonAriaLabel": {
+ "message": "关闭",
+ "description": "The ARIA label for close button of announcement bar"
+ },
+ "theme.blog.sidebar.navAriaLabel": {
+ "message": "最近博文导航",
+ "description": "The ARIA label for recent posts in the blog sidebar"
+ },
+ "theme.DocSidebarItem.expandCategoryAriaLabel": {
+ "message": "展开侧边栏分类 '{label}'",
+ "description": "The ARIA label to expand the sidebar category"
+ },
+ "theme.DocSidebarItem.collapseCategoryAriaLabel": {
+ "message": "折叠侧边栏分类 '{label}'",
+ "description": "The ARIA label to collapse the sidebar category"
+ },
+ "theme.IconExternalLink.ariaLabel": {
+ "message": "(opens in new tab)",
+ "description": "The ARIA label for the external link icon"
+ },
+ "theme.NavBar.navAriaLabel": {
+ "message": "主导航",
+ "description": "The ARIA label for the main navigation"
+ },
+ "theme.NotFound.p1": {
+ "message": "我们找不到您要找的页面。",
+ "description": "The first paragraph of the 404 page"
+ },
+ "theme.NotFound.p2": {
+ "message": "请联系原始链接来源网站的所有者,并告知他们链接已损坏。",
+ "description": "The 2nd paragraph of the 404 page"
+ },
+ "theme.navbar.mobileLanguageDropdown.label": {
+ "message": "选择语言",
+ "description": "The label for the mobile language switcher dropdown"
+ },
+ "theme.TOCCollapsible.toggleButtonLabel": {
+ "message": "本页总览",
+ "description": "The label used by the button on the collapsible TOC component"
+ },
+ "theme.blog.post.readMore": {
+ "message": "阅读更多",
+ "description": "The label used in blog post item excerpts to link to full blog posts"
+ },
+ "theme.blog.post.readMoreLabel": {
+ "message": "阅读 {title} 的全文",
+ "description": "The ARIA label for the link to full blog posts from excerpts"
+ },
+ "theme.blog.post.readingTime.plurals": {
+ "message": "阅读需 {readingTime} 分钟",
+ "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.CodeBlock.copy": {
+ "message": "复制",
+ "description": "The copy button label on code blocks"
+ },
+ "theme.CodeBlock.copied": {
+ "message": "复制成功",
+ "description": "The copied button label on code blocks"
+ },
+ "theme.CodeBlock.copyButtonAriaLabel": {
+ "message": "复制代码到剪贴板",
+ "description": "The ARIA label for copy code blocks button"
+ },
+ "theme.CodeBlock.wordWrapToggle": {
+ "message": "切换自动换行",
+ "description": "The title attribute for toggle word wrapping button of code block lines"
+ },
+ "theme.docs.breadcrumbs.home": {
+ "message": "主页面",
+ "description": "The ARIA label for the home page in the breadcrumbs"
+ },
+ "theme.docs.sidebar.collapseButtonTitle": {
+ "message": "收起侧边栏",
+ "description": "The title attribute for collapse button of doc sidebar"
+ },
+ "theme.docs.sidebar.collapseButtonAriaLabel": {
+ "message": "收起侧边栏",
+ "description": "The title attribute for collapse button of doc sidebar"
+ },
+ "theme.docs.sidebar.navAriaLabel": {
+ "message": "文档侧边栏",
+ "description": "The ARIA label for the sidebar navigation"
+ },
+ "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": {
+ "message": "← 回到主菜单",
+ "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"
+ },
+ "theme.docs.sidebar.closeSidebarButtonAriaLabel": {
+ "message": "关闭导航栏",
+ "description": "The ARIA label for close button of mobile sidebar"
+ },
+ "theme.docs.sidebar.toggleSidebarButtonAriaLabel": {
+ "message": "切换导航栏",
+ "description": "The ARIA label for hamburger menu button of mobile navigation"
+ },
+ "theme.navbar.mobileDropdown.collapseButton.expandAriaLabel": {
+ "message": "Expand the dropdown",
+ "description": "The ARIA label of the button to expand the mobile dropdown navbar item"
+ },
+ "theme.navbar.mobileDropdown.collapseButton.collapseAriaLabel": {
+ "message": "Collapse the dropdown",
+ "description": "The ARIA label of the button to collapse the mobile dropdown navbar item"
+ },
+ "theme.docs.sidebar.expandButtonTitle": {
+ "message": "展开侧边栏",
+ "description": "The ARIA label and title attribute for expand button of doc sidebar"
+ },
+ "theme.docs.sidebar.expandButtonAriaLabel": {
+ "message": "展开侧边栏",
+ "description": "The ARIA label and title attribute for expand button of doc sidebar"
+ },
+ "theme.SearchBar.noResultsText": {
+ "message": "没有找到任何文档"
+ },
+ "theme.SearchBar.seeAllOutsideContext": {
+ "message": "查看“{context}”以外的全部结果"
+ },
+ "theme.SearchBar.searchInContext": {
+ "message": "查看“{context}”以内的全部结果"
+ },
+ "theme.SearchBar.seeAll": {
+ "message": "查看全部结果"
+ },
+ "theme.SearchBar.label": {
+ "message": "搜索",
+ "description": "The ARIA label and placeholder for search button"
+ },
+ "theme.SearchPage.existingResultsTitle": {
+ "message": "“{query}”的搜索结果",
+ "description": "The search page title for non-empty query"
+ },
+ "theme.SearchPage.emptyResultsTitle": {
+ "message": "搜索文档",
+ "description": "The search page title for empty query"
+ },
+ "theme.SearchPage.searchContext.everywhere": {
+ "message": "所有"
+ },
+ "theme.SearchPage.documentsFound.plurals": {
+ "message": "共找到 {count} 篇文档",
+ "description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.SearchPage.noResultsText": {
+ "message": "没有找到任何文档",
+ "description": "The paragraph for empty search result"
+ },
+ "theme.blog.post.plurals": {
+ "message": "{count} 篇博文",
+ "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.blog.tagTitle": {
+ "message": "{nPosts} 含有标签「{tagName}」",
+ "description": "The title of the page for a blog tag"
+ },
+ "theme.blog.author.pageTitle": {
+ "message": "{authorName} - {nPosts}",
+ "description": "The title of the page for a blog author"
+ },
+ "theme.blog.authorsList.pageTitle": {
+ "message": "作者",
+ "description": "The title of the authors page"
+ },
+ "theme.blog.authorsList.viewAll": {
+ "message": "查看所有作者",
+ "description": "The label of the link targeting the blog authors page"
+ },
+ "theme.blog.author.noPosts": {
+ "message": "该作者尚未撰写任何文章。",
+ "description": "The text for authors with 0 blog post"
+ },
+ "theme.contentVisibility.unlistedBanner.title": {
+ "message": "未列出页",
+ "description": "The unlisted content banner title"
+ },
+ "theme.contentVisibility.unlistedBanner.message": {
+ "message": "此页面未列出。搜索引擎不会对其索引,只有拥有直接链接的用户才能访问。",
+ "description": "The unlisted content banner message"
+ },
+ "theme.contentVisibility.draftBanner.title": {
+ "message": "草稿页",
+ "description": "The draft content banner title"
+ },
+ "theme.contentVisibility.draftBanner.message": {
+ "message": "此页面是草稿,仅在开发环境中可见,不会包含在正式版本中。",
+ "description": "The draft content banner message"
+ },
+ "theme.ErrorPageContent.tryAgain": {
+ "message": "重试",
+ "description": "The label of the button to try again rendering when the React error boundary captures an error"
+ },
+ "theme.common.skipToMainContent": {
+ "message": "跳到主要内容",
+ "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"
+ },
+ "theme.tags.tagsPageTitle": {
+ "message": "标签",
+ "description": "The title of the tag list page"
+ }
+}
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current.json b/i18n/zh-Hans/docusaurus-plugin-content-docs/current.json
new file mode 100644
index 0000000..6f9d5a7
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current.json
@@ -0,0 +1,46 @@
+{
+ "version.label": {
+ "message": "TEdit 5",
+ "description": "The label for version current"
+ },
+ "sidebar.tutorialSidebar.category.Interface": {
+ "message": "界面",
+ "description": "The label for category 'Interface' in sidebar 'tutorialSidebar'"
+ },
+ "sidebar.tutorialSidebar.category.Sidebar Panels": {
+ "message": "侧边栏面板",
+ "description": "The label for category 'Sidebar Panels' in sidebar 'tutorialSidebar'"
+ },
+ "sidebar.tutorialSidebar.category.Configuration": {
+ "message": "配置",
+ "description": "The label for category 'Configuration' in sidebar 'tutorialSidebar'"
+ },
+ "sidebar.tutorialSidebar.category.Advanced": {
+ "message": "进阶指南",
+ "description": "The label for category 'Advanced' in sidebar 'tutorialSidebar'"
+ },
+ "sidebar.tutorialSidebar.category.Migration": {
+ "message": "版本迁移",
+ "description": "The label for category 'Migration' in sidebar 'tutorialSidebar'"
+ },
+ "sidebar.tutorialSidebar.category.Contributing": {
+ "message": "参与贡献",
+ "description": "The label for category 'Contributing' in sidebar 'tutorialSidebar'"
+ },
+ "sidebar.tutorialSidebar.doc.TEdit 5 Documentation": {
+ "message": "TEdit 5 文档",
+ "description": "The label for the doc item 'TEdit 5 Documentation' in sidebar 'tutorialSidebar', linking to the doc intro"
+ },
+ "sidebar.tutorialSidebar.doc.Install Requirements": {
+ "message": "安装与运行要求",
+ "description": "The label for the doc item 'Install Requirements' in sidebar 'tutorialSidebar', linking to the doc install-requirements"
+ },
+ "sidebar.tutorialSidebar.doc.Getting Started": {
+ "message": "快速入门",
+ "description": "The label for the doc item 'Getting Started' in sidebar 'tutorialSidebar', linking to the doc getting-started"
+ },
+ "sidebar.tutorialSidebar.doc.What's New": {
+ "message": "更新日志 / 新特性",
+ "description": "The label for the doc item 'What's New' in sidebar 'tutorialSidebar', linking to the doc whats-new"
+ }
+}
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/api-reference.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/api-reference.md
new file mode 100644
index 0000000..fe0073f
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/api-reference.md
@@ -0,0 +1,762 @@
+---
+sidebar_position: 2
+description: TEdit 全部脚本对象的完整 API 参考手册
+---
+
+# TEdit 脚本 API 参考手册
+
+TEdit 脚本 API 的完整参考手册。
+同时支持 JavaScript 与 Lua 脚本引擎。
+
+所有 API 对象均可作为全局变量直接访问:`tile`、`batch`、`geometry`、`selection`、`sprites`、`draw`、`generate`、`chests`、`signs`、`npcs`、`tileEntities`、`world`、`metadata`、`log`、`finder`、`tools`。
+
+:::tip TypeScript 智能补全
+下载 [`tedit-api.d.ts`](/tedit-api.d.ts) 并将其放置在脚本文件同级目录下,即可在 VS Code 等编辑器中获得完整的语法提示与代码补全。详细配置说明请参阅[脚本指南](scripting-guide.md#typescript-autocomplete)。
+:::
+
+---
+
+## `tile` — 底层物块读写
+
+| 方法 | 说明 |
+|--------|-------------|
+| `isActive(x, y) → bool` | 检查图格是否有激活的物块(实体物块存在) |
+| `getTileType(x, y) → int` | 获取物块类型 ID |
+| `getWall(x, y) → int` | 获取墙壁类型 ID |
+| `getPaint(x, y) → int` | 获取物块油漆颜色 ID |
+| `getWallPaint(x, y) → int` | 获取墙壁油漆颜色 ID |
+| `getLiquidAmount(x, y) → int` | 获取液体量(0–255) |
+| `getLiquidType(x, y) → int` | 获取液体类型(0=无, 1=水, 2=熔岩, 3=蜂蜜) |
+| `getFrameU(x, y) → int` | 获取物体帧 U 坐标(纹理 X 偏移) |
+| `getFrameV(x, y) → int` | 获取物体帧 V 坐标(纹理 Y 偏移) |
+| `getSlope(x, y) → string` | 获取斜坡类型字符串 |
+| `getWire(x, y, color) → bool` | 检查指定颜色电线(1=红, 2=蓝, 3=绿, 4=黄) |
+| `getTileEcho(x, y) → bool` | 检查物块是否涂有回声涂料(隐形) |
+| `getWallEcho(x, y) → bool` | 检查墙壁是否涂有回声涂料(隐形) |
+| `getTileIlluminant(x, y) → bool` | 检查物块是否涂有夜明涂料(全亮) |
+| `getWallIlluminant(x, y) → bool` | 检查墙壁是否涂有夜明涂料(全亮) |
+| `setActive(x, y, active)` | 设置物块激活状态(是否存在) |
+| `setType(x, y, type)` | 设置物块类型(同时激活物块) |
+| `setWall(x, y, wallType)` | 设置墙壁类型 |
+| `setPaint(x, y, color)` | 设置物块油漆颜色 |
+| `setWallPaint(x, y, color)` | 设置墙壁油漆颜色 |
+| `setLiquid(x, y, amount, type)` | 设置液体量与类型 |
+| `setWire(x, y, color, enabled)` | 设置指定颜色电线状态 |
+| `setSlope(x, y, slope)` | 设置斜坡(`None`、`HalfBrick`、`SlopeTopRight`、`SlopeTopLeft`、`SlopeBottomRight`、`SlopeBottomLeft`) |
+| `setFrameUV(x, y, u, v)` | 设置物体帧纹理坐标 |
+| `setTileEcho(x, y, value)` | 设置物块回声涂料(隐形) |
+| `setWallEcho(x, y, value)` | 设置墙壁回声涂料(隐形) |
+| `setTileIlluminant(x, y, value)` | 设置物块夜明涂料(全亮) |
+| `setWallIlluminant(x, y, value)` | 设置墙壁夜明涂料(全亮) |
+| `clear(x, y)` | 重置图格为默认空白状态(清除物块、墙壁、液体、电线等) |
+| `copy(fromX, fromY, toX, toY)` | 将一个图格的所有属性完整复制到另一个图格 |
+
+## `batch` — 批量操作
+
+| 方法 | 说明 |
+|--------|-------------|
+| `forEachTile(callback)` | 遍历整个世界中的所有图格 — `callback(x, y)` |
+| `forEachInSelection(callback)` | 遍历当前选区内的所有图格 — `callback(x, y)` |
+| `findTiles(predicate) → [{x, y}]` | 查找符合断言 `predicate(x, y) → bool` 的图格(上限 10,000) |
+| `findTilesByType(type, anchorOnly?) → [{x, y}]` | 按类型查找物块;`anchorOnly` 设为 true 时仅返回多格物体的锚点坐标 |
+| `findTilesByWall(wallType) → [{x, y}]` | 按墙壁类型查找图格(上限 10,000) |
+| `replaceTile(from, to) → int` | 在全图替换某种类型的所有物块;返回替换数量 |
+| `replaceTileInSelection(from, to) → int` | 仅在选区内替换某种类型的物块;返回替换数量 |
+| `replaceWall(from, to) → int` | 在全图替换某种类型的所有墙壁;返回替换数量 |
+| `clearTilesByType(type) → int` | 清除全图中指定类型的所有物块;返回清除数量 |
+
+## `geometry` — 几何图形
+
+| 方法 | 说明 |
+|--------|-------------|
+| `line(x1, y1, x2, y2) → [{x, y}]` | 计算两点之间的直线坐标列表(Bresenham 算法) |
+| `rect(x, y, w, h) → [{x, y}]` | 计算矩形线框轮廓的坐标列表 |
+| `ellipse(cx, cy, rx, ry) → [{x, y}]` | 计算椭圆线框轮廓的坐标列表(中心对齐) |
+| `fillRect(x, y, w, h) → [{x, y}]` | 计算实心填充矩形的坐标列表 |
+| `fillEllipse(cx, cy, rx, ry) → [{x, y}]` | 计算实心填充椭圆的坐标列表(中心对齐) |
+| `setTiles(type, x, y, w, h)` | 用指定物块填充矩形区域(支持撤销) |
+| `setWalls(type, x, y, w, h)` | 用指定墙壁填充矩形区域(支持撤销) |
+| `clearTiles(x, y, w, h)` | 清空矩形区域内的物块(支持撤销) |
+
+## `selection` — 选区管理
+
+| 属性/方法 | 说明 |
+|----------------|-------------|
+| `isActive → bool` | 选区当前是否激活 |
+| `x`, `y`, `width`, `height` | 选区边界尺寸(图格单位) |
+| `left`, `top`, `right`, `bottom` | 选区四边缘坐标(right/bottom 为左闭右开区间) |
+| `set(x, y, w, h)` | 创建并激活选区 |
+| `clear()` | 取消/清除当前选区 |
+| `contains(x, y) → bool` | 判断指定图格坐标是否位于选区内 |
+
+## `sprites` — 多格物体放置
+
+| 方法 | 说明 |
+|--------|-------------|
+| `listSprites() → [{tileId, name, styleCount}]` | 列出所有多格物体(家具、装饰等)的图集信息 |
+| `getStyles(tileId) → [{index, name, width, height}]` | 获取指定物块类型的全部可用样式列表 |
+| `place(tileId, styleIndex, x, y) → bool` | 根据物块 ID 与样式索引在指定坐标放置物体 |
+| `placeByName(name, x, y) → bool` | 根据名称放置匹配的第一个样式(不区分大小写) |
+
+:::note
+放置物体时,如果该物体属于特定实体类型,会在其锚点位置自动创建对应的图格实体(宝箱 Chest、标牌 Sign、图格实体 TileEntity 等)。
+:::
+
+## `draw` — 绘制工具
+
+### 拾色器与笔刷配置
+
+| 方法 | 说明 |
+|--------|-------------|
+| `setTile(tileType)` | 设置绘制的物块类型 |
+| `setWall(wallType)` | 设置绘制的墙壁类型 |
+| `setErase(bool)` | 开启或关闭橡皮擦模式 |
+| `setPaintMode(mode)` | 设置绘制模式:`'tile'` / `'tileandwall'`、`'wire'`、`'liquid'` |
+| `setTileColor(color)` | 设置物块涂漆颜色(0 为不涂漆) |
+| `setWallColor(color)` | 设置墙壁涂漆颜色(0 为不涂漆) |
+| `setBrickStyle(style)` | 斜坡样式:`'full'`、`'half'`、`'topright'`、`'topleft'`、`'bottomright'`、`'bottomleft'` |
+| `setActuator(enabled, inactive?)` | 设置促动器状态及虚化状态 |
+| `setTileCoating(echo?, illuminant?)` | 设置物块涂料(回声涂料、夜明涂料) |
+| `setWallCoating(echo?, illuminant?)` | 设置墙壁涂料(回声涂料、夜明涂料) |
+| `setLiquid(type, amount?)` | 液体:类型 `'water'` / `'lava'` / `'honey'` / `'shimmer'` / `'none'`;容量 `'full'` / `'half'` / `'quarter'` |
+| `setWire(red?, blue?, green?, yellow?)` | 设置各颜色电线绘制标记(布尔值) |
+| `setTileMask(mode, tileType?)` | 物块遮罩模式:`'off'`、`'match'`、`'empty'`、`'notmatching'` |
+| `setWallMask(mode, wallType?)` | 墙壁遮罩模式 |
+| `setBrush(width, height, shape?)` | 形状:`'square'`、`'round'`、`'right'`、`'left'`、`'star'`、`'triangle'`、`'crescent'`、`'donut'`、`'cross'` / `'x'` |
+| `setRotation(degrees)` | 设置笔刷旋转角度(度数) |
+| `setFlip(horizontal?, vertical?)` | 设置笔刷水平/垂直翻转状态 |
+| `setSpray(enabled, density?, tickMs?)` | 开启喷枪模式(密度默认 50,喷射间隔默认 100ms) |
+| `setBrushOutline(outline, enabled)` | 设置笔刷线框宽度并启用/禁用线框 |
+| `reset()` | 重置拾色器和笔刷设置为默认值 |
+
+### 绘制操作
+
+| 方法 | 说明 |
+|--------|-------------|
+| `pencil(x1, y1, x2, y2)` | 在两点之间绘制 1 像素宽度的铅笔线条 |
+| `brush(x1, y1, x2, y2)` | 在两点之间绘制笔刷宽度的线条 |
+| `fill(x, y)` | 从指定坐标进行油漆桶泛洪填充(受选区限制) |
+| `hammer(x1, y1, x2, y2)` | 沿笔刷宽度的线段对物块自动进行敲锤塑形(斜坡/半砖) |
+
+### 电线布线 {#wire-routing}
+
+沿 CAD 风格路径布设电线(或物块)。使用通过 `setWire()` 或 `setTile()` 设置的当前拾色器配置。
+
+| 方法 | 说明 |
+|--------|-------------|
+| `routeWire(x1, y1, x2, y2, mode?, direction?) → int` | 布设单条电线路径;返回布设的图格数 |
+| `routeBus(wireCount, x1, y1, x2, y2, mode?, direction?) → int` | 布设多条平行总线;返回布设的图格数 |
+| `routeWirePath(x1, y1, x2, y2, mode?, direction?) → [{x, y}]` | 获取单条电线路径的坐标列表(不实际执行放置) |
+| `routeBusPath(wireCount, x1, y1, x2, y2, mode?, direction?) → [{x, y}]` | 获取平行总线路径的坐标列表(不实际执行放置) |
+
+**参数说明:**
+- **mode** — `'90'`(默认)为 90° 直角弯头,`'45'` 为 45° 倒角弯头
+- **direction** — `'auto'`(默认自动判断),`'h'` 为水平优先,`'v'` 为垂直优先
+- **wireCount** — 并行总线数量(自动换算为笔刷宽度:间距 × (数量 − 1) + 1)
+
+**间距规则:** 90° 模式采用 2 格间距(1 格空隙),45° 模式采用 3 格间距(2 格空隙)。
+
+```javascript
+// 以 90° 直角布设红电线
+draw.setWire(true, false, false, false);
+draw.routeWire(100, 200, 150, 220, '90', 'h');
+
+// 以 45° 倒角布设 4 条平行蓝电线总线
+draw.setWire(false, true, false, false);
+draw.routeBus(4, 100, 200, 150, 220, '45', 'auto');
+
+// 将布线算法用于铺设物块而非电线
+draw.setTile(1); // 石块 Stone
+draw.routeWire(50, 50, 80, 70);
+
+// 获取路径坐标用于自定义处理
+var path = draw.routeWirePath(10, 10, 30, 20, '90', 'v');
+for (var i = 0; i < path.length; i++) {
+ log.print(path[i].x + "," + path[i].y);
+}
+```
+
+## `generate` — 过程生成
+
+### 树木与森林
+
+| 方法 | 说明 |
+|--------|-------------|
+| `listTreeTypes() → [{name, tileId}]` | 列出所有支持的树木类型名称与物块 ID |
+| `tree(type, x, y) → bool` | 在地面坐标 (x, y) 放置单棵树木;type 为类型名称字符串 |
+| `forest(types[], x, y, w, h, density?) → int` | 在指定矩形内随机生成树木;密度 0.0–1.0(默认 0.15) |
+| `forestInSelection(types[], density?) → int` | 在当前选区内随机生成树木森林 |
+| `findSurface(x, yStart, yEnd) → int` | 向下扫描第一块实心物块表面;返回 y 坐标或 -1(未找到) |
+
+**树木类型:** `oak`(橡树 5)、`palm`(棕榈树 323)、`mushroom`(巨型发光蘑菇 72)、`topaz`(黄玉树 583)、`amethyst`(紫晶树 584)、`sapphire`(蓝玉树 585)、`emerald`(翡翠树 586)、`ruby`(红玉树 587)、`diamond`(钻石树 588)、`amber`(琥珀树 589)、`sakura`(樱花树 596)、`willow`(黄柳 616)、`ash`(灰烬树 634)
+
+:::note
+树木会从给定的 y 坐标(地表高度)向上生长。`forest` 与 `forestInSelection` 方法在内部调用 `findSurface` 自动定位各列的实心地表。
+:::
+
+### 世界生成地形结构 {#worldgen-structures}
+
+移植自泰拉瑞亚原版 `WorldGen` 内部方法 — 过程化地形生成的核心原语。
+
+| 方法 | 说明 |
+|--------|-------------|
+| `tileRunner(x, y, strength, steps, tileType, speedX?, speedY?)` | 随机漫步笔刷:以 `tileType` 填充菱形斑块。对应原版 `WorldGen.TileRunner`。 |
+| `tunnel(x, y, strength, steps, speedX?, speedY?)` | 挖掘自然洞穴隧道(沿漫步路径清除物块) |
+| `lake(x, y, liquidType?, strength?)` | 生成不规则液体池。`liquidType`:`"water"`(默认水)、`"lava"`、`"honey"`、`"shimmer"`。`strength` 缩放池塘尺寸(默认 1.0)。 |
+| `oreVein(oreName, x, y, size?)` | 使用预设放置指定名称的矿脉。`size`:`"small"`(0.5x)、`"medium"`(1x,默认)、`"large"`(2x)。 |
+| `listOreTypes() → [{name, tileId}]` | 列出所有可用矿石名称及其物块 ID |
+
+**矿石类型:** `copper`(铜 7)、`tin`(锡 166)、`iron`(铁 6)、`lead`(铅 167)、`silver`(银 9)、`tungsten`(钨 168)、`gold`(金 8)、`platinum`(铂金 169)、`meteorite`(陨石 37)、`hellstone`(狱石 58)、`cobalt`(钴 107)、`palladium`(钯金 221)、`mythril`(秘银 108)、`orichalcum`(山铜 222)、`adamantite`(精金 111)、`titanium`(钛金 223)、`chlorophyte`(叶绿 211)、`luminite`(夜明 408)
+
+:::tip TileRunner 参数提示
+- **strength** 控制斑块半径(矿石约 3–15,大型地貌斑块约 10–40)
+- **steps** 控制漫步延伸步数(矿石约 5–20,延伸矿脉约 20–60)
+- **speedX/speedY** 添加方向偏置(默认 0 为完全随机漫步)
+- 漫步器填充曼哈顿距离菱形,其强度在 `steps` 次迭代中由满 `strength` 逐渐衰减至 0
+- 对帧敏感的物块(家具、植物等)会自动跳过不予破坏
+:::
+
+```javascript
+// 在指定坐标周围散布金矿
+generate.oreVein("gold", 500, 400);
+generate.oreVein("gold", 500, 400, "large");
+
+// 挖掘一条水平走向的自然洞穴
+generate.tunnel(100, 300, 8, 30, 1.0, 0.0);
+
+// 创建一个水池
+generate.lake(500, 500, "water", 1.5);
+
+// 使用 tileRunner 生成自定义物块斑块
+var dirt = metadata.tileId("Dirt Block");
+generate.tileRunner(300, 300, 10, 20, dirt);
+
+// 列出所有矿石类型
+log.print(JSON.stringify(generate.listOreTypes()));
+```
+
+## `chests` — 宝箱物品栏
+
+| 属性/方法 | 说明 |
+|--------|-------------|
+| `count → int` | 全图宝箱总数 |
+| `getAll() → [{x, y, name, items}]` | 获取所有宝箱;items 数组包含 `{slot, id, name, stack, prefix}` |
+| `getAt(x, y) → {x, y, name, items}` | 获取指定坐标处的宝箱(不存在则为 null) |
+| `findByItem(id) → [...]` | 按物品 NetId 查找包含该物品的宝箱 |
+| `findByItemName(name) → [...]` | 按物品名称查找包含该物品的宝箱(不区分大小写子串匹配) |
+| `setName(x, y, name)` | 设置宝箱名称/标签 |
+| `findByName(name) → [...]` | 按宝箱名称查找宝箱(不区分大小写子串匹配) |
+| `setItem(x, y, slot, id, stack, prefix)` | 设置宝箱指定槽位的物品内容 |
+| `clearItem(x, y, slot)` | 清空指定槽位的物品 |
+| `addItem(x, y, id, stack, prefix) → bool` | 向第一个可用空槽位添加物品;若已满返回 false |
+
+## `signs` — 标牌文字
+
+| 属性/方法 | 说明 |
+|--------|-------------|
+| `count → int` | 全图标牌总数 |
+| `getAll() → [{x, y, text}]` | 获取所有标牌列表 |
+| `getAt(x, y) → {x, y, text}` | 获取指定坐标处的标牌(不存在则为 null) |
+| `setText(x, y, text)` | 更新指定标牌的文本内容 |
+
+## `npcs` — 世界 NPC 管理
+
+管理世界中的所有 NPC,包括城镇居民、Boss、敌怪以及任何[怪物图鉴](https://terraria.wiki.gg/zh/wiki/%E6%80%AA%E7%89%A9%E5%9B%BE%E9%89%B4)条目。
+
+| 属性/方法 | 说明 |
+|--------|-------------|
+| `count → int` | 全图 NPC 总数 |
+| `getAll() → [{name, displayName, spriteId, x, y, homeX, homeY, isHomeless}]` | 获取所有 NPC(含重复个体) |
+| `setHome(name, x, y)` | 为匹配该名称的第一个 NPC 设置住宅坐标(不区分大小写) |
+| `setHome(name, x, y, index)` | 为匹配该名称的第 N 个 NPC 设置住宅坐标(索引从 0 开始) |
+| `setHomeAll(name, x, y) → int` | 为匹配该名称的所有 NPC 批量设置住宅;返回设置数量 |
+| `create(name, displayName, x, y)` | 通过 name、fullName、bestiaryId 或 sprite ID 创建 NPC |
+| `remove(name) → bool` | 移除匹配该名称的第一个 NPC |
+
+## `tileEntities` — 图格实体管理 {#tileentities--tile-entity-management}
+
+图格实体是附着在特定物块上的高级游戏对象:武器架、物品框、人体模型、帽架、盘子、逻辑感应器、训练假人以及晶塔等。
+
+### 数量统计
+
+| 属性 | 说明 |
+|----------|-------------|
+| `count → int` | 全图图格实体总数 |
+| `mannequinCount → int` | 人体模型数量 |
+| `weaponRackCount → int` | 武器架数量 |
+| `hatRackCount → int` | 帽架数量 |
+| `itemFrameCount → int` | 物品框数量 |
+| `foodPlatterCount → int` | 盘子数量 |
+| `logicSensorCount → int` | 逻辑感应器数量 |
+| `trainingDummyCount → int` | 训练假人数量 |
+| `pylonCount → int` | 传送晶塔数量 |
+
+### 查询方法
+
+| 方法 | 说明 |
+|--------|-------------|
+| `getAll() → [{x, y, type, ...}]` | 获取所有图格实体列表 |
+| `getAt(x, y) → {x, y, type, ...}` | 获取指定坐标处的实体(不存在则为 null) |
+| `getAllByType(typeName) → [...]` | 按类型名称获取实体(类型名参见下方列表) |
+| `getAllMannequins() → [...]` | 获取所有人体模型 |
+| `getAllWeaponRacks() → [...]` | 获取所有武器架 |
+| `getAllHatRacks() → [...]` | 获取所有帽架 |
+| `getAllItemFrames() → [...]` | 获取所有物品框 |
+| `getAllFoodPlatters() → [...]` | 获取所有盘子 |
+| `findByItem(itemId) → [...]` | 查找包含指定物品的所有图格实体 |
+
+**用于 `getAllByType` 的类型名称:** `DisplayDoll`、`WeaponRack`、`HatRack`、`ItemFrame`、`FoodPlatter`、`LogicSensor`、`TrainingDummy`、`TeleportationPylon`、`DeadCellsDisplayJar`、`KiteAnchor`、`CritterAnchor`
+
+### 单物品实体 (武器架、物品框、盘子、死亡细胞展示罐)
+
+这些实体各自容纳一个单件物品,包含 ID、前缀以及堆叠数量。
+
+| 方法 | 说明 |
+|--------|-------------|
+| `setItem(x, y, itemId, prefix?, stack?)` | 设置实体上的物品(prefix 默认 0,stack 默认 1) |
+| `clearItem(x, y)` | 移除实体上的物品 |
+
+**返回对象字段:** `x`、`y`、`type`、`itemId`、`prefix`、`stack`
+
+```javascript
+// 示例:在坐标 (100, 200) 的武器架上放置一把泰拉刃
+tileEntities.setItem(100, 200, 757); // 757 = 泰拉刃 Terra Blade
+
+// 示例:查找所有武器架并列出它们展示的武器
+var racks = tileEntities.getAllWeaponRacks();
+for (var i = 0; i < racks.length; i++) {
+ var r = racks[i];
+ if (r.itemId > 0) {
+ log.print("Rack at " + r.x + "," + r.y + " has item " + metadata.itemName(r.itemId));
+ }
+}
+```
+
+### 人体模型 {#mannequins-and-display-dolls}
+
+人体模型拥有装备栏、染料栏、武器栏(Misc[0])以及姿态设定。
+
+| 方法 | 说明 |
+|--------|-------------|
+| `setEquipment(x, y, slot, itemId, prefix?)` | 设置装备槽位(索引从 0 开始) |
+| `clearEquipment(x, y, slot)` | 清空指定装备槽位 |
+| `setDye(x, y, slot, dyeId, prefix?)` | 设置染料槽位 |
+| `clearDye(x, y, slot)` | 清空指定染料槽位 |
+| `setWeapon(x, y, itemId, prefix?)` | 设置手持武器(Misc[0] 槽位) |
+| `clearWeapon(x, y)` | 清空手持武器槽位 |
+| `setPose(x, y, poseId)` | 设置人体模型姿态(0–8) |
+| `getPose(x, y) → int` | 获取当前姿态 ID |
+
+**返回对象字段:** `x`、`y`、`type`、`items`(装备数组)、`dyes`(染料数组)、`pose`
+
+### 帽架 {#hat-rack}
+
+| 方法 | 说明 |
+|--------|-------------|
+| `setHatRackItem(x, y, slot, itemId, prefix?)` | 设置帽架槽位的帽子物品 |
+| `clearHatRackItem(x, y, slot)` | 清空帽架指定槽位 |
+| `setHatRackDye(x, y, slot, dyeId, prefix?)` | 设置帽架槽位的染料 |
+| `clearHatRackDye(x, y, slot)` | 清空帽架指定槽位的染料 |
+
+**返回对象字段:** `x`、`y`、`type`、`items`、`dyes`
+
+### 逻辑感应器 {#logic-sensor}
+
+| 方法 | 说明 |
+|--------|-------------|
+| `setLogicSensor(x, y, logicCheck, on)` | 设置逻辑检测类型以及激活(开/关)状态 |
+
+**返回对象字段:** `x`、`y`、`type`、`logicCheck`、`on`
+
+### 训练假人 {#training-dummy}
+
+| 方法 | 说明 |
+|--------|-------------|
+| `setTrainingDummyNpc(x, y, npcId)` | 设置绑定到训练假人的 NPC ID |
+
+**返回对象字段:** `x`、`y`、`type`、`npcId`
+
+## `world` — 世界属性
+
+### 核心属性
+
+| 属性 | 说明 |
+|----------|-------------|
+| `width → int` | 世界宽度(图格单位,只读) |
+| `height → int` | 世界高度(图格单位,只读) |
+| `title ↔ string` | 世界名称 |
+| `worldId ↔ int` | 世界 ID |
+| `seed ↔ string` | 世界种子码 |
+| `isFavorite ↔ bool` | 在世界列表中是否标记为喜爱 |
+| `isChinese ↔ bool` | 中文本地化版本标记 |
+| `isConsole ↔ bool` | 主机版世界标记 |
+| `fileRevision ↔ uint` | 文件版本修订计数 |
+| `worldGenVersion ↔ ulong` | 世界生成器版本 |
+| `creationTime ↔ long` | 世界创建时间戳 |
+| `lastPlayed ↔ long` | 最后游玩时间戳 |
+
+### 出生点与地牢
+
+| 属性 | 说明 |
+|----------|-------------|
+| `spawnX ↔ int`, `spawnY ↔ int` | 世界默认出生点坐标 |
+| `dungeonX ↔ int`, `dungeonY ↔ int` | 地牢入口坐标 |
+
+### 地层标高
+
+| 属性 | 说明 |
+|----------|-------------|
+| `surfaceLevel ↔ double` | 地表高度 Y |
+| `rockLevel ↔ double` | 地下岩石层高度 Y |
+| `safeGroundLayers ↔ bool` | 是否启用安全地层模式 |
+
+### 时间与天候系统
+
+| 属性 | 说明 |
+|----------|-------------|
+| `time ↔ double` | 当前时间数值 |
+| `dayTime ↔ bool` | 是否为白天 |
+| `fastForwardTime ↔ bool` | 时间快进是否激活 |
+| `sundialCooldown ↔ byte` | 附魔日晷冷却剩余天数 |
+| `fastForwardTimeToDusk ↔ bool` | 快进到黄昏是否激活 |
+| `moondialCooldown ↔ byte` | 附魔月晷冷却剩余天数 |
+
+### 月相与日食
+
+| 属性 | 说明 |
+|----------|-------------|
+| `moonPhase ↔ int` | 月相(0–7) |
+| `bloodMoon ↔ bool` | 血月是否正在发生 |
+| `moonType ↔ byte` | 月亮样式外观 |
+| `isEclipse ↔ bool` | 日食是否正在发生 |
+
+### 天气
+
+| 属性 | 说明 |
+|----------|-------------|
+| `isRaining ↔ bool` | 是否正在下雨 |
+| `tempRainTime ↔ int` | 降雨剩余时间 |
+| `tempMaxRain ↔ float` | 最大降雨强度 |
+| `slimeRainTime ↔ double` | 史莱姆雨剩余时间 |
+| `tempMeteorShowerCount ↔ int` | 流星雨计数 |
+| `tempCoinRain ↔ int` | 硬币雨数值 |
+| `numClouds ↔ short` | 云朵数量 |
+| `windSpeedSet ↔ float` | 风速设置 |
+| `cloudBgActive ↔ float` | 背景云层活跃度 |
+
+### 沙尘暴
+
+| 属性 | 说明 |
+|----------|-------------|
+| `sandStormHappening ↔ bool` | 沙尘暴是否正在发生 |
+| `sandStormTimeLeft ↔ int` | 沙尘暴剩余时间 |
+| `sandStormSeverity ↔ float` | 当前沙尘暴剧烈程度 |
+| `sandStormIntendedSeverity ↔ float` | 目标沙尘暴剧烈程度 |
+
+### 节日
+
+| 属性 | 说明 |
+|----------|-------------|
+| `forceHalloweenForToday ↔ bool` | 今日强制开启万圣节 |
+| `forceXMasForToday ↔ bool` | 今日强制开启圣诞节 |
+| `forceHalloweenForever ↔ bool` | 永久强制开启万圣节 |
+| `forceXMasForever ↔ bool` | 永久强制开启圣诞节 |
+
+### 游戏难度与进度标记
+
+| 属性 | 说明 |
+|----------|-------------|
+| `hardMode ↔ bool` | 困难模式是否已开启(肉后) |
+| `gameMode ↔ int` | 难度模式:0=经典 Classic, 1=专家 Expert, 2=大师 Master, 3=旅途 Journey |
+| `spawnMeteor ↔ bool` | 是否排队等待坠落陨石 |
+| `combatBookUsed ↔ bool` | 是否已使用《先进战斗技术》 |
+| `combatBookVolumeTwoWasUsed ↔ bool` | 是否已使用《先进战斗技术第二卷》 |
+| `peddlersSatchelWasUsed ↔ bool` | 是否已使用《小贩背包》 |
+| `partyOfDoom ↔ bool` | 末日派对是否激活 |
+
+### 特殊世界种子 {#secret-world-seeds}
+
+| 属性 | 说明 |
+|----------|-------------|
+| `drunkWorld ↔ bool` | 醉酒世界种子(05162020) |
+| `goodWorld ↔ bool` | For the Worthy 种子 |
+| `tenthAnniversaryWorld ↔ bool` | 十周年庆典种子(Celebrationmk10) |
+| `dontStarveWorld ↔ bool` | 永恒领域种子(The Constant,饥荒联动) |
+| `notTheBeesWorld ↔ bool` | 蜜蜂世界种子(Not the Bees) |
+| `remixWorld ↔ bool` | 颠倒世界种子(Remix / Don't dig up) |
+| `noTrapsWorld ↔ bool` | 陷阱世界种子(No Traps) |
+| `zenithWorld ↔ bool` | 天顶世界种子(Get fixed boi) |
+| `skyblockWorld ↔ bool` | 空岛世界种子(Skyblock) |
+| `vampireSeed ↔ bool` | 吸血鬼种子 |
+| `infectedSeed ↔ bool` | 感染种子 |
+| `dualDungeonsSeed ↔ bool` | 双地牢种子 |
+| `isCrimson ↔ bool` | 猩红世界(false 为腐化世界) |
+
+### 矿石层级与祭坛
+
+| 属性 | 说明 |
+|----------|-------------|
+| `altarCount ↔ int` | 已砸碎的祭坛数量 |
+| `shadowOrbSmashed ↔ bool` | 是否已砸碎过暗影珠 / 猩红之心 |
+| `shadowOrbCount ↔ int` | 已砸碎的暗影珠 / 猩红之心数量 |
+| `savedOreTiersCopper ↔ int` | 铜矿物块 ID(替代矿物:锡矿) |
+| `savedOreTiersIron ↔ int` | 铁矿物块 ID(替代矿物:铅矿) |
+| `savedOreTiersSilver ↔ int` | 银矿物块 ID(替代矿物:钨矿) |
+| `savedOreTiersGold ↔ int` | 金矿物块 ID(替代矿物:铂金矿) |
+| `savedOreTiersCobalt ↔ int` | 钴矿物块 ID(替代矿物:钯金矿) |
+| `savedOreTiersMythril ↔ int` | 秘银矿物块 ID(替代矿物:山铜矿) |
+| `savedOreTiersAdamantite ↔ int` | 精金矿物块 ID(替代矿物:钛金矿) |
+
+### Boss 击败进度 — 困难模式前 {#pre-hardmode-bosses}
+
+| 属性 | 说明 |
+|----------|-------------|
+| `downedSlimeKing ↔ bool` | 击败史莱姆王 |
+| `downedEyeOfCthulhu ↔ bool` | 击败克苏鲁之眼 |
+| `downedEaterOfWorlds ↔ bool` | 击败世界吞噬怪 / 克苏鲁之脑 |
+| `downedQueenBee ↔ bool` | 击败蜂王 |
+| `downedSkeletron ↔ bool` | 击败骷髅王 |
+| `downedDeerclops ↔ bool` | 击败鹿角怪 |
+
+### Boss 击败进度 — 困难模式 {#hardmode-bosses}
+
+| 属性 | 说明 |
+|----------|-------------|
+| `downedDestroyer ↔ bool` | 击败毁灭者(机械蠕虫) |
+| `downedTwins ↔ bool` | 击败双子魔眼 |
+| `downedSkeletronPrime ↔ bool` | 击败机械骷髅王 |
+| `downedMechBossAny → bool` | 击败任意机械 Boss(只读计算属性) |
+| `downedPlantera ↔ bool` | 击败世纪之花 |
+| `downedGolem ↔ bool` | 击败石巨人 |
+| `downedFishron ↔ bool` | 击败猪龙鱼公爵 |
+| `downedLunaticCultist ↔ bool` | 击败拜月教邪教徒 |
+| `downedMoonlord ↔ bool` | 击败月亮领主 |
+| `downedEmpressOfLight ↔ bool` | 击败光之女皇 |
+| `downedQueenSlime ↔ bool` | 击败史莱姆皇后 |
+
+### 节日事件 Boss
+
+| 属性 | 说明 |
+|----------|-------------|
+| `downedHalloweenTree ↔ bool` | 击败哀木(南瓜月) |
+| `downedHalloweenKing ↔ bool` | 击败南瓜王(南瓜月) |
+| `downedChristmasTree ↔ bool` | 击败常绿尖叫怪(霜月) |
+| `downedSanta ↔ bool` | 击败圣诞坦克(霜月) |
+| `downedChristmasQueen ↔ bool` | 击败冰雪女王(霜月) |
+| `downedClown ↔ bool` | 击败小丑(血月) |
+
+### 天界柱 {#celestial-pillars}
+
+| 属性 | 说明 |
+|----------|-------------|
+| `downedCelestialSolar ↔ bool` | 击败日耀柱 |
+| `downedCelestialNebula ↔ bool` | 击败星云柱 |
+| `downedCelestialVortex ↔ bool` | 击败星旋柱 |
+| `downedCelestialStardust ↔ bool` | 击败星尘柱 |
+| `celestialSolarActive ↔ bool` | 日耀柱当前活跃在场 |
+| `celestialVortexActive ↔ bool` | 星旋柱当前活跃在场 |
+| `celestialNebulaActive ↔ bool` | 星云柱当前活跃在场 |
+| `celestialStardustActive ↔ bool` | 星尘柱当前活跃在场 |
+
+### 事件与入侵 {#events-and-invasions}
+
+| 属性 | 说明 |
+|----------|-------------|
+| `downedGoblins ↔ bool` | 击退哥布林军队 |
+| `downedFrost ↔ bool` | 击退雪人军团 |
+| `downedPirates ↔ bool` | 击退海盗入侵 |
+| `downedMartians ↔ bool` | 击退火星暴乱 |
+| `downedDD2InvasionT1 ↔ bool` | 击退撒旦军队 一级 |
+| `downedDD2InvasionT2 ↔ bool` | 击退撒旦军队 二级 |
+| `downedDD2InvasionT3 ↔ bool` | 击退撒旦军队 三级(双足翼龙) |
+| `invasionType ↔ int` | 当前入侵类型 ID |
+| `invasionSize ↔ int` | 当前入侵剩余规模 |
+| `invasionX ↔ double` | 当前入侵事件中心 X 坐标 |
+
+### NPC 拯救标记
+
+| 属性 | 说明 |
+|----------|-------------|
+| `savedGoblin ↔ bool` | 已解救哥布林工匠 |
+| `savedMech ↔ bool` | 已解救机械师 |
+| `savedWizard ↔ bool` | 已解救巫师 |
+| `savedStylist ↔ bool` | 已解救发型师 |
+| `savedTaxCollector ↔ bool` | 已解救税收官 |
+| `savedBartender ↔ bool` | 已解救酒馆老板 |
+| `savedGolfer ↔ bool` | 已解救高尔夫球手 |
+| `savedAngler ↔ bool` | 已解救渔夫 |
+| `anglerQuest ↔ int` | 当前渔夫任务 ID |
+
+### 城镇宠物 {#town-pets}
+
+| 属性 | 说明 |
+|----------|-------------|
+| `boughtCat ↔ bool` | 已购买城镇猫咪 |
+| `boughtDog ↔ bool` | 已购买城镇狗狗 |
+| `boughtBunny ↔ bool` | 已购买城镇兔子 |
+
+### NPC 解锁入住标记
+
+| 属性 | 说明 |
+|----------|-------------|
+| `unlockedMerchantSpawn ↔ bool` | 已解锁商人入住 |
+| `unlockedDemolitionistSpawn ↔ bool` | 已解锁爆破专家入住 |
+| `unlockedPartyGirlSpawn ↔ bool` | 已解锁派对女孩入住 |
+| `unlockedDyeTraderSpawn ↔ bool` | 已解锁染料商入住 |
+| `unlockedTruffleSpawn ↔ bool` | 已解锁松露人入住 |
+| `unlockedArmsDealerSpawn ↔ bool` | 已解锁军火商入住 |
+| `unlockedNurseSpawn ↔ bool` | 已解锁护士入住 |
+| `unlockedPrincessSpawn ↔ bool` | 已解锁公主入住 |
+
+### 城镇史莱姆 {#town-slimes}
+
+| 属性 | 说明 |
+|----------|-------------|
+| `unlockedSlimeBlueSpawn ↔ bool` | 书呆子史莱姆已入住 |
+| `unlockedSlimeGreenSpawn ↔ bool` | 酷酷史莱姆已入住 |
+| `unlockedSlimeOldSpawn ↔ bool` | 长者史莱姆已入住 |
+| `unlockedSlimePurpleSpawn ↔ bool` | 笨拙史莱姆已入住 |
+| `unlockedSlimeRainbowSpawn ↔ bool` | 天后史莱姆已入住 |
+| `unlockedSlimeRedSpawn ↔ bool` | 暴躁史莱姆已入住 |
+| `unlockedSlimeYellowSpawn ↔ bool` | 神秘史莱姆已入住 |
+| `unlockedSlimeCopperSpawn ↔ bool` | 侍卫史莱姆已入住 |
+
+### 灯笼夜
+
+| 属性 | 说明 |
+|----------|-------------|
+| `lanternNightCooldown ↔ int` | 灯笼夜冷却倒计时 |
+| `lanternNightManual ↔ bool` | 手动触发的灯笼夜 |
+| `lanternNightGenuine ↔ bool` | 自然触发的灯笼夜正在进行 |
+| `lanternNightNextNightIsGenuine ↔ bool` | 明晚是否会自然发生灯笼夜 |
+
+### 派对
+
+| 属性 | 说明 |
+|----------|-------------|
+| `partyManual ↔ bool` | 手动触发的派对 |
+| `partyGenuine ↔ bool` | 自然触发的派对正在进行 |
+| `partyCooldown ↔ int` | 派对冷却倒计时 |
+
+### 背景样式 {#backgrounds}
+
+| 属性 | 说明 |
+|----------|-------------|
+| `bgOcean ↔ byte` | 海洋背景样式 |
+| `bgDesert ↔ byte` | 沙漠背景样式 |
+| `bgCrimson ↔ byte` | 猩红之地背景样式 |
+| `bgHallow ↔ byte` | 神圣之地背景样式 |
+| `bgSnow ↔ byte` | 雪原背景样式 |
+| `bgJungle ↔ byte` | 丛林背景样式 |
+| `bgCorruption ↔ byte` | 腐化之地背景样式 |
+| `bgTree ↔ byte` | 森林背景样式 1 |
+| `bgTree2 ↔ byte` | 森林背景样式 2 |
+| `bgTree3 ↔ byte` | 森林背景样式 3 |
+| `bgTree4 ↔ byte` | 森林背景样式 4 |
+| `underworldBg ↔ byte` | 地狱背景样式 |
+| `mushroomBg ↔ byte` | 发光蘑菇生物群系背景样式 |
+| `iceBackStyle ↔ int` | 冰雪地下背景样式 |
+| `jungleBackStyle ↔ int` | 丛林地下背景样式(洞穴) |
+| `hellBackStyle ↔ int` | 地狱地下背景样式 |
+
+### 树木与洞穴风格
+
+| 属性 | 说明 |
+|----------|-------------|
+| `treeX0 ↔ int`, `treeX1 ↔ int`, `treeX2 ↔ int` | 树木风格分区边界 X 坐标 |
+| `treeStyle0 ↔ int` – `treeStyle3 ↔ int` | 各分区的树木外观样式 |
+| `treeTop1 ↔ int` – `treeTop4 ↔ int` | 各分区的树冠外观样式 |
+| `caveBackX0 ↔ int`, `caveBackX1 ↔ int`, `caveBackX2 ↔ int` | 洞穴背景分区边界 X 坐标 |
+| `caveBackStyle0 ↔ int` – `caveBackStyle3 ↔ int` | 各分区的洞穴背景外观样式 |
+
+### 世界边界
+
+| 属性 | 说明 |
+|----------|-------------|
+| `topWorld ↔ float` | 世界顶部边界 |
+| `bottomWorld ↔ float` | 世界底部边界 |
+| `leftWorld ↔ float` | 世界左侧边界 |
+| `rightWorld ↔ float` | 世界右侧边界 |
+
+### 其他属性
+
+| 属性 | 说明 |
+|----------|-------------|
+| `cultistDelay ↔ int` | 拜月教徒重生倒计时 |
+| `apocalypse ↔ bool` | 启示录末日模式 |
+
+## `metadata` — 游戏数据字典查询
+
+| 方法 | 说明 |
+|--------|-------------|
+| `tileId(name) → int` | 根据物块英文名称查询 ID,未找到返回 0(不区分大小写) |
+| `wallId(name) → int` | 根据墙壁英文名称查询 ID,未找到返回 0(不区分大小写) |
+| `itemId(name) → int` | 根据物品英文名称查询 ID,未找到返回 0(不区分大小写) |
+| `tileName(id) → string` | 根据物块 ID 查询英文名称,未找到返回空字符串 |
+| `wallName(id) → string` | 根据墙壁 ID 查询英文名称,未找到返回空字符串 |
+| `itemName(id) → string` | 根据物品 ID 查询英文名称,未找到返回空字符串 |
+| `allTiles() → [{id, name}]` | 获取所有物块定义的列表 |
+| `allWalls() → [{id, name}]` | 获取所有墙壁定义的列表 |
+| `allItems() → [{id, name}]` | 获取所有物品定义的列表 |
+
+## `log` — 脚本日志输出
+
+| 方法 | 说明 |
+|--------|-------------|
+| `print(msg)` | 输出常规日志信息 |
+| `warn(msg)` | 输出黄色警告信息 |
+| `error(msg)` | 输出红色错误信息 |
+| `progress(value)` | 更新底部进度条(0.0–1.0) |
+
+## `finder` — 侧边栏“查找”面板联动
+
+| 方法 | 说明 |
+|--------|-------------|
+| `clear()` | 清除“查找”面板中的所有搜索结果 |
+| `addResult(name, x, y, type, extraInfo?) → bool` | 向结果列表添加一条记录(上限 1,000 条);若达到上限返回 false |
+| `navigate(index)` | 视图直接导航居中至第 index 条结果(从 0 开始) |
+| `navigateFirst()` | 视图直接导航居中至第一条搜索结果 |
+
+## `tools` — 界面工具与文件交互
+
+| 方法 | 说明 |
+|--------|-------------|
+| `listTools() → [string]` | 获取所有可用工具的名称列表 |
+| `copySelection()` | 将当前选区内的物块复制到剪贴板 |
+| `getTilePickerTile() → int` | 获取当前物块选择器中选中的物块 ID |
+| `getTilePickerWall() → int` | 获取当前墙壁选择器中选中的墙壁 ID |
+| `getFilePath() → string` | 获取当前加载的世界文件完整路径 |
+| `setFilePath(path)` | 设置当前世界文件路径(仅修改变量,不实际保存) |
+| `getWorldsFolder() → string` | 获取系统默认的泰拉瑞亚世界存档文件夹路径 |
+| `getCloudWorldsFolders() → [{userId, path}]` | 获取所有 Steam 云存档文件夹路径及对应的用户 ID |
+| `save() → bool` | 静默保存世界至当前路径(不弹出文件对话框) |
+| `saveAs(filename, version?) → bool` | 静默保存世界到指定文件名(不弹出对话框,可指定保存格式版本) |
+| `load(filename) → bool` | 加载指定世界文件替换当前世界(同步阻塞直到完成) |
+
+:::tip 简短文件名支持
+`saveAs` 与 `load` 支持直接传入简写文件名(例如 `"MyWorld.wld"` 甚至是 `"MyWorld"`)——若参数中不包含任何路径分隔符,将自动定位到系统默认的泰拉瑞亚存档目录。如果省略 `.wld` 扩展名,系统会自动补全。
+:::
+
+:::note
+`tools` API 仅在 TEdit UI 图形界面中运行脚本时可用。在测试或无界面 (headless) 模式下不可用。
+:::
+
+```javascript
+// 保存当前世界
+tools.save();
+
+// 保存到默认存档文件夹 — 直接指定文件名即可
+tools.saveAs("MyWorld-Copy");
+
+// 完整路径同样支持
+tools.saveAs("C:/Users/me/Documents/My Games/Terraria/Worlds/MyWorld-Copy.wld");
+
+// 从默认存档文件夹直接加载另一个世界
+tools.load("OtherWorld");
+
+// 列出 Steam 云存档文件夹路径
+var clouds = tools.getCloudWorldsFolders();
+for (var i = 0; i < clouds.length; i++) {
+ log.print("Steam user " + clouds[i].userId + ": " + clouds[i].path);
+}
+```
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/auto-update.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/auto-update.md
new file mode 100644
index 0000000..a615bd5
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/auto-update.md
@@ -0,0 +1,37 @@
+---
+sidebar_position: 4
+description: 更新通道与自动更新机制
+---
+
+# 自动更新
+
+TEdit 5 采用 Velopack 实现直接从 GitHub Releases 进行程序自动更新。
+
+## 更新通道
+
+| 通道 | 说明描述 |
+|---|---|
+| **稳定版** | 经过充分测试的正式发行版 — 推荐绝大多数用户使用 |
+| **公测版** | 包含前瞻新特性的预览版,可能包含少量非致命小 Bug |
+| **内测版** | 最前沿的先锋测试版,可能不够稳定 |
+
+## 运作方式
+
+1. 启动软件时,TEdit 会在后台自动检查是否有新版本(若开启了更新检查)。
+2. 若有可用更新,将提示您是否下载。
+3. 下载完成后,点击 **应用并重启** 即可完成安装。
+
+## 切换更新通道
+
+1. 点击菜单栏 **编辑 > 设置**。
+2. 找到 **更新通道** 设置项。
+3. 在下拉菜单中选择 Stable、Beta 或 Alpha。
+4. TEdit 随后便会在所选通道中检查更新版本。
+
+:::info
+从高版本通道(如 Alpha/Beta)降级切回低版本通道(如 Stable)时,若当前版本高于稳定版,可能需要执行一次降级覆盖安装。
+:::
+
+## 彻底关闭自动更新
+
+在设置中将 **检查更新** 开关关闭,即可彻底禁用启动时的自动更新检测。您随时可以在 [GitHub Releases](https://github.com/TEdit/Terraria-Map-Editor/releases) 页面手动下载新版本。
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/corrupted-world-recovery.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/corrupted-world-recovery.md
new file mode 100644
index 0000000..ec13590
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/corrupted-world-recovery.md
@@ -0,0 +1,29 @@
+---
+sidebar_position: 6
+description: 修复损坏的泰拉瑞亚世界存档
+---
+
+# 损坏世界修复
+
+当您的泰拉瑞亚世界文件受损导致在游戏内无法加载时,TEdit 或许依然能够打开并对其进行修复。
+
+## 修复步骤
+
+1. **在 TEdit 中打开世界** — TEdit 有时能够打开泰拉瑞亚游戏无法读取的世界
+2. **检查损坏情况** — 查看是否有丢失的区块、混乱的物块或地形断层空洞
+3. **手动修补** — 使用笔刷和填充工具修补受损区域
+4. **另存为新文件** — 切勿直接覆盖原始文件,以防需要重新尝试
+
+## 泰拉瑞亚原版备份文件
+
+泰拉瑞亚原版会自动生成 `.wld.bak` 备份文件。请检查您的世界存档目录:
+
+`Documents\My Games\Terraria\Worlds`
+
+将 `.wld.bak` 文件重命名为 `.wld`,尝试加载该备份。
+
+## 预防措施
+
+- 在进行大规模编辑前,始终使用 **另存为** 创建备份副本
+- 在[设置](../configuration/settings.md)中开启**自动保存**
+- 将重要的世界副本单独保存在另一个文件夹中
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/image-schematics.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/image-schematics.md
new file mode 100644
index 0000000..2bc35a8
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/image-schematics.md
@@ -0,0 +1,23 @@
+---
+sidebar_position: 2
+description: 将图片转换为泰拉瑞亚物块点阵像素画
+---
+
+# 图片转结构图
+
+TEdit 可以将图片文件转换为由游戏物块构成的像素画,供您粘贴到世界中。
+
+## 操作流程
+
+1. 点击菜单栏 **插件 > 图片转结构图**。
+2. 选择一张图片文件(支持 PNG、JPG、BMP 等格式)。
+3. TEdit 会自动将图片中的每个像素色彩映射到颜色最接近的泰拉瑞亚物块上。
+4. 转换结果会自动载入到[剪贴板](../sidebar-panels/clipboard.md)中作为结构图。
+5. 将其直接粘贴到世界中。
+
+## 实用技巧
+
+- **较小的图片效果更佳** — 100×100 像素的图片在地图上会变成 100×100 格物块
+- **建议提前减少色彩** — 泰拉瑞亚原版物块的调色板颜色有限
+- 线条清晰、对比鲜明的扁平像素画转换效果最好
+- 可以使用**剪贴板**将生成的结构图导出保存,以便日后重复使用
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/scripting-guide.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/scripting-guide.md
new file mode 100644
index 0000000..552a037
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/scripting-guide.md
@@ -0,0 +1,1237 @@
+---
+sidebar_position: 1
+description: 编写 JavaScript 与 Lua 自动化脚本指南及实战范例
+---
+
+# 脚本自动化指南
+
+TEdit 5 内置了强大的脚本自动化引擎。支持使用 **JavaScript** (Jint) 或 **Lua** 编写脚本,批量处理物块、搜索世界、程序化填充结构等。
+
+## AI 辅助编写脚本
+
+你可以借助 AI 聊天助手快速生成 TEdit 脚本。点击下方链接直接发起对话,或复制预设 Prompt 粘贴到你常用的 AI 工具中。
+
+export const aiPrompt = `You are a TEdit 5 scripting assistant. TEdit is a Terraria world editor with a built-in JavaScript (Jint) scripting engine.\n\nAPI documentation: https://docs.tedit.dev/advanced/scripting-guide\nTile/wall/item data files: https://github.com/TEdit/Terraria-Map-Editor/tree/main/src/TEdit.Terraria/Data (tiles.json, walls.json, items.json, npcs.json, prefixes.json, paints.json, etc.)\n\nKey API objects:\n- tile: read/write individual tiles (getTileType, setType, setWall, setLiquid, etc.)\n- batch: bulk operations (forEachTile, replaceTile, findTilesByType, etc.)\n- geometry: shape helpers (line, rect, ellipse, fillRect, fillEllipse, setTiles, setWalls)\n- selection: current selection bounds and point-in-selection test\n- chests: chest inventory read/write\n- signs: sign text read/write\n- npcs: NPC management\n- world: read-only world metadata (width, height, title, seed, spawnX, spawnY)\n- metadata: name/ID lookups (tileId, wallId, itemId, tileName, wallName, itemName)\n- log: output (print, warn, error, progress)\n- draw: drawing tools (pencil, brush, fill, routeWire, routeBus for CAD-style wire routing)\n- generate: procedural generation — trees (tree, forest, forestInSelection), worldgen structures (tileRunner, tunnel, lake, oreVein, listOreTypes, findSurface)\n- finder: add results to the Find sidebar panel\n- tools: UI tool access, file operations (save, saveAs, load, getFilePath, setFilePath)\n\nWhen writing scripts:\n- Use metadata.tileId("name") and metadata.wallId("name") to look up IDs by name\n- Always check selection.isActive before using selection-based operations\n- Use log.print() for output and log.progress() for long operations\n- Scripts have full access to the loaded world data\n- Framed tiles can be shifted UV coordinates to become another style of the same item (e.g. platforms, banners, chests). Check tiles.json for frame UV values.\n\nHelp the user write JavaScript scripts for TEdit. Ask what they want to accomplish and generate working scripts.`;
+
+
+
+
+复制适用于 Claude 或 Gemini 的 Prompt 提示词
+
+由于 Claude 和 Gemini 暂不支持通过 URL 预填 Prompt,请直接复制下方提示词粘贴到对话框中开始:
+
+```text
+You are a TEdit 5 scripting assistant. TEdit is a Terraria world editor with a
+built-in JavaScript (Jint) scripting engine.
+
+API documentation: https://docs.tedit.dev/advanced/scripting-guide
+Tile/wall/item data files:
+https://github.com/TEdit/Terraria-Map-Editor/tree/main/src/TEdit.Terraria/Data
+(tiles.json, walls.json, items.json, npcs.json, prefixes.json, paints.json, etc.)
+
+Key API objects:
+- tile: read/write individual tiles (getTileType, setType, setWall, setLiquid, etc.)
+- batch: bulk operations (forEachTile, replaceTile, findTilesByType, etc.)
+- geometry: shape helpers (line, rect, ellipse, fillRect, fillEllipse, setTiles, setWalls)
+- selection: current selection bounds and point-in-selection test
+- chests: chest inventory read/write
+- signs: sign text read/write
+- npcs: NPC management
+- world: read-only world metadata (width, height, title, seed, spawnX, spawnY)
+- metadata: name/ID lookups (tileId, wallId, itemId, tileName, wallName, itemName)
+- log: output (print, warn, error, progress)
+- draw: drawing tools (pencil, brush, fill, routeWire, routeBus for CAD wire routing)
+- generate: procedural generation — trees (tree, forest, forestInSelection), worldgen structures (tileRunner, tunnel, lake, oreVein, listOreTypes, findSurface)
+- finder: add results to the Find sidebar panel
+- tools: UI tool access
+
+When writing scripts:
+- Use metadata.tileId("name") and metadata.wallId("name") to look up IDs by name
+- Always check selection.isActive before using selection-based operations
+- Use log.print() for output and log.progress() for long operations
+- Scripts have full access to the loaded world data
+- Framed tiles can be shifted UV coordinates to become another style of the same item
+ (e.g. platforms, banners, chests). Check tiles.json for frame UV values.
+
+Help me write a JavaScript script for TEdit that:
+```
+
+
+
+## 基础入门
+
+脚本在运行时拥有对当前已加载世界数据的完整访问权限。[脚本侧边栏](../sidebar-panels/scripting.md)提供了带有语法高亮的代码编辑器、脚本文件管理功能以及运行日志输出控制台。
+
+### 你好,世界
+
+```javascript
+log.print("Hello from TEdit scripting!");
+log.print(`World: ${world.title} (${world.width}x${world.height})`);
+```
+
+```lua
+log.print("Hello from TEdit scripting!")
+log.print("World: " .. world.title)
+```
+
+## TypeScript 代码智能补全 {#typescript-autocomplete}
+
+TEdit 随附提供了官方 TypeScript 类型声明文件(`tedit-api.d.ts`),可以在 VS Code 或任何支持 TypeScript 的代码编辑器中为您提供完整的语法提示与文档注释——即使是普通的纯 `.js` 脚本同样生效!
+
+### 配置方法
+
+1. **获取类型声明文件** — 该文件已经内置保存在您的 TEdit Scripts 脚本文件夹中(点击脚本侧边栏中的 **Open Scripts Folder** 按钮即可直接打开)。您也可以直接在此处下载:
+
+ **[下载 tedit-api.d.ts](/tedit-api.d.ts)**
+
+2. **添加文件引用** — 在您的 `.js` 脚本文件最顶部添加以下这一行:
+
+ ```javascript
+ ///
+ ```
+
+ 只要 `tedit-api.d.ts` 与您的脚本处于同一目录下(默认即处于同一目录),VS Code 就会自动加载它。
+
+3. **享受代码补全** — 编写代码时即可获得所有 API 全局对象的 IntelliSense 补全(`tile`、`batch`、`world`、`tools`、`draw`、`generate` 等)。将鼠标悬停在任意方法上即可查看其功能说明与参数类型。
+
+:::tip
+`/// ` 注释在 TEdit 的脚本引擎执行时会被自动忽略——它仅供代码编辑器识别使用。无论是否包含该行,脚本的实际运行效果完全一致。
+:::
+
+## 常用配方范例
+
+### 替换选区内的物块
+
+```javascript
+if (!selection.isActive) {
+ log.error("Select an area first!");
+}
+
+const from = metadata.tileId("Dirt Block");
+const to = metadata.tileId("Stone Block");
+const count = batch.replaceTileInSelection(from, to);
+log.print(`Replaced ${count} tiles`);
+```
+
+### 用墙壁填充矩形区域
+
+```javascript
+geometry.setWalls(metadata.wallId("Stone Wall"), 100, 200, 50, 30);
+log.print("Filled 50x30 area with stone walls");
+```
+
+### 查找包含特定物品的所有宝箱
+
+```javascript
+const chests = chests.findByItemName("Zenith");
+for (const c of chests) {
+ log.print(`Found at (${c.x}, ${c.y}): ${c.name || "Chest"}`);
+ finder.addResult("Zenith Chest", c.x, c.y, "chest");
+}
+log.print(`Found ${chests.length} chests with Zenith`);
+```
+
+### 用物块绘制圆形
+
+```javascript
+const points = geometry.fillEllipse(500, 300, 25, 25);
+const tileType = metadata.tileId("Glass Block");
+for (const p of points) {
+ tile.setType(p.x, p.y, tileType);
+}
+log.print(`Placed ${points.length} glass tiles`);
+```
+
+### 清除某种类型的所有物块
+
+```javascript
+const count = batch.clearTilesByType(metadata.tileId("Sand Block"));
+log.print(`Cleared ${count} sand blocks`);
+```
+
+### 为耗时操作显示进度条
+
+```javascript
+const total = world.width * world.height;
+let processed = 0;
+
+batch.forEachTile((x, y) => {
+ // ... 在此编写您的业务逻辑 ...
+ processed++;
+ if (processed % 100000 === 0) {
+ log.progress(processed / total);
+ }
+});
+log.progress(1.0);
+log.print("Done!");
+```
+
+## 更多实战范例
+
+### 读取指定坐标的图格信息
+
+```javascript
+const x = 500, y = 300;
+log.print(`Active: ${tile.isActive(x, y)}`);
+log.print(`Type: ${metadata.tileName(tile.getTileType(x, y))}`);
+log.print(`Wall: ${metadata.wallName(tile.getWall(x, y))}`);
+log.print(`Paint: ${tile.getPaint(x, y)}`);
+log.print(`Liquid: type=${tile.getLiquidType(x, y)} amount=${tile.getLiquidAmount(x, y)}`);
+log.print(`Frame: U=${tile.getFrameU(x, y)} V=${tile.getFrameV(x, y)}`);
+log.print(`Slope: ${tile.getSlope(x, y)}`);
+```
+
+### 为选区内的所有物块涂漆
+
+```javascript
+if (!selection.isActive) { log.error("Select an area first!"); }
+
+const paintColor = 13; // 13 = 深红 (Deep Red)
+batch.forEachInSelection((x, y) => {
+ if (tile.isActive(x, y)) {
+ tile.setPaint(x, y, paintColor);
+ }
+});
+log.print("Painted all tiles in selection");
+```
+
+### 为选区内的墙壁涂漆
+
+```javascript
+if (!selection.isActive) { log.error("Select an area first!"); }
+
+const paintColor = 12; // 深色系涂漆 ID 从 12 附近开始
+batch.forEachInSelection((x, y) => {
+ if (tile.getWall(x, y) > 0) {
+ tile.setWallPaint(x, y, paintColor);
+ }
+});
+log.print("Painted all walls in selection");
+```
+
+### 在选区内注满水
+
+```javascript
+if (!selection.isActive) { log.error("Select an area first!"); }
+
+batch.forEachInSelection((x, y) => {
+ tile.setLiquid(x, y, 255, 1); // 255 = 满格, 1 = 水
+});
+log.print("Filled selection with water");
+```
+
+### 挖掘一条熔岩护城河
+
+```javascript
+// 在指定位置挖掘一条充满熔岩的护城河
+const startX = 400, startY = 290, width = 60, depth = 6;
+
+// 清理沟渠区域的物块
+geometry.clearTiles(startX, startY, width, depth);
+
+// 注入熔岩
+for (let x = startX; x < startX + width; x++) {
+ for (let y = startY; y < startY + depth; y++) {
+ tile.setLiquid(x, y, 255, 2); // 2 = 熔岩
+ }
+}
+log.print(`Lava moat: ${width}x${depth} at (${startX}, ${startY})`);
+```
+
+### 为平台边缘添加斜坡
+
+```javascript
+if (!selection.isActive) { log.error("Select an area first!"); }
+
+const stoneId = metadata.tileId("Stone Block");
+batch.forEachInSelection((x, y) => {
+ if (tile.isActive(x, y) && tile.getTileType(x, y) === stoneId) {
+ // 检查物块上方是否为空气 — 对暴露的顶部进行敲锤塑形
+ if (!tile.isActive(x, y - 1)) {
+ // 左边缘设为 SlopeTopLeft,右边缘设为 SlopeTopRight
+ if (tile.isActive(x - 1, y) && !tile.isActive(x + 1, y)) {
+ tile.setSlope(x, y, "SlopeTopRight");
+ } else if (!tile.isActive(x - 1, y) && tile.isActive(x + 1, y)) {
+ tile.setSlope(x, y, "SlopeTopLeft");
+ }
+ }
+ }
+});
+log.print("Added slopes to exposed stone edges");
+```
+
+### 用红电线铺设整个区域
+
+```javascript
+if (!selection.isActive) { log.error("Select an area first!"); }
+
+let count = 0;
+batch.forEachInSelection((x, y) => {
+ if (tile.isActive(x, y)) {
+ tile.setWire(x, y, 1, true); // 1 = 红电线
+ count++;
+ }
+});
+log.print(`Added red wire to ${count} tiles`);
+```
+
+### 在两点之间布设单条电线
+
+```javascript
+// 以 90° 直角布设单条红电线
+draw.setWire(true, false, false, false);
+draw.routeWire(100, 200, 150, 220, '90', 'h');
+log.print("Routed red wire");
+```
+
+### 布设多条平行电线总线
+
+```javascript
+// 以 45° 倒角布设 5 条平行绿电线总线
+draw.setWire(false, false, true, false);
+const count = draw.routeBus(5, 100, 200, 200, 250, '45', 'auto');
+log.print(`Placed ${count} wire tiles in 5-wire bus`);
+```
+
+### 沿布线路径铺设物块 (平台、轨道等)
+
+```javascript
+// 使用布线几何算法铺设一条石块走道
+draw.setTile(metadata.tileId("Stone Block"));
+draw.routeWire(50, 50, 100, 80, '90', 'v');
+log.print("Routed stone path");
+```
+
+### 用彩色电线总线连接出生点与地牢
+
+```javascript
+// 从世界出生点到地牢布设 3 根红蓝双色总线
+draw.setWire(true, true, false, false);
+draw.routeBus(3, world.spawnX, world.spawnY - 5, world.dungeonX, world.dungeonY, '90', 'auto');
+log.print("Connected spawn to dungeon with wire bus");
+```
+
+### 向下复制整列物块
+
+```javascript
+// 将 x=500 处顶部 10 行物块向下复制 10 格
+const x = 500;
+for (let y = 0; y < 10; y++) {
+ tile.copy(x, y, x, y + 10);
+}
+log.print("Copied column");
+```
+
+### 统计选区内各种物块的数量
+
+```javascript
+if (!selection.isActive) { log.error("Select an area first!"); }
+
+const counts = {};
+batch.forEachInSelection((x, y) => {
+ if (tile.isActive(x, y)) {
+ const id = tile.getTileType(x, y);
+ counts[id] = (counts[id] || 0) + 1;
+ }
+});
+
+// 排序并展示数量排名前 10 的物块
+const sorted = Object.entries(counts)
+ .map(([id, n]) => ({ name: metadata.tileName(Number(id)), count: n }))
+ .sort((a, b) => b.count - a.count);
+
+for (const t of sorted.slice(0, 10)) {
+ log.print(`${t.name}: ${t.count}`);
+}
+```
+
+### 使用自定义条件查找物块
+
+```javascript
+// 查找所有涂有深红油漆的物块
+const results = batch.findTiles((x, y) => {
+ return tile.isActive(x, y) && tile.getPaint(x, y) === 12;
+});
+
+finder.clear();
+for (const p of results) {
+ finder.addResult("Painted tile", p.x, p.y, "tile");
+}
+log.print(`Found ${results.length} painted tiles (max 10,000)`);
+```
+
+### 定位多格物体 (anchorOnly)
+
+```javascript
+// 查找所有生命水晶 — anchorOnly 使每个多格物体仅返回一个锚点结果
+const heartId = metadata.tileId("Heart Crystal");
+const hearts = batch.findTilesByType(heartId, true);
+
+finder.clear();
+for (const p of hearts) {
+ finder.addResult("Heart Crystal", p.x, p.y, "tile");
+}
+log.print(`Found ${hearts.length} heart crystals`);
+```
+
+### 按墙壁类型查找并高亮物块
+
+```javascript
+const wallId = metadata.wallId("Lihzahrd Brick Wall");
+const results = batch.findTilesByWall(wallId);
+
+finder.clear();
+for (const p of results) {
+ finder.addResult("Lihzahrd Wall", p.x, p.y, "wall");
+}
+log.print(`Found ${results.length} Lihzahrd wall tiles`);
+```
+
+### 在全图范围内替换墙壁
+
+```javascript
+const from = metadata.wallId("Dirt Wall");
+const to = metadata.wallId("Stone Wall");
+const count = batch.replaceWall(from, to);
+log.print(`Replaced ${count} dirt walls with stone walls`);
+```
+
+### 在两点之间绘制一条物块线
+
+```javascript
+const points = geometry.line(100, 300, 250, 280);
+const tileType = metadata.tileId("Obsidian Brick");
+for (const p of points) {
+ tile.setType(p.x, p.y, tileType);
+}
+log.print(`Placed ${points.length} tiles in a line`);
+```
+
+### 绘制矩形线框轮廓
+
+```javascript
+const points = geometry.rect(200, 200, 40, 20);
+const tileType = metadata.tileId("Gray Brick");
+for (const p of points) {
+ tile.setType(p.x, p.y, tileType);
+}
+log.print(`Drew rectangle outline: ${points.length} tiles`);
+```
+
+### 绘制椭圆形线框轮廓
+
+```javascript
+const points = geometry.ellipse(300, 300, 30, 20);
+const tileType = metadata.tileId("Glass Block");
+for (const p of points) {
+ tile.setType(p.x, p.y, tileType);
+}
+log.print(`Drew ellipse outline: ${points.length} tiles`);
+```
+
+### 清空矩形区域内的物块
+
+```javascript
+geometry.clearTiles(100, 200, 50, 30);
+log.print("Cleared 50x30 area");
+```
+
+### 通过脚本创建选区
+
+```javascript
+// 从 (200, 300) 开始创建一个 100x50 的选区
+selection.set(200, 300, 100, 50);
+log.print(`Selection: (${selection.x}, ${selection.y}) ${selection.width}x${selection.height}`);
+```
+
+### 检测出生点是否位于选区内
+
+```javascript
+if (!selection.isActive) { log.error("Select an area first!"); }
+
+if (selection.contains(world.spawnX, world.spawnY)) {
+ log.print("Spawn point is inside the selection");
+} else {
+ log.print("Spawn point is outside the selection");
+}
+```
+
+### 列出所有宝箱及其物品内容
+
+```javascript
+const allChests = chests.getAll();
+log.print(`Total chests: ${chests.count}`);
+
+for (const c of allChests.slice(0, 20)) {
+ log.print(`--- Chest at (${c.x}, ${c.y}): ${c.name || "Chest"} ---`);
+ for (const item of c.items) {
+ if (item.id > 0) {
+ log.print(` [${item.slot}] ${metadata.itemName(item.id)} x${item.stack}`);
+ }
+ }
+}
+```
+
+### 向每个宝箱中添加一件物品
+
+```javascript
+const itemId = metadata.itemId("Torch");
+let added = 0;
+
+for (const c of chests.getAll()) {
+ if (chests.addItem(c.x, c.y, itemId, 99, 0)) {
+ added++;
+ }
+}
+log.print(`Added torches to ${added} chests`);
+```
+
+### 清空所有宝箱的指定槽位
+
+```javascript
+let cleared = 0;
+for (const c of chests.getAll()) {
+ chests.clearItem(c.x, c.y, 0); // 清空 0 号槽位(第一个物品槽)
+ cleared++;
+}
+log.print(`Cleared slot 0 from ${cleared} chests`);
+```
+
+### 将宝箱指定槽位设置为特定物品
+
+```javascript
+// 在坐标 (500, 300) 处宝箱的 0 号槽位放置一把传奇天顶剑
+const zenithId = metadata.itemId("Zenith");
+chests.setItem(500, 300, 0, zenithId, 1, 81); // 81 = 传奇 Legendary 前缀
+log.print("Placed Legendary Zenith in chest");
+```
+
+### 按名称搜索宝箱
+
+```javascript
+// 查找所有名称包含 "Loot" 的宝箱(不区分大小写子串匹配)
+const results = chests.findByName("Loot");
+finder.clear();
+for (const c of results) {
+ log.print(`"${c.name}" at (${c.x}, ${c.y})`);
+ finder.addResult(c.name, c.x, c.y, "chest");
+}
+log.print(`Found ${results.length} chests matching "Loot"`);
+```
+
+### 重命名宝箱
+
+```javascript
+// 设置坐标 (500, 300) 处宝箱的名称/标签
+chests.setName(500, 300, "My Storage");
+log.print("Chest renamed");
+```
+
+### 列出所有标牌及其文字内容
+
+```javascript
+log.print(`Total signs: ${signs.count}`);
+for (const s of signs.getAll()) {
+ const preview = s.text.substring(0, 50);
+ log.print(`(${s.x}, ${s.y}): "${preview}"`);
+}
+```
+
+### 更新指定坐标标牌的文字
+
+```javascript
+signs.setText(500, 300, "Welcome to my base!");
+log.print("Sign updated");
+```
+
+### 依序为所有标牌按序号编号
+
+```javascript
+const allSigns = signs.getAll();
+for (let i = 0; i < allSigns.length; i++) {
+ const s = allSigns[i];
+ signs.setText(s.x, s.y, `Sign #${i + 1}`);
+}
+log.print(`Numbered ${allSigns.length} signs`);
+```
+
+### 列出所有城镇 NPC
+
+```javascript
+log.print(`Total NPCs: ${npcs.count}`);
+for (const npc of npcs.getAll()) {
+ log.print(`${npc.name} at (${npc.x}, ${npc.y}) home: (${npc.homeX}, ${npc.homeY})`);
+ finder.addResult(npc.name, npc.x, npc.y, "npc");
+}
+```
+
+### 调整 NPC 的入住住宅
+
+```javascript
+npcs.setHome("Guide", 500, 290);
+log.print("Moved Guide's home to (500, 290)");
+```
+
+### 显示世界元数据信息
+
+```javascript
+log.print(`Title: ${world.title}`);
+log.print(`Seed: ${world.seed}`);
+log.print(`Size: ${world.width} x ${world.height}`);
+log.print(`Spawn: (${world.spawnX}, ${world.spawnY})`);
+log.print(`Surface: ${world.surfaceLevel}`);
+log.print(`Rock layer: ${world.rockLevel}`);
+```
+
+### 按名称模糊搜索物品
+
+```javascript
+const keyword = "sword";
+const allItems = metadata.allItems();
+const matches = allItems.filter(i =>
+ i.name.toLowerCase().includes(keyword.toLowerCase())
+);
+
+log.print(`Items matching "${keyword}":`);
+for (const item of matches.slice(0, 20)) {
+ log.print(` [${item.id}] ${item.name}`);
+}
+log.print(`${matches.length} total matches`);
+```
+
+### 按名称查询 ID
+
+```javascript
+log.print(`Dirt Block = tile ${metadata.tileId("Dirt Block")}`);
+log.print(`Stone Wall = wall ${metadata.wallId("Stone Wall")}`);
+log.print(`Zenith = item ${metadata.itemId("Zenith")}`);
+log.print(`Tile 0 = ${metadata.tileName(0)}`);
+log.print(`Wall 1 = ${metadata.wallName(1)}`);
+log.print(`Item 1 = ${metadata.itemName(1)}`);
+```
+
+### 在“查找”面板中生成搜索结果
+
+```javascript
+finder.clear();
+
+// 查找所有恶魔祭坛
+const altarId = metadata.tileId("Demon Altar");
+const altars = batch.findTilesByType(altarId, true);
+
+for (const p of altars) {
+ finder.addResult("Demon Altar", p.x, p.y, "tile",
+ `at depth ${p.y - world.surfaceLevel}`);
+}
+log.print(`Found ${altars.length} altars — check Find panel`);
+finder.navigateFirst();
+```
+
+### 读取物块选择器并放置对应物块
+
+```javascript
+// 放置用户当前在物块选择器中选中的物块
+const pickerTile = tools.getTilePickerTile();
+if (pickerTile < 0) {
+ log.error("No tile selected in the tile picker!");
+}
+
+if (!selection.isActive) { log.error("Select an area first!"); }
+
+batch.forEachInSelection((x, y) => {
+ tile.setType(x, y, pickerTile);
+});
+log.print(`Filled selection with ${metadata.tileName(pickerTile)}`);
+```
+
+### 读取当前选择器的设定数值
+
+```javascript
+const currentTile = tools.getTilePickerTile();
+const currentWall = tools.getTilePickerWall();
+log.print(`Tile picker: ${metadata.tileName(currentTile)} (${currentTile})`);
+log.print(`Wall picker: ${metadata.wallName(currentWall)} (${currentWall})`);
+```
+
+### 建造一间简易房屋
+
+```javascript
+const x = 400, y = 290;
+const w = 12, h = 7;
+const wallType = metadata.tileId("Wood");
+const wallBg = metadata.wallId("Wood Wall");
+
+// 地板与天花板
+geometry.setTiles(wallType, x, y, w, 1); // 天花板
+geometry.setTiles(wallType, x, y + h - 1, w, 1); // 地板
+
+// 左右两侧墙壁
+for (let dy = 0; dy < h; dy++) {
+ tile.setType(x, y + dy, wallType);
+ tile.setType(x + w - 1, y + dy, wallType);
+}
+
+// 铺设背景墙
+geometry.setWalls(wallBg, x + 1, y + 1, w - 2, h - 2);
+
+// 清理室内空间
+geometry.clearTiles(x + 1, y + 1, w - 2, h - 2);
+
+// 在地板中间放置 3 格宽度的木平台作为出入口
+const platId = metadata.tileId("Wood Platform");
+const doorX = x + Math.floor(w / 2) - 1;
+for (let dx = 0; dx < 3; dx++) {
+ tile.setType(doorX + dx, y + h - 1, platId);
+}
+
+log.print(`Built ${w}x${h} house at (${x}, ${y})`);
+```
+
+### 建造一座 NPC 居民公寓楼
+
+在出生点正上方建造一座四层公寓楼,为所有 26 位[城镇 NPC](https://terraria.wiki.gg/zh/wiki/NPC#%E5%9F%8E%E9%95%87_NPC)各提供一间标准房间。每间房均完全符合[房屋判定要求](https://terraria.wiki.gg/zh/wiki/%E6%88%BF%E5%B1%8B):木质外框、背景墙、火把(光源)、工作台(桌类)、木椅(椅类)以及木门(出入口)。世界中现存的 NPC 会通过 `npcs.setHome()` 自动入住对应房间。
+
+:::note
+脚本 API 无法凭空生成新的 NPC — 它只能管理当前世界中已经存在的 NPC。该脚本为全部 26 位 NPC 预先建好合法房屋,以便它们在入驻世界后能立即分配到有效住宅。
+:::
+
+```javascript
+// === NPC 公寓楼建造脚本 ===
+// 四层公寓楼 — 为全部 26 位城镇 NPC 各建一间独立标准房(共 28 间,2 间备用)。
+// 外径 12×7 = 内径 10×5,连同边框与背景墙完全满足原版房屋 60 格空间要求。
+// 家具使用 sprites.placeByName() 放置 — 自动处理多格物体对齐与 UV 帧。
+
+// ── 全部 26 位城镇 NPC(肉前 18 + 肉后 8) ──
+const townNpcNames = [
+ // 肉山前 (18)
+ "Guide", "Merchant", "Nurse", "Demolitionist", "Dye Trader",
+ "Angler", "Zoologist", "Dryad", "Painter", "Golfer",
+ "Arms Dealer", "Tavernkeep", "Stylist", "Goblin Tinkerer",
+ "Witch Doctor", "Clothier", "Mechanic", "Party Girl",
+ // 肉山后 (8)
+ "Wizard", "Tax Collector", "Truffle", "Pirate",
+ "Steampunker", "Cyborg", "Santa Claus", "Princess"
+];
+const npcCount = townNpcNames.length; // 26
+
+// ── 尺寸规划 ──
+const roomW = 12; // 单间宽度(含外墙)
+const roomH = 7; // 单间高度(含地板/天花板)
+const nFloors = 4;
+const perFloor = Math.ceil(npcCount / nFloors); // 每层 7 间
+
+// 相邻房间共用 1 格隔断墙;楼层共用天花板/地板
+const totalW = perFloor * (roomW - 1) + 1; // 总宽 78 格
+const totalH = roomH * nFloors - (nFloors - 1); // 总高 25 格
+
+// 将建筑居中置于世界出生点上方
+const baseX = world.spawnX - Math.floor(totalW / 2);
+const baseY = world.spawnY - totalH;
+
+// ── 物块与墙壁 ID ──
+const wood = metadata.tileId("Wood");
+const woodWall = metadata.wallId("Wood Wall");
+const PLATFORM = 19;
+
+// ── 油漆颜色(泰拉瑞亚油漆 ID) ──
+// 1=红漆 2=橙漆 3=黄漆 4=橙绿漆 5=绿漆 6=青绿漆 7=青漆 8=天蓝漆
+// 9=蓝漆 10=紫漆 11=蓝紫漆 12=粉漆 13–24=深色变体(13 为深红漆) 25=黑漆
+// 26=白漆 27=灰漆 28=棕漆
+const paintColors = [
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28
+];
+
+log.print(`Building ${npcCount}-room hotel (${perFloor} per floor)`);
+log.print(`Location: (${baseX}, ${baseY}) Size: ${totalW}×${totalH}`);
+
+// ── 1. 框选并清空建筑区域 ──
+selection.set(baseX, baseY, totalW, totalH);
+geometry.clearTiles(baseX, baseY, totalW, totalH);
+
+// ── 2. 建造主体结构(木质框架) ──
+// 水平楼板:顶部天花板、楼层间共用楼板、地面层
+geometry.setTiles(wood, baseX, baseY, totalW, 1);
+for (let f = 1; f < nFloors; f++) {
+ geometry.setTiles(wood, baseX, baseY + f * (roomH - 1), totalW, 1);
+}
+geometry.setTiles(wood, baseX, baseY + totalH - 1, totalW, 1);
+
+// 左右外墙
+for (let y = baseY; y < baseY + totalH; y++) {
+ tile.setType(baseX, y, wood);
+ tile.setType(baseX + totalW - 1, y, wood);
+}
+
+// 房间之间的隔断墙(全高)
+for (let r = 1; r < perFloor; r++) {
+ const wx = baseX + r * (roomW - 1);
+ for (let y = baseY; y < baseY + totalH; y++) {
+ tile.setType(wx, y, wood);
+ }
+}
+
+// ── 3. 逐房间处理:墙壁 → 涂漆 → 平台 → 物体家具 → 分配 NPC ──
+const existingNpcs = {};
+for (const n of npcs.getAll()) { existingNpcs[n.name] = true; }
+
+let npcIdx = 0;
+let assigned = 0;
+for (let f = 0; f < nFloors; f++) {
+ const floorTopY = baseY + f * (roomH - 1);
+ const standY = floorTopY + roomH - 2; // 站在实心地板之上的那一格
+ const doorTopY = floorTopY + roomH - 4; // 木门锚点行(1×3 的顶格)
+
+ for (let r = 0; r < perFloor; r++) {
+ const rx = baseX + r * (roomW - 1);
+ const ix = rx + 1; // 室内第一列
+ const roomNum = f * perFloor + r;
+ const paint = paintColors[roomNum % paintColors.length];
+
+ // ── a. 铺设背景墙并涂漆 ──
+ const wallTop = f > 0 ? floorTopY : floorTopY + 1;
+ const wallBot = floorTopY + roomH - 2;
+ for (let wy = wallTop; wy <= wallBot; wy++) {
+ for (let wx = rx + 1; wx < rx + roomW - 1; wx++) {
+ tile.setWall(wx, wy, woodWall);
+ tile.setWallPaint(wx, wy, paint);
+ }
+ }
+
+ // ── b. 在共用楼板铺设平台(用于上下楼层通行) ──
+ if (f > 0) {
+ const platX = rx + Math.floor(roomW / 2) - 1;
+ for (let i = 0; i < 3; i++) {
+ tile.setType(platX + i, floorTopY, PLATFORM);
+ tile.setFrameUV(platX + i, floorTopY, 0, 0);
+ }
+ }
+
+ // ── c. 放置物体家具:门、火把、工作台、木椅 ──
+ // 相邻房间之间的隔断门
+ if (r > 0) {
+ sprites.placeByName("Wooden Door", rx, doorTopY);
+ }
+ // 最左侧外墙的入口门
+ if (r === 0) {
+ sprites.placeByName("Wooden Door", baseX, doorTopY);
+ }
+
+ if (npcIdx < npcCount) {
+ sprites.placeByName("Torch", ix + 7, standY);
+ sprites.placeByName("Wooden Work Bench", ix + 1, standY);
+ sprites.placeByName("Wooden Chair", ix + 4, standY);
+
+ // ── d. 分配 NPC 入住(站在实心地板上方) ──
+ const npcName = townNpcNames[npcIdx];
+ const homeX = ix + 8;
+ const homeY = standY + 1; // 实心地板所在行
+ if (existingNpcs[npcName]) {
+ npcs.setHome(npcName, homeX, homeY);
+ log.print(`Room ${npcIdx + 1}: ${npcName} (paint ${paint}) ✓`);
+ assigned++;
+ } else {
+ log.print(`Room ${npcIdx + 1}: ${npcName} (paint ${paint}) — not yet in world`);
+ }
+ npcIdx++;
+ }
+ }
+}
+
+selection.clear();
+log.print(`\nHotel complete! ${npcCount} rooms built, ${assigned} NPCs assigned.`);
+```
+
+
+房间布局结构图(展示 4 层中的下 2 层)
+
+```
+ 每间房间外宽 12 格(共用隔断墙)
+ ├───────────┤
+ ... ... (上方为第 3、4 层)
+ WW===WWWWWWWWW===WWWWWWW ── 共用楼板(中间为木平台)
+ W..........DW..........W ┐
+ W..........DW..........W │ 第 2 层(高 7 格)
+ W.WW.C..T..DW.WW.C..T..W │ WW=工作台 C=椅子
+ W..........WW..........W │ T=火把 D=木门
+ WW===WWWWWWWWW===WWWWWWW ── 共用楼板(中间为木平台)
+ W..........DW..........W ┐
+ W..........DW..........W │ 第 1 层(高 7 格)
+ W.WW.C..T..DW.WW.C..T..W │
+ W..........WW..........W ┘
+ DWWWWWWWWWWWWWWWWWWWWWWW ── 地面一层
+ D = 每层最左侧外墙的入口门
+
+ 每层 7 间房 × 4 层 = 28 间房(26 位城镇 NPC + 2 间备用)
+```
+
+
+
+### 放置单棵树木
+
+```javascript
+// 在坐标 (500, 300) 处放置一棵橡树
+var placed = generate.tree("oak", 500, 300);
+log.print("Tree placed: " + placed);
+```
+
+### 在选区内生成混交林
+
+```javascript
+if (!selection.isActive) { log.error("Select an area first!"); }
+
+var count = generate.forestInSelection(["oak", "sakura", "diamond"], 0.15);
+log.print("Placed " + count + " trees");
+```
+
+### 列出所有可用树木类型
+
+```javascript
+var types = generate.listTreeTypes();
+for (var i = 0; i < types.length; i++) {
+ log.print(types[i].name + " (tile " + types[i].tileId + ")");
+}
+```
+
+### 查找某一列的地表高度
+
+```javascript
+var surface = generate.findSurface(500, 0, world.height - 1);
+if (surface >= 0) {
+ log.print("Surface at y=" + surface);
+ finder.clear();
+ finder.addResult("Surface", 500, surface, "tile");
+ finder.navigateFirst();
+} else {
+ log.print("No surface found");
+}
+```
+
+### 在选区内铺设棋盘格图案
+
+```javascript
+if (!selection.isActive) { log.error("Select an area first!"); }
+
+const tileA = metadata.tileId("Ebonstone Block");
+const tileB = metadata.tileId("Pearlstone Block");
+
+batch.forEachInSelection((x, y) => {
+ tile.setType(x, y, (x + y) % 2 === 0 ? tileA : tileB);
+});
+log.print("Checkerboard pattern applied");
+```
+
+### 排干选区内的所有液体
+
+```javascript
+if (!selection.isActive) { log.error("Select an area first!"); }
+
+let count = 0;
+batch.forEachInSelection((x, y) => {
+ if (tile.getLiquidAmount(x, y) > 0) {
+ tile.setLiquid(x, y, 0, 0);
+ count++;
+ }
+});
+log.print(`Drained liquid from ${count} tiles`);
+```
+
+### 刮除选区内的所有油漆涂料
+
+```javascript
+if (!selection.isActive) { log.error("Select an area first!"); }
+
+let count = 0;
+batch.forEachInSelection((x, y) => {
+ if (tile.getPaint(x, y) > 0) {
+ tile.setPaint(x, y, 0);
+ count++;
+ }
+ if (tile.getWallPaint(x, y) > 0) {
+ tile.setWallPaint(x, y, 0);
+ count++;
+ }
+});
+log.print(`Stripped paint from ${count} tiles/walls`);
+```
+
+### 拆除选区内的所有电线
+
+```javascript
+if (!selection.isActive) { log.error("Select an area first!"); }
+
+let count = 0;
+batch.forEachInSelection((x, y) => {
+ for (let color = 1; color <= 4; color++) {
+ if (tile.getWire(x, y, color)) {
+ tile.setWire(x, y, color, false);
+ count++;
+ }
+ }
+});
+log.print(`Removed ${count} wire segments`);
+```
+
+---
+
+## API 参考速查
+
+### `tile` — 物块底层读写
+
+| 方法 | 说明 |
+|--------|-------------|
+| `isActive(x, y) → bool` | 检查图格是否有激活的实体物块 |
+| `getTileType(x, y) → int` | 获取物块类型 ID |
+| `getWall(x, y) → int` | 获取墙壁类型 ID |
+| `getPaint(x, y) → int` | 获取物块油漆颜色 ID |
+| `getWallPaint(x, y) → int` | 获取墙壁油漆颜色 ID |
+| `getLiquidAmount(x, y) → int` | 获取液体量(0–255) |
+| `getLiquidType(x, y) → int` | 获取液体类型(0=无, 1=水, 2=熔岩, 3=蜂蜜) |
+| `getFrameU(x, y) → int` | 获取物体帧 U 坐标 |
+| `getFrameV(x, y) → int` | 获取物体帧 V 坐标 |
+| `getSlope(x, y) → string` | 获取斜坡类型字符串 |
+| `getWire(x, y, color) → bool` | 检查指定颜色电线(1=红, 2=蓝, 3=绿, 4=黄) |
+| `getTileEcho(x, y) → bool` | 检查物块是否涂有回声涂料(隐形) |
+| `getWallEcho(x, y) → bool` | 检查墙壁是否涂有回声涂料(隐形) |
+| `getTileIlluminant(x, y) → bool` | 检查物块是否涂有夜明涂料(全亮) |
+| `getWallIlluminant(x, y) → bool` | 检查墙壁是否涂有夜明涂料(全亮) |
+| `setActive(x, y, active)` | 设置物块激活状态 |
+| `setType(x, y, type)` | 设置物块类型(同时激活物块) |
+| `setWall(x, y, wallType)` | 设置墙壁类型 |
+| `setPaint(x, y, color)` | 设置物块油漆颜色 |
+| `setWallPaint(x, y, color)` | 设置墙壁油漆颜色 |
+| `setLiquid(x, y, amount, type)` | 设置液体量与类型 |
+| `setWire(x, y, color, enabled)` | 设置指定颜色电线状态 |
+| `setSlope(x, y, slope)` | 设置斜坡(None, HalfBrick, SlopeTopRight 等) |
+| `setFrameUV(x, y, u, v)` | 设置物体帧纹理坐标 |
+| `setTileEcho(x, y, value)` | 设置物块回声涂料(隐形) |
+| `setWallEcho(x, y, value)` | 设置墙壁回声涂料(隐形) |
+| `setTileIlluminant(x, y, value)` | 设置物块夜明涂料(全亮) |
+| `setWallIlluminant(x, y, value)` | 设置墙壁夜明涂料(全亮) |
+| `clear(x, y)` | 重置图格为默认空白状态 |
+| `copy(fromX, fromY, toX, toY)` | 完整复制图格属性 |
+
+### `batch` — 批量操作
+
+| 方法 | 说明 |
+|--------|-------------|
+| `forEachTile(callback)` | 遍历整个世界 — `callback(x, y)` |
+| `forEachInSelection(callback)` | 遍历当前选区 — `callback(x, y)` |
+| `findTiles(predicate) → [{x, y}]` | 查找符合断言条件的图格(上限 10,000) |
+| `findTilesByType(type, anchorOnly?) → [{x, y}]` | 按类型查找物块;anchorOnly 为 true 时仅返回多格物体锚点 |
+| `findTilesByWall(wallType) → [{x, y}]` | 按墙壁类型查找图格(上限 10,000) |
+| `replaceTile(from, to) → int` | 全图替换指定类型物块;返回替换数 |
+| `replaceTileInSelection(from, to) → int` | 仅在选区内替换指定类型物块;返回替换数 |
+| `replaceWall(from, to) → int` | 全图替换指定类型墙壁;返回替换数 |
+| `clearTilesByType(type) → int` | 清除全图中指定类型的所有物块;返回清除数 |
+
+### `geometry` — 几何图形
+
+| 方法 | 说明 |
+|--------|-------------|
+| `line(x1, y1, x2, y2) → [{x, y}]` | 两点之间的直线坐标 |
+| `rect(x, y, w, h) → [{x, y}]` | 矩形线框轮廓坐标 |
+| `ellipse(cx, cy, rx, ry) → [{x, y}]` | 椭圆线框轮廓坐标 |
+| `fillRect(x, y, w, h) → [{x, y}]` | 实心矩形坐标 |
+| `fillEllipse(cx, cy, rx, ry) → [{x, y}]` | 实心椭圆坐标 |
+| `setTiles(type, x, y, w, h)` | 用指定物块填充矩形区域 |
+| `setWalls(type, x, y, w, h)` | 用指定墙壁填充矩形区域 |
+| `clearTiles(x, y, w, h)` | 清空矩形区域内的物块 |
+
+### `selection` — 选区管理
+
+| 属性/方法 | 说明 |
+|----------------|-------------|
+| `isActive → bool` | 选区是否处于激活状态 |
+| `x`, `y`, `width`, `height` | 选区边界尺寸(图格单位) |
+| `left`, `top`, `right`, `bottom` | 选区四边缘坐标 |
+| `set(x, y, w, h)` | 创建并激活选区 |
+| `clear()` | 取消/移除选区 |
+| `contains(x, y) → bool` | 点是否在选区内 |
+
+### `chests` — 宝箱物品栏
+
+| 方法 | 说明 |
+|--------|-------------|
+| `count → int` | 全图宝箱总数 |
+| `getAll() → [...]` | 获取所有宝箱列表 |
+| `getAt(x, y) → {...}` | 获取指定坐标处的宝箱 |
+| `findByItem(id) → [...]` | 按物品 NetId 查找宝箱 |
+| `findByItemName(name) → [...]` | 按物品名称查找宝箱 |
+| `setName(x, y, name)` | 设置宝箱名称/标签 |
+| `findByName(name) → [...]` | 按名称查找宝箱(不区分大小写子串匹配) |
+| `setItem(x, y, slot, id, stack, prefix)` | 设置指定槽位的物品 |
+| `clearItem(x, y, slot)` | 清空指定槽位 |
+| `addItem(x, y, id, stack, prefix) → bool` | 向第一个空槽位添加物品 |
+
+### `signs` — 标牌文字
+
+| 方法 | 说明 |
+|--------|-------------|
+| `count → int` | 全图标牌总数 |
+| `getAll() → [...]` | 获取所有标牌列表 |
+| `getAt(x, y) → {...}` | 获取指定坐标处的标牌 |
+| `setText(x, y, text)` | 更新标牌文字内容 |
+
+### `npcs` — 城镇 NPC
+
+| 方法 | 说明 |
+|--------|-------------|
+| `count → int` | 全图 NPC 总数 |
+| `getAll() → [...]` | 获取所有 NPC 及其坐标信息 |
+| `setHome(name, x, y)` | 设置 NPC 的入住住宅 |
+
+### `world` — 世界元数据(只读)
+
+| 属性 | 说明 |
+|----------|-------------|
+| `width`, `height` | 世界尺寸(图格单位) |
+| `title` | 世界名称 |
+| `seed` | 世界种子码 |
+| `spawnX`, `spawnY` | 世界出生点坐标 |
+| `surfaceLevel`, `rockLevel` | 地层分界高度 |
+
+### `metadata` — 游戏数据查询
+
+| 方法 | 说明 |
+|--------|-------------|
+| `tileId(name) → int` | 根据英文名查询物块 ID(未找到返回 0) |
+| `wallId(name) → int` | 根据英文名查询墙壁 ID |
+| `itemId(name) → int` | 根据英文名查询物品 ID |
+| `tileName(id) → string` | 根据物块 ID 查询英文名称 |
+| `wallName(id) → string` | 根据墙壁 ID 查询英文名称 |
+| `itemName(id) → string` | 根据物品 ID 查询英文名称 |
+| `allTiles()`, `allWalls()`, `allItems()` | 获取全部游戏定义列表 |
+
+### `log` — 脚本日志输出
+
+| 方法 | 说明 |
+|--------|-------------|
+| `print(msg)` | 输出常规日志 |
+| `warn(msg)` | 输出警告信息 |
+| `error(msg)` | 输出错误信息 |
+| `progress(value)` | 更新进度条(0.0–1.0) |
+
+### `finder` — 侧边栏“查找”面板联动
+
+| 方法 | 说明 |
+|--------|-------------|
+| `clear()` | 清除搜索结果 |
+| `addResult(name, x, y, type, extraInfo?)` | 添加一条结果记录(上限 1,000 条) |
+| `navigate(index)` | 视图居中导航至第 index 条结果 |
+| `navigateFirst()` | 视图居中导航至第一条结果 |
+
+### `tools` — 界面工具
+
+| 方法 | 说明 |
+|--------|-------------|
+| `listTools() → [string]` | 可用工具名称列表 |
+| `copySelection()` | 将选区内容复制到剪贴板 |
+| `getTilePickerTile() → int` | 当前物块选择器中选中的物块 ID |
+| `getTilePickerWall() → int` | 当前墙壁选择器中选中的墙壁 ID |
+
+### `tileEntities` — 图格实体管理
+
+| 属性/方法 | 说明 |
+|--------|-------------|
+| `count → int` | 全图图格实体总数 |
+| `weaponRackCount → int` | 武器架数量 |
+| `itemFrameCount → int` | 物品框数量 |
+| `mannequinCount → int` | 人体模型数量 |
+| `hatRackCount → int` | 帽架数量 |
+| `foodPlatterCount → int` | 盘子数量 |
+| `logicSensorCount → int` | 逻辑感应器数量 |
+| `trainingDummyCount → int` | 训练假人数量 |
+| `pylonCount → int` | 传送晶塔数量 |
+| `getAll() → [...]` | 获取所有图格实体列表 |
+| `getAt(x, y) → {...}` | 获取指定坐标处的实体 |
+| `getAllByType(typeName) → [...]` | 按类型名称获取实体 |
+| `getAllWeaponRacks() → [...]` | 获取所有武器架 |
+| `getAllItemFrames() → [...]` | 获取所有物品框 |
+| `getAllMannequins() → [...]` | 获取所有人体模型 |
+| `getAllHatRacks() → [...]` | 获取所有帽架 |
+| `getAllFoodPlatters() → [...]` | 获取所有盘子 |
+| `findByItem(itemId) → [...]` | 查找包含指定物品的实体 |
+| `setItem(x, y, itemId, prefix?, stack?)` | 设置单物品实体(武器架、物品框、盘子)上的物品 |
+| `clearItem(x, y)` | 移除单物品实体上的物品 |
+| `setEquipment(x, y, slot, itemId, prefix?)` | 设置人体模型装备槽位 |
+| `clearEquipment(x, y, slot)` | 清空人体模型装备槽位 |
+| `setDye(x, y, slot, dyeId, prefix?)` | 设置人体模型染料槽位 |
+| `clearDye(x, y, slot)` | 清空人体模型染料槽位 |
+| `setWeapon(x, y, itemId, prefix?)` | 设置人体模型手持武器 |
+| `clearWeapon(x, y)` | 清空人体模型手持武器 |
+| `setPose(x, y, poseId)` | 设置人体模型姿态(0–8) |
+| `getPose(x, y) → int` | 获取人体模型当前姿态 ID |
+| `setHatRackItem(x, y, slot, itemId, prefix?)` | 设置帽架槽位物品 |
+| `clearHatRackItem(x, y, slot)` | 清空帽架槽位物品 |
+| `setHatRackDye(x, y, slot, dyeId, prefix?)` | 设置帽架槽位染料 |
+| `clearHatRackDye(x, y, slot)` | 清空帽架槽位染料 |
+| `setLogicSensor(x, y, logicCheck, on)` | 设置逻辑感应器检测类型与开/关状态 |
+| `setTrainingDummyNpc(x, y, npcId)` | 设置绑定到训练假人的 NPC ID |
+
+完整的方法说明与详细代码示例请参阅 [API 参考手册完整版](api-reference.md#tileentities--tile-entity-management)。
+
+### `sprites` — 多格物体放置
+
+| 方法 | 说明 |
+|--------|-------------|
+| `listSprites() → [{tileId, name, styleCount}]` | 列出所有多格物体图集 |
+| `getStyles(tileId) → [{index, name, width, height}]` | 获取物块类型的样式列表 |
+| `place(tileId, styleIndex, x, y) → bool` | 按物块 ID 与样式放置物体 |
+| `placeByName(name, x, y) → bool` | 按名称放置匹配的第一个样式 |
+
+### `draw` — 绘制工具
+
+| 方法 | 说明 |
+|--------|-------------|
+| `setTile(tileType)` | 设置绘制的物块类型 |
+| `setWall(wallType)` | 设置绘制的墙壁类型 |
+| `setErase(bool)` | 开启/关闭橡皮擦模式 |
+| `setPaintMode(mode)` | 设置绘制模式:`'tile'`, `'wire'`, `'liquid'` |
+| `setTileColor(color)` | 设置物块涂漆颜色(0 为不涂漆) |
+| `setWallColor(color)` | 设置墙壁涂漆颜色(0 为不涂漆) |
+| `setBrickStyle(style)` | 斜坡样式:`'full'`, `'half'`, `'topright'` 等 |
+| `setActuator(enabled, inactive?)` | 设置促动器状态及虚化状态 |
+| `setTileCoating(echo?, illuminant?)` | 设置物块涂料(回声涂料、夜明涂料) |
+| `setWallCoating(echo?, illuminant?)` | 设置墙壁涂料(回声涂料、夜明涂料) |
+| `setLiquid(type, amount?)` | 液体类型:`'water'` / `'lava'` / `'honey'` / `'shimmer'` |
+| `setWire(red?, blue?, green?, yellow?)` | 设置各颜色电线绘制标记 |
+| `setTileMask(mode, tileType?)` | 物块遮罩:`'off'`, `'match'`, `'empty'`, `'notMatching'` |
+| `setWallMask(mode, wallType?)` | 墙壁遮罩模式 |
+| `setBrush(width, height, shape?)` | 笔刷形状:`'square'`, `'round'`, `'right'`, `'left'` 等 |
+| `setBrushOutline(outline, enabled)` | 设置笔刷线框宽度及是否仅绘制边框 |
+| `reset()` | 重置选择器与笔刷设置为默认值 |
+| `pencil(x1, y1, x2, y2)` | 绘制 1 像素宽度的线条 |
+| `brush(x1, y1, x2, y2)` | 绘制笔刷宽度的线条 |
+| `fill(x, y)` | 泛洪填充 |
+| `hammer(x1, y1, x2, y2)` | 沿线自动敲锤物块斜坡 |
+
+### `generate` — 树木与森林过程生成
+
+| 方法 | 说明 |
+|--------|-------------|
+| `listTreeTypes() → [{name, tileId}]` | 列出所有支持的树木类型名称与物块 ID |
+| `tree(type, x, y) → bool` | 在地面坐标放置单棵树木 |
+| `forest(types[], x, y, w, h, density?) → int` | 在矩形区域内随机生成树木(密度 0.0–1.0,默认 0.15) |
+| `forestInSelection(types[], density?) → int` | 在当前选区内随机生成树木混交林 |
+| `findSurface(x, yStart, yEnd) → int` | 向下扫描第一块实心物块表面;返回 y 坐标或 -1 |
+
+**树木类型:** `oak`(橡树)、`palm`(棕榈树)、`mushroom`(巨型发光蘑菇)、`topaz`(黄玉树)、`amethyst`(紫晶树)、`sapphire`(蓝玉树)、`emerald`(翡翠树)、`ruby`(红玉树)、`diamond`(钻石树)、`amber`(琥珀树)、`sakura`(樱花树)、`willow`(黄柳)、`ash`(灰烬树)
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/troubleshooting.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/troubleshooting.md
new file mode 100644
index 0000000..ae61e23
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/advanced/troubleshooting.md
@@ -0,0 +1,73 @@
+---
+sidebar_position: 5
+description: 常见问题与解决方法
+---
+
+# 疑难解答
+
+## 查看日志文件
+
+TEdit 将错误日志写入以下位置:
+
+```
+%AppData%\TEdit\Logs
+```
+
+在资源管理器中打开此路径即可找到 `log.txt`。您也可以从菜单栏访问:**帮助 > 查看日志**。
+
+:::tip 提示
+如果 `log.txt` 较大,在寻求帮助时建议将其上传到文本粘贴网站(如 [Pastebin](https://pastebin.com))。
+:::
+
+## TEdit 无法启动
+
+- 确保已安装 **.NET 10 Desktop Runtime**:[下载链接](https://dotnet.microsoft.com/download/dotnet/10.0)
+- 检查您的显卡是否支持 **DirectX 11**
+- 将显卡驱动程序更新至最新稳定版本
+- 尝试以管理员身份运行 TEdit
+- 打开任务管理器(`Ctrl+Shift+Esc`),检查 `TEdit.exe` 是否出现在进程列表中
+
+## 缺少物体贴图 / 显示为空白物块
+
+渲染物体需要已安装泰拉瑞亚。如果已安装但缺少贴图:
+
+1. 打开“设置”,检查 **Terraria Path** 设置项
+2. 确保其指向 `Terraria\Content`(包含 `Images/` 的文件夹)
+3. Steam 默认路径:`Program Files (x86)\Steam\steamapps\common\Terraria\Content`
+
+## 无法打开世界
+
+- 确保是未加 Mod 的纯净 `.wld` 文件 — TEdit 不支持 tModLoader 或 TConfig 世界
+- 尝试打开其他世界以确认 TEdit 本身运行正常
+- 检查文件是否损坏 — 请参阅[损坏世界修复](corrupted-world-recovery.md)
+
+## 崩溃或卡死
+
+- 超大世界可能需要一定时间加载 — 请耐心等待
+- 检查 `%AppData%\TEdit\Logs\log.txt` 日志文件中的错误详情
+- 尝试关闭其他占用内存较多的应用程序
+- 更新到最新版本的 TEdit
+
+## 性能缓慢
+
+- **缩小视图** — 在近距离渲染大量贴图会消耗较多 GPU 资源
+- 在“设置”中调整 **Texture Visibility Zoom Level**,以减少近距离下的贴图渲染
+- 在“设置”中调小 **Sprite Thumbnail Size**(物体缩略图尺寸)
+- 确保显卡驱动程序为最新版本
+
+## 重置 TEdit
+
+如果其他方法均无效,请尝试清除 TEdit 的缓存数据:
+
+1. 删除缓存文件夹:`%AppData%\TEdit`
+2. 删除设置文件夹:`%LocalAppData%\TEdit`
+3. 从[最新下载页面](https://github.com/TEdit/Terraria-Map-Editor/releases/latest)重新安装 TEdit
+
+## 仍未解决?
+
+- 加入官方 [Discord](https://discord.gg/SrwYZU2GDY) 寻求帮助
+- 提交 [GitHub Issue](https://github.com/TEdit/Terraria-Map-Editor/issues) — 请附带日志文件和复现步骤
+
+## 找不到某项设置?
+
+使用“设置”窗口顶部的**搜索栏**可按名称快速筛选设置项。
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/configuration/keybindings.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/configuration/keybindings.md
new file mode 100644
index 0000000..41d61c2
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/configuration/keybindings.md
@@ -0,0 +1,81 @@
+---
+sidebar_position: 2
+description: 键盘快捷键与自定义键位
+---
+
+# 快捷键
+
+TEdit 5 支持对大多数操作自定义键盘快捷键。
+
+## 默认快捷键
+
+### 工具
+
+| 快捷键 | 工具 |
+|---|---|
+| `A` | 箭头工具 |
+| `S` | 选区工具 |
+| `E` | 铅笔工具 |
+| `B` | 笔刷工具 |
+| `F` | 填充工具 |
+| `R` | 吸管工具(按住临时取色,单击切换) |
+| `P` | 点位工具 |
+| `T` | 物体工具 |
+
+### 文件操作
+
+| 快捷键 | 操作 |
+|---|---|
+| `Ctrl+O` | 打开世界 |
+| `Ctrl+S` | 保存 |
+| `Ctrl+Shift+S` | 另存为 |
+| `Ctrl+Z` | 撤销 |
+| `Ctrl+Y` | 重做 |
+
+### 选区与剪贴板
+
+| 快捷键 | 操作 |
+|---|---|
+| `Ctrl+C` | 复制选区 |
+| `Ctrl+V` | 粘贴 |
+| `Ctrl+D` | 取消选区 |
+| `Ctrl+A` | 全选 |
+
+### 浮动粘贴
+
+| 快捷键 | 操作 |
+|---|---|
+| `Ctrl+Q` | 顺时针旋转 90° |
+| `Ctrl+Shift+Q` | 逆时针旋转 90° |
+| `Ctrl+H` | 水平翻转 |
+| `Ctrl+Shift+H` | 垂直翻转 |
+| `Enter` | 确认粘贴 |
+| `Esc` | 取消粘贴 |
+
+### 视图
+
+| 快捷键 | 操作 |
+|---|---|
+| `Ctrl+=` | 放大 |
+| `Ctrl+-` | 缩小 |
+| 方向键 | 平移视野 |
+
+## 自定义快捷键
+
+打开 **编辑 > 设置** 并导航至快捷键部分。
+
+
+
+### 工具快捷键
+
+
+
+### 帮助与导航快捷键
+
+
+
+### 选区、开关与工具绘制快捷键
+
+
+
+修改按键:点击对应的按键绑定项,然后按下您的新按键组合即可。
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/configuration/localization.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/configuration/localization.md
new file mode 100644
index 0000000..4ff10ec
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/configuration/localization.md
@@ -0,0 +1,38 @@
+---
+sidebar_position: 4
+description: 界面语言选择与多语言翻译支持
+---
+
+# 界面语言与本地化
+
+TEdit 5 的用户界面支持 13 种语言,与泰拉瑞亚官方支持的语言完全一致。
+
+## 切换语言
+
+1. 打开 **编辑 > 设置**
+2. 找到 **语言** 设置项
+3. 从下拉菜单中选择您的语言
+4. 重启 TEdit 以应用更改
+
+## 支持的语言
+
+| 语言 | 区域代码 |
+|---|---|
+| 自动(跟随系统默认) | — |
+| 英语 (English) | en |
+| 阿拉伯语 (Arabic) | ar-BH |
+| 简体中文 (Chinese Simplified) | zh-Hans |
+| 繁体中文 (Chinese Traditional) | zh-Hant |
+| 法语 (French) | fr-FR |
+| 德语 (German) | de-DE |
+| 意大利语 (Italian) | it-IT |
+| 日语 (Japanese) | ja-JP |
+| 韩语 (Korean) | ko-KR |
+| 波兰语 (Polish) | pl-PL |
+| 巴西葡萄牙语 (Portuguese Brazil) | pt-BR |
+| 俄语 (Russian) | ru-RU |
+| 西班牙语 (Spanish) | es-ES |
+
+:::info 提示
+不同语言的翻译覆盖率可能有所不同。如果某些 UI 元素尚未翻译,将会自动回退显示为英文。
+:::
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/configuration/saves-and-backups.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/configuration/saves-and-backups.md
new file mode 100644
index 0000000..35df047
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/configuration/saves-and-backups.md
@@ -0,0 +1,49 @@
+---
+sidebar_position: 3
+description: 自动保存与备份管理
+---
+
+# 存档与备份
+
+:::danger 警告
+**在编辑前请务必备份您的世界文件!** TEdit 直接对世界文件进行修改。
+:::
+
+## 保存操作
+
+- **保存** (`Ctrl+S`) — 覆盖当前打开的世界文件
+- **另存为** (`Ctrl+Shift+S`) — 保存到新的文件路径
+
+## 自动保存 {#auto-save}
+
+在[设置](settings.md)中启用后,TEdit 会定期自动保存您的工作内容。这有助于防止因崩溃或误操作导致的数据丢失。
+
+## 自动 TEdit 备份 {#automatic-tedit-backups}
+
+每次执行保存时,TEdit 都会自动为您的世界文件创建一份 `.TEdit` 备份。备份文件采用数字后缀轮转管理——`.TEdit`、`.TEdit.2`、`.TEdit.3`,依此类推——使您始终拥有多个最近的还原点。
+
+| 设置项 | 说明解释 |
+|---|---|
+| **MaxBackups** | 每个世界保留的 `.TEdit` 备份文件数量上限(默认:10 份)。可在[设置](settings.md)中配置。 |
+
+当备份数量超过 MaxBackups 时,最旧的备份将被自动删除。将 MaxBackups 设为 `0` 可禁用自动备份。
+
+### 查找备份文件
+
+备份文件保存在与世界文件相同的文件夹中。它们也会直接显示在**世界浏览器** 中:
+
+- `.TEdit` 文件显示为 **"TEdit Backup"**
+- `.bak` 文件(泰拉瑞亚原版备份)显示为 **"Terraria Backup"**
+
+您可以直接从世界浏览器中打开任意备份文件。
+
+## 手动备份建议
+
+- 在编辑前,保留一份原始 `.wld` 文件的副本
+- 泰拉瑞亚世界文件通常位于:`Documents\My Games\Terraria\Worlds`
+- 使用 **另存为** 为编辑创建带版本号的命名(例如 `MyWorld-v2.wld`)
+- 可以考虑使用[剪贴板](../sidebar-panels/clipboard.md)导出重要建筑的结构图
+
+## 撤销与重做 {#undo--redo}
+
+TEdit 对绝大多数操作均支持撤销 (`Ctrl+Z`) 和重做 (`Ctrl+Y`)。撤销历史记录存储在内存中,关闭编辑器后将会丢失。
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/configuration/settings.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/configuration/settings.md
new file mode 100644
index 0000000..778400b
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/configuration/settings.md
@@ -0,0 +1,58 @@
+---
+sidebar_position: 1
+description: 设置中心 — 所有可配置选项
+---
+
+# 设置中心
+
+通过菜单栏打开设置:**编辑 > 设置** 或使用快捷键。
+
+
+
+TEdit 5 拥有全新重构的设置窗口,支持实时搜索与分类折叠管理。
+
+## 使用技巧
+
+- **搜索** — 在顶部搜索框中直接输入设置项名称即可快速查找
+- **分类** — 所有设置按模块归纳在可折叠的分组中
+- **保存 / 取消** — 应用保存更改或放弃还原
+
+## 设置分类详解
+
+### 通用设置
+
+控制软件全局行为与更新偏好。
+
+
+
+| 设置项 | 说明解释 |
+|---|---|
+| **自动保存** | 定期在后台自动保存当前世界 |
+| **检查更新** | 启动软件时自动检查是否有新版本 |
+| **更新通道** | 选择更新通道:稳定版、公测版或内测版 |
+| **语言** | 软件界面语言(详见 [多语言设置](localization.md)) |
+
+### 隐私与路径 {#privacy--paths}
+
+
+
+| 设置项 | 说明解释 |
+|---|---|
+| **错误反馈** | 发生异常时发送匿名崩溃报告以协助改进 TEdit。报告不包含任何个人隐私或世界地图数据,仅包含异常堆栈信息与基本系统信息。 |
+| **游戏路径** | 泰拉瑞亚 Content 资源文件夹路径(用于物体贴图渲染) |
+| **Steam User ID** | 覆盖自动侦测到的 Steam 用户 ID,精确定位对应的世界存档目录。当一台电脑上有多个 Steam 账号或路径异常时非常有效。 |
+| **最大备份数** | 每个世界保存的 `.TEdit` 循环备份文件上限(默认:10 份)。详见 [存档与备份](saves-and-backups.md#automatic-tedit-backups)。 |
+
+:::info
+错误报告需用户主动选择开启(默认关闭)。您可以随时关闭该选项,所收集信息仅严格用于排查与修复程序缺陷。
+:::
+
+### 渲染与图层
+
+
+
+| 设置项 | 说明解释 |
+|---|---|
+| **写实色彩** | 使用写实物块色彩代替小地图颜色 |
+| **材质显示阈值** | 开始显示物体贴图的缩放级别 |
+| **物体缩略图尺寸** | 侧边栏中物体缩略图的预览尺寸 |
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/contributing/developing.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/contributing/developing.md
new file mode 100644
index 0000000..4127bea
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/contributing/developing.md
@@ -0,0 +1,54 @@
+---
+sidebar_position: 1
+description: 开发环境搭建与源码编译指南
+---
+
+# 参与开发与贡献
+
+TEdit 是一款开源软件,非常欢迎全球开发者为项目贡献代码!
+
+## 官方源码仓库
+
+[https://github.com/TEdit/Terraria-Map-Editor](https://github.com/TEdit/Terraria-Map-Editor)
+
+## 环境准备与前置需求
+
+- **Visual Studio 2022**(17.8 或更高版本)或 **JetBrains Rider**
+- **.NET 10 SDK** — [前往微软官网下载](https://dotnet.microsoft.com/download/dotnet/10.0)
+- **Git** 版本控制工具
+
+## 源码编译步骤
+
+```bash
+git clone https://github.com/TEdit/Terraria-Map-Editor.git
+cd Terraria-Map-Editor
+dotnet build
+```
+
+## 本地启动与调试
+
+在 Visual Studio 或 Rider 中打开解决方案文件 `TEdit.slnx`,将启动项目设置为 `TEdit` 并运行调试即可。
+
+## 工程项目架构概览
+
+| 子工程 | 目标框架 | 说明职责 |
+|---|---|---|
+| `TEdit` | net10.0-windows (WPF) | 主桌面客户端应用程序 |
+| `TEdit5` | net10.0 (Avalonia) | 跨平台版本桌面客户端 |
+| `TEdit.Editor` | net10.0 | 编辑器核心逻辑、工具链、笔刷与绘制模式 |
+| `TEdit.Terraria` | net10.0 | 泰拉瑞亚世界文件底层二进制 I/O 与数据模型 |
+| `TEdit.Common` | netstandard2.0 | 公共通用类型、几何运算、JSON 序列化组件 |
+
+## 贡献流程指南
+
+1. Fork 官方仓库到您个人的 GitHub 账号
+2. 创建专属的特性分支(如 `feat/my-new-feature`)
+3. 编写代码并进行本地构建验证
+4. 提交 Pull Request
+
+欢迎查阅 [GitHub Issues](https://github.com/TEdit/Terraria-Map-Editor/issues) 查看当前开放的任务需求与 Bug 反馈列表。
+
+## 社区交流
+
+- [Discord 官方频道](https://discord.gg/SrwYZU2GDY) — 与其他开发者实时交流讨论
+- [GitHub Discussions 讨论区](https://github.com/TEdit/Terraria-Map-Editor/discussions) — 畅聊新特性设想与创意
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/getting-started.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/getting-started.md
new file mode 100644
index 0000000..fed26d7
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/getting-started.md
@@ -0,0 +1,45 @@
+---
+sidebar_position: 3
+---
+
+# 快速入门
+
+:::danger 极重要提醒
+**在进行任何编辑前,请务必先备份您的世界存档文件!**
+:::
+
+:::info 提示
+请确保您已阅读过[安装与系统要求](install-requirements.md)。
+:::
+
+## 打开世界地图
+
+1. 启动 `TEdit.exe`
+2. 点击菜单栏 **文件 > 打开** 或使用快捷键 `Ctrl+O` 打开 `.wld` 世界文件
+3. 泰拉瑞亚默认世界存档路径通常位于:
+ - `Documents\My Games\Terraria\Worlds`
+
+## 地图浏览与操作
+
+| 操作动作 | 控制方式 |
+|---|---|
+| 平移视角 | 鼠标中键按住拖拽,或使用键盘方向键 |
+| 缩放地图 | 滚动鼠标滚轮,或使用 `Ctrl+=` / `Ctrl+-` |
+
+:::tip 技巧
+缩放视角将紧随鼠标指针当前所在位置进行缩放——将鼠标对准想要放大的区域滚动滚轮即可。
+:::
+
+## 你的第一次编辑
+
+1. 从[工具栏](interface/toolbar.md)中选择**铅笔**工具
+2. 从[操作栏](interface/action-bar.md)中选择一种物块类型(例如:泥土块)
+3. 在地图画布上单击鼠标左键开始放置物块
+4. 通过 **文件 > 保存** 或 `Ctrl+S` 保存世界
+
+## 下一步
+
+- [界面概览](interface/overview.md) — 了解编辑器的界面布局
+- [工具栏](interface/toolbar.md) — 熟悉所有的编辑工具
+- [绘制模式](interface/paint-mode.md) — 物块、墙壁、液体、电线等图层的绘制技巧
+- [侧边栏面板](sidebar-panels/overview.md) — 剪贴板、世界属性、脚本等面板
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/install-requirements.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/install-requirements.md
new file mode 100644
index 0000000..4cc7fd6
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/install-requirements.md
@@ -0,0 +1,72 @@
+---
+sidebar_position: 2
+---
+
+# 安装与系统要求
+
+:::info
+使用 Mac、Linux 或移动设备?您可以直接体验网页端地图编辑器:[https://www.terraria-map-editor.com](https://www.terraria-map-editor.com)。
+:::
+
+## 安装说明
+
+TEdit 5 使用 [Velopack](https://velopack.io/) 进行程序安装和自动更新。
+
+1. 从 [最新发布页面](https://github.com/TEdit/Terraria-Map-Editor/releases/latest) 下载 `TEdit-Setup.exe`。
+2. 运行安装程序 — TEdit 将自动安装到您的本地 AppData 目录中。
+3. 从“开始”菜单或桌面快捷方式启动 TEdit。
+
+安装完成!后续新版本将自动在后台下载并应用(详见 [自动更新](advanced/auto-update.md))。
+
+### Windows SmartScreen 提示
+
+如果弹出 **Windows Defender SmartScreen** 拦截窗口,请依次点击 **“更多信息”** 然后点击 **“仍要运行”** 继续安装。TEdit 是开源软件,目前尚未进行代码签名,因此 Windows 可能会提示安装程序无法识别。
+
+
+
+### 修复安装
+
+若系统中已安装过 TEdit,运行安装程序将提供 **修复** 选项。该操作会清理当前安装并将最新版本重新安装到 `%LocalAppData%\TEdit`。
+
+
+
+:::tip 从旧版 `%AppData%` 安装路径迁移
+如果您之前将 TEdit 安装在 `%AppData%\TEdit`(旧版默认路径),请选择 **Repair** 切换到现代化的 `%LocalAppData%\TEdit` 路径。在确认新安装运行正常后,您可以安全删除旧的 `%AppData%\TEdit` 文件夹。
+:::
+
+:::tip
+如果您此前使用的是免安装绿色版 zip,也可以随时换用 Velopack 安装程序。确认新版正常运行后,旧的文件夹直接删除即可。
+:::
+
+### 便携版安装
+
+如果您更偏好免安装便携版:
+
+1. 从最新发布页面下载 `TEdit-x.x.x-win-x64.zip`。
+2. 解压到具有读写权限的任意空白文件夹中(如 `C:\Games\TEdit`)。
+3. 运行 `TEdit.exe` 启动。
+
+:::warning 注意
+绿色便携版不支持自动更新。后续有新版本发布时需要您手动下载解压。
+:::
+
+## 系统环境要求
+
+- **Windows 10/11 x64**(不支持 32 位及更早版本的 Windows 系统)
+- **.NET 10 Desktop Runtime** — Velopack 安装程序已内置携带。若使用绿色便携版,可[在此处单独下载安装](https://dotnet.microsoft.com/download/dotnet/10.0)。
+- 支持 **DirectX 11** 的独立或核心显卡,并配备最新显卡驱动。
+
+## 物体渲染预览
+
+若要渲染物体与贴图,必须已安装泰拉瑞亚本体或能够访问其游戏内容资源文件:
+
+- **Steam 版**:`Program Files (x86)\Steam\steamapps\common\Terraria\Content`
+- **GOG 版**:请查看您的 GOG 安装目录
+
+如果本地未安装泰拉瑞亚,TEdit 依然可以正常运行与编辑地图 — 只是无法看到物体(家具、装饰)的具体贴图外观。您可以在[应用程序设置](configuration/settings.md)中自定义指定内容目录路径。
+
+## 已知限制
+
+- 不直接兼容包含 Mod 专属物块的模组存档(tModLoader、TConfig 等)
+- 物体贴图显示依赖 Steam 或 GOG 原版泰拉瑞亚游戏资源
+- 某些老旧核心显卡可能会存在渲染兼容性问题
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/action-bar.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/action-bar.md
new file mode 100644
index 0000000..b6e04e8
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/action-bar.md
@@ -0,0 +1,23 @@
+---
+sidebar_position: 3
+description: 顶部面板 — 绘制模式、笔刷设置、物块选择器
+---
+
+# 操作栏
+
+操作栏位于顶部菜单栏的正下方,它的内容会根据当前选中的工具动态变化。它包含了绘制模式选择、笔刷属性设置、物块/墙壁拾取器以及特定工具的配置选项。
+
+
+
+## 组成组件
+
+根据当前激活的工具,操作栏会显示对应的设置面板:
+
+| 面板 | 显示时机 | 功能用途 |
+|---|---|---|
+| [绘制模式](paint-mode.md) | 铅笔、笔刷、填充工具激活时 | 选择当前绘制的目标类型(物块、墙壁、电线、液体、轨道) |
+| [笔刷设置](brush-settings.md) | 笔刷、环境演变、锤子工具激活时 | 调整笔刷大小、几何形状以及描边轮廓 |
+| 环境演变 | 环境演变工具激活时 | 选择目标生物群系及转换选项 |
+| NPC 选择器 | 点位选择工具激活时 | 选择要生成的生成点或 NPC 房间入住点 |
+
+详情请参阅各链接的专门说明文档。
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/brush-settings.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/brush-settings.md
new file mode 100644
index 0000000..404959c
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/brush-settings.md
@@ -0,0 +1,61 @@
+---
+sidebar_position: 5
+description: 笔刷大小、形状、喷枪模式与线框设置
+---
+
+# 笔刷设置
+
+当使用笔刷、环境演变或敲锤工具时,笔刷设置面板会显示在操作栏中。
+
+
+
+## 尺寸
+
+- **宽度** — 1 至 400 格物块(默认:20)
+- **高度** — 1 至 400 格物块(默认:20)
+- **锁定宽高** — 锁定宽高比例,使其保持相等
+
+可以使用滑块调节,也可以直接输入数字。
+
+## 形状
+
+| 形状 | 说明 |
+|---|---|
+| **方形** | 矩形/方形笔刷 |
+| **椭圆** | 椭圆/圆形笔刷 |
+| **向右倾斜** | 向右倾斜的对角线笔刷 |
+| **向左倾斜** | 向左倾斜的对角线笔刷 |
+| **星形** | 五角星形笔刷 |
+| **三角形** | 三角形笔刷 |
+| **月牙形** | 月牙形笔刷 |
+| **圆环形** | 环形笔刷(外圈填充,中心中空) |
+
+## 形状变换
+
+选定形状后,您可以对其应用变换:
+
+| 变换方式 | 说明 |
+|---|---|
+| **旋转** | 按设定度数旋转形状 |
+| **水平翻转** | 左右镜像翻转形状 |
+| **垂直翻转** | 上下镜像翻转形状 |
+
+形状变换在处理三角形和月牙等非对称形状时尤为实用。
+
+## 线框模式
+
+启用线框模式后,仅绘制形状的边缘边框,生成空心形状。
+
+- **线框粗细** — 1 到最小尺寸的一半
+- 勾选复选框开启或关闭线框模式
+
+## 喷枪模式
+
+喷枪模式使笔刷按照设定的时间间隔持续绘制,而不仅在鼠标移动时绘制。这会产生类似喷漆的效果——在原地按住鼠标即可按照设定速率持续绘制。
+
+- **启用** — 勾选 Spray 复选框开启或关闭喷射定时器
+- **间隔** — 设置两次喷射之间的间隔毫秒数(数值越小 = 喷射越快)
+
+:::tip 技巧
+喷枪模式非常适合用于创建随机分布或具质感的效果——建议与遮罩配合使用以限制绘制落点。
+:::
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/overview.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/overview.md
new file mode 100644
index 0000000..b3941b8
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/overview.md
@@ -0,0 +1,61 @@
+---
+sidebar_position: 1
+description: TEdit 5 界面布局概览
+---
+
+# 界面概览
+
+TEdit 5 采用了基于 WPF-UI 构建的现代化 Fluent Design 界面。
+
+
+
+## 布局区域
+
+编辑器划分为以下几个主要区域:
+
+| 区域 | 位置 | 功能用途 |
+|---|---|---|
+| **菜单栏** | 顶部 | 文件、编辑、图层、插件、帮助 |
+| **操作栏** | 菜单栏下方 | 绘制模式、笔刷设置、物块/墙壁选择器等 |
+| **工具栏** | 左侧 | 工具切换(箭头、铅笔、笔刷等) |
+| **地图画布** | 中央核心区 | 世界地图编辑画布——所有绘制与编辑都在这里发生 |
+| **侧边栏面板** | 右侧 | 剪贴板、世界属性、查找、筛选、脚本等 |
+| **状态栏** | 底部 | 鼠标指针坐标、当前指向物块信息、缩放倍率 |
+
+## 菜单栏详解
+
+### 文件
+
+
+
+用于打开、保存和导出世界存档。提供最近打开的文件列表以供快速加载。
+
+### 编辑
+
+
+
+撤销、重做、复制、粘贴、选区操作,以及进入设置中心。
+
+### 图层
+
+
+
+切换各渲染图层的显示与隐藏状态(物块、墙壁、电线、液体等)。
+
+**世界边界可视化** — 在“图层”菜单中启用 **显示世界边界**,即可在地图上叠加显示生物群系分界线。它会在不同生物群系(腐化、猩红、神圣、丛林、沙漠、雪原等)之间绘制显眼的标记线条,方便您直观查看环境分布并据此规划编辑。再次点击该选项即可关闭并返回常规视图。
+
+### 插件
+
+
+
+内置的插件功能和便捷辅助工具。
+
+### 帮助
+
+
+
+关于软件、外部链接和检查更新等信息。
+
+## 深色模式
+
+TEdit 5 默认启用深色主题。你可以在 [设置中心](../configuration/settings.md) 中随时切换深色/浅色模式。
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/paint-mode.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/paint-mode.md
new file mode 100644
index 0000000..42d7fe2
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/paint-mode.md
@@ -0,0 +1,115 @@
+---
+sidebar_position: 4
+description: 物块、墙壁、电线、液体、轨道、平台和物体绘制模式
+---
+
+# 绘制模式
+
+绘制模式下拉菜单决定了铅笔、笔刷和填充工具具体影响哪一个图层。切换模式可对不同图层元素进行绘制。
+
+## 物块与墙壁模式
+
+
+
+默认的绘制模式。在下拉框中选择要绘制的物块类型和/或背景墙类型。每个选项旁边均标有对应的内部数字 ID。
+
+**橡皮擦开关** — 激活时(高亮显示),绘制行为将变为擦除物块/墙壁,而不是放置。
+
+### 物块调色板
+
+
+
+操作栏中的选择框可以快速选定当前物块和墙壁类型。右侧的 [调色板面板](../sidebar-panels/palette.md) 则提供了更直观完整的物块与墙壁可视化网格,支持搜索与分类筛选。
+
+### 遮罩蒙版 {#masks}
+
+
+
+遮罩用于精准控制绘制行为的**生效范围**:
+
+| 遮罩模式 | 实际效果 |
+|---|---|
+| **禁用遮罩** | 无限制,在任意区域均可绘制 |
+| **仅编辑空白** | 仅在空白无物块/空气区域生效绘制 |
+| **仅编辑匹配项** | 仅在覆盖匹配遮罩指定类型的物块/墙壁时才生效替换 |
+
+在遮罩下拉框中设置遮罩类型——其列表与主选择器相同。物块遮罩与墙壁遮罩可以在 [调色板面板](../sidebar-panels/palette.md) 中完全独立配置。
+
+### 涂料与涂层
+
+你可以为物块和墙壁涂刷不同颜色的油漆,并应用特殊涂层:**回声涂料**、**夜明涂料** 与 **全亮涂料**。
+
+### 反色漆
+
+泰拉瑞亚原版中的 **反色漆**(ID: 30)会反转物块与墙壁的颜色。TEdit 5 通过专用的 GPU 着色器反转 RGB 通道并保留透明度,因此涂有反色漆的物块在编辑器画布上能与游戏内观感一致。
+
+## 电线模式 {#wire-mode}
+
+
+
+放置或拆除电线。支持多选同时绘制的电线颜色:红色、蓝色、绿色、黄色。在该模式下还可以同步放置促动器。
+
+按下 `Shift+W` 可启用 [电线布线模式](wire-routing.md),实现 CAD 风格的点击式 90° 与 45° 自动规整排线。使用键盘数字键 `1`–`4` 可快速开关对应颜色的电线。
+
+## 液体模式
+
+
+
+放置或移除世界中的各类液体:水、熔岩、蜂蜜、微光。
+
+## 平台模式
+
+放置各类平台,并支持智能楼梯形态自动适配。平台模式原生支持 [布线系统](wire-routing.md)(快捷键 `Shift+W`)实现点击式平台铺设。
+
+| 操作动作 | 触发效果 |
+|---|---|
+| 常规涂抹 | 放置单个独立平台 |
+| `Shift+W` | 启用布线模式,实现点击起始点与终点的直线快速铺梯 |
+
+在 45° 斜角铺设下,平台会自动适配正确的楼梯外观状态——踏板过渡、梯段纵梁以及平直平台连接处的着陆台外观。楼梯朝向与样式变体全自动智能分配,平台材质可在操作栏中自由选择。
+
+详见 [布线系统 — 平台楼梯布线](wire-routing.md#platform-routing)。
+
+## 矿车轨道模式
+
+
+
+铺设矿车铁轨及相关构件:
+
+| 轨道类型 | 功能描述 |
+|---|---|
+| **Track** | 标准矿车铁轨 |
+| **Booster** | 提速加速铁轨 |
+| **Pressure Plate** | 轨道感应压力板 |
+| **Hammer** | 循环切换轨道交叉岔路走向 |
+
+### 轨道子模式
+
+提供两种实用的自动化铺设子模式:
+
+| 子模式 | 功能描述 |
+|---|---|
+| **隧道模式** | 在铺设铁轨的同时自动开凿隧道——自动挖空轨道上下方的空间,为矿车通行留出畅通空间 |
+| **平滑模式** | 自动使用柔和弯道过渡替换生硬折角,生成流畅自然的铁路线路 |
+
+在轨道模式激活时,可在操作栏的轨道选项中切换子模式。
+
+轨道模式同样支持使用 `Shift+W` 触发 [布线铺设](wire-routing.md)。其 45° 斜角走线严格遵循泰拉瑞亚原生轨道的单格斜向逻辑。当启用 **Tunnel** 子模式时,铁轨上方要清理的隧道空间会在画布上以暗色蒙版进行实时预览。
+
+## 物体模式
+
+
+
+配合物体工具用于放置多格物体。可在[物体面板](../sidebar-panels/sprites.md)中选择要放置的具体物体。
+
+### 为已有物体涂色与应用属性
+
+铅笔和笔刷工具可以在不破坏原有家具的前提下直接为其附加属性。在物体模式下将**橡皮擦关闭**,涂抹已有物体即可应用:
+
+- **物块油漆颜色** — 为物体的物块着色
+- **墙壁油漆颜色** — 为物体后方的墙壁着色
+- **涂料涂层** — 应用回声涂料(隐形)与夜明涂料(全亮)
+- **促动器** — 切换促动器状态
+- **虚化状态** — 切换虚化状态
+
+这让您可以使用笔刷快速为大量已放置的物体上色或应用涂料,而无需重新放置它们。
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/status-bar.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/status-bar.md
new file mode 100644
index 0000000..13398bf
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/status-bar.md
@@ -0,0 +1,23 @@
+---
+sidebar_position: 7
+description: 底部信息栏 — 坐标、物块详情、缩放级别
+---
+
+# 状态栏
+
+状态栏位于编辑器最底部,实时显示鼠标光标当前所指区域的上下文属性。
+
+
+
+## 显示信息一览
+
+| 字段 | 说明解释 |
+|---|---|
+| **坐标** | 鼠标光标所在处的 X、Y 坐标(以物块格为单位) |
+| **物块** | 光标所在处的物块类型名称及数字 ID |
+| **墙壁** | 光标所在处的背景墙类型名称及数字 ID |
+| **油漆** | 应用于该物块/墙壁上的涂料油漆颜色 |
+| **选区** | 当前框选区域的宽高格数(若选区激活) |
+| **缩放** | 当前地图画面的缩放级别 |
+
+当你在地图上移动光标时,状态栏会实时刷新。配合箭头工具使用时,非常适合在不修改任何物块的前提下直接巡检地图细节。
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/toolbar.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/toolbar.md
new file mode 100644
index 0000000..72431bf
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/toolbar.md
@@ -0,0 +1,157 @@
+---
+sidebar_position: 2
+description: 工具选择器 — 所有编辑工具详解
+---
+
+# 工具栏
+
+工具栏位于编辑器最左侧。点击选择对应的工具后,即可在中央地图画布上交互操作。
+
+
+
+## 箭头工具 `[A]` {#arrow-tool-a}
+
+默认的指针工具。用于检查地图物块信息而不对地图做任何更改。
+
+| 操作动作 | 触发效果 |
+|---|---|
+| 悬停鼠标 | 在底部 [状态栏](status-bar.md) 显示光标所指物块的详细信息 |
+| 鼠标右键 | 打开点击处的宝箱、标牌或图格实体编辑器 |
+
+## 选区工具 `[S]` {#selection-tool-s}
+
+在地图上拉出矩形选择区域。
+
+| 操作动作 | 触发效果 |
+|---|---|
+| 鼠标左键 + 拖拽 | 框选指定区域 |
+| Shift + 鼠标左键 + 拖拽 | 追加扩展当前选区 |
+| 鼠标右键 或 `Ctrl+D` | 取消/清除当前选区 |
+| Ctrl + 鼠标右键 | 恢复刚才取消的选区 |
+| `Ctrl+C` | 复制当前选区至 [剪贴板](../sidebar-panels/clipboard.md) |
+
+当选区激活时,绘制操作将被严格限制在选区内部生效。
+
+### 导出选区为 PNG 图片
+
+当存在激活选区时,你可以通过 **编辑 → Export Selection** 菜单或画布上方浮现的选区工具条将其导出为高清 PNG 图片。支持四种导出缩放规格:
+
+| 缩放比例 | 每个物块像素 | 说明解释 |
+|---|---|---|
+| **像素地图(1×)** | 1×1 | 基于小地图物块颜色的极速概览(仅消耗 CPU) |
+| **四分之一纹理(4×)** | 4×4 | 紧凑型渲染预览图 |
+| **半尺寸纹理(8×)** | 8×8 | 画质与文件体积兼顾的平衡规格 |
+| **全尺寸纹理(16×)** | 16×16 | 原生游戏分辨率渲染,完整呈现墙壁、物块、液体和电线 |
+
+纹理渲染模式(4×, 8×, 16×)与编辑器画布呈现完全一致的真实画质,包括反色漆效果和原版物块材质。超大选区导出时会自动分带渲染,以控制在 GPU 显存限制之内。
+
+## 吸管工具 `[R]` {#picker-tool-r}
+
+从地图画布上直接吸取物块、墙壁或液体的属性。
+
+| 操作动作 | 触发效果 |
+|---|---|
+| 鼠标左键 | 吸取光标处的物块、墙壁和液体类型 |
+| 鼠标右键 | 将光标处类型吸取为遮罩 |
+
+**按住即吸取(快捷机制):** 按住键盘 `R` 键可临时切换为吸管工具,点击吸取后松开 `R` 键,将立即自动切回刚才使用的工具;若仅轻敲一下 `R` 键,则会永久切换至吸管工具。
+
+## 铅笔工具 `[E]` {#pencil-tool-e}
+
+单格放置物块。专为精细细节打造。
+
+| 操作动作 | 触发效果 |
+|---|---|
+| 鼠标左键 + 拖拽 | 徒手自由绘制 |
+| Shift + 鼠标左键 | 绘制到点击处的笔直单线段 |
+| 鼠标右键 + 拖拽 | 绘制水平直线 |
+| 左右键同时按住 + 拖拽 | 绘制垂直直线 |
+| Alt + 鼠标左键 | [电线高亮追踪](#wire-trace-highlight)(在电线模式下) |
+
+在电线绘制模式下,按下 `Shift+W` 可激活 [单线电线布线](wire-routing.md)——类似于 CAD 的点击式 90° 直角与 45° 斜角规整布线。
+
+### 连续折线绘制 (Shift+点击) {#polyline-drawing-shiftclick}
+
+按住 **Shift** 键并依次点击画布上的不同点位,即可绘制连续的平直折线。每次点击锁定前一段终点并开启下一段。适用于铅笔、笔刷和环境演变工具。松开 Shift 键即结束折线绘制。
+
+## 笔刷工具 `[B]` {#brush-tool-b}
+
+使用可自定义大小和几何形状的笔刷大面积绘制。详见 [笔刷设置](brush-settings.md)。
+
+控制方式与铅笔工具一致,但影响范围根据笔刷尺寸扩展。同样支持按住 Shift 连续折线绘制,以及 Alt + 左键点击 [电线追踪高亮](#wire-trace-highlight)。
+
+在电线绘制模式下,按下 `Shift+W` 可启用 [总线电线布线](wire-routing.md#bus-routing-brush-tool)——在笔刷覆盖宽度内以标准间距并排绘制多条平行电线。
+
+## 填充工具 `[F]` {#fill-tool-f}
+
+泛洪填充相同类型的相连相通区域。
+
+| 操作动作 | 触发效果 |
+|---|---|
+| 鼠标左键 | 泛洪填充相连的匹配物块区域 |
+| 在选区内左键点击 | 填充仅限于当前框选选区内 |
+
+## 点位工具 `[P]` {#point-tool-p}
+
+放置世界出生点和 NPC 入住房屋点位。
+
+
+
+从操作栏下拉菜单中选择点位类型(世界出生点、地牢入口、各 NPC 房屋点、各队伍出生点等),在地图上单击左键即可放置。
+
+## 物体工具 `[T]` {#sprite-tool-t}
+
+放置家具、装饰以及各类多格物体。
+
+| 操作动作 | 触发效果 |
+|---|---|
+| 鼠标左键 | 放置物体 |
+| 鼠标左键 + 拖拽 | 连续排布放置 1x1 规格的小装饰 |
+
+配合使用[物体面板](../sidebar-panels/sprites.md)选择具体的分类和样式变体。
+
+## 环境演变工具 {#morph-tool}
+
+将现有物块和背景墙批量转换为指定的生物群系类型。
+
+
+
+仅对已有物块生效,不会填充空白空气。不同深度层级(天空、地表泥土、岩石、地狱层)会自动演变对应的地层特色。支持 Shift + 点击 [绘制连续折线](#polyline-drawing-shiftclick)。
+
+支持选项:
+- **目标生物群系** — 净化(纯净)、腐化、猩红、神圣、发光蘑菇、丛林、森林、雪原或沙漠
+- **基础物块 / 邪恶物块 / 苔藓 / 物体** — 勾选控制具体哪些元素参与演变转换
+
+当勾选 **物体** 时,草丛、藤蔓、火把、恶魔祭坛/猩红祭坛、暗影珠/猩红之心等多物块装饰将自动替换为对应生物群系的变体。支持双向无损转换,结构细节完整保留。
+
+## 粘贴工具 {#paste-tool}
+
+使用 `Ctrl+V` 或在 [剪贴板面板](../sidebar-panels/clipboard.md) 中点击结构图上的 **粘贴** 按钮激活。
+
+
+
+| 操作动作 | 触发效果 |
+|---|---|
+| 鼠标左键 | 在地图上放置浮动粘贴预览图层 |
+| 在预览图层内拖拽 | 移动对齐位置 |
+| 拖拉四周控制手柄 | 自由拉伸缩放(最近邻算法采样) |
+| `Ctrl+Q` / `Ctrl+Shift+Q` | 顺时针 / 逆时针旋转 90° |
+| `Ctrl+H` / `Ctrl+Shift+H` | 水平翻转 / 垂直翻转 |
+| `Enter` 回车键 | 确认接受(正式写入世界) |
+| `Esc` 退出键 | 取消放弃本次粘贴 |
+
+粘贴工具栏提供了可直接手动输入的 X、Y、W、H 坐标和宽高尺寸。完整说明详见 [剪贴板 — 浮动粘贴](../sidebar-panels/clipboard.md#floating-paste)。
+
+## 电线高亮追踪 {#wire-trace-highlight}
+
+在含有电线的物块上按住 **Alt + 鼠标左键**,编辑器会自动高亮显示整条相连通的电线回路。TEdit 从点击处采用感知朝向的广度优先搜索(BFS)溯源,并遵循**分线盒**的交叉隔离规则——分线盒两侧独立的电线会被分别追踪。
+
+追踪到的电线回路将以对应的彩色叠加高亮显示(红、蓝、绿、黄)。如果在 [电线模式](paint-mode.md#wire-mode) 选择器中选中了特定颜色,TEdit 将定向追踪该颜色;否则追踪点击物块上发现的第一种电线。
+
+切换当前工具或在空白处 Alt + 点击即可清除高亮状态。
+
+该追踪功能适用于箭头工具、铅笔工具和笔刷工具。
+
+## 敲锤工具 {#hammer-tool}
+
+基于笔刷范围的大面积锤击工具。使用与笔刷工具相同的笔刷形状与尺寸,一键对覆盖区域批量应用锤击坡度变换。
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/wire-routing.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/wire-routing.md
new file mode 100644
index 0000000..f08b2a5
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/interface/wire-routing.md
@@ -0,0 +1,138 @@
+---
+sidebar_position: 6
+description: CAD 风格电线布线系统 — 配合铅笔与笔刷实现精确走线
+---
+
+# 电线布线系统
+
+电线布线模式提供了类似于 CAD 绘图软件的“点对点点击式”绘制体验。不同于繁琐的徒手涂画,你只需在地图上点击一个起始锚点,再点击目标终点——编辑器就会自动在两点之间计算出规整平直的线路。
+
+布线系统不仅适用于 **铅笔工具**(单根电线)和 **笔刷工具**(多线总线并行),还全面支持 **矿车轨道** 与 **平台** 绘制——轨道自动采用精细对角线走线,而平台在 45° 斜角走线下会自动组装正确的阶梯帧形态(踏板、纵梁、着陆转折段)。
+
+## 进入与切换布线模式
+
+| 快捷键 | 对应操作动作 |
+|---|---|
+| `Shift+W` | 循环切换布线模式:关闭 → 90° 直角弯折 → 45° 斜角切角 → 关闭 |
+| `Shift+Q` | 循环切换方向优先级:自动 → 水平优先 → 垂直优先 → 自动 |
+| `Escape` | 取消当前锁定的起始锚点(仍保留布线模式),或彻底退出布线模式 |
+
+当选中 **电线**、**轨道** 或 **平台** 绘制模式时,布线系统均可激活。操作栏上的布线面板会实时显示当前的布线算法与方向偏好,底部状态栏也会同步指示。
+
+## 电线颜色切换快捷键
+
+在电线绘制模式下,随时按下键盘数字键即可快速开关对应颜色的电线:
+
+| 快捷键 | 电线颜色 |
+|---|---|
+| `1` | 红色电线 |
+| `2` | 蓝色电线 |
+| `3` | 绿色电线 |
+| `4` | 黄色电线 |
+
+无论是否开启了布线模式,这组快捷键在电线图层下始终生效。
+
+## 单线布线模式 (单线 — 配合铅笔工具)
+
+选中 **铅笔工具** `[E]` 并使用 `Shift+W` 进入布线模式。
+
+
+
+1. **第一次点击** — 确立起始锚点(地图上会亮起高亮标记)
+2. **移动鼠标光标** — 画布上实时出现半透明的预览线路
+3. **第二次点击** — 确认提交铺设该段电线,并将终点自动作为下一段的新锚点(连续链式)
+4. **鼠标右键** — 取消布线当前锚点,不提交任何内容
+
+锚点具备自动链式连接特性:提交当前线段后,终点立即成为下一段的新起点,方便连续绘制带折角的长距离走线。
+
+### 连续链式模式
+
+
+
+启用链式模式时(通过 `Shift+W` 切换),每次确认铺设的线段终点都会自动接力为下一段的起始锚点——形成连续的折线走线。若关闭链式模式,则每次点击只提交单条线段,不会自动接力。
+
+链式模式同时适用于单线绘制(铅笔)与总线绘制(笔刷)。
+
+### 走线算法模式
+
+| 模式 | 走线形态 | 说明细节 |
+|---|---|---|
+| **直角弯头(90° Elbow)** | L 型直角 | 沿一个坐标轴单向直行,然后 90° 转角直达目标点 |
+| **斜角切角(45° Miter)** | 平直–对角线–平直 | 先走平直段,经过 45° 阶梯斜角过渡段,再平直接入目标点 |
+
+所有生成的线路都严格保持 **4 方向连通(4-connected)**——相邻物块必须共享一条边(绝无仅对角相连的虚空漏线),确保在泰拉瑞亚原版游戏中电路 100% 连通生效。
+
+### 走向优先级覆盖
+
+通过 `Shift+Q` 可以强制指定哪个轴向先走:
+
+| 选项设置 | 逻辑行为 |
+|---|---|
+| **自动** | 当两点夹角大于 45°(较陡)时自动选择垂直优先,否则水平优先 |
+| **水平优先** `↔` | 先走水平段,再垂直转角 |
+| **垂直优先** `↕` | 先走垂直段,再水平转角 |
+
+## 总线电线布线 (配合笔刷工具) {#bus-routing-brush-tool}
+
+选中 **笔刷工具** `[B]`,将笔刷尺寸调整至大于 1×1,并使用 `Shift+W` 开启布线模式。
+
+
+
+总线布线可**并排绘制多条平行的电线线路**,自动填满整个笔刷覆盖范围。电线根数和线路间距会根据笔刷的长宽自动计算分配。
+
+1. **第一次点击** — 在笔刷中心确定总线起始锚点
+2. **移动鼠标光标** — 实时预览多根平行线路的完整走线
+3. **第二次点击** — 确认铺设所有总线线路,并继续链式接力
+
+### 电线间距规则
+
+无论是 90° 直角还是 45° 斜角总线,均采用 **2 格间距标准**(线路间留有 1 格空隙)。由于泰拉瑞亚原版中对角线接触的电线并不会导电相连,因此斜角过渡时不需要额外加大间距。
+
+### 总线排布细节
+
+- **线路总数** 由笔刷的宽高尺寸与安全间距决定
+- 电线组在笔刷区域内**居中对齐**
+- **起点位置** 自动排布在与鼠标运动方向相反的笔刷一侧边缘
+- **终点位置** 沿目标端垂线方向展开,确保拐角处各线不会互相重叠或短路交叉
+- 当笔刷为 **1×1 尺寸** 时,自动降级为与铅笔工具完全相同的单线布线模式
+
+:::tip 技巧
+使用方向覆盖(Shift+Q)可以控制总线优先水平还是优先垂直走线。这决定了电线从笔刷的哪条边出发,以及最终到达哪条边。
+:::
+
+## 矿车轨道与平台楼梯布线
+
+布线系统同样原生扩展到了 **轨道** 和 **平台** 绘制中。
+
+### 轨道布线
+
+轨道模式在 45° 斜角铺设时采用精细的单格斜线——每一级斜向步进只占用单个物块,完美匹配泰拉瑞亚原版轨道的斜向拼接特性。启用 **隧道** 子模式时,预览图会以较暗的蒙版直观标出轨道上方即将挖空的隧道净空区域。
+
+### 平台楼梯布线 {#platform-routing}
+
+平台模式在 45° 斜角走线下采用阶梯走线,并根据几何位置自动匹配正确的平台物块帧:
+
+| 构件角色 | 说明解释 |
+|---|---|
+| **踏板** | 阶梯踏步台面(楼梯每一步的受力上表面)— 包含 3 种随机自然变体 |
+| **梯段纵梁** | 阶梯下底支撑面(阶梯台阶的背部斜面) |
+| **顶部着陆平台** | 楼梯顶端与平直平台交界处的平滑过渡平台 |
+| **底部着陆平台** | 楼梯底端与平直平台交界处的过渡平台 |
+| **端盖** | 当楼梯紧挨实心物块时的端盖变体 |
+| **单平台** | 纯垂直排布的平台构件 |
+
+着陆过渡段会从楼梯连接处延伸进水平段 1 格,且阶梯的朝向(向右上还是向左上)会根据路径向量自动判断。
+
+## 脚本 API 调用
+
+布线系统同样全面开放给了 [脚本自动化 API](../advanced/api-reference.md#wire-routing)。你可以通过 `draw.routeWire()` 绘制单线,或通过 `draw.routeBus()` 绘制多根并行总线:
+
+```javascript
+// 绘制一条 90° 直角弯头的红色电线
+draw.setWire(true, false, false, false);
+draw.routeWire(100, 200, 150, 220, '90', 'h');
+
+// 绘制 4 条并排平行的 45° 绿色总线
+draw.setWire(false, false, true, false);
+draw.routeBus(4, 100, 200, 200, 250, '45', 'auto');
+```
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/intro.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/intro.md
new file mode 100644
index 0000000..9b3d84f
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/intro.md
@@ -0,0 +1,47 @@
+---
+sidebar_position: 1
+description: TEdit 5 - 泰拉瑞亚地图编辑器文档
+slug: /
+---
+
+# TEdit 5 中文文档
+
+:::tip 下载与获取
+从 GitHub Releases 获取最新版 TEdit:[https://github.com/TEdit/Terraria-Map-Editor/releases/latest](https://github.com/TEdit/Terraria-Map-Editor/releases/latest)。
+:::
+
+TEdit 5 是对泰拉瑞亚地图编辑器的全新重构版本。你可以像在画板上绘画一样编辑世界——使用笔刷和填充工具放置物块、墙壁、液体和电线;编辑宝箱、标牌和 NPC;随心所欲打造属于你的史诗地牢、城堡、城镇和冒险地图。
+
+
+
+## TEdit 5 全新特性
+
+- **Fluent Design** — 采用现代化的 WPF-UI 界面,原生支持暗黑模式
+- **脚本引擎** — 支持编写 JavaScript 或 Lua 脚本实现自动化编辑
+- **查找面板** — 在整个世界中搜索物品、物块、墙壁和物体
+- **筛选面板** — 隐藏或调暗特定物块类型,使编辑视野更加清晰
+- **多语言支持** — 软件 UI 已内置支持 13 种语言
+- **自动更新** — 基于 Velopack 提供稳定版、公测版与内测版更新通道
+- **现代化设置中心** — 分类清晰、支持搜索的全新设置窗口
+
+## 快速导航
+
+| | |
+|---|---|
+| **[安装与系统要求](install-requirements.md)** | 下载、安装步骤与系统要求 |
+| **[快速入门](getting-started.md)** | 打开世界地图并开始你的第一次编辑 |
+| **[工具栏](interface/toolbar.md)** | 所有编辑工具的完整使用详解 |
+| **[脚本指南](advanced/scripting-guide.md)** | 使用 JavaScript 或 Lua 编写脚本自动化编辑 |
+| **[疑难解答](advanced/troubleshooting.md)** | 常见问题解决办法与故障排查 |
+| **[快捷键](configuration/keybindings.md)** | 键盘快捷键速查参考 |
+| **[从 TEdit 4 升级](migration/upgrading-from-tedit4.md)** | 核心变动与升级指南 |
+
+## 支持 TEdit
+
+喜欢 TEdit 吗?欢迎支持持续开发与服务器维护——您的每一份赞助都至关重要!
+
+**[在 Patreon 上赞助作者](https://www.patreon.com/join/BinaryConstruct)**
+
+---
+
+寻找 TEdit 4 旧版文档?请使用顶部导航栏中的版本切换菜单。
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/migration/upgrading-from-tedit4.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/migration/upgrading-from-tedit4.md
new file mode 100644
index 0000000..ae55005
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/migration/upgrading-from-tedit4.md
@@ -0,0 +1,46 @@
+---
+sidebar_position: 1
+description: 从 TEdit 4 升级到 TEdit 5 的变化
+---
+
+# 从 TEdit 4 升级
+
+TEdit 5 是一次重大的重写,带来了现代化的界面与全新功能。以下是主要变化。
+
+## 新特性
+
+| 特性 | 说明 |
+|---|---|
+| **Fluent Design** | 基于 WPF-UI 构建的现代化暗黑模式界面 |
+| **脚本引擎** | 支持完整世界 API 的 JavaScript 与 Lua 脚本引擎 |
+| **查找面板** | 在世界中搜索物品、物块、墙壁、物体 |
+| **筛选面板** | 隐藏或调暗特定物块图层 |
+| **多语言支持** | 支持 13 种界面语言翻译 |
+| **自动更新** | 内置支持 Stable/Beta/Alpha 通道的更新系统 |
+| **现代化设置** | 支持搜索和分类管理的全新设置窗口 |
+| **锤子工具** | 新增基于区域的锤子工具 |
+| **世界分析** | 查看世界统计数据的侧边栏 |
+
+## 界面变动
+
+- **工具栏** — 工具保持一致,图标全新重绘。垂直工具栏依然位于左侧。
+- **活动栏 → 操作栏** — 顶部选项栏经过重新设计,工作方式保持一致。
+- **侧边栏工具 → 侧边栏面板** — 右侧面板改为标签页形式。新增面板(查找、筛选、脚本)。
+- **设置** — 从 XML 配置文件迁移到支持搜索的现代化设置窗口。
+- **插件 → 脚本** — 旧版插件系统已被脚本引擎取代。详见[脚本指南](../advanced/scripting-guide.md)。
+
+## 运行时变化
+
+| | TEdit 4 | TEdit 5 |
+|---|---------|---------|
+| **运行时框架** | .NET Framework 4.8 | .NET 10 |
+| **DirectX** | DirectX 11 | DirectX 11 |
+| **操作系统** | Windows 10 x64 | Windows 10/11 x64 |
+
+## 结构图兼容性 {#schematics}
+
+TEdit 5 可以打开来自 TEdit 4 的 `.TEditSch` 结构图文件。您现有的结构图无需任何修改即可正常使用。
+
+## 设置迁移
+
+TEdit 5 采用了新的设置格式。您在 TEdit 4 中的 `settings.xml` 不会自动迁移。请在新的“设置”窗口中重新配置您的偏好项。
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/banners.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/banners.md
new file mode 100644
index 0000000..f855090
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/banners.md
@@ -0,0 +1,12 @@
+---
+sidebar_position: 8
+description: 旗帜收集数据查看器
+---
+
+# 旗帜
+
+旗帜面板展示世界中存储的旗帜收集数据。
+
+
+
+查看已获得哪些敌怪旗帜以及相关的击杀计数。
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/bestiary.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/bestiary.md
new file mode 100644
index 0000000..ae2cc88
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/bestiary.md
@@ -0,0 +1,12 @@
+---
+sidebar_position: 7
+description: 怪物图鉴击杀计数与数据
+---
+
+# 怪物图鉴
+
+怪物图鉴面板让您可以查看和编辑世界中的游戏内图鉴击杀计数与发现数据。
+
+
+
+浏览敌怪和小动物,查看或修改击杀计数与解锁状态。
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/clipboard.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/clipboard.md
new file mode 100644
index 0000000..bcc2e01
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/clipboard.md
@@ -0,0 +1,89 @@
+---
+sidebar_position: 2
+description: 复制、粘贴与结构图管理
+---
+
+# 剪贴板
+
+剪贴板将复制的地图选区存储为结构图。利用剪贴板可以复用建筑构造、导入泰拉瑞亚社区分享的结构图,或者将自己的作品导出为文件随时调用。
+
+
+
+## 快捷操作速查
+
+| 操作动作 | 快捷键 |
+|---|---|
+| 复制当前选区 | `Ctrl+C` |
+| 粘贴最近一次复制的结构图 | `Ctrl+V` |
+| 粘贴时在地图上放置 | 鼠标左键点击画布 |
+
+## 复制结构图
+
+1. 使用[选区工具](../interface/toolbar.md#selection-tool-s)框选地图上的目标建筑区域。
+2. 按下 `Ctrl+C` — 选区内容将自动生成一份带缩略图的结构图保存在剪贴板面板中。
+
+## 粘贴结构图
+
+1. 在剪贴板中点击某个条目上的 **粘贴** 按钮,或直接按 `Ctrl+V`。
+2. 在地图画布上单击鼠标左键,生成一个**浮动粘贴图层**。
+3. 按照需求拖拽移动、拉伸缩放或旋转翻转(详见 [浮动粘贴详解](#floating-paste))。
+4. 按下 **Enter** 回车键或点击对勾确认正式写入世界,或按 **Esc** 键取消本次粘贴。
+
+:::tip 技巧
+`Ctrl+V` 默认粘贴最近一次复制的结构图。若要粘贴列表中的其他历史结构图,只需在侧边栏中点击该项上的 **粘贴** 按钮,后续 `Ctrl+V` 就会切换为该结构图。
+:::
+
+## 即时粘贴 {#instant-paste}
+
+
+
+当启用 **即时粘贴** 开关时(在粘贴工具选项中开启),点击地图会立即将结构图正式写入,不会弹出半透明的浮动预览。这专为连续盖戳放置设计——您可以快速连续点击放置多个副本,无需每次按回车确认。
+
+即时粘贴跳过浮动预览层:每次鼠标点击都会以光标处为基准直接将内容写入地图。
+
+## 浮动粘贴 {#floating-paste}
+
+在未开启即时粘贴的情况下,点击画布放置粘贴时会生成一个带虚线外框和控制手柄的浮动预览图层。在您确认接受之前,该图层**尚未正式写入世界**——您可以先随意调整位置、比例和朝向。
+
+
+
+### 移动对齐
+
+在浮动图层内部任意位置按住鼠标左键并拖拽,即可平移图层。当光标悬停在图层内部时会变为移动十字箭头。您也可以在操作栏的 X、Y 文本框中直接手动输入绝对坐标。
+
+### 尺寸拉伸缩放
+
+拖拽外边框上的 8 个控制手柄即可调整尺寸:
+
+| 控制手柄 | 缩放效果 |
+|---|---|
+| 四角手柄 | 同时等比或自由拉伸宽度与高度 |
+| 上 / 下边缘手柄 | 仅调整垂直高度 |
+| 左 / 右边缘手柄 | 仅调整水平宽度 |
+
+光标悬停在手柄上时会变为对应朝向的双向箭头。您也可以在操作栏的 W(宽)、H(高)文本框中输入数值。
+
+缩放采用**最近邻** 物块重采样算法——通过复制或裁剪物块来填充新尺寸。在拉伸缩放期间,物体(家具、装饰)会被自动剥离;原始物块上的斜坡和半砖状态会得到保留,新插值的填充物块将以完整物块呈现。
+
+### 几何变换快捷键
+
+| 快捷键 | 对应动作 |
+|---|---|
+| `Ctrl+Q` | 顺时针旋转 90° |
+| `Ctrl+Shift+Q` | 逆时针旋转 90° |
+| `Ctrl+H` | 水平镜像翻转 |
+| `Ctrl+Shift+H` | 垂直镜像翻转 |
+
+### 确认接受 / 取消放弃
+
+| 操作动作 | 触发效果 |
+|---|---|
+| **Enter** 键 或 绿色对勾按钮 | 确认将粘贴图层正式提交写入世界地图 |
+| **Esc** 键 或 红色关闭按钮 | 放弃本次粘贴并清空浮动图层 |
+
+## 导入与导出
+
+- **导入结构图** — 从磁盘加载 `.TEditSch` 结构图文件
+- **导出** — 将结构图保存为 `.TEditSch` 文件,便于分享或日后复用
+- **移除** — 从剪贴板中删除选中的单份结构图
+- **清空剪贴板** — 一键清理剪贴板中加载的所有结构图
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/creative-powers.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/creative-powers.md
new file mode 100644
index 0000000..c15bd04
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/creative-powers.md
@@ -0,0 +1,20 @@
+---
+sidebar_position: 10
+description: 旅行模式创造能力设置
+---
+
+# 旅行模式能力
+
+旅行模式能力面板让您可以编辑存储在世界文件中的旅行模式设置。
+
+如果世界是在旅行模式下创建的,您可以调整如下能力数值:
+
+- **时间控制** — 冻结或设置具体时间
+- **天气控制** — 切换降雨状态、风速强度
+- **难度滑块** — 敌怪难度倍率
+- **生成速率** — 调节敌怪生成速率
+- **感染蔓延** — 开启或关闭生物群系蔓延
+
+:::info 提示
+创造能力仅适用于旅行模式世界。该面板对经典模式、专家模式或大师模式世界无效。
+:::
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/filter.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/filter.md
new file mode 100644
index 0000000..06e2291
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/filter.md
@@ -0,0 +1,75 @@
+---
+sidebar_position: 7
+description: 隐藏或变暗特定图层,让编辑目标更加清晰聚焦
+---
+
+# 筛选面板
+
+筛选面板允许您隐藏或调暗特定的图层与物块类型,让您专注于当前正在编辑的内容。
+
+
+
+## 筛选模式
+
+| 模式 | 效果说明 |
+|------|--------|
+| **隐藏** | 被筛选的类型将完全不可见(透明隐藏) |
+| **调暗** | 被筛选的类型将变暗并降低饱和度,使未被筛选的物块突出醒目 |
+
+点击面板顶部的 **隐藏** 开关可在两种模式之间切换;关闭该开关时会自动启用 **调暗** 模式。
+
+### 调暗与去饱和滑块
+
+在调暗模式下,提供两个控制滑块调节筛选图层的视觉强度:
+
+- **调暗** (0–100,默认 75) — 控制被筛选图层的暗化程度。数值越高,物块越暗。
+- **去饱和** (0–100,默认 75) — 控制被筛选图层的色彩褪色程度。数值越高,越趋向黑白灰度。
+
+这些滑块基于 GPU 着色器实时渲染,滑动时即可实时预览视觉效果。
+
+## 背景模式
+
+控制在应用筛选时地图背景的外观表现:
+
+| 模式 | 视觉效果 |
+|------|--------|
+| **常规** | 渲染标准的地图背景 |
+| **透明** | 背景完全透明 |
+| **自定义** | 使用拾色器选择任意自定义背景色彩 |
+
+## 筛选分类标签
+
+选择需要参与筛选的具体图层类型:
+
+- **物块** — 筛选特定物块类型
+- **墙壁** — 筛选特定墙壁类型
+- **液体** — 筛选水、熔岩、蜂蜜、微光
+- **电线** — 筛选各种颜色的电线
+- **物体** — 筛选家具、火把及各类多格装饰物体
+
+## 使用步骤
+
+1. 切换 **隐藏** 开关选择隐藏或调暗模式
+2. 若使用调暗模式,根据需要调节 **调暗** 与 **去饱和** 滑块
+3. 选择所需的 **背景模式**
+4. 在各标签页中勾选需要筛选的对应项目
+5. 点击 **应用** 生效
+6. 点击 **禁用** 即可恢复常规全图显示视图
+
+
+
+:::tip 技巧
+**筛选剪贴板** — 开启后,在进行剪贴板结构图粘贴时,浮动图层也会遵循当前激活的筛选规则。
+:::
+
+## 全图像素映射图
+
+Pixelmap 功能可以将整张世界地图渲染为色彩编码的宏观分析图像。支持三种色彩模式:
+
+| 色彩模式 | 说明描述 |
+|------------|-------------|
+| **常规** | 采用小地图标准物块色彩渲染——与游戏内小地图观感完全一致 |
+| **生物群系** | 根据物块所属的生物群系进行着色(腐化、猩红、神圣、丛林、雪原、沙漠等)——便于直观透视环境感染扩散边界 |
+| **高度分层** | 依据垂直 Y 坐标深度进行色彩渐变着色——从地表到地下再到洞穴层形成平滑渐变,地形地势起伏一目了然 |
+
+在筛选面板中的 Pixelmap 分组下选定色彩模式,点击 **渲染** 即可生成视图。Pixelmap 属于快照渲染,编辑地图后再次点击**渲染**即可刷新。
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/find.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/find.md
new file mode 100644
index 0000000..2186fe1
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/find.md
@@ -0,0 +1,42 @@
+---
+sidebar_position: 6
+description: 在世界中搜索物品、物块、墙壁和物体
+---
+
+# 查找面板
+
+查找面板可以在整个世界中搜索特定的物品、物块、墙壁或物体。
+
+
+
+## 搜索标签页
+
+| 标签页 | 搜索目标 |
+|---|---|
+| **物品** | 宝箱内的物品 |
+| **物块** | 已放置的物块类型 |
+| **墙壁** | 墙壁类型 |
+| **物体** | 多格家具与物体 |
+
+## 使用方法
+
+1. 选择对应的标签页(物品、物块、墙壁、物体)
+2. 选择或输入您要寻找的目标
+3. 点击 **搜索世界**
+4. 结果将显示在下方列表中(最多显示 1,000 条结果)
+
+## 高亮覆盖层
+
+搜索完成后,TEdit 会自动在地图上高亮所有匹配结果。不匹配的物块会变暗并去饱和(使用与[筛选面板](filter.md)的调暗模式相同的着色器),使匹配的物块在视觉上突出显现。十字准星会标出当前选中的结果。
+
+当您开始新搜索或清除结果时,高亮覆盖层会自动清除。
+
+## 结果导航
+
+- **上一个 / 下一个** — 在地图上的各个结果点位之间跳转。结果计数器会显示当前位置(例如:"3 of 47")。
+- **导航时自动缩放** — 开启后,在跳转到每个结果时会自动缩放视角(默认关闭 — 仅平移视角)。
+- **计算距离** — 按与出生点的距离对结果进行排序,并在每个结果旁显示距离数值。
+
+:::tip 提示
+可以使用查找面板定位包含特定物品的所有宝箱,或统计世界中存在多少某种类型的物块。
+:::
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/npcs.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/npcs.md
new file mode 100644
index 0000000..eec0512
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/npcs.md
@@ -0,0 +1,36 @@
+---
+sidebar_position: 5
+description: NPC 管理与属性编辑器
+---
+
+# 城镇 NPC
+
+NPC 面板让您可以管理世界中的城镇 NPC——添加或移除它们、编辑显示名称、切换微光或派对状态,并快速定位它们在地图上的位置。
+
+
+
+## 搜索筛选
+
+使用面板顶部的 **搜索** 框可按名称筛选 NPC。该筛选器匹配 NPC 的默认类型名称(如 "Nurse"(护士)、"Merchant"(商人)),不区分大小写。
+
+## 添加与移除 NPC
+
+- 点击尚未存在于地图上的 NPC 旁的 **+** 按钮,将其添加在世界出生点位置。
+- 点击已存在于地图上的 NPC 旁的 **-** 按钮,将其从世界中移除。
+
+## 编辑 NPC 属性
+
+当某个 NPC 位于地图上时,提供以下选项:
+
+- **显示名称** — 编辑游戏内显示在该 NPC 头顶的自定义名称。
+- **微光形态** — 切换该 NPC 是否已处于微光形态(仅适用于支持微光形态的 NPC)。
+- **派对状态** — 切换该 NPC 当前是否处于派对状态。
+- **变体选择器** — 对于拥有多种外观变体的 NPC(如城镇宠物),可通过下拉菜单选择使用哪种外观变体。
+
+## 跳转至位置
+
+右键单击地图上存在的任意 NPC,地图将立即放大并平移居中到该 NPC 的当前位置。
+
+:::tip 提示
+若要移动 NPC 的住宅位置,请在地图上使用[点位工具](../interface/toolbar.md#point-tool-p)。
+:::
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/overview.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/overview.md
new file mode 100644
index 0000000..57d7982
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/overview.md
@@ -0,0 +1,27 @@
+---
+sidebar_position: 1
+description: 侧边栏面板整体运作方式
+---
+
+# 侧边栏面板
+
+侧边栏面板位于编辑器最右侧。点击顶部的各个标签页可在不同面板之间自由切换。
+
+## 可用面板一览
+
+| 面板名称 | 主要功能与用途 |
+|---|---|
+| [世界属性](world-properties.md) | 世界名称、时间调节、击败Boss进度、入侵事件与 NPC |
+| [调色板](palette.md) | 物块与墙壁选择器及独立遮罩设置 |
+| [特殊图格](special-tiles.md) | 编辑宝箱物品、标牌文字、图格实体(人体模型、女性人体模型等) |
+| [物体](sprites.md) | 浏览与放置家具、装饰等多格物体 |
+| [剪贴板](clipboard.md) | 复制、浮动粘贴、导入与导出结构图 |
+| [NPC 管理](npcs.md) | 城镇 NPC 增删、改名与快速追踪定位 |
+| [世界分析](world-analysis.md) | 世界统计数据与各类物块总数透视 |
+| [怪物图鉴](bestiary.md) | 怪物击杀计数统计与图鉴解锁数据编辑 |
+| [旗帜](banners.md) | 怪物旗帜收集进度查看器 |
+| [图格实体调试](tile-entity-debug.md) | 原始图格实体底层数据查看器 |
+| [旅行模式能力](creative-powers.md) | 旅行模式专属设置与管理功能 |
+| [筛选面板](filter.md) | 隐藏或调暗特定物块图层,使视野更清晰 |
+| [查找面板](find.md) | 在整个世界中全局搜索物品、物块、墙壁和物体 |
+| [脚本面板](scripting.md) | 编写并运行 JavaScript / Lua 自动化编辑脚本 |
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/palette.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/palette.md
new file mode 100644
index 0000000..5509393
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/palette.md
@@ -0,0 +1,69 @@
+---
+sidebar_position: 1.5
+description: 物块与墙壁拾取器及遮罩设置
+---
+
+# 调色板
+
+调色板面板提供了所有物块与墙壁的可视化分类浏览,以及用于控制绘制生效区域的遮罩配置。
+
+## 物块选择器
+
+
+
+从分类列表中浏览并选择物块与墙壁。所选中的物块和墙壁将被铅笔、笔刷和填充工具在“物块/墙壁绘制模式”下直接使用。
+
+- **搜索** — 按名称筛选物块或墙壁
+- **物块选择器** — 点击设置当前激活的物块类型
+- **墙壁选择器** — 点击设置当前激活的墙壁类型
+
+选中的物块/墙壁 ID 也会同步显示在操作栏的下拉菜单中。调色板面板中的更改会实时反映在操作栏中,反之亦然。
+
+## 遮罩 {#masks}
+
+
+
+遮罩用于限制绘制操作生效的区域。调色板面板为物块和墙壁分别提供了独立的遮罩控制项。
+
+### 物块遮罩
+
+| 模式 | 效果说明 |
+|---|---|
+| **禁用遮罩** | 在任意区域均可绘制物块 |
+| **仅编辑空白** | 仅在空白空间放置物块 |
+| **仅编辑匹配项** | 仅替换与遮罩类型匹配的物块 |
+
+从下拉菜单中设置物块遮罩类型——列表中包含所有可用物块类型。
+
+### 墙壁遮罩
+
+| 模式 | 效果说明 |
+|---|---|
+| **禁用遮罩** | 在任意区域均可绘制墙壁 |
+| **仅编辑空白** | 仅在空白空间铺设墙壁 |
+| **仅编辑匹配项** | 仅替换与遮罩类型匹配的墙壁 |
+
+从下拉菜单中设置墙壁遮罩类型——列表中包含所有可用墙壁类型。
+
+:::tip 提示
+使用[吸管工具](../interface/toolbar.md#picker-tool-r)在地图上的物块上单击右键,可快速将其设置为遮罩类型。
+:::
+
+## 全部替换
+
+
+
+在**遮罩选项**标签页底部,提供了两个批量替换按钮,用于在全图或选区内将匹配区域替换为选中的物块:
+
+
+
+| 按钮 | 效果说明 |
+|---|---|
+| **全部替换** | 将整个地图上所有与当前遮罩匹配的物块/墙壁替换为所选的物块/墙壁 |
+| **替换选区** | 仅在当前选区范围内进行替换 |
+
+这些按钮依据当前激活的遮罩配置来确定匹配哪些物块或墙壁。将遮罩模式设为 **仅编辑匹配项** 并选择遮罩类型,然后点击其中一个替换按钮即可执行替换。
+
+:::caution 警告
+**全部替换** 会修改整个地图,属于大型操作。建议使用 **替换选区** 将修改限制在特定区域。
+:::
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/scripting.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/scripting.md
new file mode 100644
index 0000000..b9fe747
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/scripting.md
@@ -0,0 +1,46 @@
+---
+sidebar_position: 8
+description: JavaScript 与 Lua 自动化脚本侧边栏
+---
+
+# 脚本面板
+
+脚本面板让您可以直接在编辑器内编写并执行 JavaScript 或 Lua 脚本,实现各种高度自定义的自动化地图编辑。
+
+
+
+## 快速上手
+
+1. 在右侧侧边栏中切换到脚本面板。
+2. 选择脚本执行引擎:**JavaScript** 或 **Lua**。
+3. 在内置代码编辑器中输入您的脚本逻辑。
+4. 点击 **运行** 按钮即可执行。
+
+底部的控制台输出日志会实时显示 `print()` 打印内容、运行状态、警告与错误信息。
+
+
+
+## 脚本文件管理
+
+- **新建** — 新建一份空白脚本
+- **保存** — 将当前代码保存到本地文件
+- **打开目录** — 在系统资源管理器中打开 TEdit 的用户脚本存储文件夹
+- 使用顶部下拉菜单可在保存的多份脚本之间快速切换
+
+## 快速示例代码
+
+以下示例展示如何将当前选区内的所有泥土块替换为石块:
+
+```javascript
+const sel = selection;
+if (!sel.isActive) { log.error("No selection active!"); }
+
+batch.forEachTile(sel.x, sel.y, sel.width, sel.height, (x, y) => {
+ if (tile.getTileType(x, y) === metadata.tileId("Dirt Block")) {
+ tile.setType(x, y, metadata.tileId("Stone Block"));
+ }
+});
+log.print("Done!");
+```
+
+关于完整的脚本 API 函数文档和更多高级示例,请参阅 [脚本自动化指南](../advanced/scripting-guide.md)。
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/special-tiles.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/special-tiles.md
new file mode 100644
index 0000000..0a77baa
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/special-tiles.md
@@ -0,0 +1,55 @@
+---
+sidebar_position: 4
+description: 宝箱、标牌、物品框、人体模型及各类图格实体编辑器
+---
+
+# 特殊图格
+
+使用[箭头工具](../interface/toolbar.md#arrow-tool-a)在特殊图格上**右键单击**,即可在侧边栏中打开其专属编辑器。
+
+## 宝箱编辑器
+
+编辑宝箱内容物——添加、移除或重新排列物品。每个物品槽位均显示物品名称、堆叠数量和修饰语。
+
+
+
+**全部清空** — 点击 **全部清空** 按钮可一次性清空宝箱内每个槽位中的所有物品。适合在填入新物品之前快速清空宝箱。
+
+## 标牌编辑器
+
+编辑标牌和墓碑的文本内容。
+
+## 人体模型编辑器
+
+为人体模型与女性人体模型装备盔甲与时装物品。
+
+
+
+## 人体模型(Display Doll)编辑器
+
+人体模型(内部名称 Display Doll,在部分语境下也称 mannequin)除装备槽位外,还支持**姿态**编辑。
+
+用箭头工具右键点击人体模型可打开其编辑器。除了装备盔甲和时装物品外,还可以为其选择一种**姿态**:
+
+- 从姿态下拉菜单中选择可用的姿态
+- 选择姿态后,世界视图中的人体模型外观帧会即时更新
+
+这样就能在装饰性建筑中让人体模型摆出不同的姿态。
+
+## 帽架编辑器
+
+设置帽架上陈列展示的帽子与头盔。
+
+
+
+## NPC 编辑器
+
+查看并编辑城镇 NPC 的相关属性。
+
+
+
+## 图格实体调试器
+
+用于调试的原始图格实体数据的高级视图。
+
+
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/sprites.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/sprites.md
new file mode 100644
index 0000000..a0bc64b
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/sprites.md
@@ -0,0 +1,42 @@
+---
+sidebar_position: 5
+description: 物体拾取器与放置面板
+---
+
+# 物体
+
+物体面板让您可以浏览并放置家具、装饰品以及各类多格物体。
+
+
+
+## 使用方法
+
+1. 从工具栏中选择[物体工具](../interface/toolbar.md#sprite-tool-t)(快捷键 `T`)
+2. 打开“物体”侧边栏面板
+3. 从下拉菜单中选择物块类型(如椅子、桌子、火把等)
+4. 使用筛选框按名称搜索
+5. 在网格中选择所需样式
+6. 在地图上单击鼠标左键进行放置
+
+## 绘制物体
+
+- **单件物体** — 鼠标左键点击一次放置一个
+- **1×1 物体**(草丛、平台等) — 点击并拖动可像铅笔工具一样连续笔触绘制。支持水平直线(右键拖动)与垂直直线(左键+右键同时拖动)绘制。
+
+## 缩略图尺寸
+
+使用物体网格顶部的**缩略图尺寸滑块**可以调节物体预览图的显示大小。向右拖动可放大缩略图(便于直观辨认样式),向左拖动可缩小缩略图(单屏显示更多物体)。
+
+该滑块的设置会自动在会话间保持保存。
+
+## 生物群系变体
+
+某些物体拥有对应生物群系的变体(例如树木、植物、藤蔓)。当某种物体类型存在多种变体时,面板会按生物群系分组展示。选择对应的生物群系标签或变体分组,即可查看该组下的所有可用样式。
+
+## 旗帜与怪物图鉴
+
+此外还提供了用于旗帜与怪物图鉴数据的扩展浏览面板:
+
+
+
+
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/tile-entity-debug.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/tile-entity-debug.md
new file mode 100644
index 0000000..a8ea100
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/tile-entity-debug.md
@@ -0,0 +1,12 @@
+---
+sidebar_position: 9
+description: 原始图格实体底层数据查看器
+---
+
+# 图格实体调试
+
+图格实体调试面板是面向进阶用户和地图制作者的高级检查工具,用于直接查看底层图格实体的原始数据。
+
+
+
+该面板展示了所有图格实体(如物品框、逻辑感应器、人体模型等)的内部数据结构,主要用于高级排错或深度二次编辑。
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/world-analysis.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/world-analysis.md
new file mode 100644
index 0000000..c6581c5
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/world-analysis.md
@@ -0,0 +1,21 @@
+---
+sidebar_position: 6
+description: 世界统计数据与物块数量
+---
+
+# 世界分析
+
+世界分析面板提供关于您世界的统计信息。
+
+
+
+## 功能特性
+
+- **物块数量** — 统计每种物块类型的存在数量
+- **生物群系分布** — 各生物群系的范围与占比
+- **宝箱物品** — 所有宝箱内物品的汇总一览
+- **NPC 状态** — 哪些 NPC 存在以及它们所在的位置
+
+:::tip 提示
+可以将世界分析面板与[查找面板](find.md)配合使用,以定位在统计中发现的特定物品或物块。
+:::
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/world-properties.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/world-properties.md
new file mode 100644
index 0000000..478b6b2
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/sidebar-panels/world-properties.md
@@ -0,0 +1,48 @@
+---
+sidebar_position: 3
+description: 世界属性设置 — 名称、时间、Boss击杀进度、事件与 NPC
+---
+
+# 世界属性
+
+世界属性面板用于查看并深度编辑地图世界的元数据、游戏通关与击杀进度标志以及 NPC 状态。
+
+
+
+## 各分组详解
+
+### 世界基础信息
+
+- **世界名称** — 重命名你的世界
+- **世界种子** — 查看当前世界的生成种子码
+- **世界 ID(World ID)** — 独特的数字身份标识
+- **地表与基岩层阈值** — 精确调整地表线与底层基岩层的分界高度
+
+### 时间与天气 {#time--weather}
+
+- **时间** — 包含泰拉瑞亚 24 小时全天日夜循环的渐变滑块。拖拽滑块即可设定任意时分秒——渐变色实时反映该时刻的天空色调。右侧输入框以 `h:mm AM/PM` 格式实时展示并支持直接键盘键入。
+- **月相** — 在八种月相之间自由切换
+- **Blood Moon (血月) / Eclipse(日食)** — 一键开启或关闭特殊天象事件
+- **Rain (下雨) / Sandstorm(沙尘暴)** — 开启或关闭极端天气
+
+### Boss击杀进度
+
+勾选或取消勾选各大 Boss 的击杀状态。这会直接影响 NPC 的生成、敌怪掉落以及困难模式的启用。
+
+
+
+### 入侵与特殊事件
+
+- **哥布林军队 / 海盗入侵 / 火星暴乱**
+- **陨石坠落标记**
+- **已砸碎暗影珠/猩红之心计数**
+
+### NPC 居民列表
+
+集中管理城镇 NPC — 添加、驱逐及设定其房屋分配。
+
+
+
+:::tip 技巧
+使用左侧工具栏的 [点位工具](../interface/toolbar.md#point-tool-p) 可以在地图画布上直观插旗标记 NPC 的房屋入住点。
+:::
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/whats-new.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/whats-new.md
new file mode 100644
index 0000000..576e7ac
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/whats-new.md
@@ -0,0 +1,176 @@
+---
+sidebar_position: 4
+description: TEdit 5 重大全新特性速览
+---
+
+# TEdit 5 全新特性
+
+TEdit 5 是对泰拉瑞亚地图编辑器的彻底重构与重写——采用全新的渲染引擎、现代化的用户界面以及一系列强大的新编辑工具。以下是核心特性亮点。
+
+---
+
+## 现代化 UI 与多语言支持
+
+TEdit 5 拥有基于 **Fluent Design** 的全新界面,原生支持深色模式。UI 现已内置翻译支持 **13 种语言**(通过 Crowdin 平台协同维护)。内置的 **自动更新** 功能可帮助您在稳定版、公测版与内测版通道之间自由切换与更新。
+
+
+
+[设置中心](configuration/settings.md) | [多语言设置](configuration/localization.md) | [自动更新](advanced/auto-update.md)
+
+---
+
+## 脚本自动化引擎
+
+支持编写 **JavaScript** 或 **Lua** 脚本来实现地图世界的全自动编辑。脚本 API 赋予您对物块、墙壁、液体、电线、宝箱、标牌、NPC 等元素的完全控制权。批量处理数万个物块、搜索指定物品、程序化生成宏伟建筑——凡是能用逻辑描述的,都能用脚本实现。
+
+
+
+内置对 ChatGPT、Claude 和 Gemini 等 AI 助手的支持,你可以直接输入自然语言需求,让 AI 为你生成自动化脚本。
+
+[脚本指南](advanced/scripting-guide.md) | [API 参考文档](advanced/api-reference.md)
+
+---
+
+## CAD 风格的电线布线模式
+
+不再需要痛苦地徒手一格格绘制电线。电线布线模式提供了类似于 CAD 软件的点击式布线功能,支持 **90° 直角弯头** 和 **45° 斜角切角** 布线。点击起始锚点,再点击目标终点,编辑器会自动计算出平整规整的布线路径。
+
+
+
+**笔刷工具** 新增了 **总线布线** 功能——可在笔刷宽度内绘制多条平行排列且间距合理的排线。使用数字键 `1`–`4` 可快速开关对应颜色电线。
+
+
+
+**链式模式** 可将线段连续相连——每次提交的终点会自动成为下一段的起始锚点,方便连续绘制长折线。
+
+
+
+布线模式同样支持 **矿车轨道** 和 **平台** 绘制。轨道布线采用精细对角线以匹配原版游戏逻辑,并支持隧道清理预览;平台布线在 45° 路径上会自动正确配置阶梯帧式外观(踏板、纵梁、平台过渡)。
+
+[电线布线详解指南](interface/wire-routing.md)
+
+---
+
+## 浮动粘贴、拖拽与拉伸缩放
+
+现在的粘贴操作在正式写入地图前会生成一个 **浮动预览图层**。你可以通过鼠标拖拽移动位置、拉伸四角或边缘手柄自由缩放尺寸,以及使用快捷键旋转与翻转——在正式放置任何一个物块前就能调整完毕。
+
+
+
+粘贴工具栏中的 X、Y、W(宽)、H(高)输入框为您提供像素级的精确对齐。拉伸缩放采用最近邻采样算法,确保您的建筑结构不会失真变糊。
+
+**即时粘贴** 模式则可在点击时立即确认写入,跳过浮动预览与确认步骤,专为连续盖印粘贴结构图设计。
+
+
+
+[剪贴板与浮动粘贴](sidebar-panels/clipboard.md#floating-paste) | [即时粘贴](sidebar-panels/clipboard.md#instant-paste)
+
+---
+
+## 调色板面板
+
+全新的 **调色板** 侧边栏面板提供了所有物块与墙壁的可视化浏览与搜索筛选,并且支持对物块和墙壁分别设置独立的遮罩蒙版规则。
+
+
+
+物块与墙壁遮罩用于限定绘制生效区域——例如只在空气区域绘制,或者只替换匹配的指定物块。调色板面板让您无需打断当前编辑节奏即可轻松配置。
+
+
+
+[调色板面板详解](sidebar-panels/palette.md) | [遮罩详解](interface/paint-mode.md#masks)
+
+---
+
+## 进阶笔刷系统
+
+内置八种笔刷形状——方形、椭圆、对角线、星形、三角形、月牙形与圆环形——支持 **旋转**、**翻转** 与 **描边轮廓** 变换。喷枪模式基于定时器喷射物块,用于打造自然过渡质感。
+
+
+
+[笔刷设置详解](interface/brush-settings.md)
+
+---
+
+## 环境演变工具
+
+只需一刷即可将整片区域转换为另一种生物群系。选择目标生物群系(净化、腐化、猩红、神圣、蘑菇等)并在已有地形上涂抹,即可完成环境改造。支持精准控制转换元素:基础物块、邪恶物块、苔藓和物体。
+
+
+
+[环境演变工具详解](interface/toolbar.md#morph-tool)
+
+---
+
+## 全局查找与筛选面板
+
+**查找面板** 支持在整个世界中搜索宝箱内的物品、已放置的物块、墙壁或物体。通过上一个/下一个按钮可在地图画布上快速跳转定位。
+
+
+
+**筛选面板** 可以隐藏或调暗特定类型的物块,让您专注于当前正在编辑的部分。支持隐藏模式、调暗模式以及自定义背景颜色。
+
+
+
+[查找面板详解](sidebar-panels/find.md) | [筛选面板详解](sidebar-panels/filter.md)
+
+---
+
+## 折线与连续线段绘制
+
+按住 **Shift** 键并连续点击不同点位,即可绘制连接的笔直折线段。每次点击都会锁定当前线段的终点并开启下一段。适用于铅笔、笔刷和环境演变工具——非常适合建造笔直的墙壁、道路和轮廓,避免手绘抖动。
+
+[折线绘制详解](interface/toolbar.md#polyline-drawing-shiftclick)
+
+---
+
+## 环境演变工具支持更多生物群系
+
+环境演变工具现已扩展支持 **九种目标生物群系**:净化(纯净)、腐化、猩红、神圣、发光蘑菇、丛林、森林、雪原和沙漠。直接涂抹现有地形即可转换生态环境——物块、墙壁、苔藓和装饰均会正确转换。
+
+本次版本新增:
+- **丛林生物群系** — 完整的物块与墙壁覆盖,包括藤蔓、荆棘和丛林特色装饰
+- **拓展发光蘑菇生物群系** — 大幅扩展了蘑菇物块与墙壁的覆盖面,可实现完整的蘑菇生物群系转化
+- **装饰替换** — 多格物体(草丛、藤蔓、火把、祭坛、暗影珠/猩红之心)将自动替换为对应的生物群系变体
+- **双向转换** — 可在不同生物群系之间来回转换,且不会丢失建筑结构细节
+
+[环境演变工具详解](interface/toolbar.md#morph-tool)
+
+---
+
+## 自动多重备份机制
+
+现在每次保存世界时,TEdit 都会自动创建 **.TEdit 备份文件**。备份文件会自动循环轮转保留——`.TEdit`、`.TEdit.2`、`.TEdit.3` 等——确保您随时拥有最新的还原点。
+
+- **最大备份数(MaxBackups)** 设置项可自定义每个世界保留的备份份数(默认:10 份)
+- 备份文件会直接展示在 **世界浏览器** 中,标有 "TEdit Backup"
+- 泰拉瑞亚官方生成的 `.bak` 文件也会一并显示,标有 "Terraria Backup"
+
+[存档与备份详解](configuration/saves-and-backups.md)
+
+---
+
+## 24小时渐变时间滑块
+
+世界属性面板中新增了 **24 小时全天渐变时间滑块**。拖拽滑块即可设定一天中的任意时间点——滑块背景的色彩渐变直观反映了该时间段的天空色调。右侧文本框以 `h:mm AM/PM` 格式实时显示时间,并支持直接手动输入。
+
+[世界属性与时间调节](sidebar-panels/world-properties.md#time--weather)
+
+---
+
+## Steam 用户 ID 设置
+
+设置中心路径分类下新增了 **Steam User ID** 选项,允许指定使用哪个 Steam 用户的 Worlds 存档目录。在 TEdit 无法自动侦测 Steam 库路径,或者电脑上登录了多个 Steam 账号时尤其方便。
+
+[设置中心:路径与隐私](configuration/settings.md#privacy--paths)
+
+---
+
+## 筛选面板物块与墙壁图标化
+
+筛选面板中的物块与墙壁选择器现在会直接显示 **对应放置物品的图标**,替代以往通用的模糊小图。这使得辨认物块与墙壁变得更加一目了然。
+
+---
+
+## 超大尺寸剪贴板支持
+
+剪贴板现在完全支持超过 **4096 像素** 的超大选取区域。粘贴预览图层采用了平铺纹理系统,自动将超大缓冲区拆分渲染为 GPU 显存安全的纹理网格,侧边栏预览依然保持高质量等比缩略图。
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/version-4.json b/i18n/zh-Hans/docusaurus-plugin-content-docs/version-4.json
new file mode 100644
index 0000000..a060b23
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/version-4.json
@@ -0,0 +1,34 @@
+{
+ "version.label": {
+ "message": "TEdit 4",
+ "description": "The label for version 4"
+ },
+ "sidebar.tutorialSidebar.category.Basics": {
+ "message": "Basics",
+ "description": "The label for category 'Basics' in sidebar 'tutorialSidebar'"
+ },
+ "sidebar.tutorialSidebar.category.Sidebar Tools": {
+ "message": "Sidebar Tools",
+ "description": "The label for category 'Sidebar Tools' in sidebar 'tutorialSidebar'"
+ },
+ "sidebar.tutorialSidebar.category.Plugins": {
+ "message": "Plugins",
+ "description": "The label for category 'Plugins' in sidebar 'tutorialSidebar'"
+ },
+ "sidebar.tutorialSidebar.category.Configuration": {
+ "message": "Configuration",
+ "description": "The label for category 'Configuration' in sidebar 'tutorialSidebar'"
+ },
+ "sidebar.tutorialSidebar.category.Advanced": {
+ "message": "Advanced",
+ "description": "The label for category 'Advanced' in sidebar 'tutorialSidebar'"
+ },
+ "sidebar.tutorialSidebar.doc.TEdit Documentation": {
+ "message": "TEdit Documentation",
+ "description": "The label for the doc item 'TEdit Documentation' in sidebar 'tutorialSidebar', linking to the doc intro"
+ },
+ "sidebar.tutorialSidebar.doc.Install Requirements": {
+ "message": "Install Requirements",
+ "description": "The label for the doc item 'Install Requirements' in sidebar 'tutorialSidebar', linking to the doc install-requirements"
+ }
+}
diff --git a/i18n/zh-Hans/docusaurus-theme-classic/footer.json b/i18n/zh-Hans/docusaurus-theme-classic/footer.json
new file mode 100644
index 0000000..982a2fd
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-theme-classic/footer.json
@@ -0,0 +1,42 @@
+{
+ "link.title.Docs": {
+ "message": "文档",
+ "description": "The title of the footer links column with title=Docs in the footer"
+ },
+ "link.title.Community": {
+ "message": "社区",
+ "description": "The title of the footer links column with title=Community in the footer"
+ },
+ "link.title.More": {
+ "message": "更多",
+ "description": "The title of the footer links column with title=More in the footer"
+ },
+ "link.item.label.Getting Started": {
+ "message": "快速入门",
+ "description": "The label of footer link with label=Getting Started linking to /getting-started"
+ },
+ "link.item.label.Install Requirements": {
+ "message": "安装与运行要求",
+ "description": "The label of footer link with label=Install Requirements linking to /install-requirements"
+ },
+ "link.item.label.Discord": {
+ "message": "Discord",
+ "description": "The label of footer link with label=Discord linking to https://discord.gg/SrwYZU2GDY"
+ },
+ "link.item.label.GitHub": {
+ "message": "GitHub",
+ "description": "The label of footer link with label=GitHub linking to https://github.com/TEdit/Terraria-Map-Editor"
+ },
+ "link.item.label.Download TEdit": {
+ "message": "下载 TEdit",
+ "description": "The label of footer link with label=Download TEdit linking to https://github.com/TEdit/Terraria-Map-Editor/releases"
+ },
+ "link.item.label.Report Issues": {
+ "message": "反馈问题",
+ "description": "The label of footer link with label=Report Issues linking to https://github.com/TEdit/Terraria-Map-Editor/issues"
+ },
+ "copyright": {
+ "message": "版权所有 © 2026 TEdit。基于 Docusaurus 构建。",
+ "description": "The footer copyright"
+ }
+}
diff --git a/i18n/zh-Hans/docusaurus-theme-classic/navbar.json b/i18n/zh-Hans/docusaurus-theme-classic/navbar.json
new file mode 100644
index 0000000..de1e268
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-theme-classic/navbar.json
@@ -0,0 +1,22 @@
+{
+ "title": {
+ "message": "TEdit",
+ "description": "The title in the navbar"
+ },
+ "logo.alt": {
+ "message": "TEdit 图标",
+ "description": "The alt text of navbar logo"
+ },
+ "item.label.Documentation": {
+ "message": "文档",
+ "description": "Navbar item with label Documentation"
+ },
+ "item.label.Web Editor": {
+ "message": "网页版编辑器",
+ "description": "Navbar item with label Web Editor"
+ },
+ "item.label.Sponsor": {
+ "message": "赞助支持",
+ "description": "Navbar item with label Sponsor"
+ }
+}