插件概述

BlueMap 是一个可以将服务器地图渲染成 3D 网页的一个工具(TIS 同款¿),现在支持原版加载、bukkit 插件加载(craftbukkit、spigot、paper)、Sponge 模组加载、forge/fabric 模组加载;如果使用 Web 服务器(可选),这个插件设置起来非常容易,几乎即插即用。

注释

  1. 插件资源基于 MIT 许可,Wiki 译文基于 CC-BY-NC-SA 4.0
  2. 如果有任何翻译不到位现象,请及时提出,非常感谢!
  3. 反馈/交流 QQ 群:827 327 623(残叶在线女装)
  4. 可能会与最新版本的 Wiki 存有误差,我将会尽快同步汉化!
  5. 本文最后更新校验日期为:2022/05/07 UTC+8

Home

BlueMap 是一个可以将您的服务器地图以一个 3D 的样式展现在您的 Web 浏览器中,它现在支持几乎所有的 Java-Edition 我的世界服务端!

在这个 Wiki 里面,我将试图为您解释您使用插件所需要的一切,如果您需要更多的帮助,可以随时加入 discord 或者 reddit,然后在里面提问!

此 wiki 的原文地址在GitHub,译者为上杉夏相

常见问题

  1. 我可以在哪里查看我的地图?
    默认情况下,它是你的服务器的公网 IP 地址(如 123.45.67.8)加上端口(8100),就像这样:http://123.45.67.8:8100/,不过您也可以更改端口选项
  2. 我无法访问我的地图!
    下面是一个原因清单,请仔细排查:
  1. 端口(在默认情况下是 8100)是否正确的打开并且转发?您的防火墙是否组织了外部连接的进入?如果您不确定此选项,可以尝试在配置文件中更换端口!
  2. 您是否在配置文件中设置了正确的服务器 IP?尝试更换为 0.0.0.0(注释掉默认)以允许所有的连接都允许访问!
  3. 您的服务器控制台,log 文件中是否含有Webserver started...的消息吗? 如果没有,请仔细检查是否含有错误或者警告!
  1. 我的浏览器显示 404 - Not Found!
    检查您的core.conf配置文件,您是否为accept-download选项设置为true?如果是,请检查您的render.confwebserver.conf设置为相同的/正确的文件夹!
  2. 我的地图没有更新!
    BlueMap 需要等待服务器将世界数据保存到硬盘上,因此地图的更改更改可能需要一些时间延迟才能显示在网页上。另外,也可以单击左侧菜单clear tile cache选项,以使浏览器获取新副本。
  3. 我的地图上有黑色/粉红色格子的方块!
    阅读此内容:https : //github.com/BlueMap-Minecraft/BlueMap/wiki/Configuring-mods
  4. 当我放大地图时,我的方块纹理被弄乱了!
    首先,在浏览器菜单中使用clear tile cache选项刷新本地缓存资源确保浏览器没有缓存什么奇怪的内容,当然你也可以完全清除浏览器缓存(Ctrl+F5 可能并不是很起作用);如果这样还是不能解决问题,则您可能更改了一些 完全需要重新渲染地图的 BlueMap 设置:请删除包含渲染地图数据的整个文件夹,默认为/bluemap/wen/data,并且使用/bluemap render <world>重新渲染整个地图,然后在此清除浏览器缓存,应该可以修复。
  5. 我只有全黑的界面/很多地图都不见了?
    • 是否使用了bluemap render <world>,如果没有,请立刻使用它!
    • 在浏览器菜单中使用clear tile cache选项刷新本地缓存资源确保浏览器没有缓存什么奇怪的内容,当然你也可以完全清除浏览器缓存(Ctrl+F5 可能并不是很起作用)
    • 你是否创造过这个世界?玩家尚未访问过的世界不会被渲染!因此,他将今渲染玩家至少加载一次的区块。
    • 你在使用一些模组吗?一些模组可能会阻止 Minecraft 生存和存储光照数据。BlueMap 需要光照的数据并且忽略没有此数据的区块;您可以使用在render.conf中更改ignoreMissingLightData: true修复此问题,但是他将始终启用洞穴渲染且地图上的所有内容都会被照亮,展现类似于夜视的效果。
  6. 网页真的加载的很缓慢!
    请确保本地浏览器启用了硬件加速选项,使用您最喜欢的的搜索引擎来学习如何启用:)
  7. BlueMap 中找不到我的地图!
    您必须将您需要展示的世界添加到render.conf中!默认只加载 world 的三个维度。
  8. 如何使用 SSL(HTTPS)访问网页?
    BlueMap 集成的 Web 服务器无法应用此选项,请使用 NGINX 或 Apache 等进行反代理添加 SSL!

