Java版 Bukkit 1.19.x 1.12.x 服务器插件:Dynmap卫星地图

狗二胡

狗二胡

管理员
管理成员
管理员
11
2022-08-29
14
2
40
az
金锭
510块
钻石
0颗
下界合金锭
0块
1672571949108
以上图片来自gehru.com:10
1. 相关链接
2. 插件安装
注意,Dynmap插件支持多种类型的服务器,在本帖的介绍中,我们只介绍Spigot服务端类型的,首先我们下载插件,我下载到的是在编写本帖时的最新版本,Dynmap-3.0-beta-4-spigot,将插件拖入到Plugins插件文件夹中:
然后我们再启动一次服务器,看到后台出现了以下字样之后说明插件成功加载了。
  1. [dynmap] Enabled
复制代码
到目前为止,你已经完成了插件的安装工作了。​
3. 插件配置
下面我们就进入到了插件的配置阶段,涉及到端口等问题,如果对此部分不了解的话可以翻看一下我的新手教程帖,里面有介绍到关于IP和端口的问题:
当我们的插件开始工作之后,我们使用运行服务端的机器,打开浏览器,输入以下地址进入,就可以看到已经为我们生成好了的地图网页了。比如我现在用的是我自己的笔记本,服务端是在我笔记本上开的,我就使用我笔记本的浏览器进入,当然大家开服肯定是不会在自己电脑上运行的,这里我们可以先临时使用服务器主机打开浏览器看一下效果,地址如下:
  1. http://127.0.0.1:8123
复制代码
那么,我打开之后,可以看到卫星地图效果了:
那么到现在为止,你的操作没有什么问题。

总不能,我们只能使用自己的主机看吧,地图肯定是要给群众开放的,不然创建出来干嘛呢?这里就需要联系到开放端口的问题,还是一样,我在上面新手教程里提到了,我们只需要给插件指定一个端口,然后在任何一台计算机网络中输入IP+端口就可以访问了,下面请跟我操作,打开 \plugins\dynmap 文件夹里的 configuration.txt 文件,找到第 318 行,可以看到我们现在的使用的是默认端口,即8123,我们可以将它改为其他端口,前提是这个端口必须是开放的,修改之后保存文件,重启服务器就好了。
注意!这里改完配置之后我选择了重启服务器而不是使用重载命令,是因为在我前段时间的使用中发现更改端口之后使用重载命令不太好用,所以建议大家还是直接重启服务器。如果发现重载命令也是没有问题的,我们可以使用重载命令节省时间。
4. 地图渲染
我们现在可以看到,地图只是显示了一小部分,并没有显示全部的地图外观,实际上生成地图的过程是需要一点时间的,并不能做到直接将整个地图的外貌呈现在你的面前。渲染是有三种类型的,提供给玩家三种不同的显示样式。

默认情况下,到现在为止不执行任何操作,玩家在地图里移动,随着玩家经过地图的一些地方,插件会自动渲染玩家走过的地方,这是我比较推荐的一种渲染方式,即对于地图渲染这一部分我们不进行任何操作,让插件自动渲染玩家走过的地方,就算是插件自动渲染,也不是实时渲染的!并不是说你走过去网页就会直接刷新,是需要等待时间的,我们进入服务器,可以看到网页地图中显示了玩家:
然后,我们顺着一个方向一直走,然后停下等待一段时间,可以看到地图已经自动渲染了。
目前渲染问题我建议是不要再搞了,随着你玩家慢慢的移动,整个地图也就刷新了,这个不要着急,那么也有使用命令直接刷新地图,需要相当长的时间,命令如下:
  1. /dynmap fullrender
复制代码
这个命令即是,渲染整个世界的所有显示样式,输入这个命令之后,是有一个渲染过程的,整个过程始终会有消息提示你,只不过消息是英文的。输入命令之后会以你的站立位置为中心往外扩散刷新,如果此命令由控制台执行,则从世界中心开始
  1. /dynmap fullrender world
复制代码
如果在后面加上世界名,那么就会渲染指定世界的三种显示样式。
  1. /dynmap fullrender world:surface
复制代码
如果在世界名的后面加“:”和指定英文代号,就可以渲染指定世界的指定显示样式,代号如下:
falt鸟瞰图,类似于谷歌卫星地图
surface平面图,从上竖直往下看的样子
cave洞**,显示当前地图内的洞穴走向

到此为止,渲染部分的教程就结束了。
5. 网页世界部分设置
在这里,我们可以自定义世界的显示顺序,显示名字,显示样式的名字,甚至可以单独关闭世界显示,或者关闭指定世界的单个显示,首先,我们打开以下文档:
  1. \plugins\dynmap\worlds.txt
复制代码
打开之后我们可以看到里面是有东西的,里面写的是对于此部分设置的注释,我们直接把全部内容删掉,然后这里只介绍基础的部分,如果还需要更多的设置就需要你们再深入研究了,实际上很多设置项都是无用的。我们把全部内容删除。一般来说,现在世界列表默认在网页里的显示顺序是,world,world_nether,world_the_end,先介绍一下怎么调换顺序,我们在worlds.txt里写上以下内容,注意格式:
  1. worlds:
  2. - name: world_nether
  3. - name: world
  4. - name: world_the_end
