Lite2Edit

Lite2Edit是一个小型的Fabric模组,它允许WorldEdit打开Litematica原理图文件(.litematic)。

游戏机制

Lite2Edit

CI Automatic Dependency Submission Build and Publish Release

Icon

Lite2Edit 是一个小型 Fabric 模组,让 WorldEdit 能够打开 Litematica 原理图文件(.litematic)。


在 Modrinth 和 Github 上的模组

你可以通过以下地址从 Modrinth 下载该模组:https://modrinth.com/mod/lite2edit
你可以通过以下地址查看源代码:https://github.com/Erik-Donath/lite2edit

快速介绍

  • 功能:将 Litematica 的 .litematic 原理图转换为 WorldEdit 剪贴板,你可以粘贴或进行操作。
  • 适用人群:使用 Fabric + WorldEdit 并希望轻松导入 Litematica 文件的玩家和服务器管理员。
  • 简单安装:将模组 JAR 放入你的 Fabric mods/ 文件夹(与 WorldEdit 及所需的 Fabric 组件一起)。

如何使用

  1. 将 Lite2Edit 模组 JAR 放入你的 Fabric mods/ 文件夹。
  2. 确保已安装 Fabric Loader、Fabric Language Kotlin 和 WorldEdit(Fabric 版本)。
  3. 启动 Minecraft(客户端或服务器)。
  4. 使用 //schematic load "..." 加载一个 .litematic 文件。该原理图将作为剪贴板加载,你可以粘贴和编辑。
  5. 使用 //schematic save -f litematica "..." 将 WorldEdit 剪贴板保存回 .litematic 文件。

如果你更愿意从源码构建,请运行:

git clone https://github.com/Erik-Donath/Lite2Edit.git
./gradlew build
# copy the generated JAR from build/libs/ into your mods/ folder

工作原理

本节解释该模组在幕后做了什么:

  • Litematica 文件以 NBT 数据(Minecraft 使用的一种结构化二进制格式)存储世界片段。原理图包含由方块组成的区域、列出所用唯一方块类型的调色板、方块实体数据(用于箱子、告示牌、熔炉等),以及可选的实体。

  • Lite2Edit 读取 Litematica 文件并解析 NBT 结构。它能够理解:

    • 原理图元数据(名称、作者、时间戳)。
    • 一个或多个区域,每个区域包含位置和大小。
    • 方块调色板(方块名称和属性集的列表)。
    • 方块数据,以紧凑的位打包调色板索引列表形式存储。
    • 与其坐标和 NBT 一起存储的方块实体和实体。
  • 方块转换:

    • 该模组将每个调色板条目(例如带有 facing 等属性的 "minecraft:oak_log")映射为 WorldEdit BlockState。在可能的情况下,它会保留方块属性(如旋转或含水状态),以便粘贴的结构看起来正确。
    • 位打包的方块数据会被解码,以确定每个方块位置对应哪个调色板条目。
  • 方块实体和实体:

    • 方块实体 NBT(箱子内容、告示牌文本、自定义方块数据)会被转换为 WorldEdit 期望的格式,并在创建剪贴板时附加到对应方块上,因此箱子和其它带有 NBT 的方块在可能的情况下会保留其数据。
  • 区域和负尺寸:

    • Litematica 可以在单个文件中存储多个命名区域。Lite2Edit 可以通过计算包含所有区域的包围盒,将多个区域合并为单个 WorldEdit 剪贴板。
    • 某些区域定义为负尺寸;该模组会对其进行规范化,以便方块最终位于剪贴板中的正确位置。
  • 尚未完成的功能:

    • 完整的实体转换(生物和某些实体类型不会被转换;方块实体受支持)。
    • 多区域导出:保存剪贴板时,所有方块都会被写入一个名为 "Unnamed" 的单一区域——原始区域名称和边界不会被保留。

实用说明与限制

  • 大多数方块和常见属性都能正确转换;非常特殊的自定义方块或模组方块可能无法完美映射,可能会被跳过或记录日志。
  • 如果某个方块类型对 WorldEdit 来说是未知的,该模组会在日志中发出警告并跳过该方块。
  • 方块实体在可能的情况下会被转换,但非常复杂或特定于模组的 NBT 可能无法完美往返转换。
  • 在排查导入问题时请查看 Minecraft 日志;转换警告和错误会记录在其中。请将你遇到的任何问题报告到 Issue 页面。

许可与贡献

  • 许可证:MIT,请参阅本仓库中的 LICENSE。
  • 贡献:欢迎提交 Pull Request 和 Issue。如果你希望:
    • 添加 .litematic 写入器(导出支持),请包含一个示例原理图以验证往返转换的正确性。
    • 改进方块/属性映射或方块实体处理,请保持改动小,并记录行为差异。

贡献步骤:

  1. Fork 本仓库。
  2. 创建一个功能分支。
  3. 提交一个 Pull Request,描述你的改动以及你执行的任何测试。

感谢你使用 Lite2Edit。如果你遇到问题或想要某个功能,请在 GitHub 上打开一个 Issue。