已知的不兼容模组

  • JustEnoughIDs (jeid)
  • NotEnoughIDs
  • OpenCubicChunks
  • SlimeWorldManager

安装

要运行 BlueMap 插件,您需要

  • Java 8 或者更高版本
  • Minecraft Java-Edition

作为 Sponge 插件

如果您有海绵服务器,则可以将 bluemap 用作服务器插件。然后,插件会渲染以及在发生某些更改时主动更新您的地图。如果服务器关闭/重新启动,则渲染任务将暂停并恢复。

  • 首先,您要下载 bluemap-jar。您可以从此处或从海绵插件存储库中选择并下载相应版本。确保它和服务器的 SpongeAPI 版本相同!
  • 将下载的 jar 放在服务器的 mods 文件夹中,然后重新启动服务器。
  • BlueMap 现在将在./config/bluemap/生成配置文件,使用您喜欢的编辑器打开这些配置,并阅读配置一章以了解如何配置 bluemap。
  • 编辑配置后,请使用/bluemap reload重新启动插件。
  • /bluemap render <world>命令以启动整个世界的初始渲染。

作为 Spigot/Paper 插件

如果您有 Spigot 或 paper 服务器,则可以将 bluemap 用作服务器插件。然后,插件会渲染以及在发生某些更改时主动更新您的地图。如果服务器关闭/重新启动,则渲染任务将暂停并恢复。

  • 首先,您要下载 bluemap-jar。您可以从此处选择并下载版本。确保它和服务器的 SpigotAPI 版本相同!
  • 将下载的 jar 放在服务器的 plugins 文件夹中,然后重新启动服务器。
  • BlueMap 现在将在./plugins/BlueMap/生成配置文件,使用您喜欢的编辑器打开这些配置,并阅读配置一章以了解如何配置 bluemap。
  • 编辑配置后,请使用/bluemap reload重新启动插件。
  • /bluemap render <world>命令以启动整个世界的初始渲染。

作为 Forge/Fabric 模组

如果您有 Forge 服务器或 Fabric 服务器,则可以将 bluemap 用作服务器上的 mod。然后,插件会渲染以及在发生某些更改时主动更新您的地图。如果服务器关闭/重新启动,则渲染任务将暂停并恢复。

  • 首先,您要下载 bluemap-jar。您可以从此处选择并下载版本。确保它和服务器的 forge/fabric 版本相同!
  • 如果您有 fabric-server,则还需要安装 fabricAPI mod。
  • 将下载的 bluemap-jar 放在服务器的 mods 文件夹中,然后重新启动服务器。
  • BlueMap 现在将在./config/bluemap/生成配置文件,使用您喜欢的编辑器打开该配置,并阅读配置一章以了解如何配置 bluemap。
  • 编辑配置后,请使用/bluemap reload重新启动插件。
  • /bluemap render <world>命令以启动整个世界的初始渲染。

作为原版独立程序

您可以使用 CLI(命令行界面)将 BlueMap 作为独立的应用程序来渲染地图,如果您拥有原版我的世界服务器或者想渲染本地的地图但又不想设置服务器,这一程序将会很有用!

  • 首先,您要下载 bluemap-jar。您可以从此处选择并下载版本。确保它以 CLI 为目标并且与您要渲染的世界的 Minecraft 版本兼容。
  • 选择/创建一个要在文件夹作为运行程序并生成其配置和文件的目录,并将下载的 jar 保存在此文件夹中。
  • 运行 CLI,并定位在包含程序 jar 的文件夹(译者注:Windows 可以使用 shift+右键选择在此打开 pawershell 窗口)(使用 cd 命令)
  • 使用java -jar BlueMap-cli.jar以运行该程序并在目录中生成配置文件
  • 现在,使用您喜欢的编辑器打开配置文件,并阅读配置一章,学习如何配置程序。
  • 编辑完后,使用java -jar BlueMap-cli.jar -r命令以启动渲染。
  • 使用java -jar BlueMap-cli.jar -w您还可以启动内置的 web 服务器,以便能够查看您的地图

配置文件

前言

BlueMap 的配置文件都是使用HOCON(译者注:一种基于 json 的文档格式,采用键值对)格式化,请确保您对如何使用此语法格式化有一定的基础,可以参阅它的 GitHub 自述文件!
如果在启动时插件没有检索到配置文件,则会为您生成示例配置文档,在这些配置文档中,每个键值对上面都会有一个注释项来解释它的功能以及它的默认值(如果有的话)。