复制代码
然后我们输入命令 /dynmap reload 重载插件,刷新一次网页,就可以看到我们的地图显示顺序更改了:

这样就可以自定义世界的显示顺序了。

如果我们需要将一个世界隐藏呢?比如说,我们想把末地世界隐藏,我们可以把配置改成下面这个样子:
  1. worlds:
  2. - name: world_nether
  3. - name: world
  4. - name: world_the_end
  5. enabled: false
复制代码
然后重载插件,可以看到末地世界被隐藏了。

举一反三,要想隐藏哪个世界,就在那个世界的底下加上 enabled: false ,那么这个世界就会被隐藏,你也可以在显示的后面加上 enabled: true ,那么该世界依然会显示,和不加是一样的,所以下面的配置一样是可以的:
  1. worlds:
  2. - name: world_nether
  3. enabled: true
  4. - name: world
  5. enabled: true
  6. - name: world_the_end
  7. enabled: false
复制代码
这样的配置和上面的配置,效果是一样的。

怎么更改世界显示名字呢?也很简单,比如说我们要把world世界的显示名字改成“主世界”,把world_nether世界的显示名字改为额“地狱世界”,很简单,我们只需要这么做:
  1. worlds:
  2. - name: world_nether
  3. enabled: true
  4. title: "地狱世界"
  5. - name: world
  6. enabled: true
  7. title: "主世界"
  8. - name: world_the_end
  9. enabled: false
复制代码
通过命令重载插件,刷新网页,可以看到,世界名字已经按照我们的要求改变了:

总结,如果要更改指定世界的显示名字,只需要在指定世界的下面添加title项就好了。

前面我们有介绍过,每个世界提供了多种显示模式,而这些模式是可以自定义开关的,并且我们把鼠标停留在图标上的时候,是有注释的,我们可以自定义开启哪些显示方式,也可以自定义这里的注释内容,我们以主世界的配置为例,我们在世界的下面添加一些内容,最终内容如下:
  1. - name: world
  2. enabled: true
  3. title: "主世界"
  4. maps:
  5. - class: org.dynmap.hdmap.HDMap
  6. name: flat
  7. title: "普通模式"
复制代码
然后我们重载插件,刷新网页,可以看到效果如下:

我们再次添加一些内容,使其最终内容如下:
  1. - name: world
  2. enabled: true
  3. title: "主世界"
  4. maps:
  5. - class: org.dynmap.hdmap.HDMap
  6. name: surface
  7. title: "平面模式"
  8. - class: org.dynmap.hdmap.HDMap
  9. name: cave
  10. title: "洞穴模式"
  11. - class: org.dynmap.hdmap.HDMap
  12. name: flat
  13. title: "普通模式"
复制代码
然后我们可以看到,三种显示模式都出来了,而且注释也更改了。

总结,一段内容控制一个模式,顺序也是可以控制的,什么都不写就显示三种,如果添加一段内容,就会隐藏没写的内容。

世界部分配置完毕。
6. 地图标记
什么是地图标记呢?插件提供了一个功能,玩家输入一个命令,会在玩家所在位置设置一个标记,这个标记会在卫星地图上显示,下面通过演示来教大家使用,首先,我们输入一个命令:
  1. /dmarker add 测试标记
复制代码
这是一个最简单的创建标记方法,输入命令之后,我们可以看到提示:

之后,我们可以看到在我们的网页地图上,已经出现了一个标记,显示如下:

一个简单的标记就出来了,更多信息我们接着讲。

每一个标记,实际上都是有一个ID的,就像一个玩家一个ID,一个人一个名字那样,可我们发现,在上面我们输入的命令中,并没有给它指定ID,但是我们看创建好之后的提示语,可以看到插件自动给我们指定了一个ID,名为 marker_1 ,也就是说,如果我们没有在命令中给标记指定一个ID,那么插件就会自动给我们创建一个,同样,我们也可以手动给标记指定一个ID,很简单,只需要在命令里加上 id: 就可以,比如我们创建一个标记,ID指定为 “DADA” ,命令如下:
  1. /dmarker add 测试标记 id:DADA
复制代码
输入之后,我们可以看到提示:

viewpicture.php

这样我们就创建了一个ID名为 “DADA” 的标记。

你以为标记只有这一种显示图标吗?NO,插件内置了很多种显示图标,而且我们是可以手动添加的,先介绍如何使用内置图标,我们打开以下路径:
  1. \plugins\dynmap\web\tiles\_markers_
复制代码
可以看到里面有很多图标,这些图标都是可以当做地图标记的图标来使用的,图片文件的命名,就代表了图标的ID,在上方我们创建标记的命令中,并没有指定图标所以给我们用的是默认的,我们看一下文件夹里,可以看到有一个名为 ruby.png 的文件,效果是这样的:

viewpicture.php
,那么我们创建一个ID名为“hunluan”,图标为ruby的标记,命令为:
  1. /dmarker add 测试标记 id:hunluan icon:ruby
