Xaero的世界地图

Xaero的世界地图

添加一个全屏世界地图,显示你在世界中探索过的区域。可与Xaero的小地图配合使用。

不要将此模组与 XaeroPlus 一起使用!它与我没有关联,会导致严重且无法追踪的漏洞/崩溃。据称它与一个服务器破坏组织有关联,可能会危及你的服务器存档。

Xaero 的世界地图模组为你的 Minecraft 客户端添加了一个自动绘制的全屏地图。它可以作为一个独立模组运行,但与 Xaero 的小地图配合使用时效果更佳。之所以单独提供,是为了尽可能保持 Xaero 小地图的轻量化。本模组主要是客户端侧的。在服务器端安装它是可选的,用于启用一些附加功能,例如世界识别。

本模组仍在开发中!请报告你遇到的任何漏洞,否则它们可能无法被修复。

确保你的世界已针对你所玩的 Minecraft 版本进行了优化(单人游戏 - 编辑 - 优化世界)(每次 Minecraft 更新后重复此操作)。从未优化的世界存档生成单人游戏地图需要更长的时间。

在 Mastodon(Twitter 的替代品)上关注我? mas.to/@xaero96

在 Patreon 上支持我? patreon.com/xaero96

谢谢!

功能

  • 一个自动绘制的世界地图(与手动制作的纸质地图相对)。你可以在同一个服务器地址上创建多个地图,并手动或自动地在它们之间切换。
  • 在单人游戏、多人游戏和 Realms 中均可使用。
  • 直观的界面。按 M 键 打开地图屏幕。使用鼠标拖动地图,使用鼠标滚轮放大/缩小,类似于 Google 地图。所有相关控件都列在地图屏幕的工具提示中,并且你可以自定义其中许多控件。
  • 在服务器上可选的自动多世界检测。
  • 服务器端配置文件,带有一个游戏内 UI 屏幕,可让你实时控制服务器上的玩家如何使用该模组。你可以基于等级/权限(xaero.world_map.enforced_server_profile)。支持 FTB Ranks、Odyssey Roles、LuckPerms 和通用权限 API。
  • 显示来自 Open Parties and Claims 模组的区块声明和盟友玩家。允许你直接从地图上认领或强制加载区块。
  • 资源包支持。更改资源包会导致整个世界地图重新生成。
  • 洞穴维度支持(例如下界)。
  • 可选的经典地图模式,使世界地图看起来像原版的纸质地图。
  • 地形着色自定义。
  • "足迹"功能,显示你最近走过的路径。
  • 在必要时可帮助提高模组性能的设置。虽然在大多数情况下,模组默认情况下应该表现良好。
  • Xaero 的小地图集成。小地图模组将显示世界地图提供的区块。世界地图模组将显示来自 Xaero 小地图模组的路径点。也可以与 Better PVP 模组配合使用。你可以在不离开地图界面的情况下创建、编辑和传送至路径点。
  • 药水效果,用于控制你服务器/地图上玩家对世界地图的使用。撰写本文时存在以下药水效果:xaeroworldmap:no_world_map。这些效果默认为中性类型,但你也可以通过附加 _harmful 到效果 ID 末尾来指定有害类型,例如 xaeroworldmap:no_world_map_harmful。
  • 自 1.14.0 版本起,你可以通过点击地图屏幕右下角的图标打开地图上的路径点菜单。在路径点菜单中,你可以看到来自已渲染集合的所有地图路径点列表,使用鼠标光标与它们交互,在文本字段中按名称过滤它们。该菜单还允许你切换禁用路径点的可见性、切换所有集合的渲染以及更改当前路径点集合。在菜单中悬停路径点也等同于在地图上悬停它们:它们会在地图上高亮显示,并且你可以使用右键单击或悬停控件与它们交互。
  • 一个将地图导出为 PNG 图像文件的选项。该模组会尝试导出整个地图,因此如果地图长度达数百万个方块,则可能无法正常工作。我计划在未来提供更多导出地图的选项!
  • 一个选项,通过将地图访问绑定到需要放在快捷栏或装备的物品来限制访问。例如,在配置文件的任意位置添加 mapItemId:minecraft:compass 以将其绑定到指南针物品。这样,除非你的快捷栏或装备栏中有指南针,否则地图将无法使用。