核心配置:core.conf

这个配置文件包含了插件的基本功能和核心设置

accept-download: false
renderThreadCount: -2
metrics: true
data: "bluemap"
  • accept-download默认为 false,需要使用 BlueMap 插件的相关功能则需要设置为 true,但是在此之前,您需要仔细阅读以下内容:

    更改此选项,意味着已接受 mojang 的[EULA],且确认您拥有 Minecraft(Java 版)的许可证。这样 BlueMap 将从 mojang 的服务器下载并使用 minecraft-client-jar,由于下载的文件包含属于 mojang 的资源,所以您不得重新分发该文件或执行与 mojang 的 EULA 不兼容的其他事情。BlueMap 使用此文件中的资源来生成用于地图的 3D 模型并对其进行纹理处理。 (如果没有这些资源,BlueMap 将无法使用。)

  • renderThreadCount 定义了 BlueMap 将使用多少个线程来进行渲染,将此值设置为 0 则可以最大程度的利用您的 CPU 进行渲染(BlueMap 将使用和您的 CPU 内核一样多的线程)。如果将其设置为负值,则 bluemap 将获取可用核心数减去定义的数字。因此具有 8 个核心且设置renderThreadCount: -2则其可利用8 + (-2) = 6线程。

  • metrics 默认为 true,此项决定了是否发送一些非常小的错误报告,该错误报告仅包含使用的插件类型和版本,这样可以使作者跟踪 BlueMap 的基本用法,并帮助作者保持动力,进一步开发该工具,请确保此项为打开状态:)(由于 sponge 拥有自己的指标控件,所以此选项不可用)

  • data 选项可以设置您希望插件在运行时用于保存其所需文件或保存其他数据的文件夹,例如下载的 minecraft-client-jar 文件、其他默认资源以及渲染任务的状态等等

渲染配置: render.conf

在渲染配置中,您可以确切的定义 BlueMap 应该使用什么方式渲染以及怎么渲染

webroot: "bluemap/web"
useCookies: true
maps: [
{
id: "world"
name: "World"
world: "world"

# Advanced map optional config fields:
# 高级地图可以选则配置的选项
startPos: [500, -820]
skyColor: "#7dabff"
ambientLight: 0
renderCaves: false
minX: -4000
maxX: 4000
minZ: -4000
maxZ: 4000
minY: 50
maxY: 126
renderEdges: true
useCompression: true
ignoreMissingLightData: false
},
{
# ... more maps
# ... 更多地图
}
]
  • webroot字段定义了保存渲染地图数据并且生成 Web 项目结构的文件夹。(译者注:反代理路径需要设置为这个文件目录,位于服务器根文件夹)
  • useCookies决定是否在网页上使用 Cookie,cookie 仅用于保存访问者的设置,以便他们无需重新访问时再次进行设置
  • maps中,您可以自定义任意数量的地图,已经在此声明并且配置的地图将会显示在网站的下拉菜单中,可以在菜单中进行切换;作为示例,生成的默认配置中具有三个预配置的映射,如果您不想使用它们,请务必将其删除!maps字段是拥有一个[]和多个{}的列表,每个{}所包含的对象将代表一个世界的地图,您可以渲染多个地图,每个地图应该拥有以下选项:
    • id:定义了地图的 ID,此 ID 只能包含字母 a-z、数字和下划线,并且必须唯一;它将作为地图的文件夹名称保存渲染的地图数据
    • name:定义地图的显示名称,亦是在网页中更换世界所显示的名称
    • world:定义地图的游戏内名称,即地图所在的文件夹名称
      如果有需要,您可以进一步更改地图的渲染方式
    • startPos选项可以控制默认显示地图的未 xz 坐标,默认会居中显示
    • skyColor选项使用 CSS 样式的十六进制颜色码控制天空的颜色
    • ambientLight定义每个方块接收的环境光强度,与阳光/自发光无关。如果世界上没有任何阳光,例如下界和末地,这将很有用。
    • renderCaves字段控制渲染范围,如果为 false 则不会渲染任何自然光为 0 的区块范围,这样就会消除了很多不必要的几何形状,并且提高渲染速度,最重要的是,Web 客户端的性能提高了很多!但是,有时候他可能会去除您从上帝视角看到的外观,例如,海底或大型天空建筑下面的区块,如果您的区块不像下界或者末地那样没有自然光,则必须启用此选项。
    • 字段minXminYminZmaxXmaxYmaxZ定义了所呈现的世界的“界限”。因此,如果您只想渲染世界的特定区域,则可以在此处进行设置。通过使用 y 字段数值,您还可以仅渲染某些高度的块。例如,您可以使用它来移除地狱的上层基岩,以便能够看到渲染中的下部区域。
    • 如果使用上面的选项限制地图的边界,则可以使用该选项renderEdges定义如何渲染地图的“边缘”。如果是该值 true,则将渲染边缘的块,否则边缘块将透明。
    • useCompression选项可用于控制数据压缩(通常使用 gZip 压缩图块);压缩通常会将文件大小减少到 80%及以上,因此不推荐关闭此选项
    • 通常,BlueMap 会检测某个区块是否生成光照数据,并忽略渲染没有生成的块。如果选项ignoreMissingLightData设置为true,即使没有光照数据,BlueMap 也会渲染方块!例如,如果某些 mod 阻止正确保存光照数据,则此功能很有用。但是,这也有一些缺点:对于那些方块,每个方块将始终被完全照亮,夜间模式可能无法正常工作,洞穴将始终被渲染(即忽略“ renderCaves”设置)