复制代码
输入命令之后,可以看到以下提示:

然后,我们到网页看一下,图表已经显示出来了,而且也用了我们指定的图标:

总结,如果要给标记指定图标,只需要选好我们需要指定的图标的ID,然后在命令里加上 icon:<ID> 就可以了。
7. 色彩主题
对于同样的场景,使用不同的色彩主题,给人的色调也是不同的,下面是自带的四款色彩主题展示图:
default
flames
ovocean
sk89q
其实还是可以看出区别来的,默认情况下我们使用的是default色彩主题,我们这里可以设置为其他的试试,我们设置为 sk89q 吧,怎么设置呢,我们打开文件:
  1. \plugins\dynmap\configuration.txt
复制代码
找到 colorscheme: ,直接在后面更改就好了,注意不要加 .txt
8. 登录系统
此插件还可以让你的玩家通过网页给服务器里的玩家发送消息,我们先来简单演示一下这个功能,很简单,在网页的左下角有一个输入框,输入消息之后按回车键,就会被发送,而且,我们在游戏里也是能看到的。

如图所示。

首先,我们打开配置文件,路径为:
  1. \plugins\dynmap\configuration.txt
复制代码
找到第330行,打开登录系统,修改为:
  1. login-enabled: true
复制代码
修改之后保存文件,然后输入重载命令,刷新网页,我们可以发现,在网页的右下角,多了一个按钮,打开之后,可以看到一个界面:

有点常识的人就可以看出来了,上面的是登陆,下面是注册,我们现在是没有账号的,所以我们需要注册,在游戏中输入命令:
  1. /dynmap webregister
复制代码
注意,此命令的权限节点为: dynmap.webregister
输入命令之后,我们会收到以下提示:

可以看到第一行是我们输入命令的玩家的名字,第二行的最后是一串数字代码,我们可以称之为注册码,收到注册码之后,我们就可以来到网页注册账号了,User ID 为你的游戏名字,在我们这里也就是 testtest2 ,第二个和第三个就是密码和确认密码,第四个就是我们输入命令获取到的注册码,注册之后,就可以登录了,登陆之后发送消息,在游戏里输入是不一样的,带上了玩家名字:

这样就方便其他玩家辨认出是谁在网页发的消息了。

现在的话,如果我们在网页不登录账号,也是可以看卫星地图的,我们可以设置,如果不登录就无法查看地图,也就是说需要玩家需要强制登录卫星地图账户,我们只需要打开配置文件的:
  1. login-required: true
复制代码
这样,我们就可以禁止没有登录的玩家查看网页了。访问地图会自动弹出注册登录的界面。
9. 网页语言
网页部分的一些语言还是英文的,简单汉化一下比较好,首先从网页标题开始,我们打开文件:
  1. \plugins\dynmap\configuration.txt
复制代码
找到第302行,有一个:
  1. # webpage-title: "My Awesome Server Map"
复制代码
我们把 "# " 删除,注意的是,#后面的一个空格也需要删除,这样就顶格了,是这样的:

然后,我们更改一些引号里面的英文,这里就是设置网页标题的地方了,我们改为 教程专用卫星地图,代码如下:
  1. webpage-title: "教程专用卫星地图"
复制代码
然后保存文件,输入重载命令 /dynmap reload ,然后刷新网页,可以看到标题已经更改了:

以上就是标题更改的教程。

还需要改什么呢?我们改一下网页左上角显示坐标的地方,依然是那个配置文件:
  1. \plugins\dynmap\configuration.txt
复制代码
我们找到第175行,将其改为:
  1. label: "坐标位置"
复制代码
然后我们保存文件,输入 /dynmap reload 命令重载,刷新网页,可以看到坐标上方的Location单词变成了中文,图示如下:

以上就是坐标位置汉化部分。

最后我们在修改一下消息提示部分,还是那个配置文件:
  1. \plugins\dynmap\configuration.txt
复制代码
找到第 418 行,从第418行开始,将内容更改如下:
  1. msg:
  2. maptypes: "地图列表"
  3. players: "玩家列表"
  4. chatrequireslogin: "聊天需要登录"
  5. chatnotallowed: "你没有权限发送消息"
  6. hiddennamejoin: "玩家已加入"
  7. hiddennamequit: "玩家已退出"
复制代码
更改之后,保存文件,执行重载命令 /dynmap reload,刷新网页,可以看到部分信息也被汉化了,图示如下:

以上就是消息部分的汉化。
10. 模组支持
Dynmap是支持模组服的,不过需要安装特定的版本,适配模组服的Dynmap是一个MOD,需要当做一个模组去安装,在服务器里,只需要在服务端安装模组就行了,配置文件会生成在服务端根目录,其他的是和插件一样的,下载地址:
  1. https://www.curseforge.com/minecraft/mc-mods/dynmapforge/download
复制代码
他会支持显示部分模组的材质,可支持的模组:
  1. https://github.com/webbukkit/dynmap/wiki/Support-for-MinecraftForge-based-mods
复制代码
这里我搭建了一个1.12.2的模组服环境,安装了BuildCraft模组,确实是可以显示的。

模组的新物品可能不会显示!​