论坛帖子 | 获取 Xaero 的小地图

常见问题解答

如何在多人游戏中恢复 1.30 更新前的下界地图,使其以“完整”洞穴模式类型显示?

首先,退出服务器并找到你用于在服务器上游戏的 Minecraft 游戏目录。在游戏目录中,进入 xaero/world-map/Multiplayer_[服务器地址]/DIM-1/[地图文件夹]。在旧版本中,xaero/world-map 只是 XaeroWorldMap。如果尚不存在,创建一个名为 "caves" (不含引号)的文件夹,并进入其中。在 caves 文件夹内,如果尚不存在,创建一个名为 "-2147483648" (不含引号)的文件夹。返回到包含 "caves" 文件夹的目录,并将所有 ".zip" 文件移动到 caves/-2147483648 文件夹中。随意删除缓存文件夹,或将其与 ".zip" 文件一起移动。

如何设置洞穴模式,使其行为恢复到 1.30 版本引入洞穴模式之前的样子?

只有在使用小地图的普通版或完全不使用小地图时才能完全实现这一点。小地图的公平竞赛版现在会禁用下界的世界地图洞穴模式,并且你无法切换此设置,因此它不会完全像以前一样。

如果你有 1.30 版本之前的下界地图数据,请首先按照本页“如何在多人游戏中恢复 1.30 更新前的下界地图,使其以‘完整’洞穴模式类型显示?”下的说明,将其移动到正确的文件夹中。
完成后,加入一个世界/服务器并打开世界地图设置。找到“默认洞穴模式类型”并将其设置为“关闭”,然后将“可读洞穴地图”设置为“开启”。接下来,打开世界地图屏幕并点击屏幕左下角的洞穴图标。在打开的菜单中,将“洞穴模式顶部 Y 值”设置为任意数字。如果你在主世界,请将“洞穴模式类型”设置为“关闭”。稍后当你进入下界时,将“洞穴模式类型”设置为“完整”。洞穴模式类型是按维度存储的,因此你可以为任何类似下界的维度将其设置为“完整”,并为其他所有维度保持“关闭”。你也可以通过切换来显示基岩天花板上方或下方的区域。

为什么右键传送对我无效?

该模组会发送一个聊天命令将你传送到特定坐标,默认是 /tp @s x y z,因此需要适当的权限。原版 /tp 命令需要 OP 状态(已启用作弊),但在安装了特定插件的非原版服务器上,可以为命令设置单独的权限。使用的命令可以在世界地图设置中的“地图传送命令”处更改。非原版传送命令通常不支持诸如 @s 之类的选择器,因此你可能需要将其从配置的命令中移除。还有一个名为“玩家传送命令”的选项,当你右键点击追踪的玩家(例如来自 Open Parties and Claims 的你的队伍)时使用。传送至路径点在小地图模组中使用其自己的设置。你可以在小地图描述页面的常见问题解答下阅读相关内容。

如何在不手动行走的情况下发现地图?

在单人游戏中,地图直接从世界存档加载。这意味着你可以使用你喜欢的任何工具预生成世界,重新登录,并使用世界地图设置中的“重新加载区域”选项修复地图缓存中的任何冲突。在多人游戏中,这并不简单。但是,如果你可以下载服务器世界存档并在单人游戏中进入该世界,那么你可以使用你选择的方法预生成世界,重新登录,然后使用世界地图设置中的“转换所有区域”将整个世界存档转换为一个多人游戏兼容的地图实例,该实例保存到 xaero->world-map->World->null->cm$converted。在旧版本中,xaero/world-map 只是 XaeroWorldMap。你可以将该地图实例文件夹复制/移动到 xaero/world-map 文件夹中的服务器地图实例中。

为什么同一个服务器地址/IP 上的多个世界使用并写入同一个地图?