Web 服务器配置:webserver.conf

插件集成的 Web 服务器是将地图托管到 Web 界面的最简单的方法,这样你就可以在浏览器中查看它了。如果启用此项功能,它将使用 http 协议在ip:port上托管位于webroot文件夹定义里面的所有文件。

enabled: true
webroot: "bluemap/web"
ip: "123.45.6.78"
port: 8100
maxConnectionCount: 100
  • enabled字段负责控制内置 Web 服务器的启停(true/false)
  • webroot字段定义了 Web 服务器将代理的 Web 界面文件夹,通常这个文件夹应该设置为和render.conf中的webroot字段相同的值
  • ip字段定义了允许访问的 IP 地址,如果您忽略此字段,则插件将允许所有网络接口0.0.0.0访问;当然,如果您只想本地访问,则可以设置为 localhost 或者 127.0.0.1。
  • port设置了服务器的监听端口,默认监听端口为 8100
  • maxConnectionCount字段定义了最大活动连接数量,默认为 100

插件配置:plugin.conf

这一节是关于玩家和服务器交互的,但是当前,它主要控制如何处理如何显示玩家。

liveUpdates: true
skinDownload: true
hiddenGameModes: ["spectator"]
hideInvisible: true
hideSneaking: false
  • 如果您不想使用任何实时数据,请设置liveUpdatesfalse。这将禁用完整的实时更新模块。
  • 如果skinDownload设置为 true,BlueMap 将下载并更新每个玩家的皮肤,并在 Web 界面中加载。
  • hiddenGameModes可以控制哪些游戏模式是在地图上是不可见的。默认情况下,除了观察者模式的玩家之外每个人都是可见的。
  • 如果hideInvisibletrue,则具有隐形效果的玩家将不会显示在地图上。
  • hideSneaking 控制处于潜行状态的玩家是否在地图上可见。

指令&权限

这是一个表格,其中包含所有命令及其权限,如果您将 BlueMap 用作插件 / mod,则可以使用该表:

使用<参数>标记的参数是必须的!

使用[参数]标记的参数是可选的!

命令 权限 描述
/bluemap bluemap.status 显示 BlueMaps 渲染状态
/bluemap version bluemap.version 显示 BlueMaps 版本和一些更有用的系统信息
/bluemap help bluemap.help 显示所有可能的 BlueMap 命令的列表
/bluemap reload bluemap.reload 重新加载所有资源,配置文件和 Web 服务器
/bluemap maps bluemap.status 显示 BlueMap 加载的所有地图
/bluemap worlds bluemap.status 显示 BlueMap 加载的所有世界
/bluemap stop bluemap.stop 停止插件所有的地图渲染(在服务器重启后依然存在)
/bluemap start bluemap.start 恢复插件所有的地图渲染(在服务器重启后依然存在)
/bluemap freeze <map-id> bluemap.freeze 暂停所选地图上的所有更新任务
/bluemap unfreeze <map-id> bluemap.freeze 恢复所选地图的更新
/bluemap purge <map-id> bluemap.render 清除(删除)已经渲染的地图的所有数据(只要在render.conf里面配置即可以重新渲染)
/bluemap marker create <id> <map-id> [x y z] <label> bluemap.marker 在玩家/提供的位置创建一个基本的 POI 标记
/bluemap marker remove <id> bluemap.marker 删除具有该 ID 的标记
/bluemap marker list bluemap.marker 列出所有的标记点