此模组允许你在同一个服务器地址上拥有多个地图。你可以随时自由地在各个地图之间切换并创建新地图。可以通过为你所玩的服务器的类型选择正确的“地图选择”模式来防止地图被覆盖。地图选择是在一个特殊菜单中进行的,方法是点击世界地图屏幕左下角的图标(如果菜单默认未打开)。在菜单中,你可以在手动、世界出生点和单一模式之间切换,并通过使用顶部中央的下拉菜单选择/创建地图。如果悬停在地图选择选项上,你可以阅读到关于每种地图选择模式需要了解的一切,包括服务器模式。世界出生点模式等同于 1.6 版本之前的世界地图所使用的模式。因此,你不必降级模组即可继续使用它。服务器模式是大多数情况下的最佳选择,因为服务器会根据服务器端的层级 ID 自动控制你的地图选择。这需要在服务器端安装该模组。如果更改地图选择模式将你的地图切换到一个空地图,你始终可以通过从下拉菜单中选择并确认来重新绑定你想要使用的地图。

为什么世界地图会要求确认?

一个服务器地址可能拥有多个主世界、下界等。这可能是由于多个子服务器或多个世界存档造成的,例如一个“大厅”世界和一个“游戏”世界。不同的世界在客户端没有唯一的标识符,这使得无法可靠地区分它们。因此,世界地图模组允许你在同一个服务器地址上为每个维度拥有多个世界地图。在旧版模组中,默认情况下地图选择是手动,这意味着每次你切换维度/世界/子服务器时,都会被要求确认使用哪个地图。你也可以选择两种自动模式之一。地图选择是在一个特殊菜单中进行的,方法是点击世界地图屏幕左下角的图标(如果菜单默认未打开)。在菜单中,你可以在手动、世界出生点和单一模式之间切换,并通过使用顶部中央的下拉菜单选择/创建地图。如果悬停在地图选择选项上,你可以阅读到关于每种地图选择模式需要了解的一切,包括服务器模式。世界出生点模式等同于 1.6 版本之前的世界地图所使用的模式。因此,你不必降级模组即可继续使用它。服务器模式是大多数情况下的最佳选择,因为服务器会根据服务器端的层级 ID 自动控制你的地图选择。这需要在服务器端安装该模组。如果更改地图选择模式将你的地图切换到一个空地图,你始终可以通过从下拉菜单中选择并确认来重新绑定你想要使用的地图。

为什么安装世界地图后,我在服务器上看不到小地图的路径点?

你当前确认的地图会影响小地图模组中哪些路径点子世界被视为自动的。这允许每个创建的地图拥有独立的路径点数据。在任何时候,你都可以通过进入路径点菜单(按 U)并从右上角的下拉菜单中选择它,来选择并查看任何非自动的路径点子世界。你可以通过选择选项 -> 使子世界自动,使任何子世界成为你当前确认地图的自动子世界。

为什么我在某个特定服务器上的世界地图“重置”了?

不要惊慌。它几乎肯定没有被实际删除。旧版世界地图使用基于世界出生点的系统将服务器分割成多个地图。这个系统经常会因为服务器向你的游戏客户端发送虚假的世界出生点坐标来为原版指南针物品添加自定义功能而失效。请确保将模组更新到最新版本。现在有多种地图选择模式可供选择,手动是默认模式。你现在可以查看当前服务器地址上的任何世界地图。点击世界地图左下角的图标打开地图选择菜单(如果默认未打开)。顶部中央的下拉菜单允许你选择现有世界地图或创建新的世界地图。你可以悬停在地图选择模式设置(左下角)上,阅读每种模式的工作原理。服务器模式是大多数情况下的最佳选择,因为服务器会根据服务器端的层级 ID 控制你的地图选择。这需要在服务器端安装该模组。手动模式是最安全的替代方案,应该可以在所有其他服务器上工作。当服务器模式不可用时,还有另外两种自动地图选择模式。在设置的提示信息中阅读更多相关信息。

旧地图不在地图菜单中?这可能意味着两件事:服务器地址已更改或维度 ID 已更改。