你也许不会用到的指令

命令 权限 描述
/bluemap update [world|map] [x z] [block-radius] bluemap.update 更新整个世界或渲染玩家周围自定义半径大小内更改的区块,BlueMap 会自动检测并更新您的地图,通常您不需要使用此命令:)
/bluemap force-update [world|map] [x z] [block-radius] bluemap.update.force 强制更新整个世界或渲染玩家周围自定义半径大小内更改的区块, BlueMap 有一种非常可靠的方法用于检测并渲染您世界中的变化,此命令仅应该用于测试!
/bluemap cancel [task-ref] bluemap.cancel 取消渲染队列中的最后一个渲染任务,通常不需要使用这个命令,请考虑使用/bluemap freeze替代它:)
/bluemap debug block bluemap.debug 打印玩家位置有关块的一些调试信息
/bluemap debug flush <world> bluemap.debug 保存世界并刷新计划的文件更新任务
/bluemap debug cache bluemap.debug 清除 bluemap 的世界缓存
/bluemap debug dump bluemap.debug 创建一个包含该插件运行状态信息的文件 ./bluemap/dump.json

加载资源包

BlueMap 支持使用 Minecraft 资源包。如果要更改地图的外观,请使用支持高分辨率纹理或精美的方块模型的材质包。

重要说明
如果更改资源包设置,则需要删除以前的渲染!删除完整的 web/data 文件夹!否则,您将获得具有奇怪纹理的网页地图模型。

要安装资源包,只需将资源包文件夹或 zip 放在配置文件旁边的resourcepacks文件夹中,然后重新加载 BlueMap。BlueMap 将扫描该文件夹并尝试加载找到的所有资源包。

Sponge, Forge, Fabric: ./config/bluemap/resourcepacks/
Spigot/Paper: ./plugins/BlueMap/resourcepacks/

当然您也可以使用多个资源包。就像在《我的世界》中一样,它们会相互覆盖。由于它们按字母顺序加载,因此称为的资源包zzzresources.zip将覆盖aaaresources.zip。这意味着您可以通过重命名来重新排序它们,例如01_some_pack.zip02_some_extension_pack.zip等等等…

确保资源包适用于您所运行的 Minecraft 版本。否则可能无法正确加载。如果您正在使用具有某些其他格式的资源包,则控制台中可能会有警告。警告通常会导致单个(方块)模型无法正确加载,所以该资源包中的所有其他资源仍在加载中。

模组物品

如果您正在渲染一个存在有模组自定义方块的世界,BlueMap 将不知道如何处理渲染这些方块,因此它们将看起来像这样:

![](https://camo.githubusercontent.c … e616d653d6c61726765)

如果您不希望出现这种情况,您可以尝试自行添加和配置这些模组的模型资源,告诉 BlueMap 如何渲染这些东西

不幸的是,对于 1.12.x 来说,这并不容易,甚至非常枯燥

以下是具体的步骤

First Step - 常规

Tips:
在阅读本章之前,请务必阅读“安装资源包”章节

首先你要做的也是最重要的一件事,就是把符合版本的客户端模组上传到相关文件夹

比如:如果您想添加对丰富的生物群落“biomes-o-plenty”模组的支持,您需要从客户端获得相应版本的模组文件并将其上载到服务器上的 BlueMaps resourcepack 文件夹(位于 BlueMaps 配置文件旁边)!

然后,BlueMap 将会像加载资源包一样加载该模组:尝试解析方块的模型并加载它的纹理。

Tips:
某些模组可能会使用不支持的资源包/纹理格式(Forge's blockstate.json的支持是非常有限),所以您必须使用正确的格式来替换覆盖纹理资源包文件

如果一切正常,它就已经正常的显示了!但是,(尤其是在 1.12.x 上)您可能需要做一些更多的配置文件来更好的适配,浏览下面的章节!

Second Step - 配置

  1. 方块 ID 配置(仅限 1.12)

文件(示例:blockIds.json)

{
"extragrassmod:grass:0": "extragrassmod:grass[variant=mossy,snowy=false]",
"extragrassmod:grass:1": "extragrassmod:grass[variant=dry,snowy=false]",
"extragrassmod:grass:2": "extragrassmod:grass[variant=sandy,snowy=false]",
"extragrassmod:grass:3": "extragrassmod:grass[variant=flowered,snowy=true]"
}

这将是最烦人的部分!但它只是将方块存储为 1.12.x 的格式!
所以,如果您有一个只存在于 1.13 及以上的服务器,您并不需要这样做

在 1.13 版本之前,方块是通过其数字 ID 和元值存储。因此,某些方块的存储类型类似于这样1:5的键值对形式。

如果模组想要添加新的方块,这个方块就会被赋予新的物品 ID。然后,Forge 将该方块的数字 ID 和值 ID 存储在世界文件的相应表中。现在,BlueMap 需要知道每个 ID:值组合呈现的是什么类型的方块

因此,我们有三种 ID 类型:

  • 一些特定的整数代表的方块,但是对于不同世界来说可能会有所不同:numeric-id 169
  • 一些特定的名称(唯一)代表的方块:literal-id minecraft:sea_lantern
  • 在资源或资源包中声明的方块(通常含有状态位置和名称),因此,BlueMap 将会在加载的资源文件中收缩,这通常是相同的,但也有一些罕见的情况下,他们是不同的resource-id minecraft:sea_lantern assets/<namespace>/blockstates/<id>.json assets/minecraft/blockstates/sea_lantern.json literal-id

所以要配置一个方块,您需要找到所有可能的键值对及方块名称,然后使用键值对的形式格式化它们,并像开头示例一样添加到配置文件中,您也可以使用数字 ID 而不是字母 ID,但是由于数字 ID 可能随着世界的改变而变化,因此不建议这样做。"namespace:literal-id:meta": "namespace:resource-id[property1=value1,property2=value2]"

如果您不能通过常规的方式寻找到某些模组方块的键值对或方块名称,可以查看下面这些资料获取帮助

  • 模组的 Wiki 也许会有

  • 按住 F3 查看相应方块会显示 ID 和值

  • BlueMap 的/BlueMap debug指令会向您显示关于您脚下方块的所有信息

  • WorldEdit 可以根据键值对创建方块

    2.方块属性配置

    Tips:
    如果没有明确定义方块的属性,BlueMap将会查看方块模型并试图猜测其属性,当然这通常来说都是准确的,您可以忽略此配置。
    

文件(示例:blockProperties.json):

{
"morenaturemod:special_log": {
"culling": true,
"occluding": true,
"flammable": true
},
"morenaturemod:special_leaves": {
"culling": false,
"occluding": true,
"flammable": true
},
"morenaturemod:cool_flower": {
"culling": false,
"occluding": false,
"flammable": true
}
}

要正确渲染方块,BlueMap 需要知道方块的以下属性:

  • culling它的相邻方块,如果为是则这个块含有相邻方块,它自身的某些面是隐藏不见的
  • occluding方块距离,这一项用于计算相邻方块遮挡时,该方块是否有“遮挡环境光”(译者注:计算是否为透明方块?)
  • flammable这目前仅在 1.12.x 中用于计算火的外观。
  1. 方块颜色配置

文件(示例:blockColors.json

{
"minecraft:water": "@water",
"minecraft:grass": "@grass",
"minecraft:redstone_wire": "#ff0000",
"minecraft:birch_leaves": "#86a863"
}

某些方块(如草、叶子、水或者红石)是动态的颜色变化,这些颜色可能会因为生物群系、相关特性处于静态或者变化的。

您可以使用生物群系的树叶(@foliage)、草(@grass)或者水(@water)的颜色给方块着色,或者您也可以使用 CSS 格式的十六位颜色代码给方块设置静态颜色(如#86a863)

  1. 生物群系配置

现在仍然处于 TODO 状态,目前未知的生物群落被视为“海洋”生物群落。

Third Step - 安装

好了!经过了上面的配置您获得了一些配置文件,但是它们应该怎么使用?

有两个地方可以激活它们

  • 在 core.conf 和 render.conf 等配置文件旁边的 config 文件夹中
  • 在资源包中的此文件夹中:assets//BlueMap

如果您想要创建易于与他人共享的模组配置文件,资源包法也许非常有用。:)

Fourth Step - 开发者

如果你想让你的模组与 BlueMap 兼容,你可以简单地将所有需要的资源和配置文件添加到你的 jar 文件中。

所有的配置都可以放在assets/<namespace>/BlueMap

如果您想使用 BlueMap 的资源文件覆盖您自己的资源文件,您可以通过在文件夹中添加它们以实现(比如 assets/yourmod/BlueMap/blockstates/someblock.json 将会覆盖掉 assets/yourmod/blockstates/someblock.json

附属资源

在这里列举了 BlueMap 的 api 以及使用其实现的将某些功能与 BlueMap 集成的插件/模组列表

API:https://github.com/BlueMap-Minecraft/BlueMapAPI
如果您知道任何其他的模组/插件适合进入这个名单,可以在 discord 中 ping 作者添加!


创建标记

(这一部分尚未完成,丢失很多信息)——作者注

你可以在 bluemap/web/data文件夹里创建markers.json 并像下文一样编辑就可以创建一个标记点:

{
"markerSets":
[
{
"id": "pois",
"label": "POIs",
"toggleable": true,
"defaultHide": false,
"marker":
[
{
"id": "spawn",
"type": "poi",
"map": "world",
"position": { "x": 105.5, "y": 62.5, "z": 50.5 },
"label": "<b>Spawnpoint</b>",
"icon": "data/icons/LogoCircle32.png",
"anchor": { "x": 16, "y": 16 },
"minDistance": 10.0,
"maxDistance": 10000000.0,
},

{
"id": "mthoru",
"type": "html",
"map": "world",
"position": { "x": -596, "y": 100, "z": 26 },
"label": "Mt. Horu",
"html": "<div style='line-height: 2em; font-size: 2em; color: white; transform: translate(-50%, -50%);'>Mt. Horu</div>",
"anchor": { "x": 0, "y": 0 },
"minDistance": 250.0,
"maxDistance": 4000.0,
},

{
"id": "a-tree",
"type": "extrude",
"map": "world",
"position": { "x": 186, "y": 80, "z": -319 },
"label": "A tree",
"detail": "This is a tree.",
"shape":
[
{ "x": -8, "z": 201 },
{ "x": -8, "z": 185 },
{ "x": 10, "z": 185 },
{ "x": 10, "z": 201 },
],
"shapeMinY": 75,
"shapeMaxY": 95,
"depthTest": true,
"lineWidth": 3,
"lineColor": { "r": 0, "g": 255, "b": 0, "a": 1 },
"fillColor": { "r": 0, "g": 200, "b": 0, "a": 0.2 },
"minDistance": 10.0,
"maxDistance": 1000.0,
},

{
"id": "river",
"type": "line",
"map": "world",
"position": { "x": 165.0, "y": 65, "z": -276.0 },
"label": "River",
"detail": "A river ... <br><br><i>honestly i just needed a reason to use the line marker ;D</i>",
"line":
[
{ "x": 84, "y": 64, "z": 59 },
{ "x": 15, "y": 67, "z": 12 },
{ "x": -101, "y": 65, "z": -20 },
{ "x": -130, "y": 64, "z": -66 },
{ "x": -113, "y": 64, "z": -293 },
{ "x": -154, "y": 64, "z": -427 },
],
"depthTest": true,
"lineWidth": 5,
"lineColor": { "r": 70, "g": 100, "b": 255, "a": 1 },
"minDistance": 0.0,
"maxDistance": 5000.0,
},

{
"id": "town",
"type": "shape",
"map": "world",
"position": { "x": 255.0, "y": 63.0, "z": 1797.0 },
"label": "Island",
"detail": "A cool Island you should visit!",
"shape":
[
{ "x": 623.0, "z": -117.0 },
{ "x": 817.0, "z": -187.0 },
{ "x": 1013.0, "z": 321.0 },
{ "x": 878.0, "z": 406.0 },
{ "x": 789.0, "z": 369.0 },
{ "x": 626.0, "z": 200.0 },
],
"shapeY": 64.0,
"depthTest": false,
"lineWidth": 2,
"lineColor": { "r": 255, "g": 0, "b": 0, "a": 1 },
"fillColor": { "r": 200, "g": 0, "b": 0, "a": 0.3 },
"minDistance": 100.0,
"maxDistance": 10000000.0,
},
],
},
],
}

反向代理

您可以使用 NGINX 等 Web 服务器反向代理 BlueMap,下面是一些示例
如果您想给网页地图添加 HTTPS 或者集成到网站中,这将会很有用

必要条件

  • 您可以访问您服务器的 shell(不只是服务端控制台)
  • 您已经安装其配置好了 NGINX 软件
  • NGINX 和 BlueMap 在同一台主机上,如果不是则需要将 IP 替换掉下文的 localhost
  • BlueMap 内置 Web 服务器访问端口为 8100,如果不是则需要替换掉下文的 port

使用子目录访问

如果您已经有一个由 NGINX 托管的普通网站,并且希望在/map/(例如https://mydomain.com/map/)上展示地图,则可以将以下配置其添加到 NGINX 配置中:

server {
...
location ~/map(.*)$ {
proxy_pass http://127.0.0.1:8100$1;
}
}

使用子域名访问

如果您想在子域名上使用 BlueMap,例如https://map.mydomain.com/,那么您可以在 nginx 配置中添加以下内容:

server {
listen 80;
listen 443 ssl;

server_name map.mydomain.com;

location / {
proxy_pass http://127.0.0.1:8100;
}
}

Web 托管

如果你想优化你的地图加载、显示速度,您可以直接使用 web 服务器(例如 Apache 或者 NGINX)托管 BlueMap,为此,您需要进行一些配置。

目标

BlueMap 渲染并把地图保存为许多称为“平铺”的小部分。这些小的块数据以单个文件的形式保存在树状文件夹结构中:<webroot>/data/<map-id>/。文件数据为 json 格式。但是文件也可以使用 GZip 进行压缩。现在的问题是:Web 应用程序(浏览器)有可能会请求请求未压缩的.json 文件,但是普通的 Web 服务器只能找到压缩后的 gzip 文件。

例如: Web 应用程序正在要求地图块数据:/data/world/hires/x9/z-8.json。您的 Web 服务器现将会搜索该文件,它将找不到这个块数据,因为它所需的文件实际上是/data/world/hires/x9/z-8.json.gz文件!而同样重要的是,它被压缩了。

因此,我们需要做两件事:

  • 在服务器内部将请求重定向到文件的.gz 文件格式
  • 告诉浏览器我们发送的文件实际上是 GZip 压缩的,浏览器必须先将其解压缩,然后再将其提供给用户。(我们可以通过使用 http-header 实现 Content-Encoding: gzip 解决这个问题)

实时数据界面

如果您使用的是插件/模组,则通常会在地图上实时更新玩家标记。对于那些使用外部 Web 服务器的用户,您还需要将对/live/ 文件夹的所有请求反向代理到内置的 Web 服务器。

NGINX 的配置文件

使用 NGINX 时,实际上一个配置行可以同时完成这两项工作:gzip_static always

因此,在某些情况下,您的网站配置需要更改为如下所示:

server {
listen 80;
server_name yourdomain.com;

# path to bluemap-webroot, bluemap can also be used in a sub-folder .. just adapt the paths accordingly
root /var/www;

location / {
try_files $uri $uri/ =404 ;
}

# map-tiles are stored compressed, and they have a fallback file that should be returned if the tile does not exist
location /data/ {
error_page 404 =200 /assets/emptyTile.json;
gzip_static always;
}

# Proxy requests to the live data interface to bluemaps integrated webserver
location /live/ {
proxy_pass http://127.0.0.1:8100;
}
}

Apache2

要使用 Apache2 做托管,就需要启用*HEADERS, REWRITE 和全部的 PROXY (PROXY and PROXY_HTTP)*模块。

你可以使用apache2ctl -M检查你所启用的模块,以及使用a2enmod MODULENAME启用某些模块,记得重启 Apache2!

DocumentRoot /var/www/
<Directory /var/www/>
allow from all
Options FollowSymLinks
Require all granted
SetEnv no-gzip


RewriteEngine on


# Make sure the browser supports gzip encoding before we send it
# without it, Content-Type will be "application/x-gzip"
# 在发送之前,请确保浏览器支持gzip编码
# 如果不支持,Content-Type将为“ application / x-gzip”
RewriteCond %{HTTP:Accept-Encoding} \b(x-)?gzip\b
RewriteCond %{REQUEST_FILENAME}.gz -s
RewriteRule ^(.+) $1.gz [L]


# Also add a content-encoding header to tell the browser to decompress
#还添加一个内容编码标头,以告知浏览器解压缩gzip文件
<FilesMatch .gz$>
ForceType application/json
Header set Content-Encoding gzip
</FilesMatch>
</Directory>
# Proxy requests to the live data interface to bluemaps integrated webserver
# 把代理请求转发到插件的实时数据接口
ProxyPreserveHost On
ProxyPass /live/ http://127.0.0.1:8100/live/
ProxyPassReverse /live/ http://127.0.0.1:8100/live/

Caddy

如果您使用的是 Caddy,这是@mbround18 的解决方案:

http://your-domain {
root * /usr/share/caddy/
file_server

reverse_proxy /live/* http://127.0.0.1:8100

@JSONgz {
path *.json
file {
try_files {path}.gz
}
}

route @JSONgz {
rewrite {http.matchers.file.relative}
header Content-Type application/json
header Content-Encoding gzip
}

}