我们先从维度 ID 更改开始。服务器上的每个维度在游戏目录 -> xaero -> world-map 目录中都有一个独立的目录。在旧版本中,xaero/world-map 只是 XaeroWorldMap。在对 xaero/world-map 目录进行任何操作之前,请先备份它。在旧版模组中,维度目录名称包含服务器地址和维度键,例如 XaeroWorldMap/__Multiplayer_127.0.0.1_DIM1。在新版本中,维度目录是一个子目录,例如 xaero/world-map/Multiplayer_127.0.0.1/DIM1。出于兼容性原因,默认的主世界、下界和末地维度被命名为 null、DIM-1 和 DIM1。其他维度应以其原始维度 ID 为基础命名,例如 Multiplayer_127.0.0.1/minecraft$overworld_creative。在 1.16+ 中,你可以在游戏内 F3 屏幕上看到你当前的维度 ID,以确定哪个目录对应哪个维度(例如“minecraft:overworld”)。在编辑文件/目录之前,请退出到游戏标题屏幕或关闭游戏。
每个维度目录都包含子目录,每个子目录对应你在该维度中拥有的一个地图(例如 mw$default 或 mw-4,0,-4),以及一个名为 dimension_config.txt 的文件,其中包含地图的实际显示名称。你可以使用该文件来帮助你找到所需的具体地图目录。在地图目录之间移动/复制目录应在维度之间移动/复制它。你可以稍后在游戏中为其命名。最常见的情况是将地图从 /null 移动到 /minecraft$overworld_survival。当 1.16+ 服务器开始为每个子世界使用唯一的维度 ID 时,就需要这样做。

对于服务器地址更改,你首先需要删除 游戏目录 -> xaero -> world-map 内包含新服务器地址的所有目录。在旧版本中,xaero/world-map 只是 XaeroWorldMap。如果你使用的是最新版模组,通常只有一个这样的目录。在执行此操作之前,请备份整个 xaero/world-map 目录。此外,至少将游戏退出到标题屏幕。然后,你需要将 xaero/world-map 中的每个旧服务器地址目录重命名为新地址,仅替换地址部分。

如有疑问,请给我发消息或留言!

以下是旧版说明,如果你无法将模组更新到 1.6.1 或更高版本:

不要惊慌。它几乎肯定没有被实际删除(据我所知,这从未发生过)。这很可能是由服务器插件改变了原版指南针物品的行为并干扰了模组的“多世界”检测引起的。在大多数此类情况下,指南针物品指向你的床而不是全局出生点。如果睡另一张床是导致地图“重置”的原因,那么再次睡在正确的床上应该能恢复一切。
如果地图因添加了新插件而“重置”(并且你无法选择移除它),那么以下是如何恢复地图的方法(并希望该插件不再这样做):

确保 Minecraft 未运行。

1. 进入游戏目录

2. 进入 XaeroWorldMap 目录

3. 找到代表你在服务器上访问过的维度的目录。这些目录的名称中包含服务器地址。以 _null 结尾的是主世界,_dim-1 是下界,等等。

4. 打开主世界目录(_null)。

5. 你应该会看到多个以 mw 开头的目录。

6. 找到文件大小最大的那个。将它的名称复制到某处以防丢失。

7. 现在找到最新的 mw 目录(很可能是最空的,或者直接检查创建日期)。将此目录移动到其他地方。暂时不要删除它。

8. 将第 6 步中的目录重命名为第 7 步中备份的目录的名称。

9. 打开 Minecraft 并测试主世界地图是否恢复了。

10. 如果没有,退出 Minecraft 并恢复已重命名目录的旧名称,同时恢复备份的文件夹。重新阅读所有步骤,确保你做的一切都是正确的。
如果主世界现在已修复,请继续执行步骤 11。

11. 对于你想要恢复的其他每个维度,重命名并备份与你恢复的主世界同名的目录。

如有疑问,请联系我!

为什么我的路径点在恢复地图后没有恢复?

请阅读小地图描述页面上的“为什么我的路径点不再为特定服务器显示?”部分。它应该涵盖大多数情况。如果还是没有帮助,请联系我。

如何禁止在我的服务器上使用洞穴模式?

要做到这一点,请在服务器端安装该模组(撰写本文时需要 NeoForge/Forge/Fabric/Quilt 服务器)。

如果你的世界地图版本至少是 1.40.0,则设置并使用“打开服务器设置”键绑定来打开服务器设置。你几乎可以强制执行那里的任何选项,包括洞穴模式。

在旧版模组中,当你启动服务器时,一个新的“通用”配置文件将在服务器目录(不是世界文件夹)中创建,通常在“config”文件夹中。在配置文件中,你有多个选项可以禁用玩家的某些模组功能。更改需要重启服务器。

或者,如果你无法安装该模组,你可以在发送给玩家的服务器/系统消息(登录时)中包含以下字符串,它们会执行以下操作:

§f§a§i§r§x§a§e§r§o - 导致客户端禁用洞穴模式。

§x§a§e§r§o§w§m§n§e§t§h§e§r§i§s§f§a§i§r - 导致世界地图洞穴模式在下界也能工作,尽管是公平竞赛模式。小地图对此有一个单独的代码,看起来几乎相同。

§r§e§s§e§t§x§a§e§r§o - 重置所有系统消息标志。

这里有一个第三方 Spigot 插件可以为你简化此操作(与我无关,也不是我创建的):XMMForceFairPlay
以及一个具有类似功能的第三方数据包(与我无关,也不是我创建的):Xaero's Map Server Utils
自行承担使用任何第三方附加组件的风险。

如何让原版客户端玩家加入我已安装此模组的服务器?

在你的服务器目录(不是世界文件夹)的 config 文件夹中直接查找“通用”配置文件,通常是 config/xaero/world-map。其中一个选项允许你禁用状态效果的注册,这是阻止玩家加入的原因。更改需要重启服务器。对小地图模组也执行相同操作。

对于开发者

要将此模组挂钩到你的模组中,首先将以下仓库添加到你的构建脚本中:

repositories {
    maven {
        url "https://chocolateminecraft.com/maven"
        name "Xaero's Maven"
    }
}

如果你使用的是 Forge,请确保在你的项目中应用了 Mixin gradle 插件(org.spongepowered.mixin),除非你使用的是 1.12.2。

最后,添加一个或多个以下依赖项声明,将 <minecraft 版本> 和 <mod 版本> 替换为你可以在 https://chocolateminecraft.com/maven/xaero/map 看到的具体值。

使用官方 Mojang 映射的 Forge(1.21.1 之前):

implementation "xaero.map:xaeroworldmap-forge-<minecraft 版本>:<mod 版本>:dev"//故意不进行反混淆!

使用官方 Mojang 映射的 Forge(1.21.1 或之后):

implementation "xaero.map:xaeroworldmap-forge-<minecraft 版本>:<mod 版本>"

使用其他映射的 Forge:

implementation fg.deobf("xaero.lib:xaerolib-forge-<minecraft 版本>:+")
implementation fg.deobf("xaero.map:xaeroworldmap-forge-<minecraft 版本>:<mod 版本>")

Fabric:

modImplementation "xaero.map:xaeroworldmap-fabric-<minecraft 版本>:<mod 版本>"

NeoForge:

implementation "xaero.map:xaeroworldmap-neoforge-<minecraft 版本>:<mod 版本>"

在多加载器设置中的“通用”项目中:

compileOnly "xaero.map:xaeroworldmap-common-<minecraft 版本>:<mod 版本>"

整合包及其他

你允许使用此模组制作视频。

允许在你的整合包中使用它,但须满足以下条件:

  • 仅允许通过 CurseForge 或 Modrinth 对整合包进行盈利(包括在你的整合包描述中放置赞助链接/横幅),除非我已书面许可你在其他地方进行盈利。请随意就此私信我。我给予许可的可能性更大。
  • 如果整合包在 CurseForge 和 Modrinth 之外分发,则你必须标明我的贡献,为 CurseForge 和 Modrinth 之外的用户提供一个易于访问的链接,指向我为此模组设立的官方页面之一。
  • 整合包的名称和/或描述不得与我的模组的名称/描述轻易混淆。
  • 如果我已经书面许可你在 CurseForge 和 Modrinth 之外进行盈利,那么,如果我要求你这样做,你必须移除 CurseForge 和 Modrinth 之外的盈利